feat: add premium on-device noise cleanup#106
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (35)
📝 WalkthroughWalkthroughNoise Cleanup adds durable local processing with Premium gating, persisted job lifecycle management, Library actions and derivative presentation, entitlement/RPC synchronization, FFmpeg artifact validation, and platform packaging preflight checks. ChangesNoise Cleanup
Estimated code review effort: 5 (Critical) | ~120 minutes Sequence Diagram(s)sequenceDiagram
participant Library
participant StudioContext
participant BackendRPC
participant NoiseCleanupRegistry
participant Database
participant FFmpeg
Library->>StudioContext: startNoiseCleanup(sessionId)
StudioContext->>BackendRPC: noiseCleanup.start
BackendRPC->>NoiseCleanupRegistry: start(params)
NoiseCleanupRegistry->>Database: create or load durable job
NoiseCleanupRegistry->>FFmpeg: process source with afftdn
FFmpeg-->>NoiseCleanupRegistry: progress and cleaned output
NoiseCleanupRegistry->>Database: validate and commit derivative
Database-->>BackendRPC: completed NoiseCleanupJob
BackendRPC-->>StudioContext: job result and status event
StudioContext-->>Library: update row and completion actions
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Hosted Windows evidence supplement\n\nBoth Windows jobs passed after the acceptance note was committed:\n\n- Windows gates: native Windows clippy, Rust tests, tracked text, desktop tests, and Node script tests passed.\n- Windows installer artifact: installer build and package preflight passed. The preflight executed the bundled Noise Cleanup MP4/MKV artifact proof on Windows. Packaged 1080p A/V, native DXGI/GDI ScreenOnly recording, BMP preview, and preview-while-recording also passed.\n\nRun: https://github.com/TheOrcDev/videorc/actions/runs/29217443315\n\nThis closes the Windows native/package evidence row for draft-PR review. The remaining draft blockers are the owner by-ear panel, human desktop theme/width/keyboard QA, and the unavailable macOS ScreenCaptureKit device row. |
…oof test Resolves the smoke QA command (both sides added the orientation-toggle fallback — kept main's wording and 10s deadline) and the integration test file (kept BOTH added tests: the noise-cleanup entitlement/job durability suite and main's delayed-proof orientation-atomicity regression, plus both createVideorcApi option sets). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary\n\n- add Premium one-click Noise Cleanup to finished Videorc recordings in Library\n- process locally with the bundled FFmpeg afftdn filter; no upload or quota\n- publish a validated, non-destructive managed derivative while preserving the original\n- persist cancellable and restartable jobs in SQLite and let capture preempt background cleanup\n- add an explicit noise-cleanup entitlement, typed RPC/events, focus/timer refresh, and fail-closed backend enforcement\n- require afftdn, AAC, and pcm_s16le in macOS and Windows package probes\n- promote the promise in the companion web draft: https://github.com/TheOrcDev/videorc-web/pull/6\n\n## Product behavior\n\n- Basic users see a truthful Premium affordance.\n- Premium and Developer users start cleanup with one click.\n- Queued, cleaning, validating, cancel, retry, completed, missing, imported, live, reconnecting, and derivative states are explicit.\n- MP4 outputs use AAC 192 kbps; MKV outputs use pcm_s16le; video is stream-copied.\n- Imported, no-audio, multi-audio, test-tone, unsupported, live, missing, unfinished, and already-cleaned inputs fail closed.\n- Completed outputs appear as Noise Cleaned Library sessions with durable provenance.\n\n## Safety and durability\n\n- backend owns authorization, source-path resolution, identity, job state, process ownership, and publication\n- full SHA-256, sampled content, and filesystem-object identity protect against replacements and mid-run changes\n- app-owned cancellation only; no broad process scans\n- capture cancels or preempts every long identity/media phase and queued work resumes later\n- output allocation reserves every Library-owned database path, including temporarily missing media\n- unavailable volumes never delete derivative metadata\n- entitlement HTTP refresh has an 8-second request timeout inside the 10-second RPC deadline\n\n## Verification\n\n- TypeScript typecheck, lint, format check, production build: PASS\n- JS production advisory audit: PASS\n- Desktop tests: 1,034 passed, 1 existing skip across 127 files\n- Node script tests: 618 of 618 passed across 120 suites\n- Rust: fmt and clippy PASS; 1,300 tests passed, 8 ignored\n- Bundled MP4 and MKV artifact smoke: PASS\n - MP4: 3.4 dB noise reduction, 2.0 dB SNR gain, 0.1 dB voice delta, 0.0 ms duration delta\n - MKV: 3.1 dB noise reduction, 2.0 dB SNR gain, 0.0 dB voice delta, 1.0 ms duration delta\n - source hashes unchanged; video packet hashes match; maintained A/V analyzer passed\n- macOS release backend, helper, universal addon build, and package preflight: PASS\n- Recording Studio aggregate: steps 1 through 23 PASS, including Noise Cleanup, all-layout artifacts, captions, native preview lifecycle/window/surface, interaction, and stress\n- Web companion: 305 of 305 tests, typecheck, build, and Vercel preview PASS; one unrelated existing contributors-image lint warning\n- final read-only review: no actionable findings\n\nDetailed evidence: docs/acceptance/2026-07-13-noise-cleanup.md\n\n## Release-stage blockers\n\nThis remains draft until:\n\n- an owner completes the real-voice by-ear panel\n- Windows native/package preflight and MP4/MKV smoke run on a Windows host\n- desktop dark/light, narrow/wide, and keyboard manual QA is completed\n- the host/device ScreenCaptureKit row is rerun where a native screen source is available\n\nThe current macOS host exposes no ScreenCaptureKit screen source, so aggregate step 24 and the separately run Notes-window real-screen smoke are explicitly environment-blocked. Hosted Windows CI is green, including the installer and bundled Noise Cleanup artifact proof; physical-device release QA remains a separate rollout responsibility.
Summary by CodeRabbit
New Features
Bug Fixes
Documentation