Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.

openscreen

https://github.com/siddharthvaddem/openscreen.git · scanned 2026-05-17 02:50 UTC (13 hours, 31 minutes ago) · 10 languages

105 findings (17 legacy + 88 scanner) 8/10 scanners ran 78th percentile · Typescript · medium (20-100K LoC)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 13 hours, 31 minutes ago · v1 · 105 findings from 2 sources. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.

JSON
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all
Severity: Critical 0 High 4 Medium 9 Low 79 Source: Legacy 17 9-layer 88 Crowd 0 Layer: Quality 30 Security 2 Software 44 Api 1 Frontend 11 Cicd 17

Top 10 actions, ranked by impact × ease. Severity drives impact; tag-based fix-clarity drives ease.

#1
No auth library detected
GapSeverity.MEDIUM Layer.SECURITY score 0.338
Why: medium severity
#2
GitHub Action is tag-pinned rather than SHA-pinned
GapSeverity.MEDIUM Layer.CICD score 0.225
Why: medium severity
.github/workflows/bump-nix-package.yml:47
#3
GitHub Actions workflow grants broad write permissions
GapSeverity.MEDIUM Layer.CICD score 0.225
Why: medium severity
.github/workflows/bump-nix-package.yml
#4
`fetch()` without try/.catch or AbortSignal — src/lib/exporter/videoExporter.ts:708
GapSeverity.MEDIUM Layer.QUALITY score 0.225
Why: medium severity · crashes are likely without this
Fix: Wrap the `fetch(...)` in `try { ... } catch` in src/lib/exporter/videoExporter.ts:708, OR pass `{ signal: AbortSignal.timeout(N) }` so the call cancels deterministically.
#5
`fetch()` without try/.catch or AbortSignal — src/lib/exporter/streamingDecoder.ts:182
GapSeverity.MEDIUM Layer.QUALITY score 0.225
Why: medium severity · crashes are likely without this
Fix: Wrap the `fetch(...)` in `try { ... } catch` in src/lib/exporter/streamingDecoder.ts:182, OR pass `{ signal: AbortSignal.timeout(N) }` so the call cancels deterministically.
#6
Stray `console.log` in TS/JS — electron/main.ts:50
GapSeverity.LOW Layer.FRONTEND score 0.170
Why: low severity · fix is short / mechanical
Fix: Delete or guard the `console.log` in electron/main.ts:50.
#7
Stray `console.log` in TS/JS — src/components/video-editor/VideoPlayback.tsx:586
GapSeverity.LOW Layer.FRONTEND score 0.170
Why: low severity · fix is short / mechanical
Fix: Delete or guard the `console.log` in src/components/video-editor/VideoPlayback.tsx:586.
#8
Stray `console.log` in TS/JS — src/lib/exporter/audioEncoder.ts:400
GapSeverity.LOW Layer.FRONTEND score 0.170
Why: low severity · fix is short / mechanical
Fix: Delete or guard the `console.log` in src/lib/exporter/audioEncoder.ts:400.
#9
Stray `console.log` in TS/JS — src/lib/exporter/videoExporter.ts:459
GapSeverity.LOW Layer.FRONTEND score 0.170
Why: low severity · fix is short / mechanical
Fix: Delete or guard the `console.log` in src/lib/exporter/videoExporter.ts:459.
#10
Stray `console.log` in TS/JS — src/lib/exporter/streamingDecoder.ts:303
GapSeverity.LOW Layer.FRONTEND score 0.170
Why: low severity · fix is short / mechanical
Fix: Delete or guard the `console.log` in src/lib/exporter/streamingDecoder.ts:303.

Click "Find this gap" on any action above to jump to it on the Findings tab. Adjust the chip bar to filter by impact (severity), layer, or source.

{# ── 2026-05-17 Round 14: AI-agent bridge footer ────────────────────── Discoverability: the /agents/voting/ guide + MCP manifest exist but aren't linked from anywhere users actually land. Small, opt-in footer. #}
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/ea128bc4-590d-4d71-9d90-09c05ac49887/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/ea128bc4-590d-4d71-9d90-09c05ac49887/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.