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.
655 matches across 11 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | .github/dependabot.yml | 6 | # ========================================== |
| MEDIUM | .github/dependabot.yml | 8 | # ========================================== |
| MEDIUM | .github/dependabot.yml | 30 | # ========================================== |
| MEDIUM | .github/dependabot.yml | 32 | # ========================================== |
| MEDIUM | .github/workflows/wiki-sync.yml | 102 | # -------------------------------------------------------------------- |
| MEDIUM | .github/workflows/wiki-sync.yml | 111 | # -------------------------------------------------------------------- |
| MEDIUM | .github/workflows/wiki-sync.yml | 120 | # -------------------------------------------------------------------- |
| MEDIUM | e2e/store-screenshots/fixture.ts | 148 | // window outer bounds. ───────────────────────────────────────── |
| MEDIUM | e2e/store-screenshots/fixture.ts | 319 | // ─── electron mode ──────────────────────────────────────────────── |
| MEDIUM | e2e/store-screenshots/fixture.ts | 445 | // ─── web mode (default) ─────────────────────────────────────────── |
| MEDIUM | …/tests/recurring/invalid-clock-string-bug-7067.spec.ts | 26 | // ── Phase 1: Create a task with a timed repeat config ───────────────────── |
| MEDIUM | …/tests/recurring/invalid-clock-string-bug-7067.spec.ts | 58 | // ── Phase 2: Corrupt the startTime ──────────────────────────────────────── |
| MEDIUM | …/tests/recurring/invalid-clock-string-bug-7067.spec.ts | 205 | // ── Phase 3: Verify no "Invalid clock string" crash ─────────────────────── |
| MEDIUM | …ests/recurring/repeat-task-day-change-bug-6230.spec.ts | 98 | // ────────────────────────────────────────────────────────────────────────── |
| MEDIUM | …ests/recurring/repeat-task-day-change-bug-6230.spec.ts | 112 | // ────────────────────────────────────────────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 125 | // ── Pre-roll (trimmed off the reel) ────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 132 | // ── Lead-in ────────────────────────────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 135 | // ── Beat 1 — "Keyboard-first." ─────────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 141 | // ── Beat 2 — Shift+A → quick capture ───────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 250 | // ── Beat 3 — J / K → navigate task list ────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 264 | // ── Beat 4 — F → focus mode ────────────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 312 | // ── Beat 4 → 5 — dismiss focus mode behind the end card ────────────── |
| MEDIUM | e2e/store-video/scenarios/keyboard.spec.ts | 341 | // ── Loop boundary ──────────────────────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 42 | // ── Pre-roll (trimmed off the reel) ────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 48 | // ── Lead-in ────────────────────────────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 51 | // ── Beat 1 — "On the go." ──────────────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 57 | // ── Beat 2 — Tap + → quick capture ─────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 99 | // ── Beat 3 — Tap captured task → focus mode ────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 141 | // ── Beat 4 — End card "Mobile · iOS · Android" ────────────────────── |
| MEDIUM | e2e/store-video/scenarios/mobile.spec.ts | 172 | // ── Loop boundary ──────────────────────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 76 | // ── Pre-roll (trimmed off the gif) ──────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 108 | // ── Lead-in ────────────────────────────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 111 | // ── Beat 1 — Capture in seconds. ───────────────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 133 | // ── Beat 1 → next: cut to black, swap state ────────────────────────── |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 190 | // ── Beat 1.5 → 2 transition (full variant only) ────────────────────── |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 206 | // ── Beat 2 — Plan your day. (native app drag) ──────────────────────── |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 240 | // ── Beat 2 → 3 transition: cut to black, dispatch focus mode ───────── |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 334 | // ── Beat 4 → 5 transition: crossfade between controlled cards ─────── |
| MEDIUM | e2e/store-video/scenarios/reel.spec.ts | 357 | // ── Loop boundary ──────────────────────────────────────────────────── |
| MEDIUM | …s/issue/providers/caldav/caldav-client.service.spec.ts | 6 | // ─── _getParentRelatedTo ────────────────────────────────────────────────────── |
| MEDIUM | …s/issue/providers/caldav/caldav-client.service.spec.ts | 72 | // ─── _getXhrProvider / _getAndroidXhrProvider ───────────────────────────────── |
| MEDIUM | …s/issue/providers/caldav/caldav-client.service.spec.ts | 343 | // ── abort() ─────────────────────────────────────────────────────────────────── |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 78 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 80 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 85 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 87 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 94 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 96 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 106 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 108 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 115 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 117 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 123 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 125 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 128 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 130 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 134 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | src/app/root-store/meta/meta-reducer-registry.ts | 136 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | …/app/op-log/apply/archive-operation-handler.service.ts | 106 | // ═══════════════════════════════════════════════════════════════════════════ |
| MEDIUM | …/app/op-log/apply/archive-operation-handler.service.ts | 108 | // ═══════════════════════════════════════════════════════════════════════════ |
| 94 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tools/generate-ios-icon.js | 36 | // Step 1: Read source PNG |
| LOW | tools/generate-ios-icon.js | 45 | // Step 2: Resize and remove alpha channel |
| LOW | tools/generate-ios-icon.js | 61 | // Step 3: Write to output file |
| LOW | tools/generate-ios-icon.js | 73 | // Step 4: Verify output |
| LOW | …und/__tests__/sync/markdown-parser-integration.test.ts | 11 | // Step 1: Parse markdown |
| LOW | …und/__tests__/sync/markdown-parser-integration.test.ts | 20 | // Step 2: Generate operations for empty SP |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 173 | // Step 1: Start with SP tasks (parent + 1 subtask) |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 187 | // Step 2: SP→MD generates the markdown |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 192 | // Step 3: User adds a new subtask to the markdown |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 195 | // Step 4: MD→SP parses and generates operations |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 209 | // Step 5: Simulate what happens after the batch update - |
| LOW | …ackground/__tests__/sync/add-subtask-from-file.test.ts | 231 | // Step 6: Parse the final markdown and check no more operations needed |
| LOW | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 268 | // Step 1: Initialize with existing tasks |
| LOW | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 276 | // Step 2: User edits file - adds new subtask |
| LOW | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 281 | // Step 3: File watcher detects change → MD→SP sync |
| LOW | …und/__tests__/sync/sync-oscillation-prevention.test.ts | 299 | // Step 4: SP hook fires from batch update — should be suppressed |
| LOW | …c-md/src/background/__tests__/sync/integration.test.ts | 60 | // Step 1: Parse markdown to internal format |
| LOW | …c-md/src/background/__tests__/sync/integration.test.ts | 63 | // Step 2: Convert to SP Task format |
| LOW | …c-md/src/background/__tests__/sync/integration.test.ts | 76 | // Step 3: Convert back to markdown |
| LOW | …c-md/src/background/__tests__/sync/integration.test.ts | 79 | // Step 4: Parse regenerated markdown |
| LOW | …ackground/sync/header-preservation.integration.spec.ts | 81 | // Step 1: Parse markdown and sync to SP |
| LOW | …ackground/sync/header-preservation.integration.spec.ts | 84 | // Step 2: Mock the file read to return the original content with header |
| LOW | …ackground/sync/header-preservation.integration.spec.ts | 125 | // Step 3: Run spToMd and verify header is preserved |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 70 | # Step 1: Stream database dump → compression → encryption |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 84 | # Step 2: Verify encrypted file |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 110 | # Step 3: Log backup event (audit trail) |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 62 | # Step 1: Create loop device file |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 68 | # Step 2: Initialize LUKS with Argon2id |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 86 | # Step 3: Add emergency recovery key (Slot 1) |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 96 | # Step 4: Open and format |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 104 | # Step 5: Mount and set permissions |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 114 | # Step 6: Verify AES-NI hardware acceleration |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 125 | # Step 7: Backup LUKS header (CRITICAL for disaster recovery) |
| LOW | …ttempts-openvz-incompatible/unlock-encrypted-volume.sh | 47 | # Step 1: Unlock LUKS volume |
| LOW | …ttempts-openvz-incompatible/unlock-encrypted-volume.sh | 68 | # Step 2: Mount filesystem |
| LOW | …ttempts-openvz-incompatible/unlock-encrypted-volume.sh | 75 | # Step 3: Verify mount and permissions |
| LOW | …ttempts-openvz-incompatible/unlock-encrypted-volume.sh | 106 | # Step 4: Audit logging (GDPR compliance) |
| LOW | …pts-openvz-incompatible/migrate-to-encrypted-volume.sh | 44 | # Step 1: Pre-migration validation |
| LOW | …pts-openvz-incompatible/migrate-to-encrypted-volume.sh | 85 | # Step 2: Create pre-migration backup |
| LOW | …pts-openvz-incompatible/migrate-to-encrypted-volume.sh | 102 | # Step 3: Stop PostgreSQL cleanly |
| LOW | …pts-openvz-incompatible/migrate-to-encrypted-volume.sh | 134 | # Step 4: Copy data with hard link preservation |
| LOW | …pts-openvz-incompatible/migrate-to-encrypted-volume.sh | 153 | # Step 5: Verify data integrity |
| LOW | …pts-openvz-incompatible/migrate-to-encrypted-volume.sh | 193 | # Step 6: Set proper permissions |
| LOW | …pts-openvz-incompatible/migrate-to-encrypted-volume.sh | 200 | # Step 7: Summary |
| LOW | …ption-attempts-openvz-incompatible/verify-migration.sh | 26 | # Step 1: File count verification |
| LOW | …ption-attempts-openvz-incompatible/verify-migration.sh | 40 | # Step 2: Total size verification |
| LOW | …ption-attempts-openvz-incompatible/verify-migration.sh | 55 | # Step 3: Checksum verification (detects silent corruption) |
| LOW | …ption-attempts-openvz-incompatible/verify-migration.sh | 88 | # Step 4: PostgreSQL-specific integrity checks |
| LOW | …ption-attempts-openvz-incompatible/verify-migration.sh | 121 | # Step 5: Database-level verification (if PostgreSQL is running) |
| LOW | …ges/super-sync-server/tests/conflict-detection.spec.ts | 881 | // Step 1: Create an entity with a clock that has exactly MAX entries |
| LOW | …ges/super-sync-server/tests/conflict-detection.spec.ts | 897 | // Step 2: clientA resolves conflict by merging entity clock + its own ID → MAX+1 entries. |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 307 | // Step 1: Client A uploads with requestId |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 324 | // Step 2: Client B uploads ops |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 336 | // Step 3: Client A retries with same requestId but updated lastKnownServerSeq |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 1795 | // Step 1: Initial State |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 1817 | // Step 2: Add more operations |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 996 | // Step 1: Desktop creates initial tasks |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 1004 | // Step 2: Mobile comes online and downloads |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 1015 | // Step 3: Mobile makes changes |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 1026 | // Step 4: Desktop syncs |
| 164 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | electron-builder.yaml | 101 | # GenericName: ToDo List and Time Tracker |
| LOW | electron-builder.yaml | 121 | # https://github.com/super-productivity/super-productivity/issues/4920 |
| LOW | electron-builder.yaml | 201 | publish: |
| LOW | capacitor.config.ts | 21 | // to-edge-support; ignored on iOS where this key has no effect. |
| LOW | tools/notarizeMacApp.js | 61 | |
| LOW | tools/notarizeMacApp.js | 81 | // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied |
| LOW | tools/afterPack.js | 1 | // Post-pack hook for Linux builds. |
| LOW | tools/remove-woff.js | 21 | // fs.writeFileSync(filePath, newFileContent); |
| LOW | docs/long-term-plans/electron-upgrade-to-v40.md | 81 | # Fix for issue #4920: Isolate fontconfig cache to prevent GTK dialog rendering issues |
| LOW | packages/plugin-dev/PLUGIN_I18N.md | 201 | api.formatDate(now, 'short'); |
| LOW | packages/plugin-dev/doc-mode/src/persistence.spec.ts | 121 | test('persistContextDocRaw: writes the exact raw string under doc:<ctxId>', async () => { |
| LOW | packages/plugin-dev/doc-mode/src/ui/editor.ts | 41 | |
| LOW | packages/plugin-dev/doc-mode/src/ui/editor.ts | 81 | // back to an empty seed. Gates scheduleSave so the empty seed is not |
| LOW | packages/plugin-dev/doc-mode/src/ui/editor.ts | 241 | const flushSave = async (): Promise<void> => { |
| LOW | packages/plugin-dev/doc-mode/src/ui/editor.ts | 461 | } |
| LOW | …kages/plugin-dev/ai-productivity-prompts/src/plugin.ts | 1 | // Procrastination Buster Plugin for Super Productivity |
| LOW | packages/plugin-api/src/types.ts | 781 | MESSAGE_ERROR = 'PLUGIN_MESSAGE_ERROR', |
| LOW | …ckages/super-sync-server/docker-compose.monitoring.yml | 1 | # Monitoring stack for SuperSync Server |
| LOW | …mpts-openvz-incompatible/docker-compose.encrypted.yaml | 1 | # Docker Compose overlay for encrypted PostgreSQL data at rest |
| LOW | …kages/super-sync-server/tests/snapshot.service.spec.ts | 1681 | // implementation used `Object.assign(state, fullState)`. Because |
| LOW | …kages/super-sync-server/tests/snapshot.service.spec.ts | 1741 | expect(result.polluted).toBeUndefined(); |
| LOW | packages/super-sync-server/scripts/migrate-deploy.sh | 1 | #!/bin/sh |
| LOW | packages/super-sync-server/scripts/migrate-deploy.sh | 21 | # invoke it, so it carries its own step timeout as defense-in-depth (deploy.sh |
| LOW | packages/super-sync-server/scripts/health-alert.sh | 1 | #!/bin/bash |
| LOW | packages/super-sync-server/scripts/backup.sh | 1 | #!/bin/bash |
| LOW | packages/super-sync-server/scripts/docker-monitor.sh | 1 | #!/bin/bash |
| LOW | packages/super-sync-server/scripts/build-and-push.sh | 1 | #!/bin/bash |
| LOW | packages/super-sync-server/scripts/deploy.sh | 1 | #!/bin/bash |
| LOW | packages/super-sync-server/helm/supersync/values.yaml | 141 | memory: 512Mi |
| LOW | …ages/super-sync-server/src/sync/sync.routes.payload.ts | 41 | // Different limits for ops vs snapshots: |
| LOW | …erver/src/sync/services/snapshot-generation.service.ts | 201 | // only writes when our seq is newer; if no row exists yet (first-time |
| LOW | …rver/src/sync/services/websocket-connection.service.ts | 81 | const existingSet = this.connections.get(userId); |
| LOW | …server/src/sync/services/operation-download.service.ts | 341 | ): Promise<VectorClock> { |
| LOW | …sync-server/src/sync/services/storage-quota.service.ts | 441 | batchLimit, |
| LOW | …er-sync-server/src/sync/services/validation.service.ts | 141 | valid: false, |
| LOW | packages/sync-core/tests/vector-clock.spec.ts | 541 | // Normal ops carry full (unpruned) vector clocks. The server prunes |
| LOW | packages/sync-providers/tests/errors.spec.ts | 181 | }); |
| LOW | …ub/workflows/build-create-windows-store-on-release.yml | 121 | name: WinStoreReleaseNotes |
| LOW | .github/workflows/build-publish-to-snap-on-release.yml | 61 | upload sp.snap --release edge,stable |
| LOW | .github/workflows/build-publish-to-snap-on-release.yml | 81 | # id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' |
| LOW | .github/workflows/build-publish-to-snap-on-release.yml | 101 | # - name: Build Frontend & Electron |
| LOW | .github/workflows/codeql-analysis.yml | 61 | languages: ${{ matrix.language }} |
| LOW | .github/workflows/electron-smoke.yml | 1 | name: Electron Packaging Smoke Test |
| LOW | .github/workflows/claude.yml | 41 | additional_permissions: | |
| LOW | electron/debug.ts | 61 | |
| LOW | electron/start-app.ts | 61 | // https://github.com/super-productivity/super-productivity/issues/4375#issuecomment-2883838113 |
| LOW | electron/start-app.ts | 141 | ) { |
| LOW | electron/start-app.ts | 161 | // (Chromium may still run a GPU process in SwiftShader or |
| LOW | electron/start-app.ts | 461 | // ------------ |
| LOW | electron/gpu-startup-guard.ts | 1 | import * as fs from 'fs'; |
| LOW | …sts/daily-summary/issue-7487-malformed-archive.spec.ts | 1 | import { expect, test } from '../../fixtures/test.fixture'; |
| LOW | …ests/sync/supersync-encryption-password-change.spec.ts | 561 | await waitForTask(clientB.page, taskBeforeChange); |
| LOW | …ests/recurring/repeat-task-day-change-bug-6230.spec.ts | 101 | // commented out in src/main.ts. Uncomment both if investigating #6230 further. |
| LOW | e2e/utils/runtime-errors.ts | 21 | }); |
| LOW | e2e/pages/supersync.page.ts | 321 | } |
| LOW | e2e/pages/supersync.page.ts | 401 | // 3. Sync completes successfully (server has no data - this is Client A) |
| LOW | e2e/store-video/fixture.ts | 301 | ); |
| LOW | src/test.ts | 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files |
| LOW | src/test.ts | 41 | // getter-only in browsers, so direct assignment throws — same |
| LOW | src/app/ui/progress-bar/progress-bar.component.scss | 21 | border-radius: var(--card-border-radius); |
| 110 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | docs/plugin-development.md | 120 | "author": "John Doe", |
| LOW | packages/super-sync-server/README.md | 176 | "email": "user@example.com", |
| LOW | packages/super-sync-server/README.md | 187 | "email": "user@example.com" |
| LOW | packages/super-sync-server/README.md | 198 | "email": "user@example.com", |
| LOW | packages/super-sync-server/README.md | 208 | "user": { "id": 1, "email": "user@example.com" } |
| LOW | …ges/super-sync-server/tests/conflict-detection.spec.ts | 306 | email: 'test@test.com', |
| LOW | packages/super-sync-server/tests/gap-detection.spec.ts | 278 | email: 'test@test.com', |
| LOW | …ckages/super-sync-server/tests/sync-operations.spec.ts | 573 | email: 'test@test.com', |
| LOW | packages/super-sync-server/tests/auth-cache.spec.ts | 28 | jwt.sign({ userId: 1, email: 'user@example.com', tokenVersion }, jwtSecret, { |
| LOW | packages/super-sync-server/tests/auth-cache.spec.ts | 50 | email: 'user@example.com', |
| LOW | packages/super-sync-server/tests/auth-cache.spec.ts | 55 | email: 'user@example.com', |
| LOW | …ges/super-sync-server/tests/password-reset-api.spec.ts | 18 | getAuthUser: vi.fn().mockReturnValue({ userId: 1, email: 'test@test.com' }), |
| LOW | packages/super-sync-server/tests/middleware.spec.ts | 127 | req.user = { userId: 1, email: 'test@test.com' }; |
| LOW | packages/super-sync-server/tests/middleware.spec.ts | 131 | expect(user).toEqual({ userId: 1, email: 'test@test.com' }); |
| LOW | …kages/super-sync-server/tests/websocket.routes.spec.ts | 101 | email: 'test@test.com', |
| LOW | packages/super-sync-server/tests/setup.ts | 357 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 269 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 350 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 541 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 562 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 583 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 605 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 631 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 662 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 694 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 729 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 782 | email: 'test@test.com', |
| LOW | …/super-sync-server/tests/storage-quota-cleanup.spec.ts | 820 | email: 'test@test.com', |
| LOW | packages/super-sync-server/tests/sync-fixes.spec.ts | 239 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), |
| LOW | …per-sync-server/tests/time-tracking-operations.spec.ts | 438 | email: 'test@test.com', |
| LOW | packages/super-sync-server/tests/api.routes.spec.ts | 16 | const email = 'test@test.com'; |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 59 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 66 | authToken = createToken(userId, 'test@test.com'); |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 684 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 688 | authToken = createToken(userId, 'test@test.com'); |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 939 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 943 | authToken = createToken(userId, 'test@test.com'); |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 1034 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, |
| LOW | packages/super-sync-server/tests/sync.routes.spec.ts | 1038 | authToken = createToken(userId, 'test@test.com'); |
| LOW | …-sync-server/tests/sync-compressed-body.routes.spec.ts | 48 | email: 'test@test.com', |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 17 | verifyToken: vi.fn().mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 83 | await replaceToken(1, 'user@example.com'); |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 103 | await replaceToken(1, 'user@example.com'); |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 110 | email: 'user@example.com', |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 117 | const result = await replaceToken(7, 'test@test.com'); |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 121 | user: { id: 7, email: 'test@test.com' }, |
| LOW | …s/super-sync-server/tests/replace-token-expiry.spec.ts | 141 | await replaceToken(3, 'user@example.com'); |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 597 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), |
| LOW | packages/super-sync-server/tests/sync.service.spec.ts | 632 | email: 'test@test.com', |
| LOW | …gration/snapshot-skip-optimization.integration.spec.ts | 38 | .mockResolvedValue({ valid: true, userId: 1, email: 'test@test.com' }), |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 225 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 970 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, |
| LOW | …ests/integration/multi-client-sync.integration.spec.ts | 1127 | VALUES (?, 'test@test.com', 'hash', 1, ?)`, |
| LOW | src/app/imex/file-imex/privacy-export.spec.ts | 123 | name: 'John Doe', |
| LOW | …ures/issue/providers/linear/linear-api.service.spec.ts | 65 | name: 'John Doe', |
| LOW | …ures/issue/providers/linear/linear-api.service.spec.ts | 71 | name: 'Jane Doe', |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | …roductivity/superproductivity/CapacitorMainActivity.kt | 340 | com.superproductivity.superproductivity.widget.ReminderTapQueue.setTaskId(this, sanitizedId) |
| CRITICAL | src/app/imex/file-imex/file-imex.component.spec.ts | 203 | mockEvent.target.files.item.and.returnValue(null); |
| CRITICAL | …ject-attachments/open-project-attachments.component.ts | 56 | ? issue._embedded.attachments._embedded.elements.map((att) => |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …ages/super-sync-server/tools/test-environment-setup.sh | 17 | # Check if PostgreSQL is running |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 29 | # Check if running as root (needed for secure file permissions) |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 38 | # Check if backup passphrase file exists |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 49 | # Check if container is running |
| LOW | packages/super-sync-server/tools/backup-encrypted.sh | 58 | # Check if PostgreSQL is ready to accept connections |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 49 | # Check if running as root |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 55 | # Check if volume file already exists |
| LOW | …attempts-openvz-incompatible/setup-encrypted-volume.sh | 134 | # Check if backup passphrase file exists |
| LOW | …ttempts-openvz-incompatible/unlock-encrypted-volume.sh | 13 | # Check if running as root |
| LOW | …ttempts-openvz-incompatible/unlock-encrypted-volume.sh | 25 | # Check if volume file exists |
| LOW | …ttempts-openvz-incompatible/unlock-encrypted-volume.sh | 31 | # Check if already unlocked |
| LOW | …ttempts-openvz-incompatible/unlock-encrypted-volume.sh | 35 | # Check if mounted |
| LOW | …pts-openvz-incompatible/migrate-to-encrypted-volume.sh | 28 | # Check if running as root |
| LOW | …-attempts-openvz-incompatible/discover-docker-names.sh | 8 | # Check if docker-compose.yml exists |
| LOW | packages/super-sync-server/scripts/docker-monitor.sh | 24 | # Check if container is running |
| LOW | packages/super-sync-server/scripts/deploy.sh | 178 | # Check if monitoring compose exists and include it |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | packages/plugin-dev/api-test-plugin/index.html | 684 | <textarea style="width: 100%; min-height: 100px; padding: 10px; border: 1px solid #ddd; border-radius: |
| MEDIUM | e2e/tests/sync/supersync-repeat-task.spec.ts | 36 | // Use the robust workView.addTask helper |
| MEDIUM | e2e/tests/sync/supersync-edge-cases.spec.ts | 690 | // Wait for UI to update - use waitForTask which has robust polling |
| MEDIUM | e2e/tests/sync/supersync-models.spec.ts | 295 | // Check for tag text content in the task (more robust than finding specific tag element structure) |
| MEDIUM | e2e/tests/sync/supersync-models.spec.ts | 505 | // Use toPass() to make tag deletion more robust |
| MEDIUM | …ing/recurring-move-start-date-earlier-bug-7423.spec.ts | 39 | // far more robust than driving the calendar overlay across Material versions. |
| MEDIUM | …app/core-ui/magic-side-nav/magic-side-nav.component.ts | 444 | // Handle seamless mode transitions |
| MEDIUM | …tures/bottom-panel/bottom-panel-container.component.ts | 120 | // Rolling window of recent move samples for robust velocity at release. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …ckages/super-sync-server/docker-compose.monitoring.yml | 8 | # Usage: |
| LOW | packages/super-sync-server/docker-compose.build.yml | 3 | # Usage: |
| LOW | packages/super-sync-server/docker-compose.yml | 3 | # Usage: |
| LOW | …mpts-openvz-incompatible/docker-compose.encrypted.yaml | 6 | # Usage: |
| LOW | packages/super-sync-server/scripts/backup.sh | 4 | # Usage: |
| LOW | packages/super-sync-server/scripts/docker-monitor.sh | 4 | # Usage: |
| LOW | packages/super-sync-server/scripts/build-and-push.sh | 4 | # Usage: |
| LOW | packages/super-sync-server/scripts/deploy.sh | 4 | # Usage: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | docs/unused-translations-analysis.md | 169 | function detectDynamicObjectAccess(content) { |
| LOW | docs/research/recurring-events-implementation-plan.md | 95 | export function getNextOccurrenceFromRRule( |
| LOW | docs/research/recurring-events-implementation-plan.md | 418 | export function migrateTaskRepeatCfgToRRule( |
| LOW | …term-plans/calendar-two-way-sync-technical-analysis.md | 1369 | function taskNotesToEventDescription(notes: string): string { |
| LOW | …term-plans/calendar-two-way-sync-technical-analysis.md | 1381 | function eventDescriptionToTaskNotes(description: string): string { |
| LOW | …s/plans/2026-05-23-stage-a-keyed-plugin-persistence.md | 212 | async function migrateToKeyedPersistence(): Promise<void> { |
| LOW | …ity/superproductivity/webview/WebViewRequestHandler.kt | 17 | class WebViewRequestHandler(private val activity: Activity, private val serviceHost: String) { |
| LOW | packages/plugin-dev/voice-reminder/plugin.js | 125 | async function openVoiceReminderSettings() { |
| LOW | …ges/super-sync-server/tests/sync.service.test-state.ts | 39 | export function hasOperationUniqueConflict( |
| LOW | …ckages/super-sync-server/src/sync/sync.routes.quota.ts | 260 | export async function enforceCleanSlateStorageQuota( |
| LOW | packages/shared-schema/src/migrate.ts | 253 | export function validateMigrationRegistry(): string[] { |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | docs/ENV_SETUP.md | 38 | DROPBOX_API_KEY=your-api-key-here |
| HIGH | docs/ENV_SETUP.md | 105 | NEW_API_KEY=your-api-key-here |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | docker-compose.e2e.yaml | 3 | # This file is standalone for app/webdav tests only |
| MEDIUM | scripts/wait-for-supersync.sh | 19 | # Create a dummy user to verify test endpoints are available |
| MEDIUM | .github/workflows/build-ios.yml | 84 | # Create the provisioning profiles directory if it doesn't exist |