Menu

#522 release: cut v1.75.0 (re-merge #517 with history intact)

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

Originally created by: adityaharishch

Re-cuts the release that [#517] was supposed to cut. Merge this with "Create a merge commit" - NOT squash. That is the entire point of the PR; squashing it reproduces the bug it exists to fix.

What went wrong with [#517]

[#517] was squash-merged, which collapsed its 11 conventional commits into one commit titled release: staging → production (Silicon-only pipeline, warm cache) (#517). release: is not a conventional type, so semantic-release saw nothing to release:

Analysis of 1 commits complete: no release
There are no relevant changes, so no new version is released.
 no releasable commits; nothing tagged

No tag was pushed, release-build never fired, and production is still on v1.74.0 while main's code is the new pipeline. Cargo.toml on main still reads 1.74.0.

Every previous release used a merge commit, which is why this never surfaced before:

7217d0a2 Merge pull request #495 from Meridiona/pre-main
1db2472c fix(tray): fix Dock/menu-bar icon rendering...
a554ad75 feat(worklog): auto-draft worklogs once a day...

Those feat:/fix: subjects stayed visible to commit-analyzer. Squash destroys exactly the information semantic-release needs.

Squash is correct for feature PRs into pre-main - one tidy commit per feature. It is wrong for the release PR, whose only job is to carry those commits through intact.

What this PR restores

14 commits, 10 releasable (feat/fix/perf), so commit-analyzer should cut a minor - v1.75.0 - on the feat: entries.

afb5e631 ci: stop re-running the suite on pre-main  main release PRs (#521)
76ff5472 feat(auth): make sign-in compulsory across dashboard and tray popover (#520)
1c05647c fix(ci): bind the tag through env, stop persisting the checkout token (#518)
f7bc7545 fix(ci): unset notarization creds for staging instead of blanking them (#516)
c1df5543 feat(ci): migrate production onto the Silicon-only two-workflow pipeline (#515)
f9368c49 perf(ci): warm the release cache on main and skip staging notarization (#514)
17672ac5 fix(ci): a pre-main merge produces a downloadable macOS Silicon staging build (#513)
52894cf1 fix(ci): auto-cut staging on every pre-main push, drop the fragile marker (#512)
6ae54ea2 fix(ci): make staging release manual-only, not commit-message triggered (#511)
6b4aa96e ci: new prepare + tag-triggered release pipeline (#508)
e36e605e test(ui): cover the toolbar's multi-provider Connected pill
f3ebc02c feat(worklog): choose which tracker a proposed ticket is created on
7cd3f720 fix(tray): match PostHog daily_usage to dashboard stats (#505)
22cbd0dd Merge pull request #507 from Meridiona/feat/provider-selection

The code delta is nearly nothing

[#517]'s squash already carried the file contents. The only tree difference is [#521]'s ci.yml change, plus main's own release bookkeeping:

.github/workflows/ci.yml           |  27 +++++-    the only real change
CHANGELOG.md                       | 179 ------    main-only, preserved by the merge
Cargo.toml / Cargo.lock            |   2 +-        main-only, preserved
packages/meridian-mcp/package.json |   2 +-
tray/src-tauri/tauri.conf.json     |   2 +-
ui/package.json                    |   2 +-

Merge dry-run verified: no conflicts, and the result keeps Cargo.toml at 1.74.0 and the full 2700-line CHANGELOG - pre-main never receives version bumps (the staging config has no @semantic-release/git plugin), so main's side wins on all of those.

So this is a history fix, not a code change. What it delivers is the tag.

What fires on merge

  • release-prepare on main → cuts v1.75.0, commits the bump + changelog, pushes the tag
  • that tag → release-build → Apple-Silicon-only, signed and notarized, publishes the DMG
  • cache-warm re-seeds

The cache is already warm - Cache warm (macOS release) succeeded on main at 11:11 after [#517] - so this build should be the first to come in materially under the old ~25 minutes.

Still true from [#517]

v1.74.0 shipped Meridian-setup.exe. This drops Windows and Intel from production; those installs stop receiving updates and freeze on their current version. Both are one-line restorable (matrix leg, publish needs, asset completeness check, compose-updater-manifest.py REQUIRED).

It also carries #520, compulsory sign-in - a user-facing behaviour change that landed on pre-main after [#517] was opened. Worth a deliberate look before releasing it to production.

Follow-up worth doing

allowed_merge_methods on the main ruleset is ["merge","squash","rebase"], so this failure mode stays available. Removing squash there would make it structurally impossible. Separately, release-prepare currently exits 0 when it finds nothing releasable - on main that should probably fail loudly, since a release merge that releases nothing should not be green.

Summary by CodeRabbit

  • New Features
  • Added sign-in protection for the dashboard and tray popover.
  • Choose which connected tracker receives a drafted worklog proposal.
  • Composer now offers clearer Personal and Board target options.
  • Connection status displays all connected trackers.
  • Bug Fixes
  • Draft provider changes now retry safely after temporary failures and prevent duplicate telemetry.
  • Tracker selections remain consistent when integrations change.
  • Release Improvements
  • Improved macOS release packaging, verification, signing, and updater manifest handling.

Related

Tickets: #517
Tickets: #521
Tickets: #523
Tickets: #525
Tickets: #528

Discussion

  • Anonymous

    Anonymous - 2026-07-21

    Originally posted by: coderabbitai[bot]

    Review Change Stack

    [!CAUTION]

    Review failed

    The pull request is closed.

    ℹ️ Recent review info
    ⚙️ Run configuration **Configuration used**: Organization UI **Review profile**: ASSERTIVE **Plan**: Pro Plus **Run ID**: `7633f497-ac13-4e87-bc9f-5848630bf00e`
    📥 Commits Reviewing files that changed from the base of the PR and between [93a8d0] and afb5e631e49c544828fc8f9422e436bdd4472280.
    📒 Files selected for processing (45) * `.github/workflows/cache-warm.yml` * `.github/workflows/ci.yml` * `.github/workflows/release-build.yml` * `.github/workflows/release-prepare.yml` * `.github/workflows/release-staging.yml` * `.github/workflows/release.yml` * `.releaserc.json` * `.releaserc.staging.json` * `Cargo.toml` * `README.md` * `meridian-core/src/readers/day_task_worklogs/mod.rs` * `meridian-core/tests/readers.rs` * `scripts/build-daemon-universal.sh` * `scripts/compose-updater-manifest.py` * `scripts/mirror-staging-release.sh` * `scripts/mirror-updater-channel.sh` * `scripts/notarize-dmg.sh` * `scripts/package-updater.sh` * `scripts/sign-daemon.sh` * `scripts/verify-release-bundle.sh` * `tray/src-tauri/Cargo.toml` * `tray/src-tauri/src/analytics.rs` * `tray/src-tauri/src/commands/account.rs` * `tray/src-tauri/src/commands/dashboard.rs` * `tray/src-tauri/src/commands/integrations.rs` * `tray/src-tauri/src/lib.rs` * `tray/src/app.js` * `tray/src/index.html` * `tray/src/style.css` * `ui/__tests__/composer-board-target.test.ts` * `ui/__tests__/toolbar-connected-pill.test.ts` * `ui/__tests__/worklog-propose-provider.test.ts` * `ui/app/layout.tsx` * `ui/app/page.tsx` * `ui/app/setup/signin.tsx` * `ui/app/setup/signin/RequireSignIn.tsx` * `ui/components/plan/TaskComposer.tsx` * `ui/components/plan/useTaskComposer.ts` * `ui/components/timeline/DayTaskDetailPanel.tsx` * `ui/components/timeline/MeridianTimelineShell.tsx` * `ui/components/timeline/Toolbar.tsx` * `ui/components/timeline/WorklogTargets.tsx` * `ui/components/timeline/useTimelineData.ts` * `ui/components/timeline/useWorklog.ts` * `ui/lib/integrations.ts`
    **Disabled knowledge base sources:** - Linear integration is disabled > You can enable these sources in your CodeRabbit configuration.

    📝 Walkthrough ## Walkthrough This PR restructures CI and release automation, adds target-aware macOS packaging, enables draft worklog provider reassignment, gates dashboard and tray content behind sign-in, and revises analytics retry and daily usage behavior. ### Changes **Release pipeline and build artifacts** |Layer / File(s)|Summary| |---|---| |**CI and release orchestration**
    `.github/workflows/*`, `.releaserc*`, `Cargo.toml`, `README.md`|CI triggers and path filters are revised, release preparation and publishing workflows are added, semantic-release creates draft releases, and release profile settings and project text are updated.| |**Target-aware release artifacts**
    `scripts/*`, `tray/src-tauri/Cargo.toml`|macOS builds, signing, notarization, packaging, updater manifests, staging mirroring, and bundle verification support universal and architecture-specific outputs.| **Worklog provider selection** |Layer / File(s)|Summary| |---|---| |**Provider mutation backend**
    `meridian-core/src/readers/day_task_worklogs/mod.rs`, `meridian-core/tests/readers.rs`, `tray/src-tauri/src/commands/*`, `tray/src-tauri/src/lib.rs`|Drafted proposal worklogs can be reassigned to connected providers with guarded persistence, validation, command wiring, and tests.| |**Provider selection UI**
    `ui/components/plan/*`, `ui/components/timeline/*`, `ui/lib/integrations.ts`|Composer and worklog components support remembered board providers, provider selection, server updates, and provider-specific display text.| |**Connected-provider display**
    `ui/components/timeline/{useTimelineData,MeridianTimelineShell,Toolbar}.tsx`|Timeline connection state and toolbar pills now represent multiple connected providers.| |**Provider UI validation**
    `ui/__tests__/*provider*.test.ts`, `ui/__tests__/composer-board-target.test.ts`|Tests cover provider selection rules, persistence, rendering, labels, and mutation wiring.| **Authentication gating** |Layer / File(s)|Summary| |---|---| |**Dashboard sign-in gate**
    `ui/app/page.tsx`, `ui/app/setup/signin*`, `ui/app/layout.tsx`|Dashboard content is wrapped in a client-side sign-in gate that persists the account email and renders signed-out and loading states.| |**Tray sign-in lock**
    `tray/src/app.js`, `tray/src/index.html`, `tray/src/style.css`|The tray delays live behavior until authentication succeeds and displays a styled sign-in lock otherwise.| **Analytics reliability** |Layer / File(s)|Summary| |---|---| |**Analytics retry and payloads**
    `tray/src-tauri/src/analytics.rs`, `tray/src-tauri/src/commands/account.rs`|Analytics sends now report success, retry failed bookkeeping, prevent overlapping ticks, use Today-card fields, and remove immediate sign-in identification.| **Estimated code review effort:** 5 (Critical) | ~120 minutes **Possibly related issues** - [Meridiona/meridian#376](https://github.com/Meridiona/meridian/issues/376) — Adds the provider-selection workflow and draft provider reassignment described by the issue. **Possibly related PRs** - [[Meridiona/meridian#338](https://github.com/Meridiona/meridian/issues/338)](https://github.com/Meridiona/meridian/pull/338) — Introduces shared tracker metadata and connection handling used by the provider-selection UI. - [[Meridiona/meridian#427](https://github.com/Meridiona/meridian/issues/427)](https://github.com/Meridiona/meridian/pull/427) — Modifies the same tray analytics module and event-sending flow. - [[Meridiona/meridian#517](https://github.com/Meridiona/meridian/issues/517)](https://github.com/Meridiona/meridian/pull/517) — Overlaps directly in tracker selection, PostHog wiring, and connected-provider behavior. **Suggested reviewers:** `akarsh-hegde` **Poem** > A rabbit hops through builds at night, > Seeds warm caches in moonlit light. > Drafts pick boards, sign-ins glow, > Analytics retry where errors flow. > Release manifests neatly align— > “Hop approved!” says Bunny, “Ship on time!”
    ✨ 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 `pre-main`

    [!WARNING]
    There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.


    🔧 Checkov (3.3.8)


    .github/workflows/cache-warm.yml

    Traceback (most recent call last):
    File "/usr/local/bin/checkov", line 2, in <module>
    from checkov.main import Checkov
    ModuleNotFoundError: No module named 'checkov'</module>


    .github/workflows/ci.yml

    Traceback (most recent call last):
    File "/usr/local/bin/checkov", line 2, in <module>
    from checkov.main import Checkov
    ModuleNotFoundError: No module named 'checkov'</module>


    .github/workflows/release-build.yml

    Traceback (most recent call last):
    File "/usr/local/bin/checkov", line 2, in <module>
    from checkov.main import Checkov
    ModuleNotFoundError: No module named 'checkov'</module>

    • 3 others

    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-21

    Ticket changed by: adityaharishch

    • status: open --> closed
     

Log in to post a comment.