A modern and easy to use dashboard. 80+ integrations. 20K+ icons built in. Authentication out of the box. No YAML, drag and drop configuration.
This report summarizes scanner evidence for homarr-labs/homarr, a TypeScript project with 5,257 GitHub stars. SynthScan examined 721,257 lines of code across 3415 source files, recording 1479 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 2.4 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 313 finding(s).
Are imports declared and package/API names verified? 1113 finding(s).
Are wrappers, guards, and repeated structures necessary? 349 finding(s).
Which changes need focused human review? 1479 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1479 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/ui/src/components/select-with-custom-items.tsx | 15 | "label" | "error" | "defaultValue" | "value" | "onChange" | "placeholder" | "clearable" | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 1988 | "placeholder": "選擇一個或多個值" | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 1991 | "placeholder": "新增更多值", | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 1995 | "placeholder": "選擇值", | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 8069 | "placeholder": "搜尋任意內容", | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 8074 | "placeholder": "搜尋應用程式、面板、頁面、命令與偏好設定" | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 8078 | "placeholder": "搜尋應用程式、面板與整合" | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 8082 | "placeholder": "搜尋操作與命令" | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 8086 | "placeholder": "搜尋並變更偏好設定" | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 8090 | "placeholder": "詢問助理" | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 8094 | "placeholder": "使用外部搜尋引擎搜尋" | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 8098 | "placeholder": "搜尋電影或節目", | CODE |
| LOW⚡ | packages/translation/src/lang/zh.json | 8103 | "placeholder": "搜尋使用者與群組" | CODE |
| LOW | packages/translation/src/lang/zh.json | 1470 | "placeholder": "自訂應用程式網址" | CODE |
| LOW | packages/translation/src/lang/zh.json | 2312 | "placeholder": "選擇一個選項" | CODE |
| LOW | packages/translation/src/lang/zh.json | 2444 | "placeholder": "貼上 URL 或搜尋應用程式", | CODE |
| LOW | packages/translation/src/lang/zh.json | 2453 | "placeholder": "創建分類", | CODE |
| LOW | packages/translation/src/lang/zh.json | 2904 | "placeholder": "搜尋車站" | CODE |
| LOW | packages/translation/src/lang/zh.json | 2983 | "placeholder": "開始撰寫您的筆記", | CODE |
| LOW | packages/translation/src/lang/zh.json | 3517 | "placeholder": "所有 Docker 環境" | CODE |
| LOW | packages/translation/src/lang/zh.json | 3725 | "placeholder": "選擇網站", | CODE |
| LOW | packages/translation/src/lang/zh.json | 3745 | "placeholder": "選擇一個事件", | CODE |
| LOW | packages/translation/src/lang/zh.json | 3777 | "placeholder": "選取事件……" | CODE |
| LOW | packages/translation/src/lang/zh.json | 3876 | "placeholder": "選取儲存區" | CODE |
| LOW | packages/translation/src/lang/zh.json | 4860 | "placeholder": "名稱或擁有者/名稱" | CODE |
| LOW | packages/translation/src/lang/zh.json | 6345 | "placeholder": "開始搜尋本機的圖像", | CODE |
| LOW | packages/translation/src/lang/zh.json | 7041 | "placeholder": "/logo/logo.png" | CODE |
| LOW | packages/translation/src/lang/zh.json | 7045 | "placeholder": "使用應用程式標誌" | CODE |
| LOW | packages/translation/src/lang/zh.json | 7059 | "placeholder": "https://example.com/background.jpg" | CODE |
| LOW | packages/translation/src/lang/zh.json | 7203 | "placeholder": "輸入 API 金鑰", | CODE |
| LOW | packages/translation/src/lang/zh.json | 7233 | "placeholder": "模型 ID", | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 1988 | "placeholder": "Bir veya daha fazla değer seçin" | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 1991 | "placeholder": "Daha fazla değer ekleyin", | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 1995 | "placeholder": "Değer seç", | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 8069 | "placeholder": "Aramak için yaz", | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 8074 | "placeholder": "Uygulamalarda, panolarda, sayfalarda, komutlarda ve tercihlerde ara" | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 8078 | "placeholder": "Uygulamalarda, panolarda ve entegrasyonlarda ara" | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 8082 | "placeholder": "Eylemlerde ve komutlarda ara" | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 8086 | "placeholder": "Tercihleri ara ve değiştir" | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 8090 | "placeholder": "Asistana sor" | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 8094 | "placeholder": "Harici bir arama motoruyla ara" | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 8098 | "placeholder": "Bir film veya dizi ara", | CODE |
| LOW⚡ | packages/translation/src/lang/tr.json | 8103 | "placeholder": "Kullanıcılarda ve gruplarda ara" | CODE |
| LOW | packages/translation/src/lang/tr.json | 1470 | "placeholder": "Özel Uygulama URL'si" | CODE |
| LOW | packages/translation/src/lang/tr.json | 2312 | "placeholder": "Bir seçenek belirleyin" | CODE |
| LOW | packages/translation/src/lang/tr.json | 2444 | "placeholder": "URL'leri yapıştırın veya uygulamalarda arayın", | CODE |
| LOW | packages/translation/src/lang/tr.json | 2453 | "placeholder": "Yeni Kategori", | CODE |
| LOW | packages/translation/src/lang/tr.json | 2904 | "placeholder": "İstasyon ara" | CODE |
| LOW | packages/translation/src/lang/tr.json | 2983 | "placeholder": "Not almaya başlayın", | CODE |
| LOW | packages/translation/src/lang/tr.json | 3517 | "placeholder": "Tüm Docker ortamları" | CODE |
| LOW | packages/translation/src/lang/tr.json | 3725 | "placeholder": "Bir web sitesi seçin", | CODE |
| LOW | packages/translation/src/lang/tr.json | 3745 | "placeholder": "Bir etkinlik seçin", | CODE |
| LOW | packages/translation/src/lang/tr.json | 3777 | "placeholder": "Etkinlik seç..." | CODE |
| LOW | packages/translation/src/lang/tr.json | 3876 | "placeholder": "Depolama birimlerini seçin" | CODE |
| LOW | packages/translation/src/lang/tr.json | 4860 | "placeholder": "Ad veya Sahip/Ad" | CODE |
| LOW | packages/translation/src/lang/tr.json | 6345 | "placeholder": "Aramak istediğiniz yerel görseller için yazmaya başlayın", | CODE |
| LOW | packages/translation/src/lang/tr.json | 7041 | "placeholder": "/logo/logo.png" | CODE |
| LOW | packages/translation/src/lang/tr.json | 7045 | "placeholder": "Uygulama logosunu kullanır" | CODE |
| LOW | packages/translation/src/lang/tr.json | 7059 | "placeholder": "https://example.com/background.jpg" | CODE |
| LOW | packages/translation/src/lang/tr.json | 7203 | "placeholder": "Bir API anahtarı girin", | CODE |
| 1046 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | packages/workshop/src/backend.ts | 768 | export function useWorkshopSubmissionQuery(backend: WorkshopBackend, id: string) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 776 | export function useWorkshopReportSummariesQuery(backend: WorkshopBackend, submission: string) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 784 | export function useWorkshopUserVotesQuery(backend: WorkshopBackend) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 804 | export function useWorkshopCreateMutation(backend: WorkshopBackend) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 809 | export function useWorkshopUpdateMutation(backend: WorkshopBackend) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 817 | export function useWorkshopDeleteMutation(backend: WorkshopBackend) { | CODE |
| LOW | packages/workshop/src/backend.ts | 836 | export function useWorkshopReportMutation(backend: WorkshopBackend) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 850 | export function useWorkshopDismissReportMutation(backend: WorkshopBackend) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 858 | export function useWorkshopToggleOutdatedMutation(backend: WorkshopBackend) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 866 | export function useWorkshopCreateCommentMutation(backend: WorkshopBackend) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 875 | export function useWorkshopUpdateCommentMutation(backend: WorkshopBackend) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 883 | export function useWorkshopDeleteCommentMutation(backend: WorkshopBackend) { | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 892 | export function useWorkshopWidgetImportMutation( | CODE |
| LOW⚡ | packages/workshop/src/backend.ts | 899 | export function useWorkshopCssImportMutation(useCss: ((css: string) => void) | undefined, onSuccess?: () => void) { | CODE |
| LOW | packages/cli/src/commands/harness.ts | 114 | function parseEnvironmentOverrides(raw?: string): Map<string, string> { | CODE |
| LOW | packages/request-handler/src/docker.ts | 360 | export function clearCpuUsageCountersCacheForTesting(): void { | CODE |
| LOW | packages/request-handler/src/docker.ts | 364 | export async function getContainersWithStatsAsync( | CODE |
| LOW | packages/request-handler/src/timetable-url.ts | 21 | export async function readBoundedTimetableJsonAsync( | CODE |
| LOW | packages/integrations/test/nextcloud.spec.ts | 307 | async function prepareNextcloudContainerAsync(): Promise<StartedTestContainer> { | CODE |
| LOW | packages/integrations/test/nextcloud.spec.ts | 333 | function createNextcloudIntegration( | CODE |
| LOW | packages/integrations/src/http-auth.ts | 29 | export function resolveDeclaredHttpAuthentication( | CODE |
| LOW | …rations/src/download-client/sabnzbd/sabnzbd-history.ts | 16 | export async function getSabnzbdHistorySlotsAsync({ | CODE |
| LOW | packages/integrations/src/mock/widget-data.ts | 407 | function createThingportMockModels(): Record<ThingportModelList, ThingportModel[]> { | CODE |
| LOW | packages/integrations/src/mock/widget-data.ts | 432 | export function createThingportMockActivity(from: string, to: string): ThingportActivity { | CODE |
| LOW | packages/integrations/src/mock/data/beszel.ts | 139 | function generateSystemStatsSeries(count: number, sys: MockSystemDef): BeszelSystemStats[] { | CODE |
| LOW | packages/integrations/src/mock/data/beszel.ts | 176 | function generateContainerStatsSeries(count: number, profiles: typeof containerProfiles): BeszelContainerStats[][] { | CODE |
| LOW | packages/integrations/src/plex/plex-integration.ts | 85 | function mergeRecentlyAddedEpisodes(items: RecentlyAddedItem[], episodes: RecentlyAddedEpisode[]): MergedItem[] { | CODE |
| LOW | packages/integrations/src/base/creator.ts | 408 | export async function getIntegrationHttpAuthenticationAsync(integration: IntegrationInput & { kind: IntegrationKind }) { | CODE |
| LOW | packages/integrations/src/stats/providers/plantit.ts | 45 | async function getHttpAuthenticationAsync(context: StatsFetchContext) { | CODE |
| LOW | packages/integrations/src/stats/providers/frigate.ts | 36 | async function getHttpAuthenticationAsync(context: StatsFetchContext) { | CODE |
| LOW | packages/integrations/src/stats/providers/homebox.ts | 60 | async function getHttpAuthenticationAsync(context: StatsFetchContext) { | CODE |
| LOW | packages/integrations/src/traefik/traefik-bounds.ts | 7 | export async function readBoundedTraefikJsonAsync( | CODE |
| LOW | packages/common/src/revalidate-path-action.ts | 5 | export async function revalidatePathActionAsync(path: string) { | CODE |
| LOW | packages/common/src/bounded-response.ts | 63 | export async function readBoundedJsonResponseAsync( | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 55 | export function getAssistantEvaluationMaxOutputTokens(configuredValue: string | undefined) { | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 105 | export function compactAssistantEvaluationMessages( | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 485 | export function executeActiveAssistantEvaluationTool( | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 959 | export function executeAssistantEvaluationTool( | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 985 | export function getAssistantEvaluationLifecycleIssues( | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 1023 | export function getAssistantEvaluationEfficiencyIssues( | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 1119 | export function createAssistantEvaluationState(preferredExampleId?: string): AssistantAttemptState { | CODE |
| LOW⚡ | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 1308 | export function mergeAssistantEvaluationFeedback(feedback: string[], issues: readonly string[]) { | CODE |
| LOW⚡ | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 1317 | export function replaceAssistantEvaluationFeedback(feedback: string[], issues: readonly string[]) { | CODE |
| LOW⚡ | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 1322 | export function composeAssistantEvaluationFeedback(...groups: readonly (readonly string[])[]) { | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 1337 | export function getPortableAssistantLifecycleFeedback(issues: readonly string[]) { | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 1341 | export function selectAssistantEvaluationReviewFeedback( | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 1353 | export function formatAssistantDeterministicFeedback( | CODE |
| LOW | …ages/custom-widgets/scripts/ai-assistant-evaluation.ts | 1366 | export async function evaluateCustomWidgetAssistantCase(args: { | CODE |
| LOW | …/custom-widgets/scripts/generate-component-metadata.ts | 454 | function createBlockedCapabilities(): CustomJsxBlockedCapability[] { | CODE |
| LOW | …ckages/custom-widgets/scripts/verify-reference-apis.ts | 144 | async function verifyPublicAiEvaluationApis() { | CODE |
| LOW | packages/custom-widgets/scripts/ai-evaluation.ts | 74 | export function getAiEvaluationMaxOutputTokens(purpose: "generation" | "judge", configuredValue: string | undefined) { | CODE |
| LOW | packages/custom-widgets/scripts/ai-evaluation.ts | 221 | export function getEvaluationResponseFixtureText(testCase: CustomWidgetAiEvaluationCase): string | null { | CODE |
| LOW | packages/custom-widgets/scripts/ai-evaluation.ts | 359 | export function getDeterministicEvaluationIssues( | CODE |
| LOW | packages/custom-widgets/scripts/ai-evaluation.ts | 485 | export function getDeterministicEvaluationMatches( | CODE |
| LOW | packages/custom-widgets/scripts/ai-evaluation.ts | 524 | export function getDeterministicEvaluationSuiteIssues( | CODE |
| LOW | packages/custom-widgets/scripts/ai-evaluation.ts | 643 | export function getCustomWidgetArtifactHash(widget: HomarrCustomWidgetV2) { | CODE |
| LOW | packages/custom-widgets/scripts/ai-evaluation.ts | 647 | export function summarizeCustomWidgetJudgePanel( | CODE |
| LOW | packages/custom-widgets/src/core/schema.ts | 11 | export function getCustomWidgetJsonSchema() { | CODE |
| LOW | packages/custom-widgets/src/core/custom-jsx-schema.ts | 198 | function validateCaseInsensitiveSourceIds(sources: Definition["sources"], ctx: z.RefinementCtx) { | CODE |
| LOW | packages/custom-widgets/src/core/custom-jsx-schema.ts | 315 | export function normalizeCustomWidgetAuthoringDefinition(input: CustomWidgetAuthoringDefinitionInput) { | CODE |
| 236 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/motion-reel/reel.js | 3 | // ───────────────────────────── constants ───────────────────────────── | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 21 | // ───────────────────────────── math ───────────────────────────── | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 75 | // ───────────────────────────── dom helpers ───────────────────────────── | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 206 | // ════════════════════════════ SCENE 1 — IGNITION (0 → 1.875) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 340 | // ════════════════════════════ SCENE 2 — SERVICES STROBE (1.875 → 3.75) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 579 | // ════════════════════════════ SCENE 3+4 — ONE PLACE → BOARD (3.75 → 7.5) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 1033 | // ════════════════════════════ SCENE 5 — LIVE DATA (7.5 → 9.375) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 1243 | // ════════════════════════════ SCENE 6 — 87 INTEGRATIONS RING (9.375 → 11.25) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 1349 | // ════════════════════════════ SCENE 7 — FEATURE BENTO (11.25 → 13.125) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 1548 | // ════════════════════════════ 3D — three.js rigs from origin/feat/3d-logo-lab ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 1815 | // ════════════════════════════ SCENE 8 — NOW IN v2 (13.125 → 15) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 1901 | // ════════════════════════════ SCENE 9 — CUSTOM WIDGETS v2 (15 → 16.875) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 2040 | // ════════════════════════════ SCENE 10 — WORKSHOP (16.875 → 18.75) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 2234 | // ════════════════════════════ SCENE 11 — ASSISTANT (18.75 → 20.625) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 2365 | // ════════════════════════════ SCENE FD-A — THE FRONT DOOR: one new endpoint, as a diagram (2 bars) ═════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 2857 | // ════════════════════════════ SCENE FD-B — THE FRONT DOOR, LIVE: one prompt, seven services (2 bars) ═══════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 3019 | // ════════════════════════════ SCENE 12 — BOARD EDITING, REBUILT (28.125 → 30) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 3216 | // ════════════════════════════ SCENE 13 — SETUP STUDIO + DOCKER (30 → 31.875) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 3314 | // ════════════════════════════ SCENE 14 — +31 INTEGRATIONS & STATISTICS (31.875 → 33.75) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 3453 | // ════════════════════════════ SCENE 15 — ALSO IN v2 (33.75 → 35.625) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 3538 | // ════════════════════════════ SCENE 16 — END CARD, 3D wordmark (35.625 → 37.5) ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/reel.js | 3680 | // ════════════════════════════ overlays: fx particles, vignette, grain ════════════════════════════ | COMMENT |
| MEDIUM | tools/motion-reel/synth.py | 87 | # ─────────────────────────── instruments ─────────────────────────── | COMMENT |
| MEDIUM | tools/motion-reel/score.py | 95 | # ─────────────────────────── MUSIC ─────────────────────────── | COMMENT |
| MEDIUM | tools/motion-reel/score.py | 171 | # ─────────────────────────── SFX, original reel (reel-time authored) ─────────────────────────── | COMMENT |
| MEDIUM | tools/motion-reel/score.py | 253 | # ─────────────────────────── SFX, v2 ─────────────────────────── | COMMENT |
| MEDIUM | tools/motion-reel/score.py | 386 | # ─────────────────────────── reverb + master ─────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 15 | // ─── module mocks ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 60 | // ─── helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 125 | // ─── getSummaryAsync ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 287 | // ─── enableAsync ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 331 | // ─── disableAsync ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 371 | // ─── token acquisition ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 471 | // ─── version-specific request format ───────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 543 | // ─── withTokenRetryAsync ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 645 | // ─── login URL format ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 684 | // ─── auth mechanism per version ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium-unit.spec.ts | 748 | // ─── testingAsync (session cleanup) ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 16 | // ─── module mocks ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 52 | // ─── version matrix ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 72 | // ─── helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 111 | // ─── parallel container pool ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 145 | // ─── version-parameterised suites ──────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 161 | // ── factory ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 174 | // ── getSummaryAsync ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 211 | // ── session caching ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 244 | // ── blocking state changes ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/technitium.spec.ts | 301 | // ── testConnectionAsync ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/glances-unit.spec.ts | 10 | // ─── module mocks ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/glances-unit.spec.ts | 45 | // ─── helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/integrations/test/glances-unit.spec.ts | 170 | // ─── tests ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/integrations/src/technitium/technitium-types.ts | 40 | // ─── pure utilities ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/integrations/src/technitium/technitium-types.ts | 59 | // ─── Zod schemas ───────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | packages/api/src/router/onboard/onboard-router.ts | 542 | const parsedName = onboardingCompleteSetupSchema.shape.board.shape.name.safeParse(normalizedLabelBoardName); | CODE |
| CRITICAL | packages/widgets/src/stats/component.tsx | 114 | const result = await utils.client.widget.stats.refresh.mutate({ integrationId, force }); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/onboarding/src/setup-studio.tsx | 1765 | headers: { ApiKey: apiKey ?? "<your-api-key>" }, | CODE |
| HIGH | …cale]/manage/tools/api/components/mcp-instructions.tsx | 103 | ApiKey: "<your-api-key>", | CODE |
| HIGH | …cale]/manage/tools/api/components/mcp-instructions.tsx | 117 | args: ["-y", "mcp-remote", mcpUrl, "--header", "ApiKey:<your-api-key>"], | CODE |
| HIGH | …cale]/manage/tools/api/components/mcp-instructions.tsx | 125 | const testCommand = `curl -s -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "ApiKey: <yo | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | …stom-widgets/src/core/component-catalog.generated.json | 1 | {"schemaVersion":1,"mantineVersion":"9.6.0","customWidgetVersion":"2.0.0","types":["\"\" | \"anonymous\" | \"use-credent | CODE |
| MEDIUM⚡ | …stom-widgets/src/core/component-catalog.generated.json | 1 | {"schemaVersion":1,"mantineVersion":"9.6.0","customWidgetVersion":"2.0.0","types":["\"\" | \"anonymous\" | \"use-credent | CODE |
| MEDIUM⚡ | …stom-widgets/src/core/component-catalog.generated.json | 1 | {"schemaVersion":1,"mantineVersion":"9.6.0","customWidgetVersion":"2.0.0","types":["\"\" | \"anonymous\" | \"use-credent | CODE |
| MEDIUM⚡ | …s/docs/public/custom-widgets/component-catalog-v1.json | 1 | {"schemaVersion":1,"mantineVersion":"9.6.0","customWidgetVersion":"2.0.0","types":["\"\" | \"anonymous\" | \"use-credent | CODE |
| MEDIUM⚡ | …s/docs/public/custom-widgets/component-catalog-v1.json | 1 | {"schemaVersion":1,"mantineVersion":"9.6.0","customWidgetVersion":"2.0.0","types":["\"\" | \"anonymous\" | \"use-credent | CODE |
| MEDIUM⚡ | …s/docs/public/custom-widgets/component-catalog-v1.json | 1 | {"schemaVersion":1,"mantineVersion":"9.6.0","customWidgetVersion":"2.0.0","types":["\"\" | \"anonymous\" | \"use-credent | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | AGENTS.md | 111 | - Contributors must not use the `homarr-triage` skill or its `> _This was generated by AI during triage._` disclaimer; d | CODE |
| HIGH | .agents/skills/homarr-triage/SKILL.md | 85 | > _This was generated by AI during triage._ | CODE |
| HIGH | .agents/skills/homarr-triage/references/delivery.md | 22 | > _This was generated by AI during triage._ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .vscode/i18n-ally-custom-framework.yml | 13 | # To help with this, you can use https://www.freeformatter.com/json-escape.html | COMMENT |
| MEDIUM | .vscode/i18n-ally-custom-framework.yml | 24 | # To help with this, you can use https://www.freeformatter.com/json-escape.html | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/entrypoint.sh | 1 | #!/bin/sh | COMMENT |
| LOW | packages/integrations/src/umami/umami-integration.ts | 101 | // dashboard share one Redis cache entry per (integration, website, timeFrame) | COMMENT |
| LOW | …ckages/integrations/src/glances/glances-integration.ts | 141 | } | COMMENT |
| LOW | packages/api/src/router/test/board.spec.ts | 2601 | // efffffccdd | COMMENT |
| LOW | .vscode/i18n-ally-custom-framework.yml | 21 | # and works like how the i18next framework identifies the namespace scope from the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | apps/workshop/homarr_provider.go | 490 | // Retention and data collection policies are managed by OpenRouter guardrails. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/motion-reel/synth.py | 4 | CODE |