Originally created by: Akarsh-Hegde
Promotes 88 commits (27 PRs) from pre-main to main. main ⊆ pre-main invariant holds (verified via git merge-base); CI is green on pre-main HEAD (e26ce309). Six threads:
1. PM ticket write-back — canonical data model (#361, [#385])
meridian-core::canonical_task (CanonicalTask + ProviderAdapter trait) and moves all six connector adapters (Jira, Linear, Trello, Azure DevOps, GitHub, Asana) into meridian-core/src/adapters/, populating new CDM columns end-to-end (migration 056_pm_tasks_canonical.sql).2. GitHub integration (#379, [#380], [#393])
gh auth token shell-out with a native GitHub OAuth device-flow (meridian-oauth/src/github.rs) — no gh CLI dependency, one-time code shown in the dashboard's "Browser" connect flow. .env.example gains GITHUB_OAUTH_CLIENT_ID (public identifier, baked in for release builds via GH_OAUTH_CLIENT_ID).3. Notifications — interactive toast rails (#392)
057_notification_actions.sql, notifications.rs/notification_responses.rs split into meridian-core/src/notifications/{mod,responses,tests}.rs.NOTIFICATIONS.md added as the integration guide for the outbox → deliver → respond → consume lifecycle.4. Observability consolidation (#395, [#399])
observability.rs splits into mod.rs / install_mode.rs / otlp_target.rs; telemetry_spool splits into mod.rs / launchd_log_cap.rs / retention.rs / render.rs.tray/src-tauri/src/commands/openobserve.rs, -335 lines) and retired daemon/service artifacts (old plist paths, install-from-bundle.sh cleanup, agno's standalone SQLite trace viewer).5. Tray, popover & dashboard timeline (#394, [#396]–398, [#400], [#402]–406, [#408], [#415])
worklog_hour runs firing from concurrent daemons (dev + installed).ui/lib/{app-icons,brand-icons}.ts, tray/src-tauri/src/commands/app_icons.rs), a GitHub OAuth cancel-mid-flow fix, and an Overview/Hour-detail panel redesign (ActivityReport(Modal), TimeByCategory, CurvedArrow).dev-start.sh now kills orphaned next dev + legacy a11y-helper processes; pre-push hook failures in background jobs now propagate instead of being silently swallowed; tray popover unit tests moved into ui/__tests__ (bun auto-discovers them) and CI now runs on pushes/PRs targeting pre-main.6. Fixes along the way
transformers < 5.13 to unbreak MLX runtime smoke tests / publish.mailto:/tel: handling + rejection fallback for the Tauri webview (two follow-on fixes after the first attempt regressed staging).main → pre-main sync (#388) to restore the main ⊆ pre-main invariant mid-cycle.App version (Cargo.toml / npm/meridian/package.json) is 1.69.1 on both branches — no regression this time. The MLX runtime version (services/pyproject.toml) is 1.69.2 on pre-main vs 1.69.1 on main, i.e. pre-main is ahead — merging will let the main-branch auto-publish gate (scripts/runtime-publish-gate.sh) fire for runtime-latest (currently live at stale 1.68.0, predates this whole batch). That publish job runs in the production-runtime GitHub Environment and needs a required reviewer to approve it before it actually ships to users.
Each commit reports its own verification in-message (cargo build/clippy -D warnings/test, tsc --noEmit, next build, bun test), and CI is green on pre-main HEAD. Before merging this PR:
cargo test (workspace) passes on main post-mergecargo clippy -- -D warnings cleancd ui && npm run build && npm test cleancd tray/src-tauri && cargo test cleanproduction-runtime publish job once it queues, so runtime-latest actually moves off the stale 1.68.0 build.app bundle / OS integration to exercise fully)🤖 Generated with Claude Code
Tickets: #380
Tickets: #385
Tickets: #393
Tickets: #396
Tickets: #399
Tickets: #400
Tickets: #402
Tickets: #408
Tickets: #415
Tickets: #424
Tickets: #440
Originally posted by: coderabbitai[bot]
✨ 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 helpto get the list of available commands.Related
Commit: [8fa43a]
Ticket changed by: Akarsh-Hegde