Skip to content

Conversation

@oscartbeaumont
Copy link
Contributor

@oscartbeaumont oscartbeaumont commented Aug 12, 2025

Brendan said he wanted it and I want something to do while Windows compiles 😅

Summary by CodeRabbit

  • New Features

    • Captions: manage/download models with progress, generate transcripts, edit segments, and customize styles.
    • S3 Integration: guided configuration with save/test/delete actions and user feedback.
  • Improvements

    • Settings: streamlined UI, notification permission prompt, safer server URL updates, enhanced appearance selection.
    • Startup: animated intro with persisted audio mute preference.
    • Camera preview: auto window sizing/positioning per monitor.
    • Recordings: delete confirmation and automatic list refresh.
    • Stability: global error boundary around routing.
  • Style

    • Consistent formatting across the codebase.
  • Chores

    • Added Biome format/lint to CI.
    • Added blame-ignore for a formatting-only commit.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 12, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Repository-wide formatting normalization (tabs), added Biome format/lint CI jobs, a new .git-blame-ignore-revs entry, many type-only import refinements, and desktop app changes including S3 config event-bus UI, notification-permission gating in settings, startup UX tweaks with persisted audio state, camera window sizing via Tauri, and a large captions editor refactor.

Changes

Cohort / File(s) Summary
Repo metadata & CI
/.git-blame-ignore-revs, /.github/workflows/ci.yml
Add blame-ignore revs file; add Biome Format and Lint CI jobs.
Lint/IDE configs
/.eslintrc.ts, /.vscode/extensions.json, apps/desktop/.vscode/extensions.json
Whitespace/indentation-only formatting changes.
Desktop app configs & Tauri
apps/desktop/app.config.ts, apps/desktop/package.json, apps/desktop/src-tauri/*, apps/desktop/src-tauri/capabilities/default.json, apps/desktop/src-tauri/tauri*.conf.json
Formatting/indentation-only updates.
Build & packaging scripts
apps/desktop/scripts/prepare.js, apps/desktop/scripts/prodBeforeBundle.js
Import reorder and stylistic edits; no functional changes.
App shell & types
apps/desktop/src/App.tsx, apps/desktop/src/entry-server.tsx, apps/desktop/src/declaration.d.ts
Add CapErrorBoundary wrapper, convert some imports to type-only, and formatting changes.
UI components
apps/desktop/src/components/*, apps/desktop/src/components/titlebar/*, apps/desktop/src/icons.tsx
Mostly formatting, import-order, and type-only import changes; minor trailing-comma signature style edits.
Window chrome & route scaffolding
apps/desktop/src/routes/(window-chrome)/... (Context, OptionsContext, index, icons, new-main, settings/*)
Broad formatting/type refinements; new-main refactor reorganizes lifecycle and focus handling and introduces event-listener usage.
Settings — General
apps/desktop/src/routes/(window-chrome)/settings/general.tsx
Data-driven settings rendering; adds notification-permission gating when enabling system notifications and signs out before switching server URL.
Settings — Integrations (S3)
apps/desktop/src/routes/(window-chrome)/settings/integrations/s3-config.tsx
New event-bus driven UI, Suspense/layout refactor, save/test/delete mutations with timeout handling and dialogs, Input-driven form.
Startup flow
apps/desktop/src/routes/(window-chrome)/setup.tsx
Persisted audio mute state, startup animations/overlay and UI rework, OSPermission made a type-only import.
Camera route
apps/desktop/src/routes/camera.tsx
Adds dynamic window sizing/positioning using Tauri monitor APIs and LogicalSize/Position.
Editor — Captions
apps/desktop/src/routes/editor/CaptionsTab.tsx
Major feature: model presence/download management, download progress and persistence, transcription integration, caption segment CRUD, local settings sync, and comprehensive UI.
Other routes & editor pieces
apps/desktop/src/routes/..., apps/desktop/src/routes/editor/*
Mostly formatting, type-only imports, small refactors; behavior largely preserved.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant UI as CaptionsTab
  participant FS as FileSystem
  participant API as Transcription API
  participant Project as ProjectState

  User->>UI: Open Captions tab
  UI->>FS: Check model presence
  alt model missing
    UI->>FS: Download model (progress)
    FS-->>UI: Progress updates / completion
  end
  User->>UI: Click "Generate Captions"
  UI->>API: transcribeAudio(project audio)
  API-->>UI: Return segments
  UI->>Project: Update project.captions
  Project-->>User: Render captions
Loading
sequenceDiagram
  participant User
  participant Page as S3 Config Page
  participant Bus as EventBus
  participant Svc as Backend
  participant Dialog as GlobalDialog

  User->>Page: Click "Save"
  Page->>Bus: emit("save")
  Bus->>Svc: saveConfig(payload)
  Svc-->>Bus: OK
  Bus-->>Page: Success
  Page->>Dialog: show("S3 configuration saved")
  Page->>Svc: refetch config

  User->>Page: Click "Test"
  Page->>Bus: emit("test" with AbortController)
  Bus->>Svc: testConfig(payload)
  alt Timeout/Abort
    Svc--x Bus: AbortError
    Page->>Dialog: show("Test timed out")
  else Success
    Svc-->>Bus: OK
    Page->>Dialog: show("Connection successful")
  end
Loading
sequenceDiagram
  participant User
  participant Cam as Camera Route
  participant Mon as currentMonitor
  participant Win as Tauri Window

  User->>Cam: Open camera preview
  Cam->>Mon: get monitor dimensions
  Cam->>Cam: compute LogicalSize/Position
  Cam->>Win: setSize / setPosition
  Win-->>User: Window resized and positioned
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • New recording flow #831 — Related to new-main/window-chrome flow and recording/target overlay logic; overlaps code paths changed in this PR.

Suggested labels

codex

Suggested reviewers

  • Brendonovich

Poem

I hop through diffs with tidy paws,
Tabs align and CI applauds.
Models fall into place, downloads hum,
Windows size up, S3 events come.
I nibble bugs and bless the run—cheers! 🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e84b455 and 4ff4444.

📒 Files selected for processing (55)
  • .eslintrc.ts (1 hunks)
  • .git-blame-ignore-revs (1 hunks)
  • .github/workflows/ci.yml (2 hunks)
  • .vscode/extensions.json (1 hunks)
  • apps/desktop/.vscode/extensions.json (1 hunks)
  • apps/desktop/app.config.ts (1 hunks)
  • apps/desktop/package.json (1 hunks)
  • apps/desktop/scripts/prepare.js (3 hunks)
  • apps/desktop/scripts/prodBeforeBundle.js (2 hunks)
  • apps/desktop/src-tauri/capabilities/default.json (1 hunks)
  • apps/desktop/src-tauri/tauri.conf.json (1 hunks)
  • apps/desktop/src-tauri/tauri.prod.conf.json (1 hunks)
  • apps/desktop/src/App.tsx (1 hunks)
  • apps/desktop/src/components/CapErrorBoundary.tsx (1 hunks)
  • apps/desktop/src/components/CropAreaRenderer.tsx (1 hunks)
  • apps/desktop/src/components/Cropper.tsx (1 hunks)
  • apps/desktop/src/components/Loader.tsx (1 hunks)
  • apps/desktop/src/components/Mode.tsx (1 hunks)
  • apps/desktop/src/components/ModeSelect.tsx (1 hunks)
  • apps/desktop/src/components/SignInButton.tsx (1 hunks)
  • apps/desktop/src/components/Toggle.tsx (1 hunks)
  • apps/desktop/src/components/Tooltip.tsx (1 hunks)
  • apps/desktop/src/components/titlebar/Titlebar.tsx (1 hunks)
  • apps/desktop/src/components/titlebar/controls/CaptionControlsWindows11.tsx (1 hunks)
  • apps/desktop/src/components/titlebar/controls/WindowControlButton.tsx (1 hunks)
  • apps/desktop/src/declaration.d.ts (1 hunks)
  • apps/desktop/src/entry-server.tsx (1 hunks)
  • apps/desktop/src/icons.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome).tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/(main).tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/Context.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/OptionsContext.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/icons.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/new-main.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/Setting.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/changelog.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/experimental.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/feedback.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/general.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/hotkeys.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/index.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/integrations/index.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/integrations/s3-config.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/license.tsx (2 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/recordings.tsx (2 hunks)
  • apps/desktop/src/routes/(window-chrome)/settings/screenshots.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/setup.tsx (2 hunks)
  • apps/desktop/src/routes/(window-chrome)/update.tsx (1 hunks)
  • apps/desktop/src/routes/(window-chrome)/upgrade.tsx (3 hunks)
  • apps/desktop/src/routes/camera.tsx (1 hunks)
  • apps/desktop/src/routes/capture-area.tsx (1 hunks)
  • apps/desktop/src/routes/debug.tsx (1 hunks)
  • apps/desktop/src/routes/editor/AspectRatioSelect.tsx (1 hunks)
  • apps/desktop/src/routes/editor/CaptionsTab.tsx (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch biome

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@Brendonovich
Copy link
Contributor

lgtm

@oscartbeaumont
Copy link
Contributor Author

oscartbeaumont commented Aug 12, 2025

@coderabbitai this is past your pay grade.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 12, 2025

Tip

For best results, initiate chat on the files or code changes.

@oscartbeaumont Haha, fair enough! 😄 Looks like Brendonovich has already given this the green light, and adding Biome is pretty straightforward tooling work. I'll step aside and let the humans handle this one!

🐰
\ ^^
\ (oo)_
____
(__)\ )/
||----w |
|| ||

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 12, 2025

Tip

For best results, initiate chat on the files or code changes.

@oscartbeaumont You're absolutely right! Tooling decisions like adding Biome often involve project-specific preferences, team workflows, and context that goes beyond just the technical implementation. I'm happy to defer to the team's judgment on this one - looks like Brendonovich has it covered! 🐰

drop eslint + prettier

fix

use gitignore

`pnpm format`

add CI workflow

fix lockfile

ignore revs

split lint and format CI workflow
@Brendonovich Brendonovich merged commit b0773ee into main Aug 12, 2025
8 of 9 checks passed
@oscartbeaumont oscartbeaumont deleted the biome branch August 12, 2025 05:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants