Changes
- Split desktop draft release and asset publishing @h4yfans (#310)
- Add desktop draft release pipeline @h4yfans (#309)
- M5 notes CRUD and BlockNote CRDT bridge @h4yfans (#308)
- fix: update input handling for setupNewAccount and related tests @h4yfans (#307)
- m4: crypto keychain auth backend @h4yfans (#306)
- M3 Tauri vault filesystem and watcher @h4yfans (#305)
- m2: DB + schemas + migrations @h4yfans (#304)
- m1: Tauri skeleton + full renderer port (spike/tauri-risk-discovery) @h4yfans (#303)
- Add desktop release pipeline and updater @h4yfans (#302)
- feat: typed indicator dots in sidebar mini-calendar on calendar tab @h4yfans (#300)
- Calendar: event dots + configurable day-cell click in Day Panel @h4yfans (#299)
- feat: add calendar sync triggers and visual type filtering @h4yfans (#298)
- fix(calendar): sync Google Calendar on focus, resume, and manual refresh @h4yfans (#297)
- fix(calendar): lay out overlapping events in side-by-side lanes @h4yfans (#296)
- fix(a11y): disambiguate "Go back" aria-labels across app @h4yfans (#295)
- fix(e2e): unblock full-suite CI on calendar + tags specs @h4yfans (#294)
- ci(e2e): enable Google Calendar E2E suites in workflow @h4yfans (#293)
- ci: run only changed e2e tests on PRs @h4yfans (#292)
- feat(calendar): verify Google Calendar two-way sync via E2E @h4yfans (#291)
- Google Calendar Phase 2: redesign M7 as QR-link auth transfer @h4yfans (#290)
- feat(calendar): Phase 2 M6 — multi-account Google + sync health UI @h4yfans (#289)
- feat(calendar): Phase 2 M5 — data-model completeness + recurrence exceptions @h4yfans (#288)
- feat(calendar): M4a — Google Calendar push-channel server side @h4yfans (#281)
- M4b: desktop half of Google Calendar push channels @h4yfans (#287)
- feat(desktop): unify window chrome across sidebar collapse states @h4yfans (#279)
- test(calendar): e2e coverage for M2 promote-external flow @h4yfans (#280)
- feat(calendar): M3 — etag + field-clock conflict resolution @h4yfans (#278)
- feat(calendar): Google Calendar Phase 2 / M2 — per-event targeting + editable externals @h4yfans (#277)
- fix(calendar): M1 — propagate Google pull-side updates and deletes @h4yfans (#276)
- feat(calendar): replace event-edit drawer with anchored popover @h4yfans (#275)
- fix(calendar): create event on marquee Save-button click @h4yfans (#274)
- fix(e2e): skip V6 CRDT on CI — sync engine cursor race @h4yfans (#272)
- fix(e2e): replace wall-clock waits with product-emitted signals @h4yfans (#271)
- feat(calendar): context-aware sidebar date clicks (Calendar view vs Journal) @h4yfans (#269)
- feat(calendar): infinite horizontal day scroll in week view @h4yfans (#268)
- fix(calendar): surface silent IPC failures from quick-create/editor save @h4yfans (#267)
- feat(calendar): use global right sidebar in Day view @h4yfans (#266)
- fix(settings): always open on Account section, drop cross-session state @h4yfans (#265)
- ci: parallelize quality jobs and add turbo cache @h4yfans (#264)
- refactor(settings): compact Google Calendar connected layout @h4yfans (#263)
- fix(calendar/google): structured error logging and user-friendly messages for OAuth failures @h4yfans (#262)
- fix(crdt): keep IPC handlers app-scoped to fix signout race @h4yfans (#261)
- fix(calendar): persist events created via marquee quick-create @h4yfans (#260)
- feat(calendar): auto-scroll day/week views to current time on open @h4yfans (#259)
- feat(calendar): gate Google Calendar sync behind Memry auth state @h4yfans (#258)
- refactor(e2e): streamline Electron test fixtures and improve app life… @h4yfans (#257)
- fix(e2e): bump expect.timeout to 20s for CI shard headroom @h4yfans (#256)
- fix(e2e): make T541 row-position drop test independent of task sort order @h4yfans (#254)
- fix(e2e): give note-list sync poll 30s headroom for CI runners @h4yfans (#255)
- fix(e2e): unblock tags-rename-delete (emit tags-changed + fix selectors) @h4yfans (#253)
- chore(deps): remove unused libsodium-wrappers dep, keep -sumo variant @h4yfans (#251)
- chore(drizzle): align drizzle-orm to ^0.45.2 + add upgrading-drizzle.md @h4yfans (#250)
- chore(typescript): align typescript to ^5.9.3 across workspace @h4yfans (#243)
- chore(native): add pnpm check:native mismatch detection script @h4yfans (#248)
- ci(lockfile): add drift detection workflow + outdated:check script @h4yfans (#246)
- docs(testing): audit vitest 4 patterns + add testing-vitest.md @h4yfans (#249)
- docs(electron): add upgrading-electron.md monthly bump process doc @h4yfans (#247)
- refactor(renderer): adopt React 19 ref-as-prop + useActionState pilots @h4yfans (#245)
- chore(deps): add renovate config with grouped rules @h4yfans (#244)
- test(reminders): cover target title + existence resolution paths @h4yfans (#239)
- feat(journal): wire image upload + focus mode in editor toolbar @h4yfans (#240)
- feat(sidebar): wire tag rename + delete actions @h4yfans (#238)
- feat(tabs): implement maximize/reset-split chord shortcuts + cross-group tab movement @h4yfans (#237)
- chore(turbo): declare typecheck outputs + scope cache inputs @h4yfans (#235)
- refactor(sync): split engine.test.ts into 4 domain files + shared utils (Phase 3.2) @h4yfans (#233)
- refactor(sync/item-handlers): consolidate test fixtures (Phase 3.3) @h4yfans (#234)
- refactor(vault): split notes.ts into focused files behind facade (Phase 3.1) @h4yfans (#232)
- refactor(sync): extract BaseItemHandler<T> + migrate 13 handlers (Phase 4 U8) @h4yfans (#231)
- test(contracts): add settings + plumbing schema coverage @h4yfans (#228)
- test(contracts): add domain APIs schema coverage @h4yfans (#227)
- test(contracts): add sync cluster schema coverage @h4yfans (#236)
- test(contracts): add auth + crypto + attachments schema coverage (Phase 4 U4) @h4yfans (#229)
- test(storage): add coverage for storage-data + storage-vault (U3) @h4yfans (#230)
- test(rpc): add schema + domain coverage @h4yfans (#226)
- test(domain-tasks): add coverage for queries + commands @h4yfans (#225)
- refactor(ipc): apply registerCommand wrapper to sync handlers (Phase 2.5) @h4yfans (#242)
- refactor(ipc): split sync-handlers.ts god module (Phase 2.1–2.4) @h4yfans (#241)
- chore(vitest): include domain-tasks + rpc in shared project @h4yfans (#224)
- test(crypto): add cbor + index surface coverage @h4yfans (#223)
- test(crypto): add keys + primitives coverage with Argon2id parameter lock @h4yfans (#220)
- test(crypto): add recovery + rotation coverage (rotation had zero tests) @h4yfans (#222)
- test(crypto): keychain coverage with mocked keytar + optional macOS E2E @h4yfans (#221)
- test(crypto): add dedicated signatures coverage (RFC 8032 + tombstone regression) @h4yfans (#219)
- test(crypto): expand encryption coverage with golden vectors + boundary cases @h4yfans (#218)
- chore(crypto): add Phase 1 golden-vector fixture scaffolding @h4yfans (#217)
- refactor(sync): remove or justify remaining
anyusages in sync tests (Phase 1.9) @h4yfans (#216) - test: add encryption coverage @h4yfans (#215)
- [0.6] refactor(ipc): extract registerCommand wrapper + migrate notes handlers @h4yfans (#212)
- [0.5] test(coverage): ratchet vitest thresholds from measured baseline @h4yfans (#211)
- [0.1] build(deps): bump @hono/node-server and esbuild @h4yfans (#204)
- [1.8] refactor(embeddings): type extractor with FeatureExtractionPipeline @h4yfans (#207)
- [0.3] fix(types): unblock websocket.test.ts type errors @h4yfans (#206)
- [0.2] fix(preload): swap raw console.error for createLogger @h4yfans (#208)
- [P.2] chore(lint): enforce 800-line max-lines rule @h4yfans (#210)
- test(calendar): stabilize date-sensitive page fixtures @h4yfans (#213)
- [P.1] chore(hooks): add 800-line file size pre-commit gate @h4yfans (#209)
- E2e calendar @h4yfans (#205)
- feat(calendar): Google Calendar sync + drag-to-create workspace @h4yfans (#203)
- feat(hint-mode): add Vim-style keyboard navigation @h4yfans (#202)
- fix(desktop): normalize Windows inbox filing paths @h4yfans (#201)
- style: align sidebar nav rows with folder/file row styling @h4yfans (#200)
- chore: quiet down noisy startup logs in pnpm dev @h4yfans (#198)
- feat: move search to sidebar top and fix settings scroll @h4yfans (#199)
- Add offline body-CRDT sync E2E coverage @h4yfans (#196)
- test: align inbox IPC handler coverage with domain delegation @h4yfans (#195)
- test: add test for maintaining hovered row insertion target during dr… @h4yfans (#194)
- test: align inbox IPC handler coverage with domain delegation @h4yfans (#192)
- refactor: move note writes behind projection events @h4yfans (#193)
- refactor: extract inbox domain and thin ipc handlers @h4yfans (#191)
- refactor(sync): align phase 7 record transport @h4yfans (#190)
- refactor: continue projection pipeline cleanup @h4yfans (#189)
- refactor: centralize sync dispatch via adapter registry (Phase 5) @h4yfans (#188)
- [codex] Refactor note and journal canonical metadata @h4yfans (#182)
- [codex] refactor tasks vertical slice architecture @h4yfans (#179)
- [codex] implement projection pipeline @h4yfans (#180)
- refactor: unify preload rpc and renderer service types @h4yfans (#181)
- [codex] simplify sync core architecture @h4yfans (#177)
- Align sync-server record and CRDT transports @h4yfans (#178)
- [codex] add durable inbox job pipeline @h4yfans (#176)
- [00] add architecture boundary guardrails @h4yfans (#175)
- [codex] refactor renderer effect synchronization @h4yfans (#173)
- feat(marquee): add Tab/Shift+Tab indent/outdent for marquee selections @h4yfans (#174)
- feat: block marquee selection (Finder-style rubber-band) @h4yfans (#171)
- fix: make empty task blocks clickable with placeholder text @h4yfans (#172)
- fix(deps): patch critical Electron and transitive CVEs @h4yfans (#170)
- feat: implement inline subtasks in notes @h4yfans (#169)
- feat: persist tasks tab view state across navigation @h4yfans (#168)
- refactor: remove unused home tab @h4yfans (#167)
- feat: add inline task blocks with Enter key continuation @h4yfans (#166)
- refactor: replace horizontal nav with vertical sidebar nav @h4yfans (#165)
- fix: hide sidebar toggle in split view secondary panes @h4yfans (#163)
- fix: pass viewState when navigating from linked tasks to task page @h4yfans (#164)
- fix: vertically center checkbox text in note task lists @h4yfans (#143)
- feat: polish inbox detail panel with icons, layout, and alignment @h4yfans (#142)
- feat: add inline folder creation to inbox filing dropdown @h4yfans (#141)
- feat: add link embeds and mentions to editor @h4yfans (#140)
- feat: add voice transcription with local Whisper and OpenAI BYOK @h4yfans (#139)
- refactor: remove dead code across monorepo (~762 lines) @h4yfans (#138)
- refactor: clean code audit — decompose 6 god-files and eliminate IPC boilerplate @h4yfans (#137)
- refactor: split oversized modules into focused domain files @h4yfans (#116)
- refactor: migrate settings source of truth to config.json @h4yfans (#115)
- feat: redesign note page with Picker system and editor blocks @h4yfans (#114)
- feat(desktop): settings modal and sidebar color polish @h4yfans (#112)
- feat(desktop): UI polish, inbox redesign, and settings consolidation @h4yfans (#111)
- feat: task UI refinement — redesign rows, filters, kanban, and CSS variable system @h4yfans (#109)