Repository Analysis

rommapp/romm

A beautiful, powerful, self-hosted rom manager and player.

11.2 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of rommapp/romm, a Python project with 11,143 GitHub stars. SynthScan v2.0 examined 319,143 lines of code across 1608 source files, recording 2621 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 11.2 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

11.2
Adjusted Score
11.2
Raw Score
100%
Time Factor
2026-07-14
Last Push
11.1K
Stars
Python
Language
319.1K
Lines of Code
1.6K
Files
2.6K
Pattern Hits
2026-07-14
Scan Date
0.03
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 43MEDIUM 397LOW 2181

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 2621 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers1668 hits · 1576 pts
SeverityFileLineSnippetContext
LOWfrontend/src/utils/index.ts593export function areThreadsRequiredForEJSCore(core: string): boolean {CODE
LOWfrontend/src/utils/index.ts650export function getControlSchemeForPlatform(CODE
LOWfrontend/src/utils/index.ts666export function isRuffleEmulationSupported(CODE
LOWfrontend/src/utils/indexdb-monitor.ts37export default async function createIndexedDBDiffMonitor({CODE
LOWfrontend/src/v2/composables/useCan/index.ts26export function installPermissionsHydration() {CODE
LOWfrontend/src/v2/composables/useBreakpoint/index.ts94export function installBreakpointAttribute(): void {CODE
LOW…ontend/src/v2/composables/usePlatformPlayable/index.ts80export function usePlatformPlayableChecker(): {CODE
LOW…ontend/src/v2/composables/useGalleryFilterUrl/index.ts307 function setOrDelete(key: string, value: string | null) {CODE
LOWfrontend/src/v2/composables/useGameActions/index.ts328 async function removeFromContinuePlaying() {CODE
LOWfrontend/src/v2/utils/smartCollectionCriteria.ts200export function hasAnySmartFilterCriteria(c: SmartFilterCriteria): boolean {CODE
LOWfrontend/src/v2/utils/smartCollectionCriteria.ts436export function summarizeSmartFilterCriteria(CODE
LOWfrontend/src/v2/components/GameDetails/ManualSubtab.vue120async function confirmFolderConversionIfNeeded(): Promise<boolean> {CODE
LOWfrontend/src/v2/components/GameDetails/MediaTab.vue109async function confirmFolderConversionIfNeeded(): Promise<boolean> {CODE
LOW…nd/src/v2/components/GameDetails/ScreenshotsSubtab.vue66async function confirmFolderConversionIfNeeded(): Promise<boolean> {CODE
LOWfrontend/src/v2/components/Dialogs/EditRomDialog.vue284function handleRomUpdateFromMetadata(updatedRom: UpdateRom) {CODE
LOWfrontend/src/v2/views/Settings/UserInterface.vue146function onVirtualCollectionTypeChange(value: unknown) {CODE
LOW…ibraryManagement/Config/Dialog/CreateFolderMapping.vue190function getMappingTypeDescription(type: "alias" | "variant"): string {CODE
LOWfrontend/src/components/Home/ContinuePlaying.vue24function toggleGridContinuePlaying() {CODE
LOW…nts/common/Collection/Dialog/CreateSmartCollection.vue109function toggleCollectionVisibility() {CODE
LOWfrontend/src/components/common/Game/Dialog/EditRom.vue366function handleRomUpdateFromMetadata(updatedRom: UpdateRom) {CODE
LOWfrontend/src/components/common/Dialog/SearchCover.vue29function handleShowSearchCoverDialog({ term }: { term: string }) {CODE
LOWfrontend/src/views/Settings/MetadataSources.vue119function getConnectionStatusTooltip(source: {CODE
LOW…ntend/src/views/Gallery/Collection/SmartCollection.vue15function setCurrentSmartCollection(collection: CollectionType) {CODE
LOW…end/src/views/Gallery/Collection/VirtualCollection.vue15function setCurrentVirtualCollection(collection: CollectionType) {CODE
LOWfrontend/src/views/Player/EmulatorJS/utils.ts157export function invalidateEmulatorJSRomCacheIfRenamed(rom: {CODE
LOWfrontend/src/views/Player/EmulatorJS/utils.ts185function isIOSFullscreenShimRequired() {CODE
LOWfrontend/src/views/Player/EmulatorJS/utils.ts308export function createExitEmulationButton(): HTMLButtonElement {CODE
LOWfrontend/src/services/api/config.ts37async function deletePlatformVersionConfig({ fsSlug }: { fsSlug: string }) {CODE
LOWbackend/startup.py55def _enqueue_recompute_save_hashes_if_needed() -> None:CODE
LOWbackend/startup.py102def _enqueue_convert_images_to_webp() -> None:CODE
LOWbackend/sync_watcher.py46def _extract_device_and_platform(path: str) -> tuple[str, str, str] | None:CODE
LOWbackend/handler/scan_handler.py86def get_main_platform_igdb_id(platform: Platform):CODE
LOWbackend/handler/scan_handler.py104def get_priority_ordered_metadata_sources(CODE
LOWbackend/handler/scan_handler.py404 async def fetch_playmatch_hash_match() -> PlaymatchRomMatch:CODE
LOWbackend/handler/scan_handler.py433 async def fetch_hasheous_hash_match() -> HasheousRom:CODE
LOWbackend/handler/play_session_handler.py40def _update_rom_user_last_played(CODE
LOWbackend/handler/rom_conversion.py12async def promote_single_file_to_folder(rom: Rom) -> Rom:CODE
LOWbackend/handler/database/devices_handler.py37 def get_device_by_fingerprint(CODE
LOWbackend/handler/database/devices_handler.py81 def get_device_by_client_identifier(CODE
LOWbackend/handler/database/devices_handler.py108 def get_all_devices_by_sync_mode(CODE
LOWbackend/handler/database/devices_handler.py149 def update_last_seen_debounced(CODE
LOWbackend/handler/database/roms_handler.py144def _filter_values_cache_version() -> str:CODE
LOWbackend/handler/database/roms_handler.py148def _filter_values_cache_keys_key(version: str) -> str:CODE
LOWbackend/handler/database/roms_handler.py392 def _filter_by_virtual_collection_id(CODE
LOWbackend/handler/database/roms_handler.py405 def _filter_by_smart_collection_id(CODE
LOWbackend/handler/database/roms_handler.py420 def _build_fulltext_boolean_query(self, term: str) -> str | None:CODE
LOWbackend/handler/database/roms_handler.py426 def _build_fulltext_relevance(self, search_term: str) -> str | None:CODE
LOWbackend/handler/database/roms_handler.py571 def _filter_by_missing_from_fs(self, query: Query, value: bool) -> Query:CODE
LOWbackend/handler/database/roms_handler.py759 def _filter_by_metadata_providers(CODE
LOWbackend/handler/database/roms_handler.py1635 def get_rom_files_by_category(CODE
LOWbackend/handler/database/roms_handler.py2197 def invalidate_filter_values_cache(self) -> None:CODE
LOWbackend/handler/database/device_save_sync_handler.py29 def get_syncs_for_device_and_saves(CODE
LOWbackend/handler/database/saves_handler.py136 def get_latest_saves_for_roms(CODE
LOWbackend/handler/database/saves_handler.py248 def count_saves_missing_content_hash(CODE
LOWbackend/handler/database/screenshots_handler.py86 def get_rom_gallery_screenshots(CODE
LOWbackend/handler/database/sync_sessions_handler.py85 def increment_operations_completed(CODE
LOWbackend/handler/database/collections_handler.py195 def remove_roms_from_collection(CODE
LOWbackend/handler/database/collections_handler.py284 def get_smart_collection_by_name(CODE
LOWbackend/handler/database/collections_handler.py346 def get_smart_collection_roms(CODE
LOWbackend/handler/database/stats_handler.py114 def get_metadata_coverage_by_platform(CODE
1608 more matches not shown…
Decorative Section Separators351 hits · 1099 pts
SeverityFileLineSnippetContext
MEDIUM…end/src/v2/composables/useGalleryVirtualItems/index.ts241 // ── Structural sharing across re-packs ────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/composables/useCoverAnimation/index.ts132 // ── CD spin (+ launch drop) ───────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/composables/useCoverAnimation/index.ts206 // ── Cartridge slot-in ─────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/composables/useCoverAnimation/index.ts218 // ── Launch flourish (player view) ─────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/composables/useCoverAnimation/index.ts237 // ── Hover video ───────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/composables/useCoverAnimation/index.ts282 // ── Motion preference flips off mid-flight ────────────────────────COMMENT
MEDIUM…ontend/src/v2/composables/useGalleryFilterUrl/index.ts135 // ── URL → store ──────────────────────────────────────────────COMMENT
MEDIUM…ontend/src/v2/composables/useGalleryFilterUrl/index.ts301 // ── Store → URL ──────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Settings/SettingsSection.vue7// ├─────────────────────────────────────────────────────┤COMMENT
MEDIUMfrontend/src/v2/components/Settings/SettingsSection.vue10// └─────────────────────────────────────────────────────┘COMMENT
MEDIUMfrontend/src/v2/components/Auth/SetupStepAdmin.vue58// ── Avatar picker ──────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Auth/SetupStepPlatforms.vue58// ── Detected platforms ─────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Auth/SetupStepPlatforms.vue110// ── Detected-pane filter ───────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Auth/SetupStepPlatforms.vue162// ── Supported (selectable) platforms ───────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Auth/SetupStepPlatforms.vue205// ── Search ─────────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Auth/SetupStepPlatforms.vue225// ── Selection helpers ──────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Auth/SetupStepPlatforms.vue304// ── Structure banner copy ──────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/SettingsTab.vue44// ── Name edit form ─────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/SettingsTab.vue100// ── Details (read-only) ────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/FilterDrawer.vue116// ── Tri-state mapping helpers ──────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/FilterDrawer.vue252// ── Multi-select sections ──────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/FilterDrawer.vue385// ── Platform multi-select ──────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/FilterDrawer.vue396// ── Active-filter count (footer badge) ────────────────────────COMMENT
MEDIUM…nd/src/v2/components/Gallery/CollectionSettingsTab.vue79// ── Edit form state ─────────────────────────────────────────────COMMENT
MEDIUM…nd/src/v2/components/Gallery/CollectionSettingsTab.vue163// ── Cover preview ───────────────────────────────────────────────COMMENT
MEDIUM…nd/src/v2/components/Gallery/CollectionSettingsTab.vue202// ── Cover actions ───────────────────────────────────────────────COMMENT
MEDIUM…nd/src/v2/components/Gallery/CollectionSettingsTab.vue238// ── Save ────────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/GalleryShell.vue360// ── Toolbar two-layer state ─────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/GalleryShell.vue452// ── Viewport range / AlphaStrip / dwell prefetch ────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/GalleryShell.vue482// ── Debug overlay bridge ────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/GalleryShell.vue671// ── Search filter (debounced) ───────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/GalleryShell.vue690// ── List-mode sort ────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/GalleryShell.vue717// ── Scroll restoration ─────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/GalleryShell.vue812// ── Slot helpers ────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Gallery/FirmwareTab.vue87// ── Inline upload (no dialog — the dropzone lives in the tab) ──────COMMENT
MEDIUMfrontend/src/v2/components/GameCard/GameCard.vue199// ── Cover hover / focus ─────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/shared/AssetList.stories.ts6// ── Mock builders ────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/shared/AssetList.stories.ts68// ── Stories ──────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/shared/AssetStrip.stories.ts9// ── Mock builders ────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/shared/AssetStrip.stories.ts94// ── Meta ─────────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/shared/AssetStrip.stories.ts120// ── Stories ──────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/shared/IndexShell.vue56// ── Two-layer toolbar state ─────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/GameDetails/NotesTab.vue78// ── Selection (URL-synced via ?note=<id>) ────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/GameDetails/NotesTab.vue143// ── Edit form ────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Dialogs/EditRomDialog.vue106// ── Tabbed editing surface ───────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Player/AssetCard.stories.ts75// ── Save (no screenshot) ────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Player/AssetCard.stories.ts89// ── Save without emulator chip ─────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Player/AssetCard.stories.ts104// ── State (with screenshot) ─────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Player/AssetCard.stories.ts118// ── State without a screenshot (placeholder pattern) ────────────COMMENT
MEDIUMfrontend/src/v2/components/Player/AssetCard.stories.ts138// ── Long filename — ellipsis path ──────────────────────────────COMMENT
MEDIUMfrontend/src/v2/components/Player/AssetCard.stories.ts159// ── Grid layout (real picker context) ──────────────────────────COMMENT
MEDIUM…ontend/src/v2/components/Player/ResumePanel.stories.ts15// ── Fixture builders ─────────────────────────────────────────────COMMENT
MEDIUM…ontend/src/v2/components/Player/ResumePanel.stories.ts117// ── Meta ─────────────────────────────────────────────────────────COMMENT
MEDIUM…ontend/src/v2/components/Player/ResumePanel.stories.ts295// ── Stories ──────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/lib/forms/RSlider/RSlider.stories.ts44// ── Defaults ────────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/lib/forms/RSlider/RSlider.stories.ts48// ── Value badges ───────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/lib/forms/RSlider/RSlider.stories.ts65// ── Steps + ticks ──────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/lib/forms/RSlider/RSlider.stories.ts77// ── Range examples ─────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/lib/forms/RSlider/RSlider.stories.ts102// ── Color tones ────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/v2/lib/forms/RSlider/RSlider.stories.ts127// ── States ─────────────────────────────────────────────────────────COMMENT
291 more matches not shown…
Over-Commented Block212 hits · 212 pts
SeverityFileLineSnippetContext
LOW…end/src/v2/composables/useGalleryVirtualItems/types.ts1// Discriminated union describing every kind of row that can live inside aCOMMENT
LOW…end/src/v2/composables/useGalleryVirtualItems/index.ts1// useGalleryVirtualItems — turns the gallery's structural state (mode,COMMENT
LOW…end/src/v2/composables/useGalleryVirtualItems/index.ts21// * Structural sharing — unchanged item objects are reused from the previousCOMMENT
LOW…end/src/v2/composables/useGalleryVirtualItems/index.ts241 // ── Structural sharing across re-packs ────────────────────────────────COMMENT
LOWfrontend/src/v2/composables/useWrapGridNav/index.ts1// useWrapGridNavCOMMENT
LOWfrontend/src/v2/composables/useSnackbar/index.ts1// useSnackbar — typed convenience wrapper around the global `snackbarShow`COMMENT
LOWfrontend/src/v2/composables/useConfirm/index.ts1// useConfirm — open the global ConfirmDialog and await the user's choice.COMMENT
LOWfrontend/src/v2/composables/useCoverAnimation/index.ts1// useCoverAnimation — the "juicy" motion layer for alt-art game covers.COMMENT
LOW…tend/src/v2/composables/useVirtualScrollDebug/index.ts1// useVirtualScrollDebug — shared diagnostics bridge from the activeCOMMENT
LOWfrontend/src/v2/composables/useGamepad/index.ts1// useGamepadCOMMENT
LOWfrontend/src/v2/composables/useGamepad/index.ts21// Action buttons (A/B/Back/Start/LB/RB) fire once per press — no repeat —COMMENT
LOWfrontend/src/v2/composables/useGamepad/index.ts181COMMENT
LOW…tend/src/v2/composables/useGalleryCoverRatios/index.ts1// useGalleryCoverRatios — the gallery's measured natural cover ratios.COMMENT
LOW…tend/src/v2/composables/useGalleryCoverRatios/index.ts21COMMENT
LOWfrontend/src/v2/composables/useCan/index.ts1// useCan — reactive permission check against the v2 permissions store.COMMENT
LOWfrontend/src/v2/composables/useGlobalHotkeys/index.ts1// useGlobalHotkeys — app-wide keyboard shortcuts. Kept intentionallyCOMMENT
LOWfrontend/src/v2/composables/useCoverArt/index.ts1// useCoverArt — single source of truth for what image a game cover showsCOMMENT
LOWfrontend/src/v2/composables/useBoxFaces/index.ts1// useBoxFaces — resolves the three flat scans an interactive 3D box needsCOMMENT
LOW…ontend/src/v2/composables/useServerConnection/index.ts1// useServerConnection — single orchestrator for backend reachability in v2.COMMENT
LOWfrontend/src/v2/composables/useBreakpoint/index.ts1// useBreakpoint — reactive responsive breakpoints with the same namesCOMMENT
LOWfrontend/src/v2/composables/useTileSearchUrl/index.ts1// useTileSearchUrl — bookmarkable per-view tile search backed by theCOMMENT
LOW…ontend/src/v2/composables/usePlatformPlayable/index.ts1// usePlatformPlayable — reactive "can any ROM on this platform runCOMMENT
LOWfrontend/src/v2/composables/useSocketEvent/index.ts1// useSocketEvent — typed wrapper around the shared Socket.IO instance withCOMMENT
LOW…ontend/src/v2/composables/useRightStickScroll/index.ts1// useRightStickScrollCOMMENT
LOWfrontend/src/v2/composables/useScanLifecycle/index.ts1// useScanLifecycle — global wire-up between the scan socket events and theCOMMENT
LOWfrontend/src/v2/composables/useGridNav/index.ts1// useGridNavCOMMENT
LOWfrontend/src/v2/composables/useGridNav/index.ts21//COMMENT
LOW…ontend/src/v2/composables/useGalleryFilterUrl/index.ts1// useGalleryFilterUrl — bookmarkable gallery filters via URL queryCOMMENT
LOW…ontend/src/v2/composables/useGalleryFilterUrl/index.ts21// ?filterStates=true|falseCOMMENT
LOWfrontend/src/v2/composables/useGameActions/index.ts1// useGameActions — shared action handlers for a ROM. One place forCOMMENT
LOWfrontend/src/v2/composables/useGalleryMode/index.ts1// useGalleryMode — global gallery-view preferences backed by localStorage.COMMENT
LOWfrontend/src/v2/composables/useCrtMode/index.ts1// useCrtMode — singleton toggle for the cosmetic "CRT mode" shader.COMMENT
LOWfrontend/src/v2/composables/useWebpSupport/index.ts1// useWebpSupport — single-source resolution of whether the backend servesCOMMENT
LOWfrontend/src/v2/composables/useViewTransition/index.ts1// useViewTransition — tiny wrapper around the browser View Transitions APICOMMENT
LOWfrontend/src/v2/composables/useViewTransition/index.ts21// Graceful degradation:COMMENT
LOWfrontend/src/v2/composables/useViewTransition/index.ts121 if (name === "smart-collection" && params.collection) {COMMENT
LOW…tend/src/v2/composables/useGalleryViewModeUrl/index.ts1// useGalleryViewModeUrl — bookmarkable view-mode (groupBy + layout) viaCOMMENT
LOW…d/src/v2/composables/useGallerySelectionInput/index.ts1// useGallerySelectionInput — shared input plumbing that turnsCOMMENT
LOW…ntend/src/v2/composables/usePlatformIconCache/index.ts1// Singleton in-memory cache of platform icon SVGs as blob URLs.COMMENT
LOWfrontend/src/v2/composables/useThemeMode/index.ts1// useThemeMode — reactive `isLight` / `isDark` driven by the same sourceCOMMENT
LOWfrontend/src/v2/stores/galleryRoms.ts1// galleryRoms (v2) — windowed/sparse store for the active gallery list.COMMENT
LOWfrontend/src/v2/stores/galleryRoms.ts61// fewer requests but each one downloads more.COMMENT
LOWfrontend/src/v2/stores/galleryRoms.ts441 if (!this.pendingWindows.has(offset)) return;COMMENT
LOWfrontend/src/v2/stores/focusRestoration.ts1// focusRestoration (v2) — remembers each route's last focused tile soCOMMENT
LOWfrontend/src/v2/stores/scrollRestoration.ts1// scrollRestoration (v2) — remembers each route's last scrollTop on theCOMMENT
LOWfrontend/src/v2/stores/gallerySelection.ts1// v2GallerySelection — multi-select state for the gallery viewsCOMMENT
LOWfrontend/src/v2/stores/gallerySelection.ts21// "selection mode" is implicit (no separate flag) — first toggleCOMMENT
LOWfrontend/src/v2/utils/validation.ts1// Validation helpers for v2 forms. Each export returns a Vuetify-compatibleCOMMENT
LOWfrontend/src/v2/utils/covers.ts1// Procedural "no cover" artwork — v2 port of v1's `utils/covers`.COMMENT
LOWfrontend/src/v2/utils/smartCollectionCriteria.ts1// Smart-collection filter criteria helpers — single source of truth forCOMMENT
LOWfrontend/src/v2/utils/romArtwork.ts1// Resolves the art assets attached to a ROM into a flat, display-ready list.COMMENT
LOWfrontend/src/v2/components/Settings/ScopeTree.vue1<script setup lang="ts">COMMENT
LOW…d/src/v2/components/Settings/FolderMappingTypeCell.vue1<script setup lang="ts">COMMENT
LOWfrontend/src/v2/components/Settings/SettingsSection.vue1<script setup lang="ts">COMMENT
LOW…d/src/v2/components/Settings/FolderMappingsSection.vue1<script setup lang="ts">COMMENT
LOW…c/v2/components/Settings/FolderMappingPlatformCell.vue1<script setup lang="ts">COMMENT
LOWfrontend/src/v2/components/Settings/SettingsSidebar.vue1<script setup lang="ts">COMMENT
LOW…src/v2/components/Settings/CreateClientTokenDialog.vue1<script setup lang="ts">COMMENT
LOW…end/src/v2/components/Settings/MissingGamesSection.vue1<script setup lang="ts">COMMENT
LOWfrontend/src/v2/components/Home/CardRow.vue1<script setup lang="ts">COMMENT
152 more matches not shown…
Cross-File Repetition27 hits · 135 pts
SeverityFileLineSnippetContext
HIGHbackend/tests/adapters/services/test_mobygames.py0test that the request reserves a rate-limiter slot before sending.STRING
HIGH…ckend/tests/adapters/services/test_retroachivements.py0test that the request reserves a rate-limiter slot before sending.STRING
HIGHbackend/tests/adapters/services/test_igdb.py0test that the request reserves a rate-limiter slot before sending.STRING
HIGHbackend/tests/adapters/services/test_mobygames.py0integration tests with real api calls using vcr cassettes.STRING
HIGHbackend/tests/adapters/services/test_steamgriddb.py0integration tests with real api calls using vcr cassettes.STRING
HIGHbackend/tests/adapters/services/test_screenscraper.py0integration tests with real api calls using vcr cassettes.STRING
HIGHbackend/alembic/versions/0045_roms_metadata_update.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( (r.maSTRING
HIGHbackend/alembic/versions/0074_fix_empty_json_arrays.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( (r.maSTRING
HIGH…kend/alembic/versions/0052_roms_metadata_flashpoint.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( (r.maSTRING
HIGH…nd/alembic/versions/0063_roms_metadata_player_count.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( (r.maSTRING
HIGHbackend/alembic/versions/0061_manual_metadata.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( (r.maSTRING
HIGHbackend/alembic/versions/0070_ss_age_ratings.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( (r.maSTRING
HIGH…ckend/alembic/versions/0058_roms_metadata_launchbox.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( (r.maSTRING
HIGHbackend/alembic/versions/0045_roms_metadata_update.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( json_STRING
HIGHbackend/alembic/versions/0074_fix_empty_json_arrays.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( json_STRING
HIGH…kend/alembic/versions/0052_roms_metadata_flashpoint.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( json_STRING
HIGH…nd/alembic/versions/0063_roms_metadata_player_count.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( json_STRING
HIGHbackend/alembic/versions/0061_manual_metadata.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( json_STRING
HIGHbackend/alembic/versions/0070_ss_age_ratings.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( json_STRING
HIGH…ckend/alembic/versions/0058_roms_metadata_launchbox.py0create or replace view roms_metadata as select r.id as rom_id, now() as created_at, now() as updated_at, coalesce( json_STRING
HIGH…nd/alembic/versions/0073_sibling_roms_metadata_only.py0create or replace view sibling_roms as select r1.id as rom_id, r2.id as sibling_rom_id, r1.platform_id as platform_id, nSTRING
HIGHbackend/alembic/versions/0048_sibling_roms_more_ids.py0create or replace view sibling_roms as select r1.id as rom_id, r2.id as sibling_rom_id, r1.platform_id as platform_id, nSTRING
HIGHbackend/alembic/versions/0069_sibling_roms_fs_name.py0create or replace view sibling_roms as select r1.id as rom_id, r2.id as sibling_rom_id, r1.platform_id as platform_id, nSTRING
HIGHbackend/alembic/versions/0071_sibling_roms_fs_name.py0create or replace view sibling_roms as select r1.id as rom_id, r2.id as sibling_rom_id, r1.platform_id as platform_id, nSTRING
HIGH…kend/alembic/versions/0038_add_ssid_to_sibling_roms.py0create view sibling_roms as select r1.id as rom_id, r2.id as sibling_rom_id, r1.platform_id as platform_id, now() as creSTRING
HIGHbackend/alembic/versions/0024_sibling_roms_db_view.py0create view sibling_roms as select r1.id as rom_id, r2.id as sibling_rom_id, r1.platform_id as platform_id, now() as creSTRING
HIGHbackend/alembic/versions/0048_sibling_roms_more_ids.py0create view sibling_roms as select r1.id as rom_id, r2.id as sibling_rom_id, r1.platform_id as platform_id, now() as creSTRING
Self-Referential Comments37 hits · 117 pts
SeverityFileLineSnippetContext
MEDIUMentrypoint.sh22# Define a signal handler to propagate termination signalsCOMMENT
MEDIUMbackend/sync_watcher.py137 # Create a sync sessionCOMMENT
MEDIUMbackend/handler/database/roms_handler.py954 # Create a subquery that identifies the primary ROM in each groupCOMMENT
MEDIUMbackend/handler/metadata/gamelist_handler.py257 # Create a copy of the metadata to avoid modifying the cached versionCOMMENT
MEDIUMbackend/endpoints/sync.py156 # Create a new sync sessionCOMMENT
MEDIUMbackend/endpoints/sync.py462 # Create a session and enqueue the jobCOMMENT
MEDIUMbackend/endpoints/sockets/scan.py275 # Create the entry early so we have the IDCOMMENT
MEDIUMbackend/tests/handler/auth/test_session_middleware.py198 # Create a sessionCOMMENT
MEDIUMbackend/tests/handler/auth/test_session_middleware.py328 # Create a sessionCOMMENT
MEDIUMbackend/tests/handler/filesystem/test_base_handler.py229 # Create a file firstCOMMENT
MEDIUMbackend/tests/handler/filesystem/test_base_handler.py244 # Create a file (should not be listed)COMMENT
MEDIUMbackend/tests/handler/filesystem/test_roms_handler.py365 # Create the test fileCOMMENT
MEDIUMbackend/tests/handler/filesystem/test_roms_handler.py538 # Create a test file to renameCOMMENT
MEDIUMbackend/tests/handler/filesystem/test_roms_handler.py698 # Create a test file with known content for hash verificationCOMMENT
MEDIUMbackend/tests/handler/filesystem/test_roms_handler.py796 # Create a mock CHD v5 file in a temporary directoryCOMMENT
MEDIUMbackend/tests/handler/filesystem/test_roms_handler.py812 # Create a new handler instance with temp base pathCOMMENT
MEDIUMbackend/tests/handler/filesystem/test_roms_handler.py1080 # Create a CHD v4 file (should not use internal hash logic)COMMENT
MEDIUM…end/tests/handler/filesystem/test_resources_handler.py218 # Create a mock image with high resolutionCOMMENT
MEDIUM…end/tests/handler/filesystem/test_resources_handler.py236 # Create a mock image with low resolutionCOMMENT
MEDIUMbackend/tests/tasks/test_update_switch_titledb.py150 # Create a large dataset to test batchingCOMMENT
MEDIUMbackend/tests/tasks/test_tasks.py282 # Create a proper HTTPStatusErrorCOMMENT
MEDIUMbackend/tests/tasks/test_update_launchbox_metadata.py133 # Create a mock pipeline with async context manager supportCOMMENT
MEDIUMbackend/tests/tasks/test_update_launchbox_metadata.py202 # Create a mock pipeline with async context manager supportCOMMENT
MEDIUMbackend/tests/tasks/test_update_launchbox_metadata.py241 # Create a mock pipeline with async context manager supportCOMMENT
MEDIUMbackend/tests/tasks/test_update_launchbox_metadata.py292 # Create a mock pipeline with async context manager supportCOMMENT
MEDIUMbackend/tests/tasks/test_sync_push_pull.py157 # Create an additional archival (null-slot) save with the same filenameCOMMENT
MEDIUMbackend/tests/endpoints/test_tasks.py183 # Create a token without TASKS_RUN scopeCOMMENT
MEDIUMbackend/tests/adapters/services/test_mobygames.py28 # Create a real request-like objectCOMMENT
MEDIUMbackend/tests/adapters/services/test_steamgriddb.py30 # Create a real request-like objectCOMMENT
MEDIUM…ckend/tests/adapters/services/test_retroachivements.py23 # Create a real request-like objectCOMMENT
MEDIUMbackend/tests/adapters/services/test_screenscraper.py39 # Create a real request-like objectCOMMENT
MEDIUMbackend/models/rom.py570 # Create a deep copy to avoid mutating the original metadataCOMMENT
MEDIUMbackend/models/collection.py127 # Create a reversible encoded IDCOMMENT
MEDIUMbackend/alembic/versions/0022_collections_.py36 # Define the path for the new folderCOMMENT
MEDIUMbackend/alembic/versions/0022_collections_.py39 # Create the new folder if it doesn't existCOMMENT
MEDIUMbackend/alembic/versions/0057_multi_notes.py23 # Create the new rom_notes tableCOMMENT
MEDIUMbackend/alembic/versions/0047_smart_collections.py24 # Create the smart collections tableCOMMENT
Excessive Try-Catch Wrapping103 hits · 110 pts
SeverityFileLineSnippetContext
LOWbackend/startup.py64 except Exception:CODE
LOWbackend/startup.py96 except Exception:CODE
LOWbackend/startup.py128 except Exception:CODE
LOWbackend/sync_watcher.py167 except Exception:CODE
LOWbackend/handler/rom_conversion.py63 except Exception:CODE
LOWbackend/handler/rom_conversion.py66 except Exception:CODE
LOWbackend/handler/filesystem/assets_handler.py169 except Exception as e:CODE
LOWbackend/handler/filesystem/resources_handler.py197 except Exception as exc:CODE
LOWbackend/handler/filesystem/resources_handler.py369 except Exception as exc:CODE
LOWbackend/handler/filesystem/resources_handler.py484 except Exception as exc:CODE
LOWbackend/handler/filesystem/resources_handler.py626 except Exception as exc:CODE
LOWbackend/handler/filesystem/base_handler.py251 except Exception:CODE
LOWbackend/handler/metadata/flashpoint_handler.py157 except Exception as e:CODE
LOWbackend/handler/metadata/flashpoint_handler.py212 except Exception as exc:CODE
LOWbackend/handler/metadata/flashpoint_handler.py407 except Exception as exc:CODE
LOWbackend/handler/metadata/hltb_handler.py210 except Exception as e:CODE
LOWbackend/handler/metadata/hltb_handler.py236 except Exception as e:CODE
LOWbackend/handler/metadata/hltb_handler.py247 except Exception as e:CODE
LOWbackend/handler/metadata/hltb_handler.py398 except Exception as exc:CODE
LOWbackend/handler/metadata/hltb_handler.py573 except Exception as exc:CODE
LOWbackend/handler/metadata/ra_handler.py142 except Exception as e:CODE
LOWbackend/handler/metadata/ss_handler.py623 except Exception as e:CODE
LOWbackend/handler/metadata/moby_handler.py91 except Exception as e:CODE
LOWbackend/handler/metadata/sgdb_handler.py43 except Exception as e:CODE
LOWbackend/handler/metadata/sgdb_handler.py77 except Exception as e:CODE
LOWbackend/handler/metadata/sgdb_handler.py152 except Exception as e:CODE
LOWbackend/handler/metadata/libretro_handler.py81 except Exception as exc:CODE
MEDIUMbackend/handler/metadata/libretro_handler.py78def heartbeat(self) -> bool:CODE
LOWbackend/handler/metadata/hasheous_handler.py145 except Exception as e:CODE
LOWbackend/handler/metadata/hasheous_handler.py298 except Exception as exc:CODE
LOWbackend/handler/metadata/gamelist_handler.py365 except Exception as e:CODE
LOWbackend/handler/metadata/gamelist_handler.py460 except Exception as e:CODE
LOWbackend/handler/metadata/playmatch_handler.py122 except Exception as e:CODE
LOWbackend/handler/metadata/playmatch_handler.py233 except Exception as exc:CODE
LOWbackend/handler/metadata/playmatch_handler.py329 except Exception:CODE
LOWbackend/handler/metadata/igdb_handler.py648 except Exception as e:CODE
LOW…end/handler/metadata/launchbox_handler/local_source.py77 except Exception:CODE
LOWbackend/tasks/tasks.py27 except Exception as e:CODE
LOWbackend/tasks/sync_push_pull_task.py107 except Exception as e:CODE
LOWbackend/tasks/sync_push_pull_task.py161 except Exception:CODE
LOWbackend/tasks/sync_push_pull_task.py183 except Exception as e:CODE
LOWbackend/tasks/sync_push_pull_task.py409 except Exception:CODE
LOWbackend/tasks/manual/cleanup_missing_roms.py72 except Exception as e:CODE
LOWbackend/tasks/manual/cleanup_orphaned_resources.py125 except Exception as e:CODE
LOWbackend/tasks/manual/cleanup_orphaned_resources.py145 except Exception as e:CODE
LOWbackend/tasks/manual/recompute_save_content_hashes.py94 except Exception as e:CODE
LOWbackend/tasks/manual/recompute_save_content_hashes.py120 except Exception as e:CODE
LOWbackend/tasks/scheduled/convert_images_to_webp.py83 except Exception as exc:CODE
LOWbackend/tasks/scheduled/convert_images_to_webp.py181 except Exception as exc:CODE
LOW…end/tasks/scheduled/sync_retroachievements_progress.py129 except Exception as e:CODE
LOWbackend/tools/generate_test_data.py771 except Exception:CODE
LOWbackend/tools/xml_diagnostics.py57 except Exception as e:CODE
MEDIUMbackend/tools/xml_diagnostics.py58 print(f"Error reading file: {e}")CODE
LOWbackend/tools/xml_diagnostics.py68 except Exception as e:CODE
LOWbackend/tools/xml_diagnostics.py88 except Exception as context_error:CODE
LOWbackend/endpoints/auth.py97 except Exception:CODE
LOWbackend/endpoints/tasks.py343 except Exception as e:CODE
LOWbackend/endpoints/firmware.py315 except Exception as e:CODE
LOWbackend/endpoints/device.py127 except Exception:CODE
LOWbackend/endpoints/activity.py121 except Exception as e: # noqa: BLE001CODE
43 more matches not shown…
Deep Nesting67 hits · 66 pts
SeverityFileLineSnippetContext
LOWbackend/sync_watcher.py206CODE
LOWbackend/handler/scan_handler.py169CODE
LOWbackend/handler/scan_handler.py320CODE
LOWbackend/handler/scan_handler.py689CODE
LOWbackend/handler/database/roms_handler.py671CODE
LOWbackend/handler/database/collections_handler.py152CODE
LOWbackend/handler/auth/hybrid_auth.py21CODE
LOW…nd/handler/auth/middleware/redis_session_middleware.py39CODE
LOW…nd/handler/auth/middleware/redis_session_middleware.py61CODE
LOWbackend/handler/filesystem/resources_handler.py163CODE
LOWbackend/handler/filesystem/resources_handler.py349CODE
LOWbackend/handler/filesystem/resources_handler.py470CODE
LOWbackend/handler/filesystem/resources_handler.py611CODE
LOWbackend/handler/filesystem/roms_handler.py319CODE
LOWbackend/handler/filesystem/roms_handler.py609CODE
LOWbackend/handler/filesystem/base_handler.py187CODE
LOWbackend/handler/filesystem/base_handler.py364CODE
LOWbackend/handler/sync/ssh_handler.py128CODE
LOWbackend/handler/metadata/ra_handler.py307CODE
LOWbackend/handler/metadata/ss_handler.py231CODE
LOWbackend/handler/metadata/sgdb_handler.py98CODE
LOWbackend/handler/metadata/hasheous_handler.py234CODE
LOWbackend/handler/metadata/launchbox_handler/media.py185CODE
LOWbackend/handler/metadata/launchbox_handler/media.py269CODE
LOWbackend/handler/metadata/launchbox_handler/media.py328CODE
LOWbackend/handler/metadata/launchbox_handler/media.py370CODE
LOWbackend/handler/metadata/launchbox_handler/media.py431CODE
LOWbackend/handler/metadata/launchbox_handler/media.py218CODE
LOWbackend/handler/metadata/launchbox_handler/handler.py48CODE
LOW…end/handler/metadata/launchbox_handler/local_source.py16CODE
LOWbackend/tasks/sync_push_pull_task.py66CODE
LOWbackend/tasks/sync_push_pull_task.py342CODE
LOWbackend/tasks/manual/cleanup_orphaned_resources.py55CODE
LOWbackend/tasks/scheduled/update_launchbox_metadata.py44CODE
LOWbackend/tools/generate_test_data.py674CODE
LOWbackend/tools/xml_diagnostics.py38CODE
LOWbackend/endpoints/firmware.py263CODE
LOWbackend/endpoints/feeds.py189CODE
LOWbackend/endpoints/feeds.py210CODE
LOWbackend/endpoints/collections.py428CODE
LOWbackend/endpoints/saves.py157CODE
LOWbackend/endpoints/heartbeat.py188CODE
LOWbackend/endpoints/sockets/logs.py80CODE
LOWbackend/endpoints/sockets/scan.py524CODE
LOWbackend/endpoints/sockets/scan.py696CODE
LOWbackend/endpoints/roms/upload.py253CODE
LOWbackend/endpoints/roms/__init__.py1198CODE
LOWbackend/endpoints/roms/__init__.py1855CODE
LOWbackend/config/config_manager.py493CODE
LOWbackend/tests/conftest.py43CODE
LOWbackend/tests/utils/test_pegasus_exporter.py45CODE
LOWbackend/tests/utils/test_rvz_hasher.py353CODE
LOWbackend/tests/adapters/services/test_screenscraper.py891CODE
LOWbackend/utils/psp_hasher.py65CODE
LOWbackend/utils/gamelist_exporter.py110CODE
LOWbackend/utils/archives.py75CODE
LOWbackend/utils/archives.py89CODE
LOWbackend/utils/archives.py111CODE
LOWbackend/utils/archives.py210CODE
LOWbackend/utils/archives.py243CODE
7 more matches not shown…
Unused Imports63 hits · 63 pts
SeverityFileLineSnippetContext
LOWbackend/main.py16CODE
LOWbackend/main.py17CODE
LOWbackend/main.py18CODE
LOWbackend/main.py19CODE
LOWbackend/main.py20CODE
LOWbackend/handler/activity_handler.py9CODE
LOWbackend/handler/database/stats_handler.py1CODE
LOWbackend/handler/auth/permissions_map.py19CODE
LOWbackend/handler/auth/permissions.py12CODE
LOWbackend/handler/auth/dependencies.py16CODE
LOWbackend/handler/filesystem/__init__.py3CODE
LOWbackend/handler/filesystem/__init__.py3CODE
LOWbackend/handler/filesystem/__init__.py7CODE
LOWbackend/handler/filesystem/__init__.py7CODE
LOWbackend/handler/sync/comparison.py1CODE
LOWbackend/handler/sync/ssh_handler.py12CODE
LOWbackend/handler/metadata/launchbox_handler/media.py12CODE
LOWbackend/handler/metadata/launchbox_handler/__init__.py1CODE
LOWbackend/tools/generate_test_data.py18CODE
LOWbackend/tools/generate_test_data.py35CODE
LOWbackend/endpoints/sockets/activity.py17CODE
LOWbackend/endpoints/sockets/scan.py1CODE
LOWbackend/endpoints/responses/rom.py1CODE
LOWbackend/endpoints/responses/permission.py12CODE
LOWbackend/endpoints/responses/music.py1CODE
LOWbackend/endpoints/responses/collection.py6CODE
LOWbackend/endpoints/responses/collection.py6CODE
LOWbackend/utils/archives.py16CODE
LOWbackend/utils/media_types.py1CODE
LOWbackend/utils/json_module.py11CODE
LOWbackend/utils/ssrf.py25CODE
LOWbackend/utils/audio_tags.py1CODE
LOWbackend/utils/rom_patcher/__init__.py1CODE
LOWbackend/utils/rom_patcher/__init__.py1CODE
LOWbackend/utils/rom_patcher/__init__.py1CODE
LOWbackend/utils/rom_patcher/__init__.py1CODE
LOWbackend/models/rom.py1CODE
LOWbackend/models/user.py1CODE
LOWbackend/models/user.py18CODE
LOWbackend/models/user.py19CODE
LOWbackend/models/user.py20CODE
LOWbackend/models/user.py21CODE
LOWbackend/models/permission.py1CODE
LOWbackend/models/firmware.py1CODE
LOWbackend/models/device.py1CODE
LOWbackend/models/play_session.py1CODE
LOWbackend/models/platform.py1CODE
LOWbackend/models/assets.py1CODE
LOWbackend/models/client_token.py1CODE
LOWbackend/models/collection.py1CODE
LOWbackend/models/collection.py15CODE
LOWbackend/models/collection.py16CODE
LOWbackend/models/sync_session.py1CODE
LOWbackend/models/device_save_sync.py1CODE
LOWbackend/adapters/services/igdb_types.py1CODE
LOWbackend/adapters/services/igdb.py23CODE
LOWbackend/alembic/env.py9CODE
LOWbackend/alembic/env.py9CODE
LOWbackend/alembic/env.py9CODE
LOWbackend/alembic/env.py12CODE
3 more matches not shown…
Redundant / Tautological Comments34 hits · 59 pts
SeverityFileLineSnippetContext
LOWbackend/handler/scan_handler.py347 # Check if files have been parsed and hashedCOMMENT
LOWbackend/handler/auth/hybrid_auth.py24 # Check if session key already stored in cacheCOMMENT
LOWbackend/handler/auth/hybrid_auth.py30 # Check if Authorization header existsCOMMENT
LOWbackend/handler/auth/hybrid_auth.py38 # Check if basic auth header is validCOMMENT
LOWbackend/handler/auth/hybrid_auth.py53 # Check if bearer auth header is validCOMMENT
LOWbackend/handler/auth/hybrid_auth.py104 # Check if we're in KIOSK_MODECOMMENT
LOWbackend/handler/filesystem/resources_handler.py211 # Check if content is gzipped from response headersCOMMENT
LOWbackend/handler/filesystem/resources_handler.py383 # Check if content is gzipped from response headersCOMMENT
LOWbackend/handler/filesystem/resources_handler.py506 # Check if content is gzipped from response headersCOMMENT
LOWbackend/handler/filesystem/roms_handler.py348 # Check if rom is a multi-part romCOMMENT
LOWbackend/handler/filesystem/roms_handler.py379 # Check if file is excluded by extension.COMMENT
LOWbackend/handler/filesystem/roms_handler.py387 # Check if the file name matches a pattern in the excluded list.COMMENT
LOWbackend/handler/filesystem/roms_handler.py394 # Check if this is a top-level file (not in a subdirectory)COMMENT
LOWbackend/handler/filesystem/base_handler.py284 # Check if the file name matches a pattern in the excluded list.COMMENT
LOWbackend/handler/filesystem/base_handler.py398 # Write file atomicallyCOMMENT
LOWbackend/handler/filesystem/base_handler.py446 # Open file for writingCOMMENT
LOWbackend/handler/metadata/flashpoint_handler.py246 # Check if the filename is a UUIDCOMMENT
LOWbackend/handler/metadata/hasheous_handler.py194 # Check if its a 404 errorCOMMENT
LOWbackend/handler/metadata/gamelist_handler.py348 # Check if we already have cached data for this platformCOMMENT
LOWbackend/handler/metadata/launchbox_handler/handler.py144 # Check if game is scummvm shortnameCOMMENT
LOWbackend/tasks/sync_push_pull_task.py383 # Check if device has synced this before (intentional delete)COMMENT
LOWbackend/tasks/manual/cleanup_orphaned_resources.py112 # Check if platform exists in databaseCOMMENT
LOWbackend/tasks/manual/cleanup_orphaned_resources.py134 # Check if ROM exists in databaseCOMMENT
LOWbackend/endpoints/auth.py208 # Check if user has access to requested scopesCOMMENT
LOWbackend/endpoints/roms/__init__.py910 # Check if all requested ROMs were foundCOMMENT
LOWbackend/endpoints/roms/__init__.py1289 # Write file to ZIPCOMMENT
LOWbackend/logger/formatter.py109 # Check if an explicit environment variable is set to control color behaviorCOMMENT
LOWbackend/config/config_manager.py191 # Check if the config file is mountedCOMMENT
LOWbackend/tests/handler/filesystem/test_base_handler.py330 # Write file firstCOMMENT
LOWbackend/tests/handler/filesystem/test_base_handler.py333 # Read fileCOMMENT
LOWbackend/tests/handler/filesystem/test_base_handler.py344 # Write file firstCOMMENT
LOWbackend/tests/handler/filesystem/test_base_handler.py392 # Write file firstCOMMENT
LOWbackend/utils/validation.py34 # Check if any character is outside ASCII range (0-127)COMMENT
LOWbackend/alembic/versions/0022_collections_.py46 # Check if the item is a directory and not the new folder itselfCOMMENT
Docstring Block Structure11 hits · 55 pts
SeverityFileLineSnippetContext
HIGHbackend/handler/filesystem/base_handler.py316 List all directories in a given path. Args: path: Relative path within base directory STRING
HIGHbackend/handler/filesystem/base_handler.py418 Write file to filesystem using a streamed approach. Args: path: Relative path within base STRING
HIGHbackend/handler/filesystem/base_handler.py450 Read file from filesystem. Args: file_path: Relative path to the file Returns: STRING
HIGHbackend/handler/filesystem/base_handler.py478 Stream file from filesystem. Args: file_path: Relative path to the file Returns: STRING
HIGHbackend/handler/filesystem/base_handler.py607 List all files in a directory. Args: directory: Relative path to the directory ReSTRING
HIGHbackend/handler/filesystem/base_handler.py655 Get the size of a file. Args: file_path: Relative path to the file Returns: STRING
HIGHbackend/endpoints/auth.py111OAuth2 token endpoint Args: form_data (Annotated[OAuth2RequestForm, Depends): Form Data with OAuth2 info STRING
HIGHbackend/endpoints/auth.py245OIDC login endpoint Args: request (Request): Fastapi Request object Raises: OIDCDisabledExceptSTRING
HIGHbackend/endpoints/auth.py269OIDC callback endpoint Args: request (Request): Fastapi Request object Raises: OIDCDisabledExcSTRING
HIGHbackend/endpoints/user.py343Update user endpoint Args: request (Request): Fastapi Requests object user_id (int): User internal STRING
HIGHbackend/endpoints/firmware.py39Upload firmware files endpoint Args: request (Request): Fastapi Request object platform_slug (str):STRING
AI Structural Patterns23 hits · 23 pts
SeverityFileLineSnippetContext
LOWbackend/handler/database/roms_handler.py793CODE
LOWbackend/handler/database/roms_handler.py1716CODE
LOWbackend/handler/database/roms_handler.py1762CODE
LOWbackend/handler/database/roms_handler.py1840CODE
LOWbackend/handler/database/roms_handler.py2060CODE
LOWbackend/handler/database/saves_handler.py65CODE
LOWbackend/handler/auth/middleware/csrf_middleware.py20CODE
LOWbackend/endpoints/music.py58CODE
LOWbackend/endpoints/music.py143CODE
LOWbackend/endpoints/music.py173CODE
LOWbackend/endpoints/music.py203CODE
LOWbackend/endpoints/music.py233CODE
LOWbackend/endpoints/saves.py157CODE
LOWbackend/endpoints/roms/__init__.py209CODE
LOWbackend/endpoints/roms/__init__.py301CODE
LOWbackend/endpoints/roms/__init__.py955CODE
LOWbackend/tests/endpoints/roms/test_upload.py65CODE
LOWbackend/adapters/services/retroachievements.py129CODE
LOWbackend/adapters/services/steamgriddb.py80CODE
LOWbackend/adapters/services/steamgriddb.py133CODE
LOWbackend/adapters/services/mobygames.py158CODE
LOWbackend/adapters/services/mobygames.py171CODE
LOWbackend/adapters/services/screenscraper.py263CODE
Cross-Language Confusion3 hits · 12 pts
SeverityFileLineSnippetContext
HIGHbackend/handler/auth/middleware/session_middleware.py136 "null; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT;",CODE
HIGH…nd/handler/auth/middleware/redis_session_middleware.py91 header_value = f"{self.session_cookie}=null; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; {self.seCODE
HIGHbackend/tests/handler/database/test_saves_handler.py528 wins (and is implicitly not-null), so slot_not_null=True is a no-opSTRING
Modern Structural Boilerplate10 hits · 10 pts
SeverityFileLineSnippetContext
LOWbackend/handler/activity_handler.py50 async def set_active(self, entry: ActivityEntry) -> None:CODE
LOWbackend/handler/auth/base_handler.py169 async def set_user_new_password(self, user: Any, new_password: str) -> None:CODE
LOWbackend/handler/filesystem/__init__.py15__all__ = [CODE
LOWbackend/handler/metadata/launchbox_handler/__init__.py3__all__ = [CODE
LOWbackend/tasks/tasks.py20def update_job_meta(metadata: dict[str, Any]) -> None:CODE
LOWbackend/config/config_manager.py743 def _update_config_file(self) -> None:CODE
LOW…ckend/tests/handler/database/test_roms_filter_cache.py51def _set_rom_genres(rom_id: int, genres: list[str]) -> None:CODE
LOWbackend/utils/rate_limiter.py61 def set_max_concurrency(self, max_concurrency: int) -> None:CODE
LOWbackend/utils/rom_patcher/__init__.py8__all__ = [CODE
LOWbackend/adapters/services/screenscraper.py63def _update_thread_allowance(response: dict) -> None:CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHbackend/utils/audio_tags.py153# Vorbis comments / FLAC pictures) was largely AI-generated against mutagen'sCOMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHexamples/config.example.yml65# # In this example if you have a 'gc' folder, RomM will treat it like the 'ngc' folderCOMMENT
AI Slop Vocabulary3 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMfrontend/src/v2/components/Gallery/GalleryShell.vue429// visually seamless.COMMENT
MEDIUM…ontend/src/v2/components/Player/ResumePanel.stories.ts363 // helper picks the first as default, so we leverage the existingCOMMENT
MEDIUMbackend/tests/endpoints/sockets/test_scan.py330 """Test comprehensive scenarios with different combinations"""STRING
Fake / Example Data6 hits · 6 pts
SeverityFileLineSnippetContext
LOWfrontend/src/v2/components/shared/PlatformSelect.vue184 :placeholder="placeholder"CODE
LOWfrontend/src/v2/lib/forms/RForm/RForm.stories.ts128 <RTextField v-model="name" prefix-label="stacked" label="Display name" :rules="nameRules" placeholder="Jane CODE
LOW…tend/src/v2/lib/forms/RTextField/RTextField.stories.ts125 placeholder: "Jane Doe",CODE
LOWfrontend/src/v2/lib/forms/RSelect/RSelect.vue998 <slot name="placeholder">{{ effectivePlaceholder }}</slot>CODE
LOWfrontend/src/v2/lib/primitives/RImg/RImg.vue125 <slot name="placeholder" />CODE
LOWbackend/tests/utils/test_validation.py135 validate_email("user@example.com")CODE
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMdocs/BACKEND_ARCHITECTURE.md225│ ├── scan_handler.py # Library scan orchestrationCODE