Menu

#420 fix(setup): polish first-run wizard copy, permissions, and window chrome

closed
nobody
None
2026-07-09
2026-07-09
Anonymous
No

Originally created by: Akarsh-Hegde

Summary

  • Fix the setup window title's em-dash and codify a project-wide rule (CLAUDE.md): all user-facing app text uses a single hyphen, never an em/en-dash.
  • Drop Input Monitoring from the Permissions step — it's redundant with Accessibility for every signal the daemon actually consumes (clipboard + app_switch via get_signals), and on this hardware it never even produced a real System Settings grant. The capture recorder no longer prompts for it (avoids a cold, wizard-less TCC dialog); it now runs a documented full/reduced capture mode depending on whether it's already granted. Removes the now-orphaned check_input_monitoring / request_input_monitoring commands.
  • Rewrite the Welcome and Integrations copy toward a "see what actually happened" positioning, fix the stale "Jira and Trello today" tracker list (now lists all 5: Jira, Linear, GitHub, Trello, Azure DevOps), and make explicit that connecting a tracker is optional — Meridian still tracks the day without one (the step was already non-blocking; this just makes it legible).
  • Make the setup window resizable/full-screenable (native macOS full-screen, not just zoom), scale the wizard card with the window instead of floating small on a big backdrop, and switch to a transparent title bar so the centred card gets symmetric margins on all sides.

Test plan

  • [x] cargo fmt --check + cargo clippy -- -D warnings clean (root meridian package and tray/src-tauri both, default + --no-default-features --features capture)
  • [x] tsc --noEmit clean on the setup wizard files
  • [x] Manually exercised the wizard in tauri dev: title bar, full-screen toggle, 2-permission Permissions step (Accessibility + Screen Recording, gate no longer waits on Input Monitoring), Welcome copy, Integrations optional-skip copy
  • [x] Full pre-push suite passed: fmt, ui build, clippy, ui tests, security audit, cargo test

Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

https://claude.ai/code/session_01RJ8rU48qbY1A3tthxFkQj8

Related

Tickets: #440

Discussion

  • Anonymous

    Anonymous - 2026-07-09

    Originally posted by: coderabbitai[bot]

    [!IMPORTANT]

    Review skipped

    Auto reviews are disabled on base/target branches other than the default branch.

    Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.


    ⚙️ Run configuration

    Configuration used: Organization UI

    Review profile: ASSERTIVE

    Plan: Pro Plus

    Run ID: 4fef2cb1-b7ec-4f14-b732-b55d92077193

    You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

    Use the checkbox below for a quick retry:
    - [ ] 🔍 Trigger review

    ✨ Finishing Touches
    🧪 Generate unit tests (beta) - [ ] Create PR with unit tests - [ ] Commit unit tests in branch `fix/setup-page-content`

    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.

    ❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

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

     
  • Anonymous

    Anonymous - 2026-07-09

    Originally posted by: Akarsh-Hegde

    Thanks for the thorough review. Addressed the actionable items:

    Fixed

    • PR description nit: "double-hyphen" → "em-dash" (the character actually replaced in the setup window title was , not --).

    Verified the open risk item — traced the "reduced mode" claim against the exact pinned commit (not just upstream screenpipe/screenpipe): screenpipe-a11y is pinned at d6d2b318cfe1fffbc9e923e627e8659df1b2ff7e (tray/src-tauri/Cargo.toml:83). At that commit:

    • UiRecorder::start_internal (platform/macos.rs:240) only hard-requires accessibility — it bail!s if that's missing, but not for input_monitoring.
    • When input_monitoring is false it logs "input monitoring not granted — running in reduced mode: clipboard via change-count polling, app/window events via workspace observer, keystrokes and clicks disabled" and spawns the clipboard poller instead of the CGEventTap thread (platform/macos.rs:269-297), gated on config.capture_clipboard.
    • UiCaptureConfig::new() defaults capture_clipboard: true (config.rs:192), so our recorder_config() (which doesn't touch that field) genuinely gets the clipboard poller in reduced mode, not a silent no-op.

    This confirms the doc comment on run_ui_event_recorder is accurate at the pinned rev, not just plausible against a similar-looking upstream. No code change needed here — this was a verification gap, now closed.

    Left as-is (per your own non-blocking call)

    • Extracting a shared as_ns_window() helper for the 4x-duplicated ns_window() → null-check → cast pattern — you flagged this as "not something this PR needs to do," agreed, leaving for a follow-up if/when a 5th call site shows up.
    • Backfilling the ~64 other files still containing em-dashes — out of scope for a setup-wizard PR; happy to file a tracking issue if there's appetite for full repo compliance.

    Also worth noting: this branch was rebased onto pre-main after #418 (setup-notifications-card) landed and touched the same permissions code — merged both intents rather than picking one (Input Monitoring stays removed, the new optional Notifications card is preserved), plus a follow-up commit fixed an unrelated duplicated-"2B" bug in the Completion summary line (fmtModelLabel, with unit tests). Both are already reflected in the current diff.

     
  • Anonymous

    Anonymous - 2026-07-09

    Ticket changed by: Akarsh-Hegde

    • status: open --> closed
     

Log in to post a comment.