Originally created by: kristofferR
This PR exists only to get a clean CodeRabbit review of the v1.0.0 release in isolation. The diff is the full release — everything between the pre-1.0 state and the v1.0.0 tag — squashed into a single commit, with no later commits: no post-1.0 unit tests, no titlebar/theme polish, no dev tooling.
It's deliberately built on a frozen, standalone base branch (v1.0-review-base) so it's totally decoupled from main, pre-v1.0, and the fix PR.
Do not merge this. It's a review sandbox — any fixes the review surfaces are applied manually to the real branches.
Background: the v1.0 release shipped via [#2] unreviewed; [#4]/#6 couldn't isolate it because CodeRabbit anchors to main and skips already-merged commits. This branch sidesteps that with a fresh, unmerged commit.
Added a dedicated download section and expanded setup guidance in the README.
Bug Fixes
Originally posted by: chatgpt-codex-connector[bot]
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.
Originally posted by: coderabbitai[bot]
📝 Walkthrough
## Walkthrough Bumps all manifests to v1.0.0, adds compact mode (CSS side-panel hiding + JS toggle + menu item), keyboard shortcuts for conversation jumping and compact toggling, forced theme and unread badge propagation from injected JS to native tray, hardened download filename sanitization with an unsafe-extension blocklist, and a CI publish job that notarizes the macOS `.dmg` and flips the GitHub Release from draft to public after all builds upload artifacts. ## Changes **Carrier 1.0.0** | Layer / File(s) | Summary | |---|---| | **Version bump across manifests**`package.json`, `src-tauri/Cargo.toml`, `src-tauri/tauri.conf.json` | Sets version to `1.0.0` in all manifests, lowers MSRV to `1.82`, removes unused crate dependencies (`arboard`, `ureq`, `base64`, `image`), and reformats Linux bundle dep arrays. | | **Settings model and defaults**
`src-tauri/src/lib.rs` | Adjusts `Settings` struct field docs and default values for `unread_badge`, `theme`, `compact`, and `menu_bar_only`. | | **Injected JS: compact mode, theme forcing, unread badge**
`src-tauri/inject/messenger.js`, `src-tauri/inject/messenger.css`, `src-tauri/capabilities/default.json` | Adds `emit()` bridge helper, `forceTheme`, `unreadBadge` (title polling → `set_badge_count` + `carrier:unread`), and `compact` (toggles `data-carrier-compact`); hides side panel via CSS when compact; grants `core:window:allow-set-badge-count` permission. | | **Keyboard shortcuts and download improvements**
`src-tauri/inject/messenger.js` | Adds `Cmd/Ctrl+1–9` conversation jumping and `Cmd/Ctrl+Shift+S` compact toggle in the keydown handler; reworks `downloadSrc` to always fetch via blob with MIME-inferred extension fallback. | | **Rust: settings application, theme, tray, and menu**
`src-tauri/src/lib.rs` | Wires `apply_settings` to update window chrome theme; adds `toggle_main` tray helper; manages macOS activation policy for menu-bar-only mode; adds Theme submenu and compact toggle menu item; introduces `mutate_settings` helper and `listen_any` handlers for `carrier:unread` and `carrier:toggle-compact`. | | **Rust: hardened download handling**
`src-tauri/src/lib.rs` | Removes `fetch_public`, introduces `is_unsafe_download` extension blocklist, sanitizes WebView-suggested filenames, and uses the sanitized name for unique path selection. | | **CI: stable asset naming, notarization, and publish job**
`.github/workflows/release.yml` | Adds `ASSET_PLATFORM`/`ASSET_ARCH` env vars and `assetNamePattern`; adds macOS notarize+staple step with `gh release upload`; adds `publish` job that sets `--draft=false` after all builds finish. | | **README rewrite for 1.0.0**
`README.md` | Rewrites README with a hero download section, expanded feature list, keyboard shortcuts table, and updated install/how-it-works/auto-updates content. | ## Estimated code review effort 🎯 4 (Complex) | ⏱️ ~60 minutes ## Poem > 🐇 Hop, hop, one-dot-oh is here! > Compact panels disappear, > Badges count the unread stream, > Downloads safe — no exec scheme. > The DMG gets notarized with glee, > And publish waits for builds to flee! 🎉
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation | | :------------------------: | :------- | :--------------------------------------------------------------------------------------------------- | | Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. | | Title check | ✅ Passed | The title accurately identifies this as an isolated v1.0.0 release review and matches the changeset. | | Docstring Coverage | ✅ Passed | Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. | | Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |✨ Finishing Touches
📝 Generate docstrings
- [ ] Create stacked PR - [ ] Commit on current branch🧪 Generate unit tests (beta)
- [ ] Create PR with unit tests - [ ] Commit unit tests in branch `v1.0-review`Comment
@coderabbitai helpto get the list of available commands.Originally posted by: kristofferR
@coderabbitai review
Originally posted by: coderabbitai[bot]
✅ Action performed
Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.Ticket changed by: kristofferR