Repository Analysis

Nagi-ovo/gemini-voyager

An all-in-one enhancement suite for Google Gemini & AI Studio - timeline navigation, folder management, prompt library, and chat export in one powerful extension. / Google Gemini & AI Studio 全能增强插件:集成时间轴导航、文件夹管理、提示词库及聊天导出等众多功能。

2.9 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of Nagi-ovo/gemini-voyager, a TypeScript project with 19,167 GitHub stars. SynthScan v2.0 examined 219,165 lines of code across 1039 source files, recording 460 pattern matches distributed across 9 syntactic categories. The overall adjusted score of 2.9 places this repository in the Likely human-written 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).

2.9
Adjusted Score
2.9
Raw Score
100%
Time Factor
2026-07-13
Last Push
19.2K
Stars
TypeScript
Language
219.2K
Lines of Code
1.0K
Files
460
Pattern Hits
2026-07-14
Scan Date
0.01
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 4HIGH 3MEDIUM 46LOW 407

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 460 distinct pattern matches across 9 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 Identifiers344 hits · 352 pts
SeverityFileLineSnippetContext
LOWpublic/response-complete-observer.js34 function isGeminiGenerationRequest(url, bodyText) {CODE
LOWpublic/prevent-auto-scroll.js80 function handlePossibleRouteChange() {CODE
LOWpublic/prevent-auto-scroll.js239 function collectVerticalScrollPositions(target) {CODE
LOWpublic/prevent-auto-scroll.js253 function restoreVerticalScrollPositions(positions) {CODE
LOWsrc/core/types/highlight.ts295export function isHighlightConversationUrl(value: string, platform: HighlightPlatform): boolean {CODE
LOWsrc/core/utils/conversationIdentity.ts33export function extractConversationIdFromUrl(input: string): string | null {CODE
LOWsrc/core/utils/conversationIdentity.ts64export function buildRouteConversationIdFromUrl(input: string): string {CODE
LOWsrc/core/utils/conversationIdentity.ts73export function buildConversationIdFromUrl(input: string): string {CODE
LOWsrc/core/utils/conversationIdentity.ts82export function buildLegacyConversationIdFromUrl(input: string): string {CODE
LOWsrc/core/utils/updateReminder.ts12export function shouldShowUpdateReminderForCurrentVersion({CODE
LOWsrc/core/utils/notificationsPermission.ts15export async function hasNotificationsPermission(): Promise<boolean> {CODE
LOWsrc/core/utils/notificationsPermission.ts34export async function ensureNotificationsPermission(): Promise<boolean> {CODE
LOWsrc/core/utils/customWebsites.ts44export function customWebsitesIncludeHost(value: unknown, hostname: string): boolean {CODE
LOWsrc/core/utils/browser.ts45export function shouldShowSafariUpdateReminder(): boolean {CODE
LOWsrc/core/utils/browser.ts106export function supportsOptionalHostPermissions(): boolean {CODE
LOWsrc/core/utils/browser.ts118export function supportsExtensionNotifications(): boolean {CODE
LOWsrc/core/utils/browser.ts180export function hasLegacySafariStorageLimit(): boolean {CODE
LOWsrc/core/utils/browser.ts218export function isChromeWebStoreInstallOnEdge(): boolean {CODE
LOWsrc/core/utils/selectors.ts31export function getAssistantTurnSelectors(): string[] {CODE
LOWsrc/core/utils/selectors.ts60export function getConversationLinkSelectors(): string[] {CODE
LOWsrc/core/utils/gemini.ts29export function hasGeminiEnterpriseDomHints(doc: Document): boolean {CODE
LOWsrc/core/utils/gemini.ts46export function isGeminiEnterpriseEnvironment(parts: UrlParts, doc?: Document): boolean {CODE
LOWsrc/core/utils/extensionContext.ts13export function isExtensionContextInvalidatedError(error: unknown): boolean {CODE
LOWsrc/core/services/AccountIsolationService.ts63export function detectAccountPlatformFromUrl(pageUrl: string | null | undefined): AccountPlatform {CODE
LOWsrc/core/services/AccountIsolationService.ts69export function getAccountIsolationStorageKey(platform: AccountPlatform): string {CODE
LOWsrc/core/services/AccountIsolationService.ts141export function extractRouteUserIdFromPath(pathname: string): string | null {CODE
LOWsrc/core/services/AccountIsolationService.ts146export function extractRouteUserIdFromUrl(url: string): string | null {CODE
LOWsrc/core/services/AccountIsolationService.ts205export function detectAccountContextFromDocument(pageUrl: string, doc: Document): AccountContext {CODE
LOWsrc/core/services/AccountIsolationService.ts251export function buildScopedFolderStorageKey(accountKey: string): string {CODE
LOWsrc/core/services/SettingsBackupService.ts125export function filterBackupableSyncSettings(value: unknown): BackupableSyncSettings {CODE
LOWsrc/core/services/SettingsBackupService.ts145export async function loadBackupableSyncSettings(CODE
LOWsrc/core/services/SettingsBackupService.ts153export async function exportBackupableSyncSettings(CODE
LOWsrc/core/services/SettingsBackupService.ts164export async function restoreBackupableSyncSettings(CODE
LOWsrc/core/services/HighlightAnnotationService.ts248export function createHighlightSourceTextHash(sourceText: string): string {CODE
LOWsrc/core/services/HighlightAnnotationService.ts265export function getHighlightIndexStorageKey(scope: HighlightScope): string {CODE
LOWsrc/core/services/HighlightAnnotationService.ts269export function getHighlightConversationKey(CODE
LOWsrc/core/services/HighlightAnnotationService.ts276export function getHighlightBucketStorageKey(CODE
LOWsrc/core/services/HighlightAnnotationService.ts333function createDefaultStorageAdapter(): HighlightStorageAdapter {CODE
LOW…ore/services/__tests__/KeyboardShortcutService.test.ts11function createCustomSingleLetterConfig(): KeyboardShortcutConfig {CODE
LOWsrc/features/plugins/promptNudge.ts31export function normalizeIconResourcePath(path: string): string {CODE
LOWsrc/features/plugins/manifest/validate.ts89function normalizeLocalizedSetting(raw: unknown): LocalizedSettingField | undefined {CODE
LOWsrc/features/plugins/manifest/validate.ts102function normalizeLocalizedSettings(CODE
LOWsrc/features/plugins/runtime/siteRegistration.ts59export async function registerContentScriptsForOrigins(CODE
LOWsrc/features/plugins/sources/defaultSources.ts12export function createDefaultPluginSources(): readonly PluginSource[] {CODE
LOWsrc/features/plugins/sources/styleFiles.ts5export async function resolveStyleFileContributions(CODE
LOWsrc/features/plugins/builtin/claudeUsage/index.test.ts62function dispatchClaudeMessageLimit(payload: unknown): void {CODE
LOWsrc/features/plugins/builtin/claudeUsage/index.test.ts103function mountUsageTextWithoutPlan(): void {CODE
LOWsrc/features/plugins/builtin/claudeUsage/index.ts71export function setClaudeUsageReloadForTest(fn: (() => void) | null): void {CODE
LOWsrc/features/plugins/builtin/claudeUsage/index.ts321export function snapshotFromClaudeUsageApi(CODE
LOWsrc/features/plugins/builtin/claudeUsage/index.ts341export function snapshotFromClaudeMessageLimit(CODE
LOWsrc/features/plugins/builtin/claudeUsage/index.ts360export function scrapeClaudeUsageFromDocument(CODE
LOWsrc/features/plugins/builtin/claudeUsage/index.ts665function injectClaudeUsageObserver(): void {CODE
LOWsrc/features/plugins/builtin/claudeTimeline/index.ts48export function buildClaudeConversationId(input = location.href): string {CODE
LOWsrc/features/plugins/builtin/claudeTimeline/index.ts963export function updateClaudeTimelineSettings(settings: PluginSettings): void {CODE
LOWsrc/features/announcements/select.ts82export function selectRemoteAnnouncements(CODE
LOWsrc/features/announcements/background.ts134function isRemoteAnnouncementMessage(CODE
LOWsrc/features/announcements/background.ts463export function startRemoteAnnouncementBackgroundService(): RemoteAnnouncementBackgroundService {CODE
LOWsrc/features/announcements/background.ts469export function isRemoteAnnouncementRuntimeMessage(message: unknown): message is {CODE
LOWsrc/features/export/ui/ExportToast.ts11function getOrCreateToast(): HTMLDivElement {CODE
LOWsrc/features/export/ui/ExportErrorMessage.ts3export function resolveExportErrorMessage(CODE
284 more matches not shown…
Decorative Section Separators44 hits · 140 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/release.yml11# -------------------------COMMENT
MEDIUM.github/workflows/ci.yml15 # ── Prettier ───────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/ci.yml25 # ── ESLint ─────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/ci.yml35 # ── TypeScript ─────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/ci.yml45 # ── Tests ──────────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/ci.yml55 # ── Build (all browsers) ──────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/ci.yml68 # ── i18n consistency ──────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/ci.yml106 # ── PR size label ─────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/popup/Popup.tsx2168 // ── Section reorder helpers ──────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/manager.ts6112 // ── Overlay ───────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/manager.ts6123 // ── Title ─────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/manager.ts6132 // ── Instructions textarea ─────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/manager.ts6148 // ── Actions ──────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/manager.ts6174 // ── Assembly ──────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/__tests__/auditFixes.test.ts131 // ── H1/M1: runtime message handling ───────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/__tests__/auditFixes.test.ts203 // ── H2: self-write storage echo suppression ────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/__tests__/auditFixes.test.ts265 // ── H6: native title lookup table ─────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/__tests__/auditFixes.test.ts352 // ── M3: debounced saves for pure-UI state ──────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/__tests__/auditFixes.test.ts408 // ── M7: search input debounce ──────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/folder/__tests__/auditFixes.test.ts443 // ── M8: account prefix in jslog-fallback URLs ─────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts121// ─── Transition CSS (shared) ───────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts148// ─── Full-Hide CSS ─────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts193// ─── Edge Trigger (full-hide) ──────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts253// ─── Sidebar State Detection ───────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts503// ─── Menu Click Handling ───────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts549// ─── Sidebar Toggle ────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts595// ─── Predictive Aiming ────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts679// ─── Mouse Event Handlers ──────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts719// ─── DOM Management ────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts808// ─── Shared Infrastructure ─────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts873// ─── Auto-Hide Feature ────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts932// ─── Full-Hide Feature ─────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/sidebarAutoHide/index.ts1023// ─── Entry Point ───────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/export/index.ts2647 // ─── DOM recovery (resize / print) ─────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/export/canvasDocExtractor.ts23// ── Document Canvas (immersive-editor .ProseMirror) ────────────────COMMENT
MEDIUMsrc/pages/content/export/canvasDocExtractor.ts134// ── Public API ─────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/export/canvasDocExtractor.ts152// ── Detection helpers ──────────────────────────────────────────────COMMENT
MEDIUM…es/content/export/__tests__/canvasDocExtractor.test.ts17 // ── isAnyCanvasOpen ────────────────────────────────────────────COMMENT
MEDIUM…es/content/export/__tests__/canvasDocExtractor.test.ts35 // ── assistantHasCanvasDoc ──────────────────────────────────────COMMENT
MEDIUM…es/content/export/__tests__/canvasDocExtractor.test.ts74 // ── Document Canvas (ProseMirror) ──────────────────────────────COMMENT
MEDIUM…es/content/export/__tests__/canvasDocExtractor.test.ts170 // ── Code Canvas (Monaco editor) ────────────────────────────────COMMENT
MEDIUMsrc/pages/content/coachmark/index.ts69// ── Seen-state (shared array, synced) ───────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/coachmark/index.ts115// ── DOM helpers ─────────────────────────────────────────────────────────────COMMENT
MEDIUMsrc/pages/content/coachmark/index.ts174// ── Engine ──────────────────────────────────────────────────────────────────COMMENT
Hallucination Indicators4 hits · 40 pts
SeverityFileLineSnippetContext
CRITICALsrc/pages/content/folder/__tests__/auditFixes.test.ts136 const call = mockBrowser.runtime.onMessage.addListener.mock.calls.at(-1);CODE
CRITICALsrc/pages/content/folder/__tests__/auditFixes.test.ts208 const call = mockBrowser.storage.onChanged.addListener.mock.calls.at(-1);CODE
CRITICAL…c/pages/content/visualEffects/__tests__/sakura.test.ts457 const drainingMessage = channel.port1.postMessage.mock.calls.at(-1)?.[0] as {CODE
CRITICAL…c/pages/content/visualEffects/__tests__/sakura.test.ts474 const latestDrainMessage = channel.port1.postMessage.mock.calls.at(-1)?.[0] as {CODE
Verbosity Indicators14 hits · 26 pts
SeverityFileLineSnippetContext
LOWpublic/fetchInterceptor.js219 // Step 2: ProcessingCOMMENT
LOWscripts/build-safari.sh10# Step 1: Build the extension using ViteCOMMENT
LOWscripts/build-safari.sh14# Step 2: Check if dist_safari existsCOMMENT
LOWscripts/build-safari.sh22# Step 3: Convert to Safari App Extension (requires macOS)COMMENT
LOWsrc/pages/content/folder/aistudio.ts3444 // Step 1: Try to restore from localStorage backups (primary, emergency, beforeUnload)COMMENT
LOWsrc/pages/content/folder/aistudio.ts3455 // Step 2: Keep existing in-memory data if it exists and is validCOMMENT
LOWsrc/pages/content/folder/aistudio.ts3462 // Step 3: Last resort - initialize empty data and notify userCOMMENT
LOWsrc/pages/content/folder/manager.ts7372 // Step 2: If current this.data already has valid structure, keep itCOMMENT
LOWsrc/pages/content/folder/manager.ts7379 // Step 3: Last resort - initialize empty data and log critical errorCOMMENT
LOWsrc/pages/content/folder/manager.ts4578 // Step 1: Find the conversation element in the sidebar.COMMENT
LOWsrc/pages/content/folder/manager.ts7360 // Step 1: Try to restore from localStorage backups (primary, emergency, beforeUnload)COMMENT
LOWsrc/pages/content/watermarkRemover/index.ts629 // Step 1: Downloading original imageCOMMENT
LOWsrc/pages/content/watermarkRemover/index.ts662 // Step 2: Processing watermarkCOMMENT
LOWsrc/pages/content/watermarkRemover/index.ts676 // Step 3: Done, auto-dismiss after 2sCOMMENT
Structural Annotation Overuse14 hits · 26 pts
SeverityFileLineSnippetContext
LOWpublic/fetchInterceptor.js219 // Step 2: ProcessingCOMMENT
LOWscripts/build-safari.sh10# Step 1: Build the extension using ViteCOMMENT
LOWscripts/build-safari.sh14# Step 2: Check if dist_safari existsCOMMENT
LOWscripts/build-safari.sh22# Step 3: Convert to Safari App Extension (requires macOS)COMMENT
LOWsrc/pages/content/folder/aistudio.ts3444 // Step 1: Try to restore from localStorage backups (primary, emergency, beforeUnload)COMMENT
LOWsrc/pages/content/folder/aistudio.ts3455 // Step 2: Keep existing in-memory data if it exists and is validCOMMENT
LOWsrc/pages/content/folder/aistudio.ts3462 // Step 3: Last resort - initialize empty data and notify userCOMMENT
LOWsrc/pages/content/folder/manager.ts7372 // Step 2: If current this.data already has valid structure, keep itCOMMENT
LOWsrc/pages/content/folder/manager.ts7379 // Step 3: Last resort - initialize empty data and log critical errorCOMMENT
LOWsrc/pages/content/folder/manager.ts4578 // Step 1: Find the conversation element in the sidebar.COMMENT
LOWsrc/pages/content/folder/manager.ts7360 // Step 1: Try to restore from localStorage backups (primary, emergency, beforeUnload)COMMENT
LOWsrc/pages/content/watermarkRemover/index.ts629 // Step 1: Downloading original imageCOMMENT
LOWsrc/pages/content/watermarkRemover/index.ts662 // Step 2: Processing watermarkCOMMENT
LOWsrc/pages/content/watermarkRemover/index.ts676 // Step 3: Done, auto-dismiss after 2sCOMMENT
Over-Commented Block22 hits · 19 pts
SeverityFileLineSnippetContext
LOWpublic/fetchInterceptor.js141 // Store original fetchCOMMENT
LOWsafari/App/SafariWebExtensionHandler.swift1//COMMENT
LOWsafari/Models/SafariMessage.swift1//COMMENT
LOW.github/workflows/release.yml1name: ReleaseCOMMENT
LOW.github/workflows/release.yml21# 4. Creates git tag "vX.Y.Z".COMMENT
LOWsrc/core/types/common.ts161 // { items: GemMetadata[]; cachedAt: number }. Falls into local (not sync)COMMENT
LOWsrc/core/types/common.ts181 // Local cache of the usage limits scraped from /usage. Stored as aCOMMENT
LOWsrc/core/types/common.ts201 // 'above-recents' (default) anchors the folder panel just above the RecentsCOMMENT
LOWsrc/core/types/common.ts261COMMENT
LOWsrc/core/types/common.ts281 // Shape: { manifests: PluginManifest[]; fetchedAt: number }. Local (not sync)COMMENT
LOWsrc/pages/content/index.tsx561 remoteAnnouncementsCleanup = startRemoteAnnouncements();COMMENT
LOWsrc/pages/content/folder/manager.ts81// flicker the floating fallback, short enough to recover quickly from a realCOMMENT
LOWsrc/pages/content/folder/manager.ts181 private recentSection: HTMLElement | null = null;COMMENT
LOWsrc/pages/content/folder/manager.ts241 // synchronously inside the observer callback caused noticeable clickCOMMENT
LOWsrc/pages/content/folder/manager.ts261 private activeColorPickerFolderId: string | null = null; // Folder ID of currently open color pickerCOMMENT
LOWsrc/pages/content/folder/manager.ts321COMMENT
LOWsrc/pages/content/folder/manager.ts741COMMENT
LOWsrc/pages/content/sidebarAutoHide/index.ts21// for `querySelectorAll` ordering tie-breaks; visibility filtering happens inCOMMENT
LOWsrc/pages/content/export/responseActionImageButton.ts141 // this, clicks on the SVG's painted area (the icon glyph) hit the SVG/iconCOMMENT
LOWsrc/pages/content/sidebarWidth/index.ts481 console.error('[Gemini Voyager] Failed to add storage listener for sidebar width:', e);COMMENT
LOWsrc/pages/content/quoteReply/index.ts621 const performInsertion = () => {COMMENT
LOWsrc/pages/content/usageStatus/index.ts101// primary trigger is event-driven (a generation completing); these are theCOMMENT
Synthetic Comment Markers3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHdocs/pt/guide/nanobanana.md11Images generated by Gemini™ come with a visible watermark by default. While this is intended for safety, there are creatCODE
HIGHdocs/ar/guide/nanobanana.md11Images generated by Gemini™ come with a visible watermark by default. While this is intended for safety, there are creatCODE
HIGHdocs/en/guide/nanobanana.md11Images generated by Gemini™ come with a visible watermark by default. While this is intended for safety, there are creatCODE
Fake / Example Data13 hits · 13 pts
SeverityFileLineSnippetContext
LOW…ore/services/__tests__/AccountIsolationService.test.ts89 email: 'user@example.com',CODE
LOW…ore/services/__tests__/AccountIsolationService.test.ts118 email: 'user@example.com',CODE
LOW…/export/services/__tests__/DOMContentExtractor.test.ts142 <img src="about:blank" alt="placeholder" />CODE
LOW…atures/backup/services/__tests__/BackupService.test.ts31 [getTimelineHierarchyStorageKey(`email:${hashString('user@example.com')}`)]: {CODE
LOW…/popup/components/__tests__/CloudSyncSettings.test.tsx160 context: { routeUserId: '0', email: 'user@example.com' },CODE
LOW…/popup/components/__tests__/CloudSyncSettings.test.tsx550 email: 'user@example.com',CODE
LOW…/popup/components/__tests__/CloudSyncSettings.test.tsx560 accountKey: `email:${hashString('user@example.com')}`,CODE
LOW…/popup/components/__tests__/CloudSyncSettings.test.tsx591 `email:${hashString('user@example.com')}`,CODE
LOWsrc/pages/content/draftSave/index.ts132 input.getAttribute('placeholder'),CODE
LOWsrc/pages/content/draftSave/index.ts135 richTextarea?.getAttribute('placeholder'),CODE
LOWsrc/pages/content/prompt/__tests__/localBackup.test.ts53 email: 'user@example.com',CODE
LOWsrc/pages/content/quoteReply/index.ts228 input.getAttribute('placeholder'),CODE
LOWsrc/pages/content/quoteReply/index.ts231 richTextarea?.getAttribute('placeholder'),CODE
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMsrc/pages/content/folder/manager.ts6197 // observer. This mirrors the proven, robust export-button observer: itCOMMENT
MEDIUMsrc/pages/content/timeline/manager.ts1869 // Use index lookup if available for robust handling of duplicate contentCOMMENT