A fast, single-binary qBittorrent web UI: manage multiple instances, automate torrent workflows, and cross-seed across trackers.
This report summarizes scanner evidence for autobrr/qui, a Go project with 4,749 GitHub stars. SynthScan examined 612,962 lines of code across 1955 source files, recording 687 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.3 (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? 294 finding(s).
Are imports declared and package/API names verified? 391 finding(s).
Are wrappers, guards, and repeated structures necessary? 122 finding(s).
Which changes need focused human review? 687 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 687 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 | web/src/i18n/locales/it/automations.json | 49 | "placeholder": { | CODE |
| LOW | web/src/i18n/locales/it/settings.json | 529 | "placeholder": "Inserisci la chiave di licenza del tema premium", | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 49 | "placeholder": "es. \"Sample Movie 2024\", \"Another Film 1999\", \"tt1234567\"" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 53 | "placeholder": "es. \"Sample Show S01E01\", \"tvdb 123456\", \"Fictional Series S02\"" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 57 | "placeholder": "es. \"Example Artist – Example Album\", \"Sample Band – Debut EP\"" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 61 | "placeholder": "es. \"Example Book Title\", \"Fictional Series Book 1\"" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 65 | "placeholder": "es. \"Sample OS ISO\", \"Example App 2025\"" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 69 | "placeholder": "Inserisci il nome di una release per adulti specifica" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 75 | "placeholder": "tt1234567" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 79 | "placeholder": "12345" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 83 | "placeholder": "2024" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 87 | "placeholder": "1" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 91 | "placeholder": "2" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 95 | "placeholder": "Nine Inch Nails" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 99 | "placeholder": "The Fragile" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 103 | "placeholder": "100" | CODE |
| LOW⚡ | web/src/i18n/locales/it/search.json | 107 | "placeholder": "0" | CODE |
| LOW | web/src/i18n/locales/it/rss.json | 11 | "placeholder": "Seleziona istanza" | CODE |
| LOW | web/src/i18n/locales/it/rss.json | 118 | "placeholder": "Nome del feed", | CODE |
| LOW | web/src/i18n/locales/it/rss.json | 125 | "placeholder": "https://example.com/rss", | CODE |
| LOW | web/src/i18n/locales/it/instances.json | 629 | "placeholder": "Incolla il workflow JSON...", | CODE |
| LOW | web/src/i18n/locales/it/instances.json | 1198 | "placeholder": "es. 10" | CODE |
| LOW | web/src/i18n/locales/it/instances.json | 1266 | "placeholder": "es., /data/torrents", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 324 | "placeholder": "/path/to/save/location", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 359 | "placeholder": "Inserisci il nuovo nome del torrent", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 369 | "placeholder": "Inserisci il nome del file", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 381 | "placeholder": "Inserisci il nome della cartella", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 452 | "placeholder": "Inserisci il nome della categoria", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 538 | "placeholder": "Inserisci un commento", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 633 | "placeholder": "Inserisci il nome del tag", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 658 | "placeholder": "Inserisci il nome della categoria", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 674 | "placeholder": "es. /downloads/movies", | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 1103 | "placeholder": "192.168.1.100:51413\n10.0.0.5:6881\ntracker.example.com:8080\n[2001:db8::1]:6881" | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 1416 | "placeholder": "Inserisci URL o link magnet (uno per riga)" | CODE |
| LOW | web/src/i18n/locales/it/torrents.json | 1519 | "placeholder": "Cerca torrent...", | CODE |
| LOW | web/src/i18n/locales/ca/automations.json | 48 | "placeholder": { | CODE |
| LOW | web/src/i18n/locales/ca/settings.json | 529 | "placeholder": "Introdueix la clau de llicència dels temes premium", | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 49 | "placeholder": "p. ex., \"Sample Movie 2024\", \"Another Film 1999\", \"tt1234567\"" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 53 | "placeholder": "p. ex., \"Sample Show S01E01\", \"tvdb 123456\", \"Fictional Series S02\"" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 57 | "placeholder": "p. ex., \"Example Artist – Example Album\", \"Sample Band – Debut EP\"" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 61 | "placeholder": "p. ex., \"Example Book Title\", \"Fictional Series Book 1\"" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 65 | "placeholder": "p. ex., \"Sample OS ISO\", \"Example App 2025\"" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 69 | "placeholder": "Introdueix el nom d'una release per a adults concreta" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 75 | "placeholder": "tt1234567" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 79 | "placeholder": "12345" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 83 | "placeholder": "2024" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 87 | "placeholder": "1" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 91 | "placeholder": "2" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 95 | "placeholder": "Nine Inch Nails" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 99 | "placeholder": "The Fragile" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 103 | "placeholder": "100" | CODE |
| LOW⚡ | web/src/i18n/locales/ca/search.json | 107 | "placeholder": "0" | CODE |
| LOW | web/src/i18n/locales/ca/rss.json | 11 | "placeholder": "Selecciona una instància" | CODE |
| LOW | web/src/i18n/locales/ca/rss.json | 118 | "placeholder": "Nom del canal", | CODE |
| LOW | web/src/i18n/locales/ca/rss.json | 125 | "placeholder": "https://example.com/rss", | CODE |
| LOW | web/src/i18n/locales/ca/instances.json | 664 | "placeholder": "Enganxa el JSON del workflow...", | CODE |
| LOW | web/src/i18n/locales/ca/instances.json | 850 | "placeholder": "p. ex. 10" | CODE |
| LOW | web/src/i18n/locales/ca/instances.json | 918 | "placeholder": "p. ex., /data/torrents", | CODE |
| LOW | web/src/i18n/locales/ca/torrents.json | 183 | "placeholder": "Introdueix un comentari", | CODE |
| LOW | web/src/i18n/locales/ca/torrents.json | 690 | "placeholder": "Cerca torrents...", | CODE |
| 329 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/contexts/SyncStreamContext.tsx | 21 | // follows within this window the connection is considered dead even when the | COMMENT |
| LOW | web/src/hooks/useTorrentsList.ts | 41 | // deferred and then burst-processed by a throttled background tab, and each frame is | COMMENT |
| LOW | web/src/hooks/useTorrentsList.ts | 201 | const [lastCountsSnapshot, setLastCountsSnapshot] = useState<{ scopeKey: string; counts?: TorrentCounts }>({ scopeKey: | COMMENT |
| LOW | web/src/hooks/useTorrentsList.ts | 381 | // write snapshots, query cache, rows, totals, or pagination flags. | COMMENT |
| LOW | web/src/hooks/useTorrentDetailTab.ts | 41 | fetch: (instanceId: number, hash: string, refresh: boolean) => Promise<unknown> | COMMENT |
| LOW | web/src/hooks/useCrossSeedSearch.test.tsx | 121 | }) | COMMENT |
| LOW | web/src/lib/__tests__/stream-merge.test.ts | 61 | COMMENT | |
| LOW | internal/database/db.go | 1 | // Copyright (c) 2025-2026, s0up and the autobrr contributors. | COMMENT |
| LOW | internal/database/db.go | 21 | // | COMMENT |
| LOW | internal/database/db.go | 1201 | // BeginTx starts a transaction. Returns a wrapped transaction that uses statement caching. | COMMENT |
| LOW | internal/database/db.go | 1221 | // | COMMENT |
| LOW | internal/database/db.go | 1241 | // - Long-running write transactions will block other write transactions | COMMENT |
| LOW | internal/database/db.go | 1581 | return fmt.Errorf("failed to commit migrations: %w", err) | COMMENT |
| LOW | internal/database/db.go | 1741 | if rowsAffected > 0 { | COMMENT |
| LOW | internal/database/db.go | 1761 | // | COMMENT |
| LOW | internal/sshpool/sshpool.go | 81 | Limits bool | COMMENT |
| LOW | internal/sshpool/sshpool.go | 261 | // RSA key negotiates under the SHA-2 signature names, so all three come first | COMMENT |
| LOW | internal/sshpool/exec.go | 21 | // its own: a find over a large tree runs for as long as its ctx allows. | COMMENT |
| LOW | internal/sshpool/exec.go | 141 | } | COMMENT |
| LOW | internal/sshpool/probe.go | 21 | // gnuProbeCommand asks the tools the remote file operations lean on for their | COMMENT |
| LOW | internal/sshpool/probe.go | 41 | COMMENT | |
| LOW | internal/sshpool/probe.go | 121 | // isGNU reads the probe output. GNU tools print "<tool> (GNU <package>) | COMMENT |
| LOW | internal/qbittorrent/sync_manager.go | 161 | // freshness window. | COMMENT |
| LOW | internal/qbittorrent/sync_manager.go | 881 | COMMENT | |
| LOW | internal/qbittorrent/sync_manager.go | 3141 | TrackerTransfers map[string]TrackerTransferStats `json:"trackerTransfers,omitempty"` | COMMENT |
| LOW | internal/qbittorrent/sync_manager.go | 3381 | // trackerHealthSupported belongs to the key because the three tracker-health | COMMENT |
| LOW | internal/qbittorrent/sync_manager.go | 5561 | } | COMMENT |
| LOW | internal/qbittorrent/client.go | 1041 | COMMENT | |
| LOW | internal/qbittorrent/folder_cleanup.go | 141 | // stats only what was still there. | COMMENT |
| LOW | internal/config/config.go | 561 | host = "{{ .host }}" | COMMENT |
| LOW | internal/config/config.go | 581 | # Empty (default) permits all hosts. Restart after changes. | COMMENT |
| LOW | internal/config/config.go | 601 | # Optional | COMMENT |
| LOW | internal/config/config.go | 621 | # A relative path is resolved against the config directory. | COMMENT |
| LOW | internal/config/config.go | 641 | #databasePassword = "" | COMMENT |
| LOW | internal/config/config.go | 661 | # Default: false | COMMENT |
| LOW | internal/config/config.go | 681 | #logLevel = "{{ .logLevel }}" | COMMENT |
| LOW | internal/config/config.go | 701 | # Example: "prometheus:secret" | COMMENT |
| LOW | internal/config/config.go | 721 | COMMENT | |
| LOW | internal/models/dirscan.go | 1681 | return 0, fmt.Errorf("rows affected: %w", err) | COMMENT |
| LOW | internal/fsops/backend.go | 21 | // Every method accepts a context.Context and must respect cancellation. | COMMENT |
| LOW | internal/fsops/backend.go | 41 | COMMENT | |
| LOW | internal/fsops/backend.go | 61 | // SameFilesystem returns true if both paths reside on the same filesystem | COMMENT |
| LOW | internal/fsops/backend.go | 81 | // --- High-level (atomic, server-orchestrated) --- | COMMENT |
| LOW | internal/fsops/backend.go | 101 | // RemoveTree removes exactly the files and dirs recorded in created — | COMMENT |
| LOW | internal/fsops/pathkey.go | 41 | // case for one physical directory. | COMMENT |
| LOW | internal/fsops/errors.go | 21 | COMMENT | |
| LOW | internal/fsops/errors.go | 41 | // the operation needs, or this transport has no such operation at all. | COMMENT |
| LOW | internal/fsops/remote/exec.go | 61 | // batchWidth is how many single stats of a batch are in flight at once. | COMMENT |
| LOW | internal/fsops/remote/remote.go | 161 | }() | COMMENT |
| LOW | internal/fsops/remote/remote.go | 541 | return err | COMMENT |
| LOW | internal/fsops/remote/remote.go | 721 | } | COMMENT |
| LOW | internal/api/middleware/chi.go | 1 | // Copyright (c) 2025-2026, s0up and the autobrr contributors. | COMMENT |
| LOW | internal/api/middleware/chi.go | 21 | COMMENT | |
| LOW | internal/api/sse/manager_delivery_test.go | 741 | COMMENT | |
| LOW | internal/api/sse/delta.go | 21 | // to the group, advancing the group's delta baseline as a side effect. It returns | COMMENT |
| LOW | internal/api/sse/delta.go | 301 | func (b *fpBuf) bit(v bool) { | COMMENT |
| LOW | internal/api/sse/manager.go | 41 | streamEventActivity = "activity" | COMMENT |
| LOW | internal/api/sse/manager.go | 61 | // an idle frame. It must stay below STREAM_DATA_STALE_TIMEOUT_MS (2 minutes) in | COMMENT |
| LOW | internal/api/sse/manager.go | 361 | } | COMMENT |
| LOW | internal/api/sse/manager.go | 401 | // from the success-only sync clock. On stream-error frames it lets the client | COMMENT |
| 95 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/contexts/SyncStreamContext.test.tsx | 224 | function renderSwappableSubscriber(initialParams: StreamParams) { | CODE |
| LOW | web/src/contexts/SyncStreamContext.test.tsx | 266 | function renderToggleableSubscriber(params: StreamParams) { | CODE |
| LOW | web/src/contexts/MobileScrollContext.tsx | 88 | export function useRegisterMobileScrollContainer(ref: RefObject<HTMLElement | null>) { | CODE |
| LOW | web/src/contexts/TorrentSelectionContext.tsx | 40 | export function useTorrentSelectionContext() { | CODE |
| LOW | web/src/contexts/TorrentSelectionContext.tsx | 48 | export function useTorrentSelectionSummary() { | CODE |
| LOW | web/src/components/torrents/CrossSeedDialog.tsx | 703 | export function buildCrossSeedTraceReport( | CODE |
| LOW | web/src/components/torrents/TorrentDropZone.tsx | 30 | function filterSupportedTorrentFiles(fileList: FileList | null | undefined): File[] { | CODE |
| LOW | web/src/components/torrents/TorrentDialogs.tsx | 1017 | export const RenameTorrentFolderDialog = memo(function RenameTorrentFolderDialog({ | CODE |
| LOW | web/src/components/torrents/TorrentDialogs.tsx | 1436 | export const CreateAndAssignCategoryDialog = memo(function CreateAndAssignCategoryDialog({ | CODE |
| LOW | web/src/components/torrents/TagCategoryManagement.tsx | 383 | export function DeleteEmptyCategoriesDialog({ | CODE |
| LOW | …src/components/torrents/TorrentFileMediaInfoDialog.tsx | 111 | export function TorrentFileMediaInfoDialog({ | CODE |
| LOW | web/src/components/torrents/AddTorrentDialog.tsx | 149 | function createEmptyDuplicateSummary(): DuplicateSummary { | CODE |
| LOW | web/src/components/torrents/DraggableTableHeader.tsx | 20 | function escapeColumnIdForSelector(columnId: string): string { | CODE |
| LOW | web/src/components/torrents/DraggableTableHeader.tsx | 41 | function measureTorrentColumnFitWidth(gridRoot: HTMLElement, columnId: string): number | null { | CODE |
| LOW | web/src/components/torrents/table/TorrentTableRow.tsx | 71 | export function torrentTableRowPropsAreEqual( | CODE |
| LOW | …/src/components/layout/UnifiedScopeDropdownSection.tsx | 25 | export function UnifiedScopeDropdownSection({ | CODE |
| LOW | …omponents/cross-seed/SeasonPackCategoryRulesEditor.tsx | 39 | export function SeasonPackCategoryRulesEditor({ | CODE |
| LOW | …c/components/cross-seed/CategoryMappingRulesEditor.tsx | 25 | export function CategoryMappingRulesEditor({ | CODE |
| LOW | …components/instances/preferences/WorkflowsOverview.tsx | 207 | function formatCategoryChangedSummary(details: AutomationActivity["details"], outcome?: AutomationActivity["outcome"]): | CODE |
| LOW | …components/instances/preferences/WorkflowsOverview.tsx | 258 | function formatExternalProgramSummary(details: AutomationActivity["details"], outcome?: AutomationActivity["outcome"]): | CODE |
| LOW | …components/instances/preferences/WorkflowsOverview.tsx | 269 | function formatExportedToInstanceSummary(details: AutomationActivity["details"], outcome?: AutomationActivity["outcome"] | CODE |
| LOW | …components/instances/preferences/WorkflowsOverview.tsx | 279 | function formatDeleteDryRunSummary(details: AutomationActivity["details"], action: AutomationActivity["action"]): string | CODE |
| LOW | …ents/instances/preferences/ReannounceEnableWarning.tsx | 20 | export function ReannounceEnableWarningAlert() { | CODE |
| LOW | …ents/instances/preferences/ReannounceEnableWarning.tsx | 41 | export function ReannounceEnableWarningDialog({ | CODE |
| LOW | …rc/components/instances/preferences/WorkflowDialog.tsx | 250 | function isSupportedSimpleSortField(field: string): field is ConditionField { | CODE |
| LOW | …rc/components/instances/preferences/WorkflowDialog.tsx | 254 | function isSupportedScoreMultiplierField(field: string): field is ConditionField { | CODE |
| LOW | …ts/instances/preferences/InstancePreferencesDialog.tsx | 129 | export function InstancePreferencesDialog({ | CODE |
| LOW | …/instances/preferences/AutomationActivityRunDialog.tsx | 64 | export function AutomationActivityRunDialog({ | CODE |
| LOW | web/src/components/themes/LicenseManager.tsx | 50 | function buildCheckoutUrlWithReturn(returnUrl: string): string { | CODE |
| LOW | web/src/components/query-builder/constants.ts | 224 | export function getTranslatedOperatorsForField(field: string, t: TFunction): { value: ConditionOperator; label: string } | CODE |
| LOW⚡ | web/src/components/query-builder/constants.ts | 238 | export function getTranslatedTorrentStates(t: TFunction): { value: string; label: string }[] { | CODE |
| LOW⚡ | web/src/components/query-builder/constants.ts | 243 | export function getTranslatedTrackerStatuses(t: TFunction): { value: string; label: string }[] { | CODE |
| LOW⚡ | web/src/components/query-builder/constants.ts | 248 | export function getTranslatedHardlinkScopes(t: TFunction): { value: string; label: string }[] { | CODE |
| LOW⚡ | web/src/components/query-builder/constants.ts | 257 | export function getTranslatedContentTypes(t: TFunction): { value: string; label: string }[] { | CODE |
| LOW⚡ | web/src/components/query-builder/constants.ts | 262 | export function getTranslatedSeasonPackStatuses(t: TFunction): { value: string; label: string }[] { | CODE |
| LOW | web/src/hooks/useTorrentActions.ts | 126 | export function scheduleTorrentListRefetches(queryClient: QueryClient, firstDelay: number) { | CODE |
| LOW | web/src/hooks/useTorrentActions.ts | 151 | export function resetPendingListRefetchesForTests() { | CODE |
| LOW | web/src/hooks/useDashboardSettings.ts | 47 | export function useUpdateDashboardSettings() { | CODE |
| LOW | web/src/hooks/usePersistedFilterSidebarState.ts | 8 | export function usePersistedFilterSidebarState(defaultCollapsed: boolean = false) { | CODE |
| LOW | web/src/hooks/usePersistedInstanceSelection.ts | 18 | export function usePersistedInstanceSelection(storageNamespace: string) { | CODE |
| LOW | web/src/hooks/useCrossSeedSettings.ts | 35 | export function useCrossSeedSearchSettings() { | CODE |
| LOW | web/src/hooks/useCrossSeedSettings.ts | 45 | export function usePatchCrossSeedSettings() { | CODE |
| LOW | web/src/hooks/useCrossSeedSettings.ts | 98 | export function useAggregatedInstanceMetadata(instanceIds: number[]) { | CODE |
| LOW | web/src/hooks/useCrossSeedBlocklistActions.ts | 76 | export function useCrossSeedBlocklistActions(instanceId: number) { | CODE |
| LOW | web/src/hooks/usePersistedColumnVisibility.ts | 13 | export function usePersistedColumnVisibility( | CODE |
| LOW | web/src/hooks/usePersistedShowEmptyState.ts | 12 | export function usePersistedShowEmptyState(key: string, defaultValue: boolean = false) { | CODE |
| LOW | web/src/hooks/usePersistedCrossSeedBlocklist.ts | 10 | export function usePersistedCrossSeedBlocklist(instanceId: number, defaultValue: boolean = false) { | CODE |
| LOW | web/src/hooks/useTorrentListEmptyMessage.ts | 9 | export function useTorrentListEmptyMessage(hasFilters: boolean, hasSearch: boolean): string { | CODE |
| LOW | web/src/hooks/usePersistedColumnSorting.ts | 13 | export function usePersistedColumnSorting( | CODE |
| LOW | web/src/hooks/usePersistedDateTimePreferences.ts | 27 | export function usePersistedDateTimePreferences() { | CODE |
| LOW | web/src/hooks/usePersistedLogExclusions.ts | 17 | export function usePersistedLogExclusions() { | CODE |
| LOW | web/src/hooks/useCrossSeedInstanceState.ts | 25 | export function useCrossSeedInstanceState(): CrossSeedInstanceStateResult { | CODE |
| LOW | web/src/hooks/useOrphanScan.ts | 28 | export function useUpdateOrphanScanSettings(instanceId: number) { | CODE |
| LOW | web/src/hooks/useOrphanScan.ts | 119 | export function useConfirmOrphanScanDeletion(instanceId: number) { | CODE |
| LOW | web/src/hooks/useTrackerCustomizations.ts | 29 | export function useCreateTrackerCustomization() { | CODE |
| LOW | web/src/hooks/useTrackerCustomizations.ts | 48 | export function useUpdateTrackerCustomization() { | CODE |
| LOW | web/src/hooks/useTrackerCustomizations.ts | 68 | export function useDeleteTrackerCustomization() { | CODE |
| LOW | web/src/hooks/useTrackerCustomizations.ts | 102 | export function buildTrackerCustomizationMaps(customizations?: TrackerCustomization[] | null): TrackerCustomizationMaps | CODE |
| LOW | web/src/hooks/usePersistedTitleBarSpeeds.ts | 10 | export function usePersistedTitleBarSpeeds(defaultValue: boolean = false) { | CODE |
| LOW | web/src/hooks/usePersistedUnifiedInstanceFilter.ts | 14 | export function usePersistedUnifiedInstanceFilter(): [ | CODE |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/agents/triage.md | 34 | > *This was generated by AI during triage.* | CODE |
| HIGH | docs/agents/triage.md | 79 | > *This was generated by AI during triage.* | CODE |
| HIGH | docs/agents/triage.md | 112 | > *This was generated by AI during triage.* | CODE |
| HIGH | docs/agents/triage.md | 189 | > *This was generated by AI during triage.* | CODE |
| HIGH | .github/workflows/triage.yml | 74 | body=$'> *This was generated by AI during triage.*\n\nClosed: no reply in '"$STALE_DAYS"$' days. Reply here wi | CODE |
| HIGH | .github/workflows/triage.yml | 96 | body=$'> *This was generated by AI during triage.*\n\nClosed as a duplicate of the discussion linked above: no | CODE |
| HIGH | .github/workflows/triage.yml | 221 | ./.github/scripts/discussion-write.sh comment $'> *This was generated by AI during triage.*\n\nAutomated triag | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | documentation/docs/features/cross-seed/dir-scan.md | 344 | POST /api/dir-scan/webhook/scan?apikey=YOUR_API_KEY | CODE |
| HIGH | documentation/docs/features/cross-seed/dir-scan.md | 358 | http://your-qui-host:7476/api/dir-scan/webhook/scan?apikey=YOUR_API_KEY | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | web/src/utils/pwaNativeTheme.ts | 124 | // Use background color for seamless status bar | COMMENT |
| MEDIUM | web/src/components/torrents/TorrentManagementBar.tsx | 91 | // Use shared metadata hook to leverage cache from table and filter sidebar | COMMENT |
| MEDIUM | internal/services/crossseed/service.go | 7 | // - Uses the rls parser for robust release name parsing on both torrent names and file names | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/services/crossseed/crossseed_test.go | 188 | // Step 1: Verify matching produces partial-in-pack | COMMENT |
| LOW | internal/services/crossseed/crossseed_test.go | 220 | // Step 1: Verify matching produces partial-in-pack | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | internal/services/crossseed/crossseed_test.go | 188 | // Step 1: Verify matching produces partial-in-pack | COMMENT |
| LOW | internal/services/crossseed/crossseed_test.go | 220 | // Step 1: Verify matching produces partial-in-pack | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/update-headers.py | 115 | CODE | |
| LOW | scripts/update-headers.py | 249 | CODE | |
| LOW | scripts/update-headers.py | 279 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/format.yml | 46 | # Check if there are any changes to commit | COMMENT |
| LOW | .github/workflows/format.yml | 52 | # Check if PR already exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/update-headers.py | 205 | except Exception as e: | CODE |
| LOW | scripts/update-headers.py | 244 | except Exception as e: | CODE |