Free, local tool to track AI coding token usage and cost across 37 tools and agents (Claude Code, Cursor, Codex, Gemini and more), by model, project, and task. npx codeburn
This report presents the forensic synthetic code analysis of getagentseal/codeburn, a TypeScript project with 9,708 GitHub stars. SynthScan v2.0 examined 241,220 lines of code across 846 source files, recording 683 pattern matches distributed across 10 syntactic categories. The overall adjusted score of 4.4 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).
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.
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.
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.
The scanner identified 683 distinct pattern matches across 10 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/electron/cli.ts | 530 | // ── Resident serve child ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/workflow-insights.test.ts | 326 | // ── Review-findings regressions (post-#756 review) ───────────────────────── | COMMENT |
| MEDIUM | tests/workflow-insights.test.ts | 326 | // ── Review-findings regressions (post-#756 review) ───────────────────────── | COMMENT |
| MEDIUM | tests/parser-rich-capture.test.ts | 16 | // ── structuredPatch LOC counting ─────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser-rich-capture.test.ts | 55 | // ── tool-result meta extraction + per-call attribution ───────────────── | COMMENT |
| MEDIUM | tests/parser-rich-capture.test.ts | 147 | // ── gitBranch representation (per-turn dedup) ────────────────────────── | COMMENT |
| MEDIUM | tests/parser-rich-capture.test.ts | 187 | // ── per-turn PR references (prRefs) ──────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser-rich-capture.test.ts | 224 | // ── session meta: ai-title last-wins, pr-link accumulation ───────────── | COMMENT |
| MEDIUM | tests/parser-rich-capture.test.ts | 255 | // ── subagent linkage: parentSessionId + agentSpawnLinks ──────────────── | COMMENT |
| MEDIUM | tests/parser-rich-capture.test.ts | 319 | // ── per-turn subagent spawn ids (spawnToolUseIds) ────────────────────── | COMMENT |
| MEDIUM | tests/parser-incremental-append.test.ts | 48 | // ── fixture builders ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser-incremental-append.test.ts | 99 | // ── helpers ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser-incremental-append.test.ts | 122 | // ── tests ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-cb3-wire.test.ts | 24 | // ── Helpers ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-cb3-wire.test.ts | 67 | // ── buildOtlpPayload: CB-3 attributes ──────────────────────────────── | COMMENT |
| MEDIUM | tests/sync-cb3-wire.test.ts | 186 | // ── collectUnsentCalls: session wire context ───────────────────────── | COMMENT |
| MEDIUM | tests/parser-claude-cwd.test.ts | 366 | // ── Helpers for Cowork local-agent-mode session fixtures ──────────────── | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 366 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 368 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 775 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 777 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 993 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 996 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 1698 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 1701 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 1711 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/parser.test.ts | 1713 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 25 | // ── Synthetic provider state ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 81 | // ── OTel DB helpers ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 146 | // ── Copilot JSONL helpers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 170 | // ── Helpers ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 187 | // ── Common env setup ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/parser.test.ts | 218 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 220 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 249 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 251 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 288 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 290 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 316 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 318 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 531 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 533 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 579 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 585 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 620 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 628 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 702 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 711 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 808 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 812 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 919 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 921 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 1231 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 1233 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 1370 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 1372 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 1449 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 1451 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 1518 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/parser.test.ts | 1521 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| 133 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/renderer/hooks/usePolled.ts | 213 | function removeOldestDurableSnapshot(storage: Storage, except: string): boolean { | CODE |
| LOW | app/electron/main.ts | 478 | export function createApplicationMenuTemplate(isDev = Boolean(process.env.VITE_DEV_SERVER_URL)): MenuItemConstructorOpti | CODE |
| LOW | app/electron/cli.ts | 859 | function restartServeAfterMutation(): void { | CODE |
| LOW | tests/parser.test.ts | 842 | async function writeClaudeSessionWithPrLink(): Promise<string> { | CODE |
| LOW | tests/optimize-fs.test.ts | 625 | function claudeSessionWithEditHeavyTurns(): void { | CODE |
| LOW | tests/sqlite-readonly-parent.test.ts | 77 | function writeUncheckpointedWalDatabase(dbPath: string): void { | CODE |
| LOW | tests/bash-commands.test.ts | 204 | function isReadShapedBashCommandOld(rawCommand: string): boolean { | CODE |
| LOW | tests/bash-commands.test.ts | 228 | function buildWhitespaceHeavyCommand(): string { | CODE |
| LOW | tests/optimize.test.ts | 88 | function projectWithDeliveredSessions(costs: number[], project = 'app'): ProjectSummary { | CODE |
| LOW | tests/optimize.test.ts | 134 | function projectWithContextSessions(sessions: TestSession[], project = 'app'): ProjectSummary { | CODE |
| LOW | tests/optimize.test.ts | 646 | function projectWithLowWorthSessions(sessions: TestSession[], project = 'app'): ProjectSummary { | CODE |
| LOW | tests/optimize.test.ts | 908 | function projectWithReliabilityTurns(turns: LowWorthTurn[], project = 'app'): ProjectSummary { | CODE |
| LOW | tests/optimize.test.ts | 1242 | function checkAllPasteFixesHaveDestination(findings: WasteFinding[]) { | CODE |
| LOW | tests/optimize-zero-edit-savings.test.ts | 60 | function projectWithLowWorthSessions(sessions: TestSession[], project = 'app'): ProjectSummary { | CODE |
| LOW | tests/dashboard-period-truth.test.ts | 45 | function historicalProviderProject( | CODE |
| LOW | tests/session-cache-shards.test.ts | 301 | async function assertReferentialIntegrity(expected: string[]): Promise<void> { | CODE |
| LOW | tests/project-filter-durable-totals.test.ts | 79 | function carriedDayWithoutProjects(date: string): DailyEntry { | CODE |
| LOW | tests/parser-large-session.test.ts | 66 | function messageFirstLargeAssistantLine(sessionId: string, timestamp: string, messageId: string): string { | CODE |
| LOW | tests/quota.test.ts | 30 | function resetsAfterElapsedFraction(fraction: number, windowSeconds: number): Date { | CODE |
| LOW | tests/providers/copilot-skills.test.ts | 38 | function assistantMessageWithSkill(opts: { messageId: string; skill: string }) { | CODE |
| LOW | tests/providers/cursor-bubble-dedup.test.ts | 103 | async function updateAssistantBubbleTokens(dbPath: string, inputTokens: number, outputTokens: number): Promise<void> { | CODE |
| LOW | tests/providers/antigravity.test.ts | 37 | function createCurrentAntigravityCliDb(dbPath: string, fixture: CurrentCliFixture): void { | CODE |
| LOW | tests/providers/copilot.test.ts | 98 | function transcriptAssistantMessage(opts: { messageId: string; content?: string; reasoningText?: string; toolCallIds?: s | CODE |
| LOW | docs/design/codeburn-mcp-plan.md | 148 | export async function buildMenubarPayloadForRange( | CODE |
| LOW | src/session-output.ts | 43 | export function sessionModelBillableOutputTokens(session: SessionSummary): Record<string, number> { | CODE |
| LOW | src/session-output.ts | 96 | export function sessionBillableOutputTokens(session: SessionSummary): number { | CODE |
| LOW | src/doctor.ts | 412 | function collectSessionCacheIssues(cache: SessionCache): DoctorSessionCacheIssue[] { | CODE |
| LOW | src/main.ts | 238 | function formatDisplayCurrencyAmount(amount: number): string { | CODE |
| LOW | src/main.ts | 287 | function getOverviewBudgetProgress(tier: BudgetTier, range: DateRange, today = new Date()): Pick<BudgetPeriodInfo, 'elap | CODE |
| LOW | src/main.ts | 317 | function isOverviewBudgetFilterActive(opts: { provider: string; project: string[]; exclude: string[] }): boolean { | CODE |
| LOW | src/dashboard.tsx | 56 | function normalizeTerminalDimension(value: number | undefined, fallback: number): number { | CODE |
| LOW | src/dashboard.tsx | 71 | export function createDebouncedResizeStream(source: NodeJS.WriteStream, delayMs: number): DebouncedResizeStream { | CODE |
| LOW | src/dashboard.tsx | 176 | export function renderDebouncedInteractive( | CODE |
| LOW | src/dashboard.tsx | 417 | export function selectDashboardPeriodProjects(projects: ProjectSummary[], period: Period, scrollableHistory: boolean): P | CODE |
| LOW | src/dashboard.tsx | 770 | function getProjectBreakdownRowLimit(period: Period, dayMode = false): number { | CODE |
| LOW | src/dashboard.tsx | 901 | function aggregateActivityBreakdown(projects: ProjectSummary[]) { | CODE |
| LOW | src/dashboard.tsx | 927 | function getActivityBreakdownRowCount(projects: ProjectSummary[]): number { | CODE |
| LOW | src/dashboard.tsx | 2267 | export function dashboardIndexSupportsPeriod(index: DashboardHistoryIndex, period: Period): boolean { | CODE |
| LOW | src/dashboard.tsx | 2308 | export async function buildDashboardHistoryIndex( | CODE |
| LOW | src/dashboard.tsx | 2336 | export function selectDashboardHistoryIndex( | CODE |
| LOW | src/dashboard.tsx | 2363 | export async function assembleDashboardFirstPaint( | CODE |
| LOW | src/yield.ts | 657 | export function computeAttributionRecords( | CODE |
| LOW | src/cache-refresh-lock.ts | 95 | export function releaseOwnedRefreshLocksForExit(): void { | CODE |
| LOW | src/compare-stats.ts | 222 | export function computeCategoryComparison(projects: ProjectSummary[], modelA: string, modelB: string): CategoryCompariso | CODE |
| LOW | src/day-aggregator.ts | 56 | export function aggregateProjectsIntoDays(projects: ProjectSummary[], dateKeyFn: (iso: string) => string = dateKey): Dai | CODE |
| LOW | src/path-privacy.ts | 9 | function isProviderContainerWorkingDirectory(value: string): boolean { | CODE |
| LOW | src/path-privacy.ts | 23 | export function isTrustedAbsoluteWorkingDirectory(value: string | undefined): value is string { | CODE |
| LOW | src/antigravity-statusline.ts | 118 | export async function installAntigravityStatusLineHook(force = false): Promise<'installed' | 'already-installed'> { | CODE |
| LOW | src/antigravity-statusline.ts | 142 | export async function uninstallAntigravityStatusLineHook(): Promise<'removed' | 'restored' | 'not-installed'> { | CODE |
| LOW | src/parser.ts | 124 | async function resolveCanonicalProjectPath(cwd: string): Promise<{ path: string; isWorktree: boolean }> { | CODE |
| LOW | src/parser.ts | 132 | async function resolveCanonicalProjectPathUncached(cwd: string): Promise<{ path: string; isWorktree: boolean }> { | CODE |
| LOW | src/parser.ts | 647 | function findJsonContainerEndString(source: string, start: number, open: number, close: number, limit = source.length): | CODE |
| LOW | src/parser.ts | 672 | function findJsonValueBoundsString(source: string, start: number, limit = source.length): JsonValueBounds | null { | CODE |
| LOW | src/parser.ts | 710 | function findJsonContainerEndBuffer(source: Buffer, start: number, open: number, close: number, limit = source.length): | CODE |
| LOW | src/parser.ts | 735 | function findJsonValueBoundsBuffer(source: Buffer, start: number, limit = source.length): JsonValueBounds | null { | CODE |
| LOW | src/parser.ts | 761 | function findObjectFieldValueString(source: string, objectStart: number, objectEnd: number, field: string): JsonValueBou | CODE |
| LOW | src/parser.ts | 788 | function findObjectFieldValueBuffer(source: Buffer, objectStart: number, objectEnd: number, field: string): JsonValueBou | CODE |
| LOW | src/parser.ts | 915 | function getTopLevelRawJsonStringField(head: string, field: string): string | null { | CODE |
| LOW | src/parser.ts | 1130 | function extractBashCommandsFromContent(content: ContentBlock[]): string[] { | CODE |
| LOW | src/parser.ts | 1166 | function extractClaudeCacheCreation(usage: { | CODE |
| 162 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/renderer/App.tsx | 421 | // let it regress the display. Apply currency only from a freshly-resolved | COMMENT |
| LOW | app/renderer/hooks/usePolled.ts | 21 | /** Re-run the fetcher immediately (period/provider change, manual refresh). */ | COMMENT |
| LOW | app/electron/main.ts | 261 | } | COMMENT |
| LOW | app/electron/cli.ts | 61 | const DEFAULT_TIMEOUT_MS = 45_000 | COMMENT |
| LOW | app/electron/cli.ts | 81 | export const PROGRESS_LINE_PREFIX = 'CODEBURN_PROGRESS ' | COMMENT |
| LOW | app/electron/cli.ts | 521 | * nonzero process exited with a non-zero code (stderr surfaced) | COMMENT |
| LOW | app/electron/telemetry.ts | 1 | import { randomUUID } from 'node:crypto' | COMMENT |
| LOW | app/electron/updates.ts | 1 | // "Update available" check for CodeBurn Desktop, mirroring the Swift menubar's | COMMENT |
| LOW | app/electron/quota/antigravity.ts | 1 | // Live Antigravity quota from LOCAL surfaces only — the Antigravity app's own | COMMENT |
| LOW | app/electron/quota/kimi.ts | 1 | // Live Kimi Code quota via the CLI's own usage endpoint (ported from the | COMMENT |
| LOW | app/electron/quota/gemini.ts | 1 | // Live Gemini quota via the OAuth-backed Code Assist APIs the Gemini CLI | COMMENT |
| LOW | app/electron/quota/copilot.ts | 1 | // Live GitHub Copilot quota via the editor plugins' internal usage endpoint. | COMMENT |
| LOW | app/electron/quota/index.ts | 161 | // Keychain reads can raise a one-time macOS permission dialog, so only attempt | COMMENT |
| LOW | tests/provider-phase-partial-save.test.ts | 1 | // Regression test for the codex/non-Claude cold-parse restart-loop: a run | COMMENT |
| LOW | tests/session-cache-status-snapshot.test.ts | 1 | // The status-snapshot file (one `status-snapshot.<queryKeyHash>.json` per | COMMENT |
| LOW | tests/day-aggregator.test.ts | 521 | expect(costDay!.calls).toBe(1) | COMMENT |
| LOW | tests/cli-durable-totals.test.ts | 281 | COMMENT | |
| LOW | tests/parser.test.ts | 701 | COMMENT | |
| LOW | tests/parser.test.ts | 1581 | return { dbPath, at, writeSession, sumUsage } | COMMENT |
| LOW | tests/parser.test.ts | 1661 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| LOW | tests/parser.test.ts | 1701 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| LOW | tests/parser.test.ts | 1921 | }) | COMMENT |
| LOW | tests/parser.test.ts | 2081 | COMMENT | |
| LOW | tests/parser.test.ts | 2281 | // list. An index is only stable while nothing is ever inserted before it, and | COMMENT |
| LOW | tests/parser.test.ts | 2341 | `copilot:sess-reskey:shutdown-residual:claude-sonnet-4-5:${Date.parse(at(2))}`, | COMMENT |
| LOW | tests/parser.test.ts | 2521 | }) | COMMENT |
| LOW | tests/daily-cache-carry-forward.test.ts | 721 | // as api calls, so a settled store-era day re-derives with FEWER calls than | COMMENT |
| LOW | tests/parser-proxy-merge.test.ts | 1 | import { mkdtemp, mkdir, rm, writeFile } from 'fs/promises' | COMMENT |
| LOW | tests/otel-cache-aggregation.test.ts | 1 | // Regression test for the OTel multi-conversation cache overwrite bug. | COMMENT |
| LOW | tests/provider-env-declarations.test.ts | 1 | // Static guard for issue #920: every `process.env` read inside | COMMENT |
| LOW | tests/provider-env-declarations.test.ts | 61 | // Shared sqlite parser; its only importers in src/ are kilo-code.ts and | COMMENT |
| LOW | tests/provider-env-declarations.test.ts | 81 | // would change the copilot fingerprint, and on a fingerprint change | COMMENT |
| LOW | tests/currency-rounding.test.ts | 1 | import { describe, it, expect, beforeEach, afterEach } from 'vitest' | COMMENT |
| LOW | tests/cache-refresh-lock-corrupt-body.test.ts | 81 | try { | COMMENT |
| LOW | tests/session-cache.test.ts | 361 | // Copilot is deliberately NOT declared in PROVIDER_ENV_VARS (Ruling 1 of | COMMENT |
| LOW | tests/codex-pricing-1075.test.ts | 1 | // Regression suite for #1075 (reported by chr-evensen). | COMMENT |
| LOW | tests/kiro-cache-invalidation.test.ts | 1 | // Regression test for the Kiro stale-cache path (#618, #619). | COMMENT |
| LOW | tests/providers/cursor-bubble-dedup.test.ts | 1 | import { describe, it, expect, beforeEach, afterEach } from 'vitest' | COMMENT |
| LOW | tests/providers/copilot.test.ts | 1381 | expect(copilot.modelDisplayName('unknown-model-xyz')).toBe('unknown-model-xyz') | COMMENT |
| LOW | tests/providers/copilot.test.ts | 1841 | // --------------------------------------------------------------------------- | COMMENT |
| LOW | tests/providers/copilot.test.ts | 3241 | // Copilot is durable: on a parse-version bump the cache is carried forward and | COMMENT |
| LOW | tests/setup/env-isolation.ts | 1 | // Vitest setup file: isolates every test from the developer's shell environment. | COMMENT |
| LOW | …Tests/CodeBurnMenubarTests/TerminalLauncherTests.swift | 41 | #expect(script.contains("do script \"codeburn report\"")) | COMMENT |
| LOW | …ests/CodeBurnMenubarTests/DataClientProcessTests.swift | 81 | provider: .lingtaiTui, | COMMENT |
| LOW | …urnMenubarTests/LiveKeychainCredentialCacheTests.swift | 61 | /// Documents the measured behaviour that motivates the pre-flight lock check. | COMMENT |
| LOW | …/CodeBurnMenubarTests/MenubarPeriodSettingsTests.swift | 21 | func cliArgsMatchCLIPeriods() { | COMMENT |
| LOW | …/CodeBurnMenubarTests/MenubarPeriodSettingsTests.swift | 81 | func nonTodayPeriodsRenderCompactAndRegularSuffixes() { | COMMENT |
| LOW | mac/Scripts/build-local.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 981 | // On macOS Tahoe, status items may fail to appear if only an attributed title | COMMENT |
| LOW | mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 1361 | // Do NOT call NSApp.activate(ignoringOtherApps:) here. On macOS | COMMENT |
| LOW | mac/Sources/CodeBurnMenubar/CodeBurnApp.swift | 1421 | let aboutItem = NSMenuItem(title: "About CodeBurn", action: #selector(openAbout), keyEquivalent: "") | COMMENT |
| LOW | …rces/CodeBurnMenubar/StatusItemContextMenuPolicy.swift | 1 | import AppKit | COMMENT |
| LOW | mac/Sources/CodeBurnMenubar/AppStore.swift | 301 | COMMENT | |
| LOW | …urces/CodeBurnMenubar/Security/PreferredTerminal.swift | 1 | import Foundation | COMMENT |
| LOW | …urces/CodeBurnMenubar/Security/PreferredTerminal.swift | 81 | end tell | COMMENT |
| LOW | …ources/CodeBurnMenubar/Security/TerminalLauncher.swift | 1 | import AppKit | COMMENT |
| LOW | …ources/CodeBurnMenubar/Security/TerminalLauncher.swift | 21 | /// Upper bound on how long we wait for one `osascript` invocation. | COMMENT |
| LOW | …CodeBurnMenubar/Security/KeychainCredentialCache.swift | 41 | COMMENT | |
| LOW | …CodeBurnMenubar/Security/KeychainCredentialCache.swift | 81 | } | COMMENT |
| LOW | …ces/CodeBurnMenubar/Data/GeminiQuotaPresentation.swift | 1 | import Foundation | COMMENT |
| 178 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | src/act/optimize-apply.ts | 166 | print(chalk.dim('\n No appliable config-class fixes for this period.')) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 171 | print() | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 175 | print(renderApplyList(appliable, manual, costRate)) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 178 | print(chalk.dim(' Dry run: nothing was changed.\n')) | CODE |
| HIGH | src/act/optimize-apply.ts | 191 | print(chalk.yellow(` Skipped ${fp.finding.id}: CLAUDE.md edits are not applied with --yes; use the interactive pi | CODE |
| HIGH | src/act/optimize-apply.ts | 199 | print(chalk.dim(' Nothing applied.\n')) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 212 | print() | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 218 | print(` Applied ${chalk.bold(shortId(record.id))} ${record.description}`) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 219 | print(chalk.dim(` Undo anytime: codeburn act undo ${shortId(record.id)}`)) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 222 | print(chalk.cyan(' Still requires manual action:')) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 231 | print(chalk.dim(` CodeBurn will re-measure these on your next optimize run after ${REPORT_MIN_AGE_DAYS} days.`)) | CODE |
| HIGH⚡ | src/act/optimize-apply.ts | 233 | print() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | app/flathub/org.agentseal.CodeBurn.yaml | 14 | # CodeBurn reads local session logs written by AI coding tools into | COMMENT |
| HIGH | src/context-tui.tsx | 31 | /// The primary label for a session row: its AI-generated title when present, | COMMENT |
| HIGH | src/context-tree.ts | 527 | // Claude Code stores an AI-generated session name as "ai-title" entries (the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | app/renderer/sections/Optimize.tsx | 68 | { value: 'fixes', label: `Fixes ${overview.data.optimize.topFindings.length.toLocaleString('en-US')}` }, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …rnMenubarTests/CredentialKeychainContinuityTests.swift | 201 | #expect(harness.fakeKeychain.upsertCount >= 1) | COMMENT |
| MEDIUM | …rnMenubarTests/CredentialKeychainContinuityTests.swift | 230 | #expect(harness.fakeKeychain.upsertCount == 0) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/parser.test.ts | 372 | await writeFile(synthFile, 'placeholder') | CODE |
| LOW⚡ | tests/parser.test.ts | 781 | await writeFile(synthFile, 'placeholder') | CODE |
| LOW⚡ | tests/parser.test.ts | 1004 | await writeFile(synthFile, 'placeholder') | CODE |
| LOW | tests/parser.test.ts | 425 | await writeFile(synthFile, 'placeholder') | CODE |
| LOW | tests/parser.test.ts | 464 | await writeFile(synthFile, 'placeholder') | CODE |
| LOW | tests/parser.test.ts | 499 | await writeFile(synthFile, 'placeholder') | CODE |
| LOW | tests/parser.test.ts | 869 | await writeFile(synthFile, 'placeholder') | CODE |
| LOW | tests/parser.test.ts | 1116 | await writeFile(synthFile, 'placeholder') | CODE |
| LOW | tests/parser.test.ts | 3416 | await writeFile(synthFile, 'placeholder') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 11 | - **`codeburn sessions --by-work-unit` groups the sessions report into provider-recorded work units.** The new determini | CODE |
| MEDIUM | docs/providers/mux.md | 3 | [coder/mux](https://github.com/coder/mux) — Coder's desktop/CLI app for parallel agentic development. Mux makes its own | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mac/Scripts/package-app.sh | 5 | # Usage: | COMMENT |