Super Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.
This report summarizes scanner evidence for super-productivity/super-productivity, a TypeScript project with 23,298 GitHub stars. SynthScan examined 1,225,287 lines of code across 5277 source files, recording 1156 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 1.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 915 finding(s).
Are imports declared and package/API names verified? 69 finding(s).
Are wrappers, guards, and repeated structures necessary? 186 finding(s).
Which changes need focused human review? 1156 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1156 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/sync-providers/src/file-based-sync-data.ts | 97 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/sync-providers/src/file-based-sync-data.ts | 105 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/dependabot.yml | 6 | # ========================================== | COMMENT |
| MEDIUM | .github/dependabot.yml | 8 | # ========================================== | COMMENT |
| MEDIUM | .github/dependabot.yml | 66 | # ========================================== | COMMENT |
| MEDIUM | .github/dependabot.yml | 68 | # ========================================== | COMMENT |
| MEDIUM⚡ | .github/workflows/wiki-sync.yml | 110 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .github/workflows/wiki-sync.yml | 119 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .github/workflows/wiki-sync.yml | 128 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | e2e/store-screenshots/fixture.ts | 148 | // window outer bounds. ───────────────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-screenshots/fixture.ts | 319 | // ─── electron mode ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-screenshots/fixture.ts | 445 | // ─── web mode (default) ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …/tests/recurring/invalid-clock-string-bug-7067.spec.ts | 31 | // ── Phase 1: Create a task with a timed repeat config ───────────────────── | COMMENT |
| MEDIUM | …/tests/recurring/invalid-clock-string-bug-7067.spec.ts | 59 | // ── Phase 2: Corrupt the startTime ──────────────────────────────────────── | COMMENT |
| MEDIUM | …/tests/recurring/invalid-clock-string-bug-7067.spec.ts | 206 | // ── Phase 3: Verify no "Invalid clock string" crash ─────────────────────── | COMMENT |
| MEDIUM | …ests/recurring/repeat-task-day-change-bug-6230.spec.ts | 89 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ests/recurring/repeat-task-day-change-bug-6230.spec.ts | 103 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | e2e/store-video/scenarios/keyboard.spec.ts | 101 | // ── Pre-roll (trimmed off the reel) ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | e2e/store-video/scenarios/keyboard.spec.ts | 108 | // ── Lead-in ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | e2e/store-video/scenarios/keyboard.spec.ts | 111 | // ── Beat 1 — "Keyboard-first." ─────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | e2e/store-video/scenarios/keyboard.spec.ts | 118 | // ── Beat 2 — Shift+A → quick capture ───────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 161 | // ── Beat 3 — J / K → navigate task list ────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 179 | // ── Beat 4 — F → focus mode ────────────────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 199 | // ── Beat 4 → 5 — dismiss focus mode behind the end card ────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 229 | // ── Loop boundary ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | e2e/store-video/scenarios/mobile.spec.ts | 43 | // ── Pre-roll (trimmed off the reel) ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | e2e/store-video/scenarios/mobile.spec.ts | 49 | // ── Lead-in ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | e2e/store-video/scenarios/mobile.spec.ts | 52 | // ── Beat 1 — "On the go." ──────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | e2e/store-video/scenarios/mobile.spec.ts | 59 | // ── Beat 2 — Tap + → quick capture ─────────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 85 | // ── Beat 3 — Open focus mode and select the captured task ──────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 107 | // ── Beat 4 — End card "Mobile · iOS · Android" ────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 139 | // ── Loop boundary ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 82 | // ── Pre-roll (trimmed off the gif) ──────────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 114 | // ── Lead-in ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 117 | // ── Beat 1 — Capture in seconds. ───────────────────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 140 | // ── Beat 1 → next: cut to black, swap state ────────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 191 | // ── Beat 1.5 → 2 transition (full variant only) ────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 207 | // ── Beat 2 — Plan your day. (native app drag) ──────────────────────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 250 | // ── Beat 2 → 3 transition: cut to black, dispatch focus mode ───────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 343 | // ── Beat 4 → 5 transition: crossfade between controlled cards ─────── | COMMENT |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 367 | // ── Loop boundary ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/issue/providers/caldav/caldav-client.service.spec.ts | 8 | // ─── _getParentRelatedTo ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/issue/providers/caldav/caldav-client.service.spec.ts | 74 | // ─── _mapTask – completion normalization ────────────────────────────────────── | COMMENT |
| MEDIUM | …s/issue/providers/caldav/caldav-client.service.spec.ts | 123 | // ─── updateFields$ – completion push dirty-check ────────────────────────────── | COMMENT |
| MEDIUM | …s/issue/providers/caldav/caldav-client.service.spec.ts | 395 | // ─── _getXhrProvider / _getAndroidXhrProvider ───────────────────────────────── | COMMENT |
| MEDIUM | …s/issue/providers/caldav/caldav-client.service.spec.ts | 762 | // ─── _get_client – real cdav-library connect() ──────────────────────────────── | COMMENT |
| MEDIUM | …s/issue/providers/caldav/caldav-client.service.spec.ts | 1066 | // ── abort() ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 94 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 96 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 102 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 104 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 109 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 111 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 118 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 120 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 128 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 130 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 140 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 142 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/root-store/meta/meta-reducer-registry.ts | 149 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| 112 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/generate-ios-icon.js | 36 | // Step 1: Read source PNG | COMMENT |
| LOW⚡ | tools/generate-ios-icon.js | 45 | // Step 2: Resize and remove alpha channel | COMMENT |
| LOW | tools/generate-ios-icon.js | 61 | // Step 3: Write to output file | COMMENT |
| LOW | tools/generate-ios-icon.js | 73 | // Step 4: Verify output | COMMENT |
| LOW | docs/plans/2026-10-20-recurring-tasks-polish.md | 198 | ### Step 0: housekeeping (no code, ~30 min) | COMMENT |
| LOW | docs/plans/2026-10-20-recurring-tasks-polish.md | 267 | ### Step 3: summary + rule preview | COMMENT |
| LOW | docs/plans/2026-10-20-recurring-tasks-polish.md | 282 | ### Step 4: dead code (tiny PR, any time) | COMMENT |
| LOW | docs/wiki/1.02-Configure-Data-Synchronization.md | 18 | ## Step 1: Choose a Sync Provider | COMMENT |
| LOW | docs/wiki/1.02-Configure-Data-Synchronization.md | 38 | ## Step 2: Open Sync Settings | COMMENT |
| LOW | docs/wiki/1.02-Configure-Data-Synchronization.md | 51 | ## Step 3: Enter Your provider’s Details | COMMENT |
| LOW | docs/wiki/1.02-Configure-Data-Synchronization.md | 67 | ## Step 4: Confirm Sync is Working | COMMENT |
| LOW | docs/wiki/1.02-Configure-Data-Synchronization.md | 79 | ## Step 5: Keep Backups and Restore in Mind | COMMENT |
| LOW | docs/sync-and-op-log/vector-clocks.md | 98 | ### Step 1: Local Operation Created | COMMENT |
| LOW | docs/sync-and-op-log/vector-clocks.md | 109 | ### Step 2: Upload to Server | COMMENT |
| LOW | docs/sync-and-op-log/vector-clocks.md | 118 | ### Step 3: Download by Other Clients | COMMENT |
| LOW⚡ | …plugin-dev/caldav-calendar-provider/src/plugin.spec.ts | 1936 | // Step 1: Depth:1 on the root lists only non-calendar collections. | COMMENT |
| LOW⚡ | …plugin-dev/caldav-calendar-provider/src/plugin.spec.ts | 1938 | // Step 2: Depth:0 on the root yields the current-user-principal. | COMMENT |
| LOW⚡ | …plugin-dev/caldav-calendar-provider/src/plugin.spec.ts | 1940 | // Step 3: Depth:0 on the principal yields the calendar-home-set. | COMMENT |
| LOW⚡ | …plugin-dev/caldav-calendar-provider/src/plugin.spec.ts | 1942 | // Step 4: Depth:1 on the calendar-home enumerates the calendars. | COMMENT |
| LOW⚡ | …und/__tests__/sync/markdown-parser-integration.test.ts | 11 | // Step 1: Parse markdown | COMMENT |
| LOW⚡ | …und/__tests__/sync/markdown-parser-integration.test.ts | 20 | // Step 2: Generate operations for empty SP | COMMENT |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 173 | // Step 1: Start with SP tasks (parent + 1 subtask) | COMMENT |
| LOW⚡ | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 187 | // Step 2: SP→MD generates the markdown | COMMENT |
| LOW⚡ | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 192 | // Step 3: User adds a new subtask to the markdown | COMMENT |
| LOW⚡ | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 195 | // Step 4: MD→SP parses and generates operations | COMMENT |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 209 | // Step 5: Simulate what happens after the batch update - | COMMENT |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 231 | // Step 6: Parse the final markdown and check no more operations needed | COMMENT |
| LOW⚡ | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 268 | // Step 1: Initialize with existing tasks | COMMENT |
| LOW⚡ | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 276 | // Step 2: User edits file - adds new subtask | COMMENT |
| LOW⚡ | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 281 | // Step 3: File watcher detects change → MD→SP sync | COMMENT |
| LOW | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 299 | // Step 4: SP hook fires from batch update — should be suppressed | COMMENT |
| LOW⚡ | …c-md/src/background/__tests__/sync/integration.test.ts | 60 | // Step 1: Parse markdown to internal format | COMMENT |
| LOW⚡ | …c-md/src/background/__tests__/sync/integration.test.ts | 63 | // Step 2: Convert to SP Task format | COMMENT |
| LOW⚡ | …c-md/src/background/__tests__/sync/integration.test.ts | 76 | // Step 3: Convert back to markdown | COMMENT |
| LOW⚡ | …c-md/src/background/__tests__/sync/integration.test.ts | 79 | // Step 4: Parse regenerated markdown | COMMENT |
| LOW⚡ | …ackground/sync/header-preservation.integration.spec.ts | 81 | // Step 1: Parse markdown and sync to SP | COMMENT |
| LOW⚡ | …ackground/sync/header-preservation.integration.spec.ts | 84 | // Step 2: Mock the file read to return the original content with header | COMMENT |
| LOW | …ackground/sync/header-preservation.integration.spec.ts | 125 | // Step 3: Run spToMd and verify header is preserved | COMMENT |
| LOW⚡ | packages/super-sync-server/DOCKER-MONITORING.md | 163 | ### Step 1: Get the big picture | COMMENT |
| LOW⚡ | packages/super-sync-server/DOCKER-MONITORING.md | 170 | ### Step 2: Investigate User #29 (28k tiny ops) | COMMENT |
| LOW⚡ | packages/super-sync-server/DOCKER-MONITORING.md | 178 | ### Step 3: Investigate User #27 (huge ops) | COMMENT |
| LOW⚡ | packages/super-sync-server/DOCKER-MONITORING.md | 185 | ### Step 4: Export data for deeper analysis | COMMENT |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 70 | # Step 1: Stream database dump → compression → encryption | COMMENT |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 84 | # Step 2: Verify encrypted file | COMMENT |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 110 | # Step 3: Log backup event (audit trail) | COMMENT |
| LOW | …ges/super-sync-server/tests/conflict-detection.spec.ts | 969 | // Step 1: Create an entity with a clock that has exactly MAX entries | COMMENT |
| LOW | …ges/super-sync-server/tests/conflict-detection.spec.ts | 985 | // Step 2: clientA resolves conflict by merging entity clock + its own ID → MAX+1 entries. | COMMENT |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 331 | // Step 1: Client A uploads with requestId | COMMENT |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 348 | // Step 2: Client B uploads ops | COMMENT |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 360 | // Step 3: Client A retries with same requestId but updated lastKnownServerSeq | COMMENT |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 2756 | // Step 1: Initial State | COMMENT |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 2778 | // Step 2: Add more operations | COMMENT |
| LOW⚡ | …ests/integration/multi-client-sync.integration.spec.ts | 957 | // Step 1: Desktop creates initial tasks | COMMENT |
| LOW⚡ | …ests/integration/multi-client-sync.integration.spec.ts | 965 | // Step 2: Mobile comes online and downloads | COMMENT |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 976 | // Step 3: Mobile makes changes | COMMENT |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 987 | // Step 4: Desktop syncs | COMMENT |
| LOW | …-sync-server/docs/e2ee-legacy-data-eradication-plan.md | 142 | ### Step 1: Encrypted-only ingress gate | COMMENT |
| LOW | …-sync-server/docs/e2ee-legacy-data-eradication-plan.md | 202 | ### Step 2: Notify and wait at least 45 days | COMMENT |
| LOW | …-sync-server/docs/e2ee-legacy-data-eradication-plan.md | 216 | ### Step 3: Deadline cleanup | COMMENT |
| LOW | …-sync-server/docs/e2ee-legacy-data-eradication-plan.md | 253 | ### Step 4: Let old copies expire | COMMENT |
| 172 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.yaml | 1 | services: | COMMENT |
| LOW | docker-compose.yaml | 21 | # `npm run e2e:supersync` takes the db back to an ephemeral port. | COMMENT |
| LOW | eslint.config.js | 1 | // @ts-check | COMMENT |
| LOW | eslint.config.js | 281 | // download and the error overlay's "Logs" button) and exported logs are | COMMENT |
| LOW | eslint.config.js | 301 | 'local-rules/no-user-content-in-logs': 'error', | COMMENT |
| LOW | eslint.config.js | 401 | ], | COMMENT |
| LOW | electron-builder.yaml | 61 | nsis: | COMMENT |
| LOW | electron-builder.yaml | 121 | # Fix for issue #5368: Prevent /usr/lib/.build-id/ collisions with other Electron apps | COMMENT |
| LOW | electron-builder.yaml | 141 | # hard-coded fallback to `snapStore` in `findSnapPublishConfig` (snap.js): | COMMENT |
| LOW | electron-builder.yaml | 161 | # /tmp inside a strict snap is bind-mounted to | COMMENT |
| LOW | electron-builder.yaml | 241 | COMMENT | |
| LOW | capacitor.config.ts | 21 | // WKWebView is not force-resized in fullscreen. | COMMENT |
| LOW | tools/notarizeMacApp.js | 61 | COMMENT | |
| LOW | tools/notarizeMacApp.js | 81 | // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied | COMMENT |
| LOW | tools/verify-linux-wm-class.test.js | 1 | 'use strict'; | COMMENT |
| LOW | tools/sync-fuzz-compare.js | 1 | #!/usr/bin/env node | COMMENT |
| LOW | tools/afterPack.js | 1 | // Post-pack checks and platform-specific packaging adjustments. | COMMENT |
| LOW | tools/remove-woff.js | 21 | // fs.writeFileSync(filePath, newFileContent); | COMMENT |
| LOW | tools/verify-android-url-hosts.test.js | 1 | 'use strict'; | COMMENT |
| LOW | tools/prepare-appstore-release-notes.js | 1 | #!/usr/bin/env node | COMMENT |
| LOW | tools/prepare-appstore-release-notes.js | 61 | /\bappimage\b/i, | COMMENT |
| LOW | tools/android-dev-version-code.js | 1 | 'use strict'; | COMMENT |
| LOW | tools/verify-android-shortcuts.test.js | 1 | 'use strict'; | COMMENT |
| LOW | tools/verify-ios-quick-actions.test.js | 1 | 'use strict'; | COMMENT |
| LOW | tools/android-verify/run.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | ios/App/App/AppDelegate.swift | 41 | /// `tools/verify-ios-quick-actions.test.js` binds the two together. | COMMENT |
| LOW | eslint-local-rules/rules/no-user-content-in-logs.js | 101 | const SAFE_SUFFIX_RE = suffixRe(SAFE_WORDS); | COMMENT |
| LOW | eslint-local-rules/rules/no-user-content-in-logs.js | 121 | 'targetdate', | COMMENT |
| LOW | android/run-android-ime-check.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | android/run-android-navbar-check.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | android/run-android-checks.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | android/run-android-checks.sh | 81 | adb uninstall "$PACKAGE" > /dev/null 2>&1 || true | COMMENT |
| LOW | …erproductivity/superproductivity/FullscreenActivity.kt | 121 | ) | COMMENT |
| LOW | …roductivity/superproductivity/CapacitorMainActivity.kt | 361 | // A relaunch from recents redelivers the task's base intent. Replaying a | COMMENT |
| LOW | scripts/fetch-released-client-assets.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | packages/plugin-dev/PLUGIN_I18N.md | 221 | // → "1/16/26" (en-US) | COMMENT |
| LOW | packages/plugin-dev/doc-mode/src/persistence.spec.ts | 121 | test('persistContextDocRaw: writes the exact raw string under doc:<ctxId>', async () => { | COMMENT |
| LOW | packages/plugin-dev/doc-mode/src/ui/editor.ts | 41 | COMMENT | |
| LOW | packages/plugin-dev/doc-mode/src/ui/editor.ts | 81 | // back to an empty seed. Gates scheduleSave so the empty seed is not | COMMENT |
| LOW | packages/plugin-dev/doc-mode/src/ui/editor.ts | 241 | const flushSave = async (): Promise<void> => { | COMMENT |
| LOW | packages/plugin-dev/doc-mode/src/ui/editor.ts | 461 | } | COMMENT |
| LOW | …kages/plugin-dev/ai-productivity-prompts/src/plugin.ts | 1 | // Procrastination Buster Plugin for Super Productivity | COMMENT |
| LOW | packages/plugin-dev/todoist-import/src/plugin.js | 1 | // Todoist Import plugin — all logic lives in the iframe UI (index.html). | COMMENT |
| LOW | packages/plugin-dev/ticktick-import/src/plugin.js | 1 | // TickTick Import plugin — all logic lives in the iframe UI (index.html). | COMMENT |
| LOW | packages/plugin-api/src/types.ts | 621 | */ | COMMENT |
| LOW | packages/plugin-api/src/types.ts | 981 | // PluginAPI: PluginAPI; | COMMENT |
| LOW | …ckages/super-sync-server/docker-compose.monitoring.yml | 1 | # Monitoring stack for SuperSync Server | COMMENT |
| LOW | packages/super-sync-server/docker-compose.yml | 1 | # Production docker-compose for super-sync-server | COMMENT |
| LOW | packages/super-sync-server/docker-compose.yml | 141 | - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} | COMMENT |
| LOW | packages/super-sync-server/docker-compose.yml | 201 | retries: 5 | COMMENT |
| LOW | …kages/super-sync-server/tests/snapshot.service.spec.ts | 1721 | COMMENT | |
| LOW | …kages/super-sync-server/tests/snapshot.service.spec.ts | 1741 | // Note: `Object.assign({}, {__proto__: …})` does NOT pollute the | COMMENT |
| LOW | …kages/super-sync-server/tests/snapshot.service.spec.ts | 1781 | // functionality. | COMMENT |
| LOW | …erver/tests/conflict-entity-lookup-plan.pglite.spec.ts | 281 | ); | COMMENT |
| LOW | …/super-sync-server/tests/storage-quota.service.spec.ts | 301 | it('should not deadlock when a reentrant caller hits an in-flight non-reentrant reconcile', async () => { | COMMENT |
| LOW | …/super-sync-server/tests/monitoring-sql.pglite.spec.ts | 121 | // Heartbeat 10 days old, newest operation 40 days old. Straddles the 7d/30d/90d | COMMENT |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 401 | }), | COMMENT |
| LOW | packages/super-sync-server/tests/migration-sql.spec.ts | 121 | .replace(/\s+/g, ' ') | COMMENT |
| LOW | …/integration/old-ops-boundary-plan.integration.spec.ts | 421 | // like the trailing `OFFSET 0` are deliberately NOT asserted: they are artifacts of | COMMENT |
| LOW | …/integration/old-ops-boundary-plan.integration.spec.ts | 461 | COMMENT | |
| 377 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/generate-ios-icon.js | 36 | // Step 1: Read source PNG | COMMENT |
| LOW⚡ | tools/generate-ios-icon.js | 45 | // Step 2: Resize and remove alpha channel | COMMENT |
| LOW | tools/generate-ios-icon.js | 61 | // Step 3: Write to output file | COMMENT |
| LOW | tools/generate-ios-icon.js | 73 | // Step 4: Verify output | COMMENT |
| LOW⚡ | …plugin-dev/caldav-calendar-provider/src/plugin.spec.ts | 1936 | // Step 1: Depth:1 on the root lists only non-calendar collections. | COMMENT |
| LOW⚡ | …plugin-dev/caldav-calendar-provider/src/plugin.spec.ts | 1938 | // Step 2: Depth:0 on the root yields the current-user-principal. | COMMENT |
| LOW⚡ | …plugin-dev/caldav-calendar-provider/src/plugin.spec.ts | 1940 | // Step 3: Depth:0 on the principal yields the calendar-home-set. | COMMENT |
| LOW⚡ | …plugin-dev/caldav-calendar-provider/src/plugin.spec.ts | 1942 | // Step 4: Depth:1 on the calendar-home enumerates the calendars. | COMMENT |
| LOW⚡ | …und/__tests__/sync/markdown-parser-integration.test.ts | 11 | // Step 1: Parse markdown | COMMENT |
| LOW⚡ | …und/__tests__/sync/markdown-parser-integration.test.ts | 20 | // Step 2: Generate operations for empty SP | COMMENT |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 173 | // Step 1: Start with SP tasks (parent + 1 subtask) | COMMENT |
| LOW⚡ | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 187 | // Step 2: SP→MD generates the markdown | COMMENT |
| LOW⚡ | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 192 | // Step 3: User adds a new subtask to the markdown | COMMENT |
| LOW⚡ | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 195 | // Step 4: MD→SP parses and generates operations | COMMENT |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 209 | // Step 5: Simulate what happens after the batch update - | COMMENT |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 231 | // Step 6: Parse the final markdown and check no more operations needed | COMMENT |
| LOW⚡ | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 268 | // Step 1: Initialize with existing tasks | COMMENT |
| LOW⚡ | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 276 | // Step 2: User edits file - adds new subtask | COMMENT |
| LOW⚡ | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 281 | // Step 3: File watcher detects change → MD→SP sync | COMMENT |
| LOW | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 299 | // Step 4: SP hook fires from batch update — should be suppressed | COMMENT |
| LOW⚡ | …c-md/src/background/__tests__/sync/integration.test.ts | 60 | // Step 1: Parse markdown to internal format | COMMENT |
| LOW⚡ | …c-md/src/background/__tests__/sync/integration.test.ts | 63 | // Step 2: Convert to SP Task format | COMMENT |
| LOW⚡ | …c-md/src/background/__tests__/sync/integration.test.ts | 76 | // Step 3: Convert back to markdown | COMMENT |
| LOW⚡ | …c-md/src/background/__tests__/sync/integration.test.ts | 79 | // Step 4: Parse regenerated markdown | COMMENT |
| LOW⚡ | …ackground/sync/header-preservation.integration.spec.ts | 81 | // Step 1: Parse markdown and sync to SP | COMMENT |
| LOW⚡ | …ackground/sync/header-preservation.integration.spec.ts | 84 | // Step 2: Mock the file read to return the original content with header | COMMENT |
| LOW | …ackground/sync/header-preservation.integration.spec.ts | 125 | // Step 3: Run spToMd and verify header is preserved | COMMENT |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 70 | # Step 1: Stream database dump → compression → encryption | COMMENT |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 84 | # Step 2: Verify encrypted file | COMMENT |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 110 | # Step 3: Log backup event (audit trail) | COMMENT |
| LOW | …ges/super-sync-server/tests/conflict-detection.spec.ts | 969 | // Step 1: Create an entity with a clock that has exactly MAX entries | COMMENT |
| LOW | …ges/super-sync-server/tests/conflict-detection.spec.ts | 985 | // Step 2: clientA resolves conflict by merging entity clock + its own ID → MAX+1 entries. | COMMENT |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 331 | // Step 1: Client A uploads with requestId | COMMENT |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 348 | // Step 2: Client B uploads ops | COMMENT |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 360 | // Step 3: Client A retries with same requestId but updated lastKnownServerSeq | COMMENT |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 2756 | // Step 1: Initial State | COMMENT |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 2778 | // Step 2: Add more operations | COMMENT |
| LOW⚡ | …ests/integration/multi-client-sync.integration.spec.ts | 957 | // Step 1: Desktop creates initial tasks | COMMENT |
| LOW⚡ | …ests/integration/multi-client-sync.integration.spec.ts | 965 | // Step 2: Mobile comes online and downloads | COMMENT |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 976 | // Step 3: Mobile makes changes | COMMENT |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 987 | // Step 4: Desktop syncs | COMMENT |
| LOW | packages/super-sync-server/public/recover-passkey.js | 21 | // Step 1: Get registration options from server | COMMENT |
| LOW⚡ | packages/super-sync-server/public/recover-passkey.js | 36 | // Step 2: Create passkey using browser API | COMMENT |
| LOW⚡ | packages/super-sync-server/public/recover-passkey.js | 46 | // Step 3: Send credential to server for verification | COMMENT |
| LOW | packages/super-sync-server/public/app.js | 421 | // Step 1: Get authentication options from server | COMMENT |
| LOW⚡ | packages/super-sync-server/public/app.js | 435 | // Step 2: Authenticate with passkey using browser API | COMMENT |
| LOW⚡ | packages/super-sync-server/public/app.js | 442 | // Step 3: Verify with server | COMMENT |
| LOW | packages/super-sync-server/public/app.js | 497 | // Step 1: Get registration options from server | COMMENT |
| LOW⚡ | packages/super-sync-server/public/app.js | 513 | // Step 2: Create passkey using browser API | COMMENT |
| LOW⚡ | packages/super-sync-server/public/app.js | 523 | // Step 3: Verify registration with server | COMMENT |
| LOW | packages/super-sync-server/scripts/backup.sh | 92 | # Step 1: Create minimal accounts-only dump (users + passkeys) | COMMENT |
| LOW⚡ | packages/super-sync-server/scripts/backup.sh | 104 | # Step 2: Create full PostgreSQL dump | COMMENT |
| LOW⚡ | packages/super-sync-server/scripts/backup.sh | 113 | # Step 3: Upload to remote (if enabled) | COMMENT |
| LOW | packages/super-sync-server/scripts/backup.sh | 132 | # Step 4: Clean up old backups | COMMENT |
| LOW | packages/super-sync-server/scripts/build-and-push.sh | 121 | # Step 1: Build image | COMMENT |
| LOW | packages/super-sync-server/scripts/build-and-push.sh | 144 | # Step 2: Login to GHCR (if token provided) | COMMENT |
| LOW | packages/super-sync-server/scripts/build-and-push.sh | 156 | # Step 3: Push to registry | COMMENT |
| LOW⚡ | e2e/tests/import-export/archive-subtasks.spec.ts | 187 | // Step 1: Import legacy backup with active tasks | COMMENT |
| LOW⚡ | e2e/tests/import-export/archive-subtasks.spec.ts | 195 | // Step 2: Navigate to INBOX project to see tasks | COMMENT |
| LOW⚡ | e2e/tests/import-export/archive-subtasks.spec.ts | 210 | // Step 3: Mark all tasks as done (parent tasks first, subtasks auto-done by parent) | COMMENT |
| 139 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ges/super-sync-server/tests/conflict-detection.spec.ts | 392 | email: 'test@test.com', | CODE |
| LOW | packages/super-sync-server/tests/gap-detection.spec.ts | 303 | email: 'test@test.com', | CODE |
| LOW | …ckages/super-sync-server/tests/sync-operations.spec.ts | 602 | email: 'test@test.com', | CODE |
| LOW | packages/super-sync-server/tests/auth-cache.spec.ts | 28 | jwt.sign({ userId: 1, email: 'user@example.com', tokenVersion }, jwtSecret, { | CODE |
| LOW | packages/super-sync-server/tests/auth-cache.spec.ts | 51 | email: 'user@example.com', | CODE |
| LOW | packages/super-sync-server/tests/auth-cache.spec.ts | 57 | email: 'user@example.com', | CODE |
| LOW | packages/super-sync-server/tests/middleware.spec.ts | 127 | req.user = { userId: 1, email: 'test@test.com' }; | CODE |
| LOW | packages/super-sync-server/tests/middleware.spec.ts | 131 | expect(user).toEqual({ userId: 1, email: 'test@test.com' }); | CODE |
| LOW | …kages/super-sync-server/tests/websocket.routes.spec.ts | 106 | email: 'test@test.com', | CODE |
| LOW | packages/super-sync-server/tests/setup.ts | 409 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 286 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 370 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 581 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 602 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 623 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 645 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 671 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 702 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 734 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 769 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 822 | email: 'test@test.com', | CODE |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 860 | email: 'test@test.com', | CODE |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 240 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), | CODE |
| LOW | …per-sync-server/tests/time-tracking-operations.spec.ts | 457 | email: 'test@test.com', | CODE |
| LOW | packages/super-sync-server/tests/api.routes.spec.ts | 16 | const email = 'test@test.com'; | CODE |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 59 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, | CODE |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 66 | authToken = createToken(userId, 'test@test.com'); | CODE |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 639 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, | CODE |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 643 | authToken = createToken(userId, 'test@test.com'); | CODE |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 894 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, | CODE |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 898 | authToken = createToken(userId, 'test@test.com'); | CODE |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 989 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, | CODE |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 993 | authToken = createToken(userId, 'test@test.com'); | CODE |
| LOW | …-sync-server/tests/sync-compressed-body.routes.spec.ts | 53 | email: 'test@test.com', | CODE |
| LOW | …uper-sync-server/tests/e2ee-upload-gate.routes.spec.ts | 47 | email: 'test@test.com', | CODE |
| LOW | …ges/super-sync-server/tests/monitoring-scripts.spec.ts | 199 | email: 'user@example.com', | CODE |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 19 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), | CODE |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 88 | await replaceToken(1, 'user@example.com'); | CODE |
| LOW⚡ | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 109 | await replaceToken(1, 'user@example.com'); | CODE |
| LOW⚡ | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 116 | email: 'user@example.com', | CODE |
| LOW⚡ | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 123 | await replaceToken(1, 'user@example.com'); | CODE |
| LOW⚡ | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 131 | const result = await replaceToken(7, 'test@test.com'); | CODE |
| LOW⚡ | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 135 | user: { id: 7, email: 'test@test.com' }, | CODE |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 156 | await replaceToken(3, 'user@example.com'); | CODE |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 827 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), | CODE |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 886 | email: 'test@test.com', | CODE |
| LOW | …s/super-sync-server/tests/replace-token.routes.spec.ts | 18 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), | CODE |
| LOW | …s/super-sync-server/tests/replace-token.routes.spec.ts | 53 | user: { id: 1, email: 'test@test.com' }, | CODE |
| LOW | …ver/tests/request-dedup-failure-caching.routes.spec.ts | 56 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), | CODE |
| LOW | …gration/snapshot-skip-optimization.integration.spec.ts | 38 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), | CODE |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 207 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, | CODE |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 931 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, | CODE |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 1088 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, | CODE |
| LOW | src/app/plugins/plugin-security.ts | 155 | 'placeholder', | CODE |
| LOW | src/app/plugins/plugin-security.ts | 179 | 'placeholder', | CODE |
| LOW | …port-from-url/dialog-import-from-url.component.spec.ts | 373 | expect(urlInput.nativeElement.hasAttribute('placeholder')).toBe(true); | CODE |
| LOW | src/app/imex/file-imex/privacy-export.spec.ts | 158 | description: 'Contact: admin@example.org', | CODE |
| LOW | src/app/imex/file-imex/privacy-export.spec.ts | 174 | name: 'John Doe', | CODE |
| LOW⚡ | …ures/tasks/add-task-bar/add-task-bar.component.spec.ts | 1613 | expect(inputEl.getAttribute('placeholder')).toBeTruthy(); | CODE |
| LOW⚡ | …ures/tasks/add-task-bar/add-task-bar.component.spec.ts | 1616 | expect(inputEl.hasAttribute('placeholder')).toBe(false); | CODE |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | electron-builder.yaml | 78 | # autoUpdater block in electron/start-app.ts is commented out. elevate.exe is | COMMENT |
| MEDIUM | tools/android-verify/run.sh | 9 | # 1 scenario failed, 2 precondition or harness error. | COMMENT |
| MEDIUM | …perproductivity/service/SuperSyncBackgroundProvider.kt | 225 | // shipped format and robust when the optional flag is absent. | COMMENT |
| MEDIUM | packages/plugin-dev/api-test-plugin/index.html | 689 | <textarea style="width: 100%; min-height: 100px; padding: 10px; border: 1px solid #ddd; border-radius: | CODE |
| MEDIUM | .github/workflows/supersync-server-tests.yml | 15 | # The sync fuzz harness's SuperSync port, checked by tests/sync-fuzz-server-parity.pglite.spec.ts | COMMENT |
| MEDIUM | .github/workflows/e2e-sync-pr.yml | 94 | # Shared: client sync code + E2E harness that both providers exercise. | COMMENT |
| MEDIUM | .github/workflows/e2e-sync-pr.yml | 103 | # The sync fuzz harness runs client sync code only, not the E2E helpers. | COMMENT |
| MEDIUM | e2e/tests/sync/supersync-edge-cases.spec.ts | 415 | // Wait for UI to update - use waitForTask which has robust polling | COMMENT |
| MEDIUM | e2e/tests/sync/supersync-models.spec.ts | 296 | // Check for tag text content in the task (more robust than finding specific tag element structure) | COMMENT |
| MEDIUM | e2e/tests/sync/supersync-models.spec.ts | 506 | // Use toPass() to make tag deletion more robust | COMMENT |
| MEDIUM | …supersync-rejected-ops-transient-download-8331.spec.ts | 266 | // B's local state, so the resolved value is robust to LWW direction.) | COMMENT |
| MEDIUM | …e/tests/task-list-basic/drag-task-into-subtask.spec.ts | 94 | // subtask drop list, the robust core of the convert-to-subtask feature. | COMMENT |
| MEDIUM | src/app/core/theme/ios-keyboard.service.ts | 101 | // before any listener is registered. Definitely assigned rather than | COMMENT |
| MEDIUM | …app/core-ui/magic-side-nav/magic-side-nav.component.ts | 497 | // Handle seamless mode transitions | COMMENT |
| MEDIUM | src/app/imex/sync/sync-safety-banner.service.ts | 16 | // device. Wall-clock (not app-start count) so it is robust both to users who | COMMENT |
| MEDIUM | …tures/bottom-panel/bottom-panel-container.component.ts | 151 | // Rolling window of recent move samples for robust velocity at release. | COMMENT |
| MEDIUM | …ode/focus-mode-layout/focus-mode-layout.component.scss | 31 | // session; empty on breaks. Absolutely positioned with an --s2 inset so it | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …roductivity/superproductivity/CapacitorMainActivity.kt | 407 | com.superproductivity.superproductivity.widget.ReminderTapQueue.setTaskId(this, tapPayload) | CODE |
| CRITICAL | e2e/tests/sync/webdav-upload-unseen-ops-10239.spec.ts | 219 | remote.data.state.task.ids.push(taskId); | CODE |
| CRITICAL | src/app/imex/file-imex/file-imex.component.spec.ts | 222 | mockEvent.target.files.item.and.returnValue(null); | CODE |
| CRITICAL | …ject-attachments/open-project-attachments.component.ts | 56 | ? issue._embedded.attachments._embedded.elements.map((att) => | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ity/superproductivity/webview/WebViewRequestHandler.kt | 17 | class WebViewRequestHandler(private val activity: Activity, private val serviceHost: String) { | CODE |
| LOW | packages/plugin-dev/voice-reminder/plugin.js | 145 | async function openVoiceReminderSettings() { | CODE |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 78 | export function isLatestCausalFullStateQuery(strings: unknown): boolean { | CODE |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 91 | export function isUnboundedCausalFullStateQuery( | CODE |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 108 | export function latestCausalFullStateRows( | CODE |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 160 | export function hasOperationUniqueConflict( | CODE |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 183 | export function matchesOperationAlternative( | CODE |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 216 | export function mockOperationGroupByMaxSeq( | CODE |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 270 | export function mockOperationFindFirstFreshBelowBoundary( | CODE |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 320 | export function mockOperationFindFirstCausalRepair( | CODE |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 357 | export function mockUserSyncStateFindMany( | CODE |
| LOW | …ckages/super-sync-server/src/sync/sync.routes.quota.ts | 297 | export async function enforceCleanSlateStorageQuota( | CODE |
| LOW | packages/shared-schema/src/migrate.ts | 253 | export function validateMigrationRegistry(): string[] { | CODE |
| LOW | src/app/plugins/util/plugin-iframe.util.ts | 398 | function unsupportedIframeRegistration(method) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ckages/super-sync-server/docker-compose.monitoring.yml | 8 | # Usage: | COMMENT |
| LOW | packages/super-sync-server/docker-compose.build.yml | 3 | # Usage: | COMMENT |
| LOW | packages/super-sync-server/docker-compose.yml | 3 | # Usage: | COMMENT |
| LOW | packages/super-sync-server/scripts/backup.sh | 4 | # Usage: | COMMENT |
| LOW | packages/super-sync-server/scripts/docker-monitor.sh | 4 | # Usage: | COMMENT |
| LOW | packages/super-sync-server/scripts/build-and-push.sh | 4 | # Usage: | COMMENT |
| LOW | packages/super-sync-server/scripts/deploy.sh | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/ENV_SETUP.md | 38 | DROPBOX_API_KEY=your-api-key-here | CODE |
| HIGH | docs/ENV_SETUP.md | 105 | NEW_API_KEY=your-api-key-here | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker-compose.e2e.yaml | 3 | # This file is standalone for app/webdav tests only | COMMENT |
| MEDIUM | scripts/wait-for-supersync.sh | 19 | # Create a dummy user to verify test endpoints are available | COMMENT |
| MEDIUM | .github/actions/setup-ios-signing/action.yml | 103 | # Create the provisioning profiles directory if it doesn't exist | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 29 | # Check if running as root (needed for secure file permissions) | COMMENT |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 38 | # Check if backup passphrase file exists | COMMENT |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 49 | # Check if container is running | COMMENT |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 58 | # Check if PostgreSQL is ready to accept connections | COMMENT |
| LOW | packages/super-sync-server/scripts/docker-monitor.sh | 24 | # Check if container is running | COMMENT |
| LOW | packages/super-sync-server/scripts/deploy.sh | 178 | # Check if monitoring compose exists and include it | COMMENT |