Skip to content

Conversation

@richiemcilroy
Copy link
Member

@richiemcilroy richiemcilroy commented Jan 1, 2026

  • Add setup window with streamlined permission request UI
    • Refactor macOS permission requests to use async runtime
    • Add paused/resumed events to recording flow
    • Improve camera preview error handling
    • Clean up ModeSelect component to use icons

Greptile Summary

  • Add new setup window with streamlined permission request UI that handles macOS screen recording permissions requiring manual grant and app restart
  • Refactor recording system to emit proper pause/resume events and improve async runtime integration for permission requests
  • Clean up UI components by replacing image-based mode selection with consistent icon system and improve camera preview error handling

Important Files Changed

Filename Overview
apps/desktop/src/routes/(window-chrome)/setup.tsx New setup window with enhanced permission flow; distinguishes manual vs automatic grants and handles restart dialog for macOS screen recording
apps/desktop/src-tauri/src/recording.rs Added Paused/Resumed events to RecordingEvent enum and modified pause/resume commands to emit proper events to frontend
apps/desktop/src/routes/in-progress-recording.tsx Refactored to event-driven pause/resume state management; UI now reacts to backend events instead of managing state synchronously
apps/desktop/src-tauri/src/permissions.rs Updated permission requests to use Tauri's async runtime instead of raw threads for better integration and resource management

Confidence score: 4/5

  • This PR is generally safe to merge but requires careful testing of the permission flows on macOS
  • Score reflects solid architectural improvements and proper event-driven design, but deducted one point due to complexity of platform-specific permission handling and potential edge cases in restart flow
  • Pay close attention to the macOS screen recording permission flow and ensure the restart mechanism works correctly across different macOS versions

Sequence Diagram

sequenceDiagram
    participant User
    participant Hotkeys
    participant Recording
    participant RecordingActor
    participant Frontend

    User->>Hotkeys: "Press pause hotkey"
    Hotkeys->>Recording: "toggle_pause_recording()"
    Recording->>RecordingActor: "is_paused().await"
    RecordingActor-->>Recording: "paused status"
    alt Recording is paused
        Recording->>RecordingActor: "resume().await"
        RecordingActor-->>Recording: "Ok(())"
        Recording->>Frontend: "emit RecordingEvent::Resumed"
    else Recording is active
        Recording->>RecordingActor: "pause().await"
        RecordingActor-->>Recording: "Ok(())"
        Recording->>Frontend: "emit RecordingEvent::Paused"
    end
Loading

Context used:

  • Context from dashboard - CLAUDE.md (source)
  • Context from dashboard - AGENTS.md (source)

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional Comments (4)

  1. apps/desktop/src/components/ModeSelect.tsx, line 31 (link)

    syntax: Missing import for IconLucideCheck which is used in the selected state indicator

  2. apps/desktop/src/components/ModeSelect.tsx, line 69-81 (link)

    syntax: Missing imports for IconCapInstant, IconCapFilmCut, and IconCapScreenshot icons used in mode options

  3. apps/desktop/src/components/ModeSelect.tsx, line 101 (link)

    syntax: Missing import for IconCapX used in the close button

  4. apps/desktop/src/routes/(window-chrome)/setup.tsx, line 354 (link)

    syntax: Missing import for IconLucideVolume2 - this will cause a runtime error when the mute button is not active

15 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

@richiemcilroy richiemcilroy merged commit 72edbb3 into main Jan 1, 2026
17 checks passed
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.

2 participants