YC (S26) | Open Computer History | Continuously record your company computer work, map your workflows, help you find work worth automating, and power your agents' context
This report summarizes scanner evidence for screenpipe/screenpipe, a Rust project with 22,190 GitHub stars. SynthScan examined 1,383,899 lines of code across 4270 source files, recording 3636 pattern matches distributed across 23 syntactic categories. The legacy adjusted pattern signal is 3.8 (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? 2848 finding(s).
Are imports declared and package/API names verified? 102 finding(s).
Are wrappers, guards, and repeated structures necessary? 1549 finding(s).
Which changes need focused human review? 3636 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 3636 distinct pattern matches across 23 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 | …coding-agent/graders/chat-overlapping-load.fixture.tsx | 50 | // ── Mocks ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …coding-agent/graders/chat-overlapping-load.fixture.tsx | 108 | // ── Import under test (after mocks) ─────────────────────────────────── | COMMENT |
| MEDIUM | …s/screenpipe-core/assets/extensions/context-pruning.ts | 69 | // ── single-message clamp (issue #3852) ──────────────────────────────── | COMMENT |
| MEDIUM | …s/screenpipe-core/assets/extensions/context-pruning.ts | 69 | // ── single-message clamp (issue #3852) ──────────────────────────────── | COMMENT |
| MEDIUM | …s/screenpipe-core/assets/extensions/context-pruning.ts | 213 | // ── 1. Feedback on oversized tool results ────────────────────────── | COMMENT |
| MEDIUM | …s/screenpipe-core/assets/extensions/context-pruning.ts | 271 | // ── 2 + 3. Prune old tool results AND clamp oversized messages ───── | COMMENT |
| MEDIUM⚡ | crates/screenpipe-core/assets/extensions/sub-agent.ts | 27 | // ── Constants ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/screenpipe-core/assets/extensions/sub-agent.ts | 33 | // ── State ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/screenpipe-core/assets/extensions/sub-agent.ts | 39 | // ── Cleanup ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-core/assets/extensions/sub-agent.ts | 52 | // ── Read pipe permissions for sub-agent inheritance ────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-core/assets/extensions/sub-agent.ts | 66 | // ── Sub-agent spawner ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-core/assets/extensions/sub-agent.ts | 127 | // ── Extension entry point ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-core/src/sync/mod.rs | 25 | //! ┌─────────────┴─────────────┐ | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/run.sh | 173 | # ── Conformance suite, unauthenticated posture ────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/run.sh | 187 | # ── Authenticated posture: the auth matrix ────────────────────────────────── | COMMENT |
| MEDIUM | …/screenpipe-gateway/e2e/conformance/enterprise-v1.yaml | 54 | # ── Accepted. Ruled legitimate 2026-07-24; do not "converge" these. ──────── | COMMENT |
| MEDIUM | …/screenpipe-gateway/e2e/conformance/enterprise-v1.yaml | 957 | # ── The unit of response across /search and /records ──────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/cases.ts | 55 | // ── /devices ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/cases.ts | 146 | // ── /search ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/cases.ts | 289 | // ── /records ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/cases.ts | 392 | // ── /files ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/cases.ts | 457 | // ── /files/{key} ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/cases.ts | 473 | // ── /frames ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/cases.ts | 488 | // ── /rollups ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/cases.ts | 549 | // ── Hosted-only ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/cases.ts | 579 | // ── Gateway-only ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/conformance/spec.ts | 210 | // ── internals ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/control_plane.rs | 1110 | // ── The hole the runtime golden CANNOT see ─────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/control_plane.rs | 1232 | // ─── SCR-295: the BOOT PATH, not just the client ──────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/api.rs | 223 | // ─── Time window (converged with v1-helpers.ts parseTimeWindow) ───────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/api.rs | 560 | // ─── Record queries (gateway-owned SQL over the FTS tables) ───────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/api.rs | 1268 | // ─── GET /api/enterprise/v1/devices ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/api.rs | 1361 | // ─── GET /api/enterprise/v1/search ────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/api.rs | 1476 | // ─── GET /api/enterprise/v1/records ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/api.rs | 1586 | // ─── GET /api/enterprise/v1/files ─────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/api.rs | 1725 | // ─── GET /api/enterprise/v1/files/[...key] ────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/api.rs | 1756 | // ─── GET /api/enterprise/v1/frames/{device_id}/{frame_id} ─────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-gateway/src/api.rs | 1815 | // ─── GET /api/enterprise/v1/rollups ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/drm_detector.rs | 772 | // ── pre_capture_drm_check unit tests ────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/drm_detector.rs | 821 | // ── live integration tests ────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/drm_detector.rs | 979 | // ── check_and_update_drm_state tests ───────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/calendar_speaker_id.rs | 37 | // ── Pure decision logic ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/calendar_speaker_id.rs | 510 | // ── Background task ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/calendar_speaker_id.rs | 745 | // ── Tests ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/calendar_speaker_id.rs | 768 | // ── names_match tests ───────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/calendar_speaker_id.rs | 855 | // ── find_other_attendee tests ───────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/calendar_speaker_id.rs | 922 | // ── decide_speaker_names tests ──────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/calendar_speaker_id.rs | 1151 | // ── Rule 4: Process-of-elimination tests ────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/calendar_speaker_id.rs | 1251 | // ── deduplicate_speaker_by_name integration tests ───────────────────── | COMMENT |
| MEDIUM⚡ | crates/screenpipe-engine/src/focus_aware_controller.rs | 14 | //! ┌────────┐ lost focus ┌──────┐ cold_cutoff ┌──────┐ | COMMENT |
| MEDIUM⚡ | crates/screenpipe-engine/src/focus_aware_controller.rs | 15 | //! │ Active │────────────────►│ Warm │───────────────►│ Cold │ | COMMENT |
| MEDIUM⚡ | crates/screenpipe-engine/src/focus_aware_controller.rs | 16 | //! └────────┘ < warm_cutoff └──────┘ └──────┘ | COMMENT |
| MEDIUM⚡ | crates/screenpipe-engine/src/focus_aware_controller.rs | 19 | //! └──────────────┴───────────────────────────────────┘ | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/focus_aware_controller.rs | 387 | // ── Test helpers ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/power/profile.rs | 69 | // ── Vision: event-driven capture ──────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/power/profile.rs | 81 | // ── Vision: adaptive FPS ───────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/power/profile.rs | 85 | // ── Audio ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/power/profile.rs | 98 | // ── Capture pause ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/power/profile.rs | 104 | // ── Video encoding ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/power/monitor.rs | 95 | // ─── macOS ────────────────────────────────────────────────────────────────── | COMMENT |
| 587 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Cargo.toml | 181 | # resize 1080p->360p 5.38ms -> 2.13ms (-60.4%) | COMMENT |
| LOW | lefthook.yml | 1 | # screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | evals/coding-agent/graders/telemetry-ax.lib.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/tests/no_console_flash.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/tests/no_console_flash.rs | 241 | let t = line.trim_end().trim_end_matches('{').trim_end(); | COMMENT |
| LOW | crates/screenpipe-core/examples/probe_accessibility.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/assets/extensions/mcp-bridge.ts | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | …s/screenpipe-core/assets/extensions/context-pruning.ts | 41 | * Proactive compaction and retained-history budgeting live in the managed | COMMENT |
| LOW | …s/screenpipe-core/assets/extensions/context-pruning.ts | 61 | // Completed earlier requests may be pruned beyond this recent-message window. | COMMENT |
| LOW | …ates/screenpipe-core/assets/extensions/orphan-guard.ts | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/assets/extensions/sub-agent.ts | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/ffmpeg.rs | 21 | const EXECUTABLE_NAME: &str = "ffmpeg"; | COMMENT |
| LOW | crates/screenpipe-core/src/ffmpeg.rs | 261 | /// path with NO side effects — unlike `get_ffmpeg_install_dir`, which creates the | COMMENT |
| LOW | crates/screenpipe-core/src/ffmpeg.rs | 621 | #[test] | COMMENT |
| LOW | crates/screenpipe-core/src/lib.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/lib.rs | 21 | //! - Pipes run untrusted-ish user content through a model. Treat pipe output as | COMMENT |
| LOW | crates/screenpipe-core/src/paths.rs | 41 | // symlinks intentionally skipped | COMMENT |
| LOW | crates/screenpipe-core/src/strings.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/video.rs | 41 | /// Map video quality preset to x265 encoding preset. | COMMENT |
| LOW | crates/screenpipe-core/src/no_window.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/no_window.rs | 21 | /// `CREATE_NO_WINDOW` — do not allocate a console for the child process. | COMMENT |
| LOW | crates/screenpipe-core/src/permissions.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/permissions.rs | 121 | )) | COMMENT |
| LOW | crates/screenpipe-core/src/permissions.rs | 161 | image_option: u32, | COMMENT |
| LOW | crates/screenpipe-core/src/permissions.rs | 341 | } | COMMENT |
| LOW | crates/screenpipe-core/src/window_pattern.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/window_pattern.rs | 21 | //! ``` | COMMENT |
| LOW | crates/screenpipe-core/src/window_pattern.rs | 101 | COMMENT | |
| LOW | crates/screenpipe-core/src/display_topology.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/display_topology.rs | 21 | //! - [`capture_ready_display_ids`] — "could screen capture actually produce a | COMMENT |
| LOW | crates/screenpipe-core/src/display_topology.rs | 141 | /// NOT infer "all displays gone / stream dead" from it (a CG error must not read | COMMENT |
| LOW | crates/screenpipe-core/src/thread_priority.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/thread_priority.rs | 21 | //! - Never wrap sections that hold locks other Normal-priority threads block | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 101 | pub const TINFOIL_SDK_VERSION: &str = "1.2.1"; | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 361 | struct RateLimitRetryDecision { | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 721 | /// when the user is an admin with an active license, because exposing the | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 761 | } | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 901 | Ok(()) | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 921 | "screenpipe-chats", | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 1361 | COMMENT | |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 1661 | /// allowed model list returned by the gateway (`/v1/models`). | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 1761 | // Confidential selection is a transport promise. An unavailable model | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 1781 | // prefer "auto" (gateway chooses), else the first allowed model. | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 2541 | // assistant error, so `output.success` is false with the payload | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 2681 | fn screenpipe_api_url(&self) -> &str { | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 2881 | COMMENT | |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 2921 | /// | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 3021 | use std::os::unix::fs::PermissionsExt; | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 3101 | /// pi 0.83 rejects any stored credential it cannot tag. `resolveProviderAuth` | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 3301 | ); | COMMENT |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 3761 | COMMENT | |
| LOW | crates/screenpipe-core/src/agents/pi.rs | 3901 | } | COMMENT |
| LOW | crates/screenpipe-core/src/agents/cloud.rs | 81 | #[serde(default, skip_serializing_if = "Option::is_none")] | COMMENT |
| LOW | crates/screenpipe-core/src/agents/bash_env.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/agents/bash_env.rs | 21 | //! model effort, no prompt changes, no new system-prompt lines. | COMMENT |
| LOW | crates/screenpipe-core/src/agents/bash_env.rs | 41 | /// substrings in command arguments. If none match, `curl` runs unchanged. | COMMENT |
| LOW | crates/screenpipe-core/src/agents/bash_env.rs | 121 | COMMENT | |
| LOW | crates/screenpipe-core/src/agents/bash_env.rs | 201 | #[test] | COMMENT |
| LOW | crates/screenpipe-core/src/agents/cli_runtime.rs | 1 | // screenpipe — AI that knows everything you've seen, said, or heard | COMMENT |
| LOW | crates/screenpipe-core/src/agents/cli_runtime.rs | 21 | //! | COMMENT |
| 1727 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/coding-agent/calibrate-certificate-error.test.js | 27 | test('raw copy without recovery is rejected',()=>fails(grade('raw',replace(fixed,'export function buildCloudConnectionMe | CODE |
| LOW | …coding-agent/graders/chat-overlapping-load.fixture.tsx | 644 | async function finishOlderSettingsReadLast() { | CODE |
| LOW | …npipe-core/assets/extensions/screenpipe-permissions.ts | 151 | function hasContentTypeRestrictions(): boolean { | CODE |
| LOW | …s/screenpipe-core/assets/extensions/context-pruning.ts | 89 | export function normalizeContextOverflowError(message: any): any | undefined { | CODE |
| LOW | …s/screenpipe-core/assets/extensions/context-pruning.ts | 117 | export function resolveContextWindowTokens(ctx: any): number { | CODE |
| LOW | …/screenpipe-core/assets/extensions/lib/glm-protocol.ts | 124 | export function normalizeGlmToolCallStream(stream: ReadableStream, tools: unknown[]): ReadableStream { | CODE |
| LOW | …/screenpipe-core/assets/extensions/lib/glm-protocol.ts | 293 | function compactGlmToolResultMessage(message: GlmRequest['messages'][number]): GlmRequest['messages'][number] { | CODE |
| LOW⚡ | scripts/eval-meeting-summary-retrieval.py | 56 | def test_live_only_transcript_is_not_replaced_by_unrelated_search(self): | CODE |
| LOW⚡ | scripts/eval-meeting-summary-retrieval.py | 66 | def test_empty_transcript_uses_bounded_time_fallback(self): | CODE |
| LOW⚡ | scripts/eval-meeting-summary-retrieval.py | 73 | def test_silent_meeting_stays_empty(self): | CODE |
| LOW⚡ | scripts/eval-meeting-summary-retrieval.py | 79 | def test_permanent_failure_stops_and_is_not_called_silence(self): | CODE |
| LOW | scripts/test_attribution_carrier.py | 23 | def test_signed_archive_metadata_and_overwrite_boundaries(self): | CODE |
| LOW | scripts/test_attribution_carrier.py | 50 | def test_appimage_bytes_unchanged_and_metadata_bounded(self): | CODE |
| LOW | scripts/test_attribution_carrier.py | 75 | def test_windows_bytes_metadata_architecture_and_overwrite_boundaries(self): | CODE |
| LOW | scripts/test_attribution_carrier.py | 105 | def test_actual_nsis_filename_grant_fixture(self): | CODE |
| LOW | scripts/memory-leak/test_leak_hunt.py | 18 | def test_default_search_pressure_never_includes_frames(self) -> None: | CODE |
| LOW | scripts/memory-leak/test_leak_hunt.py | 23 | def test_opt_in_frame_pressure_uses_small_limits(self) -> None: | CODE |
| LOW | scripts/memory-leak/test_leak_hunt.py | 49 | def test_recursive_descendants_are_included(self) -> None: | CODE |
| LOW | scripts/memory-leak/test_leak_hunt.py | 65 | def test_root_selection_uses_whole_tree_memory(self) -> None: | CODE |
| LOW | scripts/memory-leak/test_leak_hunt.py | 81 | def test_explicit_pid_selects_requested_tree(self) -> None: | CODE |
| LOW⚡ | scripts/memory-leak/leak_probe.py | 422 | def phase_search_all_q_no_frames(self, deadline: float) -> tuple[int, int, int]: | CODE |
| LOW⚡ | scripts/memory-leak/leak_probe.py | 432 | def phase_search_ocr_no_frames(self, deadline: float) -> tuple[int, int, int]: | CODE |
| LOW⚡ | scripts/memory-leak/leak_probe.py | 441 | def phase_search_audio_no_frames(self, deadline: float) -> tuple[int, int, int]: | CODE |
| LOW⚡ | scripts/memory-leak/leak_probe.py | 450 | def phase_search_recent_no_frames(self, deadline: float) -> tuple[int, int, int]: | CODE |
| LOW | scripts/memory-leak/leak_probe.py | 499 | def phase_timeline_live_today(self, deadline: float) -> tuple[int, int, int]: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 613 | def build_search_fanout_params(include_frame_images: bool) -> dict[str, Any]: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 782 | def scenario_memory_artifact_lists(client: ApiClient, state: SharedState, duration_sec: float, concurrency: int) -> None | CODE |
| LOW | packages/screenpipe-mcp/scripts/assert-pack-contents.js | 145 | function runtimeDependencyFailures(packageJson) { | CODE |
| LOW | packages/screenpipe-mcp/src/activity-summary-tool.ts | 23 | export async function buildActivitySummaryResult( | CODE |
| LOW | packages/screenpipe-mcp/src/qualified-value.ts | 52 | export function createMcpQualifiedValueReporter( | CODE |
| LOW | packages/ai-gateway/scripts/required-bindings.ts | 47 | export function assertRequiredHostedAiSecretBindings(rawOutput: string): void { | CODE |
| LOW | …kages/ai-gateway/scripts/lib/experiential-migration.ts | 57 | export async function inspectExperientialAccount(key: string, sourceModels: string[], fetcher: Fetcher = fetch) { | CODE |
| LOW | …kages/ai-gateway/scripts/lib/experiential-migration.ts | 100 | export async function verifyExperientialCanonicalModel(managementKey: string, model: string, canonicalUuid: string, fetc | CODE |
| LOW | …kages/ai-gateway/scripts/lib/experiential-migration.ts | 110 | export async function verifyExperientialCustomerKey(key: string, orgId: string, identityId: string, model: string, fetch | CODE |
| LOW | …kages/ai-gateway/scripts/lib/experiential-migration.ts | 122 | export async function verifyExperientialCustomerPlan(key: string, orgId: string, identityId: string, | CODE |
| LOW | packages/ai-gateway/scripts/lib/experiential-adapter.ts | 51 | export async function prepareExperientialProbeConnection(options: ExperientialAdapterOptions) { | CODE |
| LOW | packages/ai-gateway/modal/screenpipe_qwen35.py | 140 | def filtered_response_headers(headers): | CODE |
| LOW | packages/ai-gateway/src/index.ts | 108 | export function shouldEnableBackgroundFallback( | CODE |
| LOW | packages/ai-gateway/src/index.ts | 115 | export function shouldEnableSafetyRefusalFallback( | CODE |
| LOW | packages/ai-gateway/src/index.ts | 196 | async function handleMeteredTinfoilRequest( | CODE |
| LOW | packages/ai-gateway/src/index.ts | 256 | async function handleMeteredVoiceAiRequest( | CODE |
| LOW | …i-gateway/src/test/maas-nameless-toolcall.unit.test.ts | 16 | function noNamelessAssistantToolCalls(formatted: any[]) { | CODE |
| LOW | …es/ai-gateway/src/test/transcription-cost.unit.test.ts | 21 | function estimateTranscriptionCost(contentLength: number): { | CODE |
| LOW | packages/ai-gateway/src/providers/vertex-maas.ts | 65 | export async function parseVertexMaasJsonResponse(response: Response, model: string): Promise<any> { | CODE |
| LOW | packages/ai-gateway/src/providers/vertex-maas.ts | 124 | export function promoteReasoningToContent(result: any): void { | CODE |
| LOW | packages/ai-gateway/src/providers/anthropic.ts | 48 | function anthropicStopReasonToOpenAI(reason: unknown): string { | CODE |
| LOW | packages/ai-gateway/src/providers/openai.ts | 58 | function clearPromptCacheBreakpoints(messages: ChatCompletionMessageParam[]): void { | CODE |
| LOW | packages/ai-gateway/src/providers/openai.ts | 96 | function stripPromptCacheBreakpoints(message: ChatCompletionMessageParam): ChatCompletionMessageParam { | CODE |
| LOW | packages/ai-gateway/src/utils/model-policy.ts | 8 | export function isGooglePolicyBlockedModel(model: string | null | undefined): boolean { | CODE |
| LOW | packages/ai-gateway/src/utils/auth.ts | 285 | function billingPlanMatchesAccessPlan( | CODE |
| LOW | packages/ai-gateway/src/utils/latency.ts | 29 | export function applyBackgroundReasoningDefault( | CODE |
| LOW | …ages/ai-gateway/src/handlers/realtime-transcription.ts | 53 | export async function handleRealtimeTranscriptionUpgrade( | CODE |
| LOW | …ages/ai-gateway/src/handlers/realtime-transcription.ts | 171 | async function connectDeepgramLiveWithRetry( | CODE |
| LOW | …ages/ai-gateway/src/handlers/realtime-transcription.ts | 208 | function isRetryableDeepgramLiveUpgradeStatus(status: number): boolean { | CODE |
| LOW | …ages/ai-gateway/src/handlers/realtime-transcription.ts | 263 | function translateLegacyClientMessage(data: string | ArrayBuffer | Blob): string | ArrayBuffer | null { | CODE |
| LOW | …ages/ai-gateway/src/handlers/realtime-transcription.ts | 285 | function translateLegacyDeepgramMessage( | CODE |
| LOW | packages/ai-gateway/src/handlers/chat.ts | 644 | function streamEventHasAssistantOutput(value: unknown): boolean { | CODE |
| LOW | packages/ai-gateway/src/handlers/chat.ts | 665 | function streamEventIsSafetyRefusal(value: unknown): boolean { | CODE |
| LOW | packages/ai-gateway/src/handlers/chat.ts | 683 | function inspectSafetyRefusalPayload(payload: string): SafetyRefusalProbeResult | null { | CODE |
| LOW | packages/ai-gateway/src/handlers/chat.ts | 711 | async function probeStreamingSafetyRefusal(response: Response): Promise<SafetyRefusalProbeResult> { | CODE |
| 803 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …screenpipe-core/assets/pipes/ai-prompt-journal/pipe.md | 28 | ## Step 1: Find AI tool frames | COMMENT |
| LOW | …screenpipe-core/assets/pipes/ai-prompt-journal/pipe.md | 71 | ## Step 2: Extract conversation text | COMMENT |
| LOW | …screenpipe-core/assets/pipes/ai-prompt-journal/pipe.md | 112 | ## Step 3: Identify user prompts vs AI responses | COMMENT |
| LOW | …screenpipe-core/assets/pipes/ai-prompt-journal/pipe.md | 139 | ## Step 4: Classify each prompt | COMMENT |
| LOW | …screenpipe-core/assets/pipes/ai-prompt-journal/pipe.md | 147 | ## Step 5: Save to journal | COMMENT |
| LOW | …screenpipe-core/assets/pipes/ai-prompt-journal/pipe.md | 188 | ## Step 6: Notification | COMMENT |
| LOW | crates/screenpipe-engine/src/snapshot_compaction.rs | 735 | // Step 2: Create video_chunk and update frame pointers in one transaction | COMMENT |
| LOW | crates/screenpipe-engine/src/snapshot_compaction.rs | 755 | // Step 3: Delete source JPEGs — only for frames actually encoded into | COMMENT |
| LOW | crates/screenpipe-engine/src/archive.rs | 872 | // Step 1: Upload media files (MP4s + snapshots) before metadata | COMMENT |
| LOW | crates/screenpipe-engine/src/archive.rs | 902 | // Step 2: Upload metadata in chunks: [watermark, cutoff] | COMMENT |
| LOW⚡ | crates/screenpipe-engine/src/bin/screenpipe-engine.rs | 1357 | // Step 1: prewarm-pending upgrade is universal. | COMMENT |
| LOW⚡ | crates/screenpipe-engine/src/bin/screenpipe-engine.rs | 1360 | // Step 2: auto-start only for Always mode AND only if the | COMMENT |
| LOW | …screenpipe-engine/src/meeting_watcher/ui_scan/macos.rs | 634 | // Step 1: find running meeting apps | COMMENT |
| LOW | …screenpipe-engine/src/meeting_watcher/ui_scan/macos.rs | 696 | // Step 2: scan for call controls | COMMENT |
| LOW | …reenpipe-engine/src/meeting_watcher/ui_scan/windows.rs | 712 | // Step 1: find running meeting apps (includes Zoom) | COMMENT |
| LOW | …reenpipe-engine/src/meeting_watcher/ui_scan/windows.rs | 723 | // Step 2: scan each found app for call controls | COMMENT |
| LOW | …reenpipe-engine/src/meeting_watcher/ui_scan/windows.rs | 742 | // Step 3: check specifically for Zoom processes | COMMENT |
| LOW⚡ | crates/screenpipe-db/tests/ui_events_batch_test.rs | 139 | // Step 1: row starts with frame_id = NULL. | COMMENT |
| LOW⚡ | crates/screenpipe-db/tests/ui_events_batch_test.rs | 148 | // Step 2: linker UPDATE populates it. | COMMENT |
| LOW | crates/screenpipe-db/tests/ui_events_batch_test.rs | 160 | // Step 3: a spurious duplicate UPDATE with a DIFFERENT frame_id | COMMENT |
| LOW⚡ | crates/screenpipe-audio/tests/onnx_model_test.rs | 159 | // Step 1: Initialize SileroVad (first ONNX model loaded) | COMMENT |
| LOW⚡ | crates/screenpipe-audio/tests/onnx_model_test.rs | 165 | // Step 2: Download/load embedding model | COMMENT |
| LOW⚡ | crates/screenpipe-audio/tests/onnx_model_test.rs | 172 | // Step 3: Download/load segmentation model | COMMENT |
| LOW⚡ | crates/screenpipe-screen/tests/url_timing_test.rs | 173 | // Step 1: SCK screenshot (instant) | COMMENT |
| LOW⚡ | crates/screenpipe-screen/tests/url_timing_test.rs | 176 | // Step 2: AppleScript round-trip (simulated ~107ms) | COMMENT |
| LOW⚡ | docs/EVENT_DRIVEN_CAPTURE_SPEC.md | 232 | ### Step 1: DB migration + snapshot write path | COMMENT |
| LOW⚡ | docs/EVENT_DRIVEN_CAPTURE_SPEC.md | 238 | ### Step 2: Paired capture function | COMMENT |
| LOW⚡ | docs/EVENT_DRIVEN_CAPTURE_SPEC.md | 243 | ### Step 3: Event trigger system | COMMENT |
| LOW⚡ | docs/EVENT_DRIVEN_CAPTURE_SPEC.md | 249 | ### Step 4: New capture loop | COMMENT |
| LOW⚡ | docs/EVENT_DRIVEN_CAPTURE_SPEC.md | 255 | ### Step 5: Search + timeline integration | COMMENT |
| LOW⚡ | docs/EVENT_DRIVEN_CAPTURE_SPEC.md | 260 | ### Step 6: Cleanup | COMMENT |
| LOW | scripts/update-openapi.sh | 35 | # Step 1: Fix oasgen quirk — path params need `required: true` per OpenAPI 3.0 | COMMENT |
| LOW | scripts/update-openapi.sh | 52 | # Step 2: Fix empty title/version | COMMENT |
| LOW | scripts/update-openapi.sh | 66 | # Step 3: Enrich with tags, summaries, descriptions (requires PyYAML) | COMMENT |
| LOW | packages/browser-extension/src/options.ts | 149 | // Step 1: liveness. | COMMENT |
| LOW | packages/browser-extension/src/options.ts | 162 | // Step 2: auth probe. | COMMENT |
| LOW | …enpipe-app-tauri/components/settings/usage-section.tsx | 297 | // Step 1: Load cache instantly | COMMENT |
| LOW | …enpipe-app-tauri/components/settings/usage-section.tsx | 310 | // Step 2: Incremental update | COMMENT |
| LOW | …creenpipe-app-tauri/components/settings/ai-presets.tsx | 872 | // Step 2: Auth check | COMMENT |
| LOW | …creenpipe-app-tauri/components/settings/ai-presets.tsx | 910 | // Step 3: Parse API-key or local models. | COMMENT |
| LOW | …creenpipe-app-tauri/components/settings/ai-presets.tsx | 954 | // Step 4: Test the actual chat endpoint. BYOK providers share one probe so | COMMENT |
| LOW | …onents/settings/hooks/use-transcription-diagnostics.ts | 99 | // Step 1: Endpoint connectivity — try root URL or /v1/models | COMMENT |
| LOW | …onents/settings/hooks/use-transcription-diagnostics.ts | 179 | // Step 4: the exact request "Test and enable" and production recording | COMMENT |
| LOW | …p-tauri/components/onboarding/first-run-guide.test.tsx | 61 | // Step 0: no tour yet, no prompt card — just the invitation. | COMMENT |
| LOW | …/screenpipe-app-tauri/src-tauri/src/enterprise_sync.rs | 1059 | // Step 1: ask /search for the most recent OCR frames. We request a | COMMENT |
| LOW | …/screenpipe-app-tauri/src-tauri/src/enterprise_sync.rs | 1096 | // Step 2: fetch the frame's image bytes. A non-success status is | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/notification-toggle.ts | 115 | // Step 1: Remove the deny rule line | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/notification-toggle.ts | 118 | // Step 2: Remove empty "deny:" blocks | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/notification-toggle.ts | 121 | // Step 3: Remove empty "permissions:" blocks | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/chat-test-body.test.ts | 153 | // Step 1: send with max_tokens | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/chat-test-body.test.ts | 157 | // Step 2: endpoint rejects | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/chat-test-body.test.ts | 161 | // Step 3: retry with max_completion_tokens | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 189 | // Step 1: admin creates team and key | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 192 | // Step 2: admin pushes config (encrypted) | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 200 | // Step 3: admin wraps key with passphrase | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 204 | // Step 4: admin uploads wrapped blob to server (POST /api/team/key-claim) | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 208 | // Step 5: invite link contains NO key material | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 216 | // Step 6: member fetches wrapped blob from server (GET /api/team/key-claim/:token) | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 219 | // Step 7: member unwraps with passphrase (shared out-of-band) | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 227 | // Step 8: member decrypts configs | COMMENT |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/screenpipe-engine/src/snapshot_compaction.rs | 735 | // Step 2: Create video_chunk and update frame pointers in one transaction | COMMENT |
| LOW | crates/screenpipe-engine/src/snapshot_compaction.rs | 755 | // Step 3: Delete source JPEGs — only for frames actually encoded into | COMMENT |
| LOW | crates/screenpipe-engine/src/archive.rs | 872 | // Step 1: Upload media files (MP4s + snapshots) before metadata | COMMENT |
| LOW | crates/screenpipe-engine/src/archive.rs | 902 | // Step 2: Upload metadata in chunks: [watermark, cutoff] | COMMENT |
| LOW⚡ | crates/screenpipe-engine/src/bin/screenpipe-engine.rs | 1357 | // Step 1: prewarm-pending upgrade is universal. | COMMENT |
| LOW⚡ | crates/screenpipe-engine/src/bin/screenpipe-engine.rs | 1360 | // Step 2: auto-start only for Always mode AND only if the | COMMENT |
| LOW | …screenpipe-engine/src/meeting_watcher/ui_scan/macos.rs | 634 | // Step 1: find running meeting apps | COMMENT |
| LOW | …screenpipe-engine/src/meeting_watcher/ui_scan/macos.rs | 696 | // Step 2: scan for call controls | COMMENT |
| LOW | …reenpipe-engine/src/meeting_watcher/ui_scan/windows.rs | 712 | // Step 1: find running meeting apps (includes Zoom) | COMMENT |
| LOW | …reenpipe-engine/src/meeting_watcher/ui_scan/windows.rs | 723 | // Step 2: scan each found app for call controls | COMMENT |
| LOW | …reenpipe-engine/src/meeting_watcher/ui_scan/windows.rs | 742 | // Step 3: check specifically for Zoom processes | COMMENT |
| LOW⚡ | crates/screenpipe-db/tests/ui_events_batch_test.rs | 139 | // Step 1: row starts with frame_id = NULL. | COMMENT |
| LOW⚡ | crates/screenpipe-db/tests/ui_events_batch_test.rs | 148 | // Step 2: linker UPDATE populates it. | COMMENT |
| LOW | crates/screenpipe-db/tests/ui_events_batch_test.rs | 160 | // Step 3: a spurious duplicate UPDATE with a DIFFERENT frame_id | COMMENT |
| LOW⚡ | crates/screenpipe-audio/tests/onnx_model_test.rs | 159 | // Step 1: Initialize SileroVad (first ONNX model loaded) | COMMENT |
| LOW⚡ | crates/screenpipe-audio/tests/onnx_model_test.rs | 165 | // Step 2: Download/load embedding model | COMMENT |
| LOW⚡ | crates/screenpipe-audio/tests/onnx_model_test.rs | 172 | // Step 3: Download/load segmentation model | COMMENT |
| LOW⚡ | crates/screenpipe-screen/tests/url_timing_test.rs | 173 | // Step 1: SCK screenshot (instant) | COMMENT |
| LOW⚡ | crates/screenpipe-screen/tests/url_timing_test.rs | 176 | // Step 2: AppleScript round-trip (simulated ~107ms) | COMMENT |
| LOW | scripts/update-openapi.sh | 35 | # Step 1: Fix oasgen quirk — path params need `required: true` per OpenAPI 3.0 | COMMENT |
| LOW | scripts/update-openapi.sh | 52 | # Step 2: Fix empty title/version | COMMENT |
| LOW | scripts/update-openapi.sh | 66 | # Step 3: Enrich with tags, summaries, descriptions (requires PyYAML) | COMMENT |
| LOW | packages/browser-extension/src/options.ts | 149 | // Step 1: liveness. | COMMENT |
| LOW | packages/browser-extension/src/options.ts | 162 | // Step 2: auth probe. | COMMENT |
| LOW | …enpipe-app-tauri/components/settings/usage-section.tsx | 297 | // Step 1: Load cache instantly | COMMENT |
| LOW | …enpipe-app-tauri/components/settings/usage-section.tsx | 310 | // Step 2: Incremental update | COMMENT |
| LOW | …creenpipe-app-tauri/components/settings/ai-presets.tsx | 872 | // Step 2: Auth check | COMMENT |
| LOW | …creenpipe-app-tauri/components/settings/ai-presets.tsx | 910 | // Step 3: Parse API-key or local models. | COMMENT |
| LOW | …creenpipe-app-tauri/components/settings/ai-presets.tsx | 954 | // Step 4: Test the actual chat endpoint. BYOK providers share one probe so | COMMENT |
| LOW | …onents/settings/hooks/use-transcription-diagnostics.ts | 99 | // Step 1: Endpoint connectivity — try root URL or /v1/models | COMMENT |
| LOW | …onents/settings/hooks/use-transcription-diagnostics.ts | 179 | // Step 4: the exact request "Test and enable" and production recording | COMMENT |
| LOW | …p-tauri/components/onboarding/first-run-guide.test.tsx | 61 | // Step 0: no tour yet, no prompt card — just the invitation. | COMMENT |
| LOW | …/screenpipe-app-tauri/src-tauri/src/enterprise_sync.rs | 1059 | // Step 1: ask /search for the most recent OCR frames. We request a | COMMENT |
| LOW | …/screenpipe-app-tauri/src-tauri/src/enterprise_sync.rs | 1096 | // Step 2: fetch the frame's image bytes. A non-success status is | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/notification-toggle.ts | 115 | // Step 1: Remove the deny rule line | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/notification-toggle.ts | 118 | // Step 2: Remove empty "deny:" blocks | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/notification-toggle.ts | 121 | // Step 3: Remove empty "permissions:" blocks | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/chat-test-body.test.ts | 153 | // Step 1: send with max_tokens | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/chat-test-body.test.ts | 157 | // Step 2: endpoint rejects | COMMENT |
| LOW⚡ | …/screenpipe-app-tauri/lib/utils/chat-test-body.test.ts | 161 | // Step 3: retry with max_completion_tokens | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 189 | // Step 1: admin creates team and key | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 192 | // Step 2: admin pushes config (encrypted) | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 200 | // Step 3: admin wraps key with passphrase | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 204 | // Step 4: admin uploads wrapped blob to server (POST /api/team/key-claim) | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 208 | // Step 5: invite link contains NO key material | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 216 | // Step 6: member fetches wrapped blob from server (GET /api/team/key-claim/:token) | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 219 | // Step 7: member unwraps with passphrase (shared out-of-band) | COMMENT |
| LOW⚡ | …pipe-app-tauri/lib/__tests__/team-api-contract.test.ts | 227 | // Step 8: member decrypts configs | COMMENT |
| LOW | …/screenpipe-app-tauri/lib/hooks/use-frame-text-data.ts | 156 | // Step 1: GET — check if text position data already exists in DB | COMMENT |
| LOW | …/screenpipe-app-tauri/lib/hooks/use-frame-text-data.ts | 191 | // Step 2: No bounding boxes — schedule on-demand OCR after dwell delay. | COMMENT |
| LOW⚡ | …auri/lib/hooks/__tests__/timeline-reconnection.test.ts | 330 | // Step 1: WebSocket disconnects | COMMENT |
| LOW⚡ | …auri/lib/hooks/__tests__/timeline-reconnection.test.ts | 335 | // Step 2: Reconnection initiated - should reset state | COMMENT |
| LOW⚡ | …auri/lib/hooks/__tests__/timeline-reconnection.test.ts | 345 | // Step 3: WebSocket connects | COMMENT |
| LOW⚡ | …auri/lib/hooks/__tests__/timeline-reconnection.test.ts | 350 | // Step 4: Request sent (should work because sentRequests is empty) | COMMENT |
| LOW | …tauri/lib/hooks/__tests__/window-focus-refresh.test.ts | 168 | // Step 1: User opens timeline at 6:30 | COMMENT |
| LOW⚡ | …tauri/lib/hooks/__tests__/window-focus-refresh.test.ts | 180 | // Step 2: User closes timeline (window hidden) | COMMENT |
| LOW⚡ | …tauri/lib/hooks/__tests__/window-focus-refresh.test.ts | 183 | // Step 3: User reopens at 7:00 | COMMENT |
| LOW⚡ | …tauri/lib/hooks/__tests__/window-focus-refresh.test.ts | 187 | // Step 4: Window focus event fires, triggers onWindowFocus | COMMENT |
| LOW⚡ | …tauri/lib/hooks/__tests__/window-focus-refresh.test.ts | 194 | // Step 5: fetchTimeRange is called (from onWindowFocus or useEffect) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/screenpipe-engine/src/auth_key.rs | 461 | && value.starts_with("e2e-fake-token-")) | CODE |
| LOW | crates/screenpipe-engine/src/connections_api.rs | 5061 | creds.insert("email".into(), json!("user@example.com")); | CODE |
| LOW | crates/screenpipe-engine/src/connections_api.rs | 5065 | assert_eq!(user, "user@example.com"); | CODE |
| LOW | crates/screenpipe-engine/src/connections_api.rs | 5178 | creds.insert("email".into(), json!("user@example.com")); | CODE |
| LOW | crates/screenpipe-engine/src/cli/team_pipes.rs | 722 | args.member = vec!["admin@example.com".into()]; | CODE |
| LOW | …ates/screenpipe-engine/src/browser_scripts/snapshot.js | 119 | return el.getAttribute('placeholder') || labelText(el) || el.getAttribute('name') || ty || 'input'; | CODE |
| LOW | …ates/screenpipe-engine/src/browser_scripts/snapshot.js | 121 | if (formTags.has(tag)) return el.getAttribute('placeholder') || labelText(el) || el.getAttribute('name') || tag; | CODE |
| LOW | crates/screenpipe-engine/src/routes/elements.rs | 450 | return property_value(properties, element.id, "placeholder") | CODE |
| LOW | crates/screenpipe-engine/src/routes/elements.rs | 460 | .or_else(|| property_value(properties, element.id, "placeholder")) | CODE |
| LOW | crates/screenpipe-engine/src/routes/elements.rs | 1154 | r#"{"automation_id":"password","is_password":true,"value":"hunter2","placeholder":"Password"}"#, | CODE |
| LOW | crates/screenpipe-engine/src/routes/frames.rs | 1489 | "placeholder", | CODE |
| LOW | crates/screenpipe-db/benches/new_db_benchmark.rs | 26 | ("Long", "This is a long piece of text that simulates a more realistic OCR result. It contains multiple paragrap | CODE |
| LOW | crates/screenpipe-db/benches/new_db_benchmark.rs | 26 | ("Long", "This is a long piece of text that simulates a more realistic OCR result. It contains multiple paragrap | CODE |
| LOW | crates/screenpipe-db/src/db/frames.rs | 595 | props.insert("placeholder".into(), serde_json::Value::String(v.clone())); | CODE |
| LOW | crates/screenpipe-connect/src/oauth.rs | 1585 | let got = load_oauth_json(Some(&store), id, Some("user@example.com")).await; | CODE |
| LOW | crates/screenpipe-connect/src/connections/imap.rs | 654 | login_session(client, "user@example.com", "secret", "127.0.0.1") | CODE |
| LOW | crates/screenpipe-connect/src/connections/imap.rs | 672 | creds.insert("username".into(), json!("user@example.com")); | CODE |
| LOW | crates/screenpipe-redact/tests/worker_integration.rs | 1146 | let tree = r#"[{"role":"AXTextField","text":"hunter2","value":"hunter2","placeholder":"API key","depth":1,"bounds":{ | CODE |
| LOW | crates/screenpipe-redact/src/a11y_context.rs | 346 | "placeholder", | CODE |
| LOW | crates/screenpipe-redact/src/a11y_context.rs | 505 | {"role":"AXTextField","value":"hunter2","placeholder":"API key"}, | CODE |
| LOW | crates/screenpipe-redact/src/a11y_context.rs | 541 | "placeholder": "API key" | CODE |
| LOW | crates/screenpipe-redact/src/a11y_context.rs | 555 | Some(r#"[{"role":"AXTextField","value":"hunter2","placeholder":"API key"}]"#), | CODE |
| LOW | crates/screenpipe-redact/src/tree_json.rs | 71 | "placeholder", | CODE |
| LOW | crates/screenpipe-redact/src/tree_json.rs | 402 | "placeholder":"{s}", | CODE |
| LOW | crates/screenpipe-redact/src/image/worker.rs | 755 | let tree = r#"[{"role":"AXTextField","value":"opaque-value","placeholder":"API key","bounds":{"left":0.5,"top":0 | CODE |
| LOW | crates/screenpipe-redact/src/adapters/regex.rs | 2435 | &"lorem ipsum dolor sit amet ".repeat(40), | CODE |
| LOW | crates/screenpipe-redact/src/adapters/regex.rs | 2435 | &"lorem ipsum dolor sit amet ".repeat(40), | CODE |
| LOW | crates/screenpipe-redact/src/worker/columns.rs | 237 | "placeholder", | CODE |
| LOW | …tes/screenpipe-a11y/examples/semantic_capture_probe.rs | 157 | "placeholder", | CODE |
| LOW | crates/screenpipe-a11y/src/tree/linux.rs | 762 | &["placeholder-text", "placeholder", "html-placeholder"], | CODE |
| LOW | crates/screenpipe-capture/src/paired_capture.rs | 1507 | let json = r#"[{"text":"user@example.com","x":"0","y":"0"},{"text":"safe text","x":"1","y":"1"},{"text":"key: sk | CODE |
| LOW | crates/screenpipe-capture/src/paired_capture.rs | 1510 | !result.contains("user@example.com"), | CODE |
| LOW | …es/screenpipe-semantic/tests/committed_data_privacy.rs | 74 | || email.ends_with("@example.org") | CODE |
| LOW | crates/screenpipe-semantic/src/messaging.rs | 805 | "placeholder", | CODE |
| LOW | crates/screenpipe-semantic/src/messaging.rs | 846 | "placeholder", | CODE |
| LOW | packages/ai-gateway/src/test/openai-models.unit.test.ts | 77 | const ids = await listedModelIds({ OPENAI_API_KEY: 'placeholder' }); | CODE |
| LOW | packages/ai-gateway/src/test/openai-models.unit.test.ts | 481 | createProvider('gpt-5.5', env({ OPENAI_API_KEY: 'placeholder' })); | CODE |
| LOW | packages/ai-gateway/src/test/gemini-argon.unit.test.ts | 33 | expect(argonVertexConfig({ ...env, WIF_SIGNING_KEY: 'placeholder' })).toBeUndefined(); | CODE |
| LOW⚡ | packages/ai-gateway/src/test/flex-tier.unit.test.ts | 87 | provider.vertexProvider.getAccessToken = async () => 'fake-token'; | CODE |
| LOW⚡ | packages/ai-gateway/src/test/flex-tier.unit.test.ts | 91 | expect(headers['Authorization']).toBe('Bearer fake-token'); | CODE |
| LOW⚡ | packages/ai-gateway/src/test/flex-tier.unit.test.ts | 96 | provider.vertexProvider.getAccessToken = async () => 'fake-token'; | CODE |
| LOW | packages/ai-gateway/src/providers/gemini-argon.ts | 13 | !['placeholder', 'changeme', 'change-me', 'todo', 'none', 'null', 'undefined'].includes(value.trim().toLowerCase()); | CODE |
| LOW | packages/ai-gateway/src/providers/index.ts | 135 | return !['placeholder', 'changeme', 'change-me', 'todo', 'none', 'null', 'undefined'].includes(lower); | CODE |
| LOW | packages/ai-gateway/src/utils/auth.test.ts | 805 | email: 'test@test.com', | CODE |
| LOW | packages/ai-gateway/src/utils/auth.test.ts | 817 | email: 'test@test.com', | CODE |
| LOW | packages/ai-gateway/src/utils/auth.test.ts | 828 | email: 'test@test.com', | CODE |
| LOW | packages/ai-gateway/src/handlers/models.ts | 63 | return !['placeholder', 'changeme', 'change-me', 'todo', 'none', 'null', 'undefined'].includes(lower); | CODE |
| LOW⚡ | …s/ai-gateway/src/services/background-limit-fallback.ts | 41 | return normalized.length > 0 && !['placeholder', 'changeme', 'change-me', 'none', 'null', 'undefined'].includes(normali | CODE |
| LOW | packages/ai-gateway/src/services/usage-tracker.test.ts | 575 | email: 'test@test.com', | CODE |
| LOW | packages/sdk/examples/electron-app/renderer.js | 16 | const placeholder = $('placeholder'); | CODE |
| LOW | packages/sdk/examples/electron-app/index.html | 124 | <span class="placeholder" id="placeholder">preview appears here</span> | CODE |
| LOW | …omponents/meeting-notes/meeting-chat-citations.test.ts | 204 | const long = "lorem ipsum 3:34 ".repeat(4000); | CODE |
| LOW⚡ | …i/components/meeting-notes/meeting-chat-panel.test.tsx | 278 | "placeholder", | CODE |
| LOW⚡ | …i/components/meeting-notes/meeting-chat-panel.test.tsx | 285 | "placeholder", | CODE |
| LOW⚡ | …i/components/meeting-notes/meeting-chat-panel.test.tsx | 295 | "placeholder", | CODE |
| LOW | …i/components/meeting-notes/meeting-chat-panel.test.tsx | 318 | expect(input).toHaveAttribute("placeholder", "Refreshing…"); | CODE |
| LOW | apps/screenpipe-app-tauri/src-tauri/src/startup_auth.rs | 128 | if token.starts_with("e2e-fake-token-") | CODE |
| LOW | …/screenpipe-app-tauri/src-tauri/src/feedback_redact.rs | 673 | &["Zoë Martin", "zoe@example.org"], | CODE |
| LOW | apps/screenpipe-app-tauri/src-tauri/src/auth_token.rs | 290 | looks_like_jwt(value) || (crate::config::is_e2e_mode() && value.starts_with("e2e-fake-token-")) | CODE |
| LOW | apps/screenpipe-app-tauri/src-tauri/src/e2e/seeds.rs | 55 | let token = "e2e-fake-token-onboarding-background-ai-tools".to_string(); | CODE |
| 29 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/screenpipe-gateway/e2e/docker-compose.auth.yml | 5 | # AUTHENTICATED overlay for the compose harness (SCR-288 item 6). | COMMENT |
| MEDIUM | crates/screenpipe-gateway/e2e/docker-compose.yml | 5 | # Compose harness for the M1 demo (SCR-287): MinIO plays the customer's | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/resource_monitor.rs | 93 | /// Growth the *fit* predicts over the window — robust to endpoint noise, | COMMENT |
| MEDIUM | crates/screenpipe-engine/src/focus_tracker/darwin.rs | 19 | //! is robust, permission-free, and correct in the common case — users glance | COMMENT |
| MEDIUM | …eenpipe-engine/src/meeting_watcher/ui_scan/pipeline.rs | 100 | // (30s) provides enough buffer. A more robust approach would be to store the PID | COMMENT |
| MEDIUM | …eenpipe-engine/src/meeting_watcher/ui_scan/pipeline.rs | 103 | // TODO: Store PID in MeetingState for robust browser tab-switch handling. | COMMENT |
| MEDIUM | …ates/screenpipe-db/tests/output_audio_liveness_test.rs | 200 | // the test robust against sub-second skew between Rust's Utc::now() at | COMMENT |
| MEDIUM | crates/screenpipe-screen/src/frame_comparison.rs | 64 | /// Histogram is faster and robust for detecting significant changes. | COMMENT |
| MEDIUM | crates/screenpipe-redact/src/image/frame_redactor.rs | 9 | //! for an OCR-robust outcome — re-running OCR on the redacted output | COMMENT |
| MEDIUM | …s/screenpipe-semantic/evals/pipes/installed_cases.json | 20 | "## Highest-leverage workflows", | CODE |
| MEDIUM | …s/screenpipe-semantic/evals/pipes/installed_cases.json | 56 | "## Highest-leverage workflows", | CODE |
| MEDIUM | …s/screenpipe-semantic/evals/pipes/installed_cases.json | 90 | "## Highest-leverage workflows", | CODE |
| MEDIUM | scripts/capture-wedge-repro.sh | 10 | # every counter freezes together by the time it fires. This harness samples | COMMENT |
| MEDIUM | scripts/build-gateway-container.sh | 33 | # signing seed), so it is for the compose harness and nothing else. | COMMENT |
| MEDIUM | packages/ai-gateway/src/providers/openai.ts | 316 | // blowing up — much more robust than chasing the prefix allowlist as | COMMENT |
| MEDIUM | .github/dependabot.yml | 16 | # manifest is a workspace member; livetext-stress is an unshipped harness. | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 251 | # harness starts. Stage both runtimes once for all release-dev tests. | COMMENT |
| MEDIUM | apps/screenpipe-app-tauri/src-tauri/Cargo.toml | 400 | # Maximum-speed local builds for updater e2e harness — no optimization, fastest compile. | COMMENT |
| MEDIUM | …ps/screenpipe-app-tauri/src-tauri/src/owned_browser.rs | 820 | // into the panel — a seamless handoff. | COMMENT |
| MEDIUM | …ps/screenpipe-app-tauri/lib/owned-browser-ownership.ts | 100 | // (robust to a lagging `conversationId` state or a non-matching spawn id). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/memory-leak/leak_probe.py | 118 | except ValueError: | CODE |
| HIGH | scripts/memory-leak/leak_hunt.py | 259 | except Exception: | CODE |
| HIGH | scripts/memory-leak/leak_hunt.py | 1082 | except FileNotFoundError: | CODE |
| HIGH | scripts/memory-leak/leak_hunt.py | 875 | except Exception: | CODE |
| HIGH | scripts/memory-leak/leak_hunt.py | 1010 | except Exception: | CODE |
| HIGH | scripts/memory-leak/leak_hunt.py | 867 | except socket.timeout: | CODE |
| HIGH | scripts/memory-leak/leak_hunt.py | 694 | except Exception: | CODE |
| HIGH | scripts/memory-leak/leak_hunt.py | 753 | except Exception: | CODE |
| HIGH | packages/ai-gateway/scripts/probe-studio-voice.py | 22 | except Exception: pass | CODE |
| HIGH | packages/ai-gateway/scripts/probe-studio-voice.py | 45 | except Exception: pass | CODE |
| HIGH | .github/scripts/check-macos-builder-load.py | 58 | except ProcessLookupError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | crates/screenpipe-engine/src/routes/artifacts.rs | 872 | /// GET /artifacts — unified listing of AI-generated artifacts. | COMMENT |
| HIGH | apps/screenpipe-app-tauri/src-tauri/src/suggestions.rs | 1670 | /// Store AI-generated tags on recent frames using the existing tags + vision_tags tables. | COMMENT |
| HIGH | apps/screenpipe-app-tauri/lib/chat-storage.ts | 560 | // timestamp. One copy usually wins the AI-generated title; the other is left | COMMENT |
| HIGH | …app-tauri/lib/__tests__/markdown-remote-images.test.ts | 8 | // Markdown, diagrams and notes in this app are often written by an AI or a | COMMENT |
| HIGH | …tauri/lib/hooks/__tests__/timeline-store-logic.test.ts | 291 | // Mark as requested | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .claude/skills/screenpipe-api/SKILL.md | 488 | # Mark speaker as hallucination (false detection) | COMMENT |
| MEDIUM | docs/VISION_PIPELINE_SPEC.md | 95 | ### 3.2 Target Pipeline (decoupled, event-driven) | COMMENT |
| MEDIUM | packages/sdk/Cargo.toml | 39 | # All orchestration lives here. The Tauri plugin | COMMENT |
| MEDIUM | packages/sdk/tauri/rust/Cargo.toml | 18 | # The pure-Rust recorder orchestration. Calling it in-process is what | COMMENT |
| MEDIUM | …ps/screenpipe-app-tauri/components/standalone-chat.tsx | 1940 | // chat with an agentic loop (≥2 assistant messages with citations between | COMMENT |
| MEDIUM | …ents/chat/standalone/hooks/use-pi-foreground-events.ts | 1400 | // tiers at a few dozen requests/minute; a single agentic run can trip | COMMENT |
| MEDIUM | apps/screenpipe-app-tauri/lib/source-citations.ts | 58 | // pipe-run chats where the whole transcript is one agentic loop and showing | COMMENT |
| MEDIUM | apps/screenpipe-app-tauri/lib/source-citations.ts | 96 | // assistant of that turn — that's the agentic-loop pattern (Pi looping | COMMENT |
| MEDIUM | …npipe-app-tauri/lib/__tests__/source-citations.test.ts | 593 | readState, // repeated step in the agentic loop | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/screenpipe-screen/tests/custom_ocr_test.rs | 50 | except Exception as e: | CODE |
| LOW | scripts/memory-leak/leak_probe.py | 335 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_probe.py | 365 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_probe.py | 382 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 104 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 150 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 159 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 259 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 269 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 285 | except Exception as exc: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 542 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 545 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 556 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 578 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 694 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 753 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 870 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 875 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 1010 | except Exception: | CODE |
| LOW | scripts/memory-leak/leak_hunt.py | 1105 | except Exception: | CODE |
| LOW | packages/ai-gateway/scripts/probe-studio-voice.py | 22 | except Exception: pass | CODE |
| LOW | packages/ai-gateway/scripts/probe-studio-voice.py | 45 | except Exception: pass | CODE |
| LOW | packages/ai-gateway/scripts/probe-studio-voice.py | 70 | except Exception: | CODE |
| MEDIUM | packages/ai-gateway/scripts/probe-studio-voice.py | 40 | def message(data): | CODE |
| LOW | packages/ai-gateway/scripts/inspect-studio-voice.py | 14 | except Exception: payload = {} | CODE |
| LOW | packages/ai-gateway/modal/screenpipe_qwen35.py | 79 | except Exception: | CODE |
| LOW | .github/scripts/check-macos-builder-load.py | 91 | except Exception as error: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/screenpipe-screen/tests/custom_ocr_test.rs | 11 | # Create a simple FastAPI server (app.py) that uses EasyOCR to process images: | COMMENT |
| MEDIUM | .devcontainer/scripts/postCreateCommand.sh | 3 | # Define the alias | COMMENT |
| MEDIUM | .github/workflows/release-cli.yml | 829 | # Create a symlink so the linker can find it. | COMMENT |
| MEDIUM | .github/workflows/release-app.yml | 597 | # Create a symlink so the linker finds it, and set OPENBLAS_PATH with lib/ subdir. | COMMENT |
| MEDIUM | .github/scripts/install_dependencies.sh | 17 | # Create a symlink so the linker finds it, and set OPENBLAS_PATH with lib/ subdir. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …-agent/graders/enterprise-policy-waits.fixture.tsx.txt | 175 | expect(mocks.commands.setEnterpriseRecordingAuthorized.mock.calls.some(args => args[0] === true)).toBe(false); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | crates/screenpipe-engine/src/server.rs | 1700 | r#"{"error":"unauthorized: API access requires authentication. Pass `Authorizati | CODE |
| HIGH | …pe-app-tauri/components/rewind/ai-presets-selector.tsx | 877 | placeholder={ui("your-api-key")} | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/package-attribution-carrier.py | 22 | CODE | |
| LOW | scripts/enrich-openapi.py | 469 | CODE | |
| LOW | scripts/test_attribution_carrier.py | 75 | CODE | |
| LOW | scripts/memory-leak/leak_probe.py | 147 | CODE | |
| LOW | scripts/memory-leak/leak_probe.py | 370 | CODE | |
| LOW | scripts/memory-leak/leak_hunt.py | 371 | CODE | |
| LOW | scripts/memory-leak/leak_hunt.py | 564 | CODE | |
| LOW | scripts/memory-leak/leak_hunt.py | 686 | CODE | |
| LOW | scripts/memory-leak/leak_hunt.py | 745 | CODE | |
| LOW | scripts/memory-leak/leak_hunt.py | 825 | CODE | |
| LOW | scripts/memory-leak/leak_hunt.py | 1088 | CODE | |
| LOW | …ipts/native-test-fixtures/macos/recorder-acceptance.py | 21 | CODE | |
| LOW | packages/ai-gateway/scripts/probe-studio-voice.py | 8 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | apps/screenpipe-app-tauri/e2e/helpers/spotlight.ts | 26 | print(path) | CODE |
| HIGH | apps/screenpipe-app-tauri/e2e/helpers/spotlight.ts | 43 | print("_MDSetExclusion removal failed with status \\(status)") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/memory-leak/leak_probe.py | 16 | CODE | |
| LOW | scripts/memory-leak/leak_probe.py | 30 | CODE | |
| LOW | scripts/memory-leak/leak_hunt.py | 13 | CODE | |
| LOW | scripts/memory-leak/leak_hunt.py | 20 | CODE | |
| LOW | packages/ai-gateway/scripts/probe-studio-voice.py | 4 | CODE | |
| LOW | packages/ai-gateway/scripts/probe-studio-voice.py | 4 | CODE | |
| LOW | packages/ai-gateway/scripts/probe-studio-voice.py | 4 | CODE | |
| LOW | packages/ai-gateway/modal/screenpipe_qwen35.py | 7 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/capture-wedge-repro.sh | 22 | # Usage: | COMMENT |
| LOW | scripts/regenerate-locks.sh | 15 | # Usage: | COMMENT |
| LOW | packages/ai-gateway/test-vertex-local.sh | 4 | # Usage: | COMMENT |
| LOW | packages/ai-gateway/scripts/deploy.sh | 16 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/release-app.yml | 1448 | # Check if it's a transient signing/bundling failure (worth retrying) | COMMENT |
| LOW | .github/scripts/purge_crabnebula.sh | 8 | # Check if the CN_API_KEY is set or throw an error | COMMENT |
| LOW | .github/scripts/purge_crabnebula.sh | 23 | # Check if current_version is empty | COMMENT |
| LOW | .github/scripts/purge_crabnebula.sh | 34 | # Check if we got valid numbers | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/screenpipe-audio/tests/accuracy_test.rs | 39 | r#"bro - got some good stuff from screenpipe here's the lowdown on your day, you productivity ninja: absolut | CODE |
| LOW | crates/screenpipe-audio/examples/bench_quality2.rs | 439 | reference: r#"bro - got some good stuff from screenpipe here's the lowdown on your day, you productivity nin | CODE |
| LOW | crates/screenpipe-audio/examples/bench_quality.rs | 255 | reference: r#"bro - got some good stuff from screenpipe here's the lowdown on your day, you productivity nin | CODE |
| MEDIUM | …ipe-app-tauri/src-tauri/gen/schemas/acl-manifests.json | 1 | {"autostart":{"default_permission":{"identifier":"default","description":"This permission set configures if your\napplic | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/ai-gateway/src/handlers/voice-ws.ts | 1 | // TODO: implement | COMMENT |
| LOW | apps/screenpipe-app-tauri/src-tauri/src/tray.rs | 1454 | // TODO: implement safely once we can reliably identify our NSStatusItem. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | infra/release-artifact-uploader/src/index.js | 112 | export async function handleRequest(request, env) { | CODE |
| LOW | packages/ai-gateway/src/index.ts | 317 | export async function handleRequest(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/memory-leak/leak_hunt.py | 51 | def set_scenario(self, name: str) -> None: | CODE |