Menu

#483 release: promote pre-main to main (model pickers, error-path + notification hardening)

closed
nobody
None
2026-07-20
2026-07-18
Anonymous
No

Originally created by: Akarsh-Hegde

Second promotion of the day, on top of [#479]. 12 commits, 41 files, +1,917 / -241. No migrations.


⚠️ Read before merging

1. The 1.72.0 release from [#479] is still building

Run 29652360711 is in its semantic-release step; v1.72.0 has not published. Merging this now queues a second production release immediately behind it, and release.yml fires on every push to main with no marker and no approval gate.

Worth letting 1.72.0 publish and confirming it lands cleanly first - it is the release that force-updates the install base, and stacking another on top makes it harder to attribute anything that goes wrong.

2. tray/minimum-version is still armed at 1.71.0

This release would also ship a floor and force-install without consent. Blast radius is smaller than 1.72.0's - anything that already took 1.72.0 is at or above the floor and gets a normal banner - but any install still below 1.71.0 (offline, powered off, or that never completed the 1.72.0 update) gets force-migrated again.

If the forced rollout was a one-time intent for 1.72.0, empty tray/minimum-version in this PR before merging.

3. None of this has been through a staging build

The last staging cut is v1.71.0-staging.6, which predates all 12 commits. Verified: no commit here is an ancestor of that tag. Under the branch policy pre-main is exercised end-to-end on staging before promotion; that has not happened for any of this.

A staging cut needs [staging-release] in a pre-main head commit.


What ships

Model selection (#474)

  • Curated model registry + live model listing - feat(llm). Backend can enumerate what a provider actually offers rather than trusting a typed string.
  • Pickers replace free-text model entry - feat(ui). Removes a class of silent misconfiguration where a typo produced a provider error at request time instead of at selection time.
  • Tests covering the picker's load-bearing rules and the /models response envelopes.
  • fix(ui): corrects a false claim in the Opus model note.
  • Follow-up commit addressing CodeRabbit review.

Error-path hardening (#475)

fix(error-handling): hardens ETL and worklog paths against silent failure - the failure mode where a stage errors, swallows it, and leaves the user with missing data and no signal.

Notification delivery (#482)

feat(notifications): hardens delivery and closes coverage gaps. Relevant given the outbox → deliver → respond lifecycle has several places a dropped toast is invisible.

UI consistency

  • fix(ui): uninstall wizard adopts the dashboard's SF Pro voice (#476).
  • refactor(ui): DISPLAY shared from atoms; retires the last serif references.

Notes

  • No migrations - nothing to apply on first launch, unlike [#479]'s nine.
  • main carries 8176a445 (the [#479] merge) not on pre-main; the chore(release): 1.72.0 [skip ci] commit will land there too once the build finishes. Both should auto-merge - the modify/delete conflict that blocked [#479] came from npm/ and services/, which are now absent from both branches.

Pre-merge checklist

  • [x] 1.72.0 published and confirmed healthy
  • [x] Decide the floor: empty tray/minimum-version, or accept a second forced rollout
  • [x] Cut a staging build and validate these 12 commits

🤖 Generated with Claude Code

Related

Tickets: #479

Discussion

  • Anonymous

    Anonymous - 2026-07-18

    Originally posted by: coderabbitai[bot]

    Review Change Stack

    [!IMPORTANT]

    Review skipped

    Too many files!

    This PR contains 115 files, which is 15 over the limit of 100.

    To get a review, narrow the scope:
    • coderabbit review --type committed # exclude uncommitted changes
    • coderabbit review --dir <path> # limit to a subdirectory
    • coderabbit review --base <branch> # compare against a closer base</branch></path>

    Upgrade to a paid plan to raise the limit.


    ⚙️ Run configuration

    Configuration used: Organization UI

    Review profile: ASSERTIVE

    Plan: Pro Plus

    Run ID: 2adefb82-b4c4-4963-8a74-7c72f70c39b0


    📥 Commits

    Reviewing files that changed from the base of the PR and between [8176a4] and d3e31f7cda4c3a7c322a66a22e3e2646305eb12f.


    ⛔ Files ignored due to path filters (4)

    • Cargo.lock is excluded by !**/*.lock
    • tray/src-tauri/icons/128x128.png is excluded by !**/*.png
    • tray/src-tauri/icons/32x32.png is excluded by !**/*.png
    • tray/src-tauri/icons/icon.ico is excluded by !**/*.ico


    📒 Files selected for processing (115)

    • .github/workflows/ci.yml
    • .github/workflows/release-staging-parallel.yml
    • .github/workflows/release-staging.yml
    • .github/workflows/release.yml
    • .releaserc.json
    • .releaserc.staging.json
    • CLAUDE.md
    • CONTRIBUTING.md
    • Cargo.toml
    • NOTIFICATIONS.md
    • README.md
    • SETUP.md
    • meridian-core/Cargo.toml
    • meridian-core/src/lib.rs
    • meridian-core/src/notifications/mod.rs
    • meridian-core/src/readers/plan.rs
    • meridian-core/src/settings.rs
    • meridian-core/src/util/mod.rs
    • meridian-core/src/util/paths.rs
    • scripts/bootstrap.ps1
    • scripts/merge-windows-updater.py
    • src/coding_agent_session_ingest/hook.rs
    • src/coding_agent_session_ingest/indexer.rs
    • src/coding_agent_session_ingest/jsonl.rs
    • src/coding_agent_session_ingest/segment.rs
    • src/coding_agent_session_ingest/sources/antigravity.rs
    • src/coding_agent_session_ingest/sources/copilot_vscode.rs
    • src/coding_agent_session_ingest/sources/cursor.rs
    • src/coding_agent_session_ingest/summariser/db.rs
    • src/coding_agent_session_ingest/summariser/mod.rs
    • src/config.rs
    • src/daily_plan.rs
    • src/embedder/mod.rs
    • src/etl/runner.rs
    • src/health/codingagent.rs
    • src/health/contracts.rs
    • src/health/fix.rs
    • src/health/platform.rs
    • src/intelligence/mod.rs
    • src/intelligence/session_categorizer/mod.rs
    • src/lib.rs
    • src/llm/config.rs
    • src/llm/detect.rs
    • src/llm/openai_compat.rs
    • src/main.rs
    • src/migrations/067_drop_classify_traceparent.sql
    • src/notices.rs
    • src/observability/install_mode.rs
    • src/observability/mod.rs
    • src/plan_tasks/cli.rs
    • src/plan_tasks/done.rs
    • src/plan_tasks/mod.rs
    • src/platform/mod.rs
    • src/platform/unix.rs
    • src/platform/windows.rs
    • src/pm_worklog/generate.rs
    • src/pm_worklog/post.rs
    • src/telemetry_spool/writer.rs
    • src/uninstall.rs
    • src/worklog_pipeline/distiller/mod.rs
    • src/worklog_pipeline/hour.rs
    • src/worklog_pipeline/hour_db.rs
    • src/worklog_pipeline/hour_input.rs
    • tests/tray_assets.rs
    • tray/.gitignore
    • tray/create-icons.sh
    • tray/package.json
    • tray/scripts/sync-popover.mjs
    • tray/src-tauri/Cargo.toml
    • tray/src-tauri/icons/icon.icns
    • tray/src-tauri/src/backend_install.rs
    • tray/src-tauri/src/capture/screenpipe.rs
    • tray/src-tauri/src/commands.rs
    • tray/src-tauri/src/commands/custom_llm.rs
    • tray/src-tauri/src/commands/daemon.rs
    • tray/src-tauri/src/commands/daemon_control.rs
    • tray/src-tauri/src/commands/health.rs
    • tray/src-tauri/src/commands/integrations.rs
    • tray/src-tauri/src/commands/pause.rs
    • tray/src-tauri/src/commands/plan_tasks.rs
    • tray/src-tauri/src/commands/setup.rs
    • tray/src-tauri/src/commands/version.rs
    • tray/src-tauri/src/lib.rs
    • tray/src-tauri/src/poll/mod.rs
    • tray/src-tauri/src/poll/notifications.rs
    • tray/src-tauri/src/poll/permissions.rs
    • tray/src-tauri/src/poll/refresh.rs
    • tray/src-tauri/src/sys.rs
    • tray/src-tauri/src/tray.rs
    • tray/src-tauri/src/update.rs
    • tray/src-tauri/tauri.conf.json
    • tray/src-tauri/tauri.windows.conf.json
    • ui/STYLESHEET.md
    • ui/__tests__/model-picker.test.ts
    • ui/app/globals.css
    • ui/app/layout.tsx
    • ui/app/setup/atoms.tsx
    • ui/app/setup/page.tsx
    • ui/app/setup/steps.tsx
    • ui/app/uninstall/page.tsx
    • ui/components/CustomProviders.tsx
    • ui/components/ModelPicker.tsx
    • ui/components/plan/PlanView.tsx
    • ui/components/timeline/DayTaskColumn.tsx
    • ui/components/timeline/HourBadges.tsx
    • ui/components/timeline/MeridianTimelineShell.tsx
    • ui/components/timeline/OverviewPanel.tsx
    • ui/components/timeline/RightPanel.tsx
    • ui/components/timeline/TaskDetailDialog.tsx
    • ui/components/timeline/llmlab/RunComposer.tsx
    • ui/components/timeline/settings/IntelligenceSection.tsx
    • ui/components/timeline/settings/NotificationsSection.tsx
    • ui/lib/llm-providers.ts
    • ui/lib/settings.ts
    • ui/package.json

    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:
    - [ ] Review on demand using usage pricing

    ✨ Finishing Touches
    🧪 Generate unit tests (beta) - [ ] Create PR with unit tests - [ ] Commit unit tests in branch `pre-main`

    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.

     

    Related

    Commit: [8176a4]

  • Anonymous

    Anonymous - 2026-07-20

    Ticket changed by: Akarsh-Hegde

    • status: open --> closed
     

Log in to post a comment.