Skip to content

Memry v2026-05-06

Choose a tag to compare

@github-actions github-actions released this 06 May 17:32
· 2722 commits to main since this release

What's Changed

  • 60e1c37 chore: update release workflows and dependencies
  • 186ae25 chore: update CI workflow and remove deprecated sync server deploy workflow
  • c083605 feat: add lint-staged configuration and pre-commit hooks for code quality checks
  • 1557834 chore: remove stale docs and local artifacts
  • 262f148 chore(metrics): update SQL queries for accuracy and add new sync metrics
  • bf0dcf4 fix task selection batching
  • 22586af feat(metrics): tighten dimension safety and wire auth/sync state providers
  • d620177 fix desktop lint issues
  • 3bf3a32 feat(metrics): add telemetry toggle in general settings
  • 3e7da09 fix(metrics): keep calendar-handlers under 800-line lint limit
  • d31c370 docs(metrics): add telemetry event dictionary and grafana queries
  • 5898c10 feat(metrics): track sync reliability metrics
  • af0e33d feat(metrics): track core product usage events
  • cab0ca7 feat(metrics): track activation and navigation events
  • cf9c234 feat(metrics): add renderer telemetry wrapper
  • 5821e95 feat(metrics): wire desktop telemetry runtime
  • 69e6e77 feat(metrics): add desktop telemetry queue
  • 78182c7 feat(metrics): persist anonymous telemetry install id
  • 9db3ec8 feat(metrics): add telemetry batch endpoint
  • 5e5b519 feat(metrics): map telemetry batches to analytics engine
  • 51da68b feat(metrics): configure telemetry analytics dataset
  • bfe72c9 feat(metrics): expose telemetry ipc api
  • 24bf5e8 feat(metrics): add telemetry contract
  • 618ba64 docs(metrics): add application metrics spec and implementation plan
  • 07c9233 chore(metrics): remove day-one metrics implementation plan document
  • 6d96545 test: align calendar popover label expectation
  • 46243ab fix: avoid return in editor sync finally
  • fc1b5af style: update sidebar theme colors and add sidebar label fade effect
  • b99043e test: add e2e coverage for journal properties collapse
  • 55c7ac6 test: tighten note collapse e2e — assert property row + hover before add
  • 3f27809 test: add e2e coverage for note properties collapse
  • 34f1ba5 feat: collapsible properties section in journal page
  • fde1fc8 chore: remove stale 'inline (no toggle header)' comment in note.tsx
  • 1c59311 feat: collapsible properties section in note page
  • fd0367e fix: re-read localStorage when noteId changes; tighten error-path tests
  • e30f8bb feat: add usePropertiesCollapsed hook for per-note panel state
  • b45b492 docs: add collapsible properties section implementation plan
  • 496a8eb docs: add collapsible properties section design spec
  • f463c54 feat(calendar): enhance CalendarTaskPopover with project color and tag click functionality
  • eb5c655 refactor(components): optimize state management in various components
  • 07d0c15 refactor(calendar): update CalendarTaskPopoverHeader to use status icons and remove completion checkbox
  • 0e61a2e fix(e2e): stabilize main e2e shards
  • 4dec241 chore(ipc): regenerate generated-ipc-invoke-map.ts
  • 952a1fa fix(tags): align toast assertions with i18n format
  • c68225b feat(i18n): add calendar task popover strings; convert async handlers to sync .catch
  • 448db71 feat(calendar): route Open task to tasks tab via tab viewState
  • e9c2aba feat(calendar): fork chip click on sourceType to task popover
  • 5543983 feat(calendar): add CalendarTaskPopover main component
  • b2690ad feat(calendar): add CalendarTaskPopoverActions with snooze submenu
  • 0f187d6 feat(calendar): add CalendarTaskPopoverSubtasks
  • 2d1c16c feat(calendar): add CalendarTaskPopoverMeta
  • cb8bc5c feat(calendar): add CalendarTaskPopoverHeader
  • e151aed feat(hooks): add useSubtasks query hook
  • 902948d feat(hooks): add useTask query hook
  • 41691d4 feat(day-panel): add selectedTaskId + openForTask for task drawer focus
  • 68d70c4 feat: add snooze-options util for calendar task popover
  • 5c1bfe5 feat: add format-task-due util for calendar task popover
  • 93deb3f docs(changelog): add calendar inbox-snooze click action entry
  • d71726b fix(calendar): route inbox-snooze error fallbacks through i18n
  • 4c1fc14 test(e2e): cover calendar inbox-snooze click → popover → actions
  • 8b1b6f4 feat(calendar): render CalendarInboxSnoozePopover in shell
  • e88f274 feat(calendar): wire inbox_snooze branch in handleSelectItem
  • a79efaf feat(calendar): add CalendarInboxSnoozePopover component
  • 8bfb7f2 feat(i18n): add inboxSnoozePopover strings to en/calendar
  • 1675524 refactor(i18n): optimize error message extraction and enhance button styles
  • 38c0fd0 refactor(i18n): enhance error message handling and button styles
  • c2582c2 refactor(i18n): streamline error message extraction and update button formatting
  • 52638a6 chore(i18n): migrate updater dialogs, tab menu, and tag toasts
  • 15c3c83 docs(i18n): document lint hardening rules
  • 349df36 test(i18n): add eslint plugin smoke coverage
  • b888e45 chore(i18n): migrate strings surfaced by lint rules
  • 6a67f17 chore(ipc): refresh generated bindings
  • abb7605 refactor(ipc): simplify function signatures in generated IPC invoke map
  • 9c4830c Populate Turkish i18n resources
  • ac07f7e refactor(eslint-i18n): scope no-error-fallback-literal to extractErrorMessage only
  • 18d4862 feat(eslint-i18n): register the three new rules in plugin barrel
  • 8af671e feat(eslint-i18n): add no-error-fallback-literal rule
  • 6f355fe feat(eslint-i18n): add no-toast-string-literal rule
  • 7f268d3 feat(eslint-i18n): add no-string-attribute-literals rule
  • d993200 refactor(i18n): use getFixedT for system namespace consumers
  • 2da4139 test(i18n): assert system namespace resolves in main process
  • 1334c9b test(i18n): assert locale change reaches system namespace
  • af2dbd0 feat(i18n): localize updater error fallback
  • fd301f6 feat(i18n): localize note export/import dialogs and IPC errors
  • 63d26e0 feat(i18n): localize vault folder picker dialog
  • 77b0eaf feat(i18n): localize reminder notification labels and validation
  • a82af78 feat(i18n): add main-process i18n singleton accessor
  • 905ed4c feat(i18n): add system namespace for main-process surface strings
  • 960cd53 Refactor i18n code for improved readability and consistency
  • d1de317 test(i18n): assert toasts render in active locale post Phase G
  • 023d288 feat(i18n): minimal Task 17 sweep — note.tsx toggle fallbacks
  • 48668df feat(i18n): migrate JSX state ternaries (sidebar/tabs/folder-view)
  • de4b078 feat(i18n): refactor repeat-utils to accept translator parameter
  • cc25c33 feat(i18n): migrate sync-context placeholder toast
  • 993df0d feat(i18n): migrate inbox triage-view error toasts
  • 54f79ab feat(i18n): migrate reminder feedback toasts
  • 35d658c feat(i18n): add notes.reminders.toast keys
  • c7976f1 feat(i18n): migrate version history + export dialog toasts
  • e5ef262 feat(i18n): migrate template editor + templates page strings
  • 148647d feat(i18n): add templates + version history + export toast keys
  • 8806233 feat(i18n): migrate note page toasts and local-only ternary
  • 5290e27 feat(i18n): add notes.page.toast keys for note page burn-down
  • 0da5bc8 feat(i18n): migrate drag-handler toasts to tasks namespace
  • 0d3d33b feat(i18n): migrate bulk + undoable task hook toasts to tasks namespace
  • 27fa6cf feat(i18n): add tasks toast keys for bulk + undoable actions
  • 58a3bf6 feat(i18n): migrate use-undo toasts to common namespace
  • 5d5cc6e feat(i18n): add common toast + recurrence keys for phase G burn-down
  • 4205776 docs: add CHANGELOG entry for i18n multi-language support
  • 994f17b docs(i18n): add forward-looking plans for phases G, H, I
  • 18d530c feat(i18n): burn down renderer TODO baseline
  • dd27af2 fix(i18n): ignore technical text in TODO burn-down
  • 6e4f765 feat(i18n): add enforcement tooling and phase plans
  • da664c8 chore(i18n): clean up Phase D error migration
  • a72c394 feat(i18n): migrate global error surfaces to namespace
  • 8335dfb feat(i18n): resolve centralized error copy from namespace
  • 3ff16cb feat(i18n): localize native menu item labels
  • 845ebe6 feat(i18n): populate Phase D main-process resources
  • 38c25bb docs(i18n): add phase c implementation plans
  • e10499b feat(i18n): migrate journal namespace
  • f1cf5e3 test(i18n): expect settings fallback locales
  • 04816b1 feat(i18n): migrate remaining settings panels
  • 63a722d chore(i18n): verify inbox namespace migration
  • 4b7ced5 feat(i18n): migrate account sync settings
  • fe55388 feat(i18n): migrate graph menu and tooltip copy
  • fe7936a feat(i18n): migrate graph controls copy
  • 6570368 feat(i18n): migrate graph page copy
  • 9a03d14 feat(i18n): migrate notes namespace
  • 4db845d test(i18n): cover inbox namespace fallback
  • f53c8f7 feat(i18n): migrate inbox insights strings
  • e70fac9 feat(i18n): migrate inbox bulk action strings
  • c0796b9 feat(i18n): migrate inbox content preview strings
  • 93ad053 test(i18n): cover graph namespace fallback
  • 71ce592 feat(i18n): add graph locale namespace
  • 47415de feat(i18n): migrate inbox detail and filing strings
  • 8f919d5 feat(i18n): migrate workspace settings panels
  • d55dfdd feat(i18n): migrate calendar dialogs and views
  • 32b4cea feat(i18n): migrate archived inbox strings
  • f23cd23 feat(i18n): migrate general and appearance settings
  • 0064edb feat(i18n): migrate calendar event editor
  • 1358415 feat(i18n): migrate representative task components
  • b34a206 feat(i18n): migrate inbox triage strings
  • 80eac15 feat(i18n): migrate inbox list and empty states
  • b219e09 feat(i18n): migrate calendar toolbar and filters
  • 940a612 feat(i18n): migrate settings shell strings
  • 1b39fb6 feat(i18n): migrate inbox toolbar strings
  • 987e3df feat(i18n): migrate tasks page copy
  • c341334 feat(i18n): populate settings namespace
  • d363a3a feat(i18n): add English inbox namespace
  • 66dcf84 feat(i18n): add tasks namespace
  • b432608 test(i18n): assert migrated common buttons flip in Turkish e2e
  • 51148d0 feat(i18n): migrate column-selector usage count to ICU plural
  • a44bdbe feat(i18n): migrate aria-label='Search' to common.action.search
  • 33cf721 feat(i18n): migrate settings Loading states to common namespace
  • a7ec454 feat(i18n): migrate folder-view Loading state to common namespace
  • 9c12138 feat(i18n): migrate calendar delete dialog Cancel button
  • 31d8c6a feat(i18n): migrate task delete dialog Cancel button
  • 2c4c68a feat(i18n): migrate note-tree delete dialog Cancel button
  • 35e02b1 feat(i18n): migrate bulk delete dialog buttons + ICU itemDelete key
  • 5e98ce8 feat(i18n): migrate unsaved-changes dialog buttons to common namespace
  • cf40722 test(i18n): verify ICU pluralization across en/tr/ar
  • ce75687 fix(i18n): replace broken i18next-icu with custom IcuFormatter (ESM interop)
  • 624ca58 feat(i18n): expand common namespace with universal vocabulary (en/tr/ar)
  • bd0a5bc feat(i18n): implement Phase B for common namespace with universal vocabulary and translations
  • 2dddb1c fix(i18n): avoid renderer provider barrel import
  • 27d9758 docs(i18n): add Tailwind logical-property rule
  • c5f2161 docs(i18n): add adding a locale checklist
  • 43ba6c8 test(i18n): cover language switching in e2e
  • 1fb64c7 feat(i18n): allow extractErrorMessage to resolve i18n keys
  • 7d4c587 feat(i18n): add language picker to settings
  • 118348b feat(i18n): add mirror-rtl utility
  • b8ea749 feat(i18n): wire renderer i18n boot and preload bridge
  • 2d5822f feat(i18n): add applyLocaleToDocument helper
  • 6b86442 feat(i18n): add useT and useDirection hooks
  • aeb6d82 feat(i18n): add i18n provider wrapper
  • fc194d6 feat(i18n): add renderer-process i18next instance factory
  • b78bdf6 feat(i18n): localize native Electron menu via t()
  • c004a07 feat(i18n): boot main-process i18n before menu and handlers
  • 6b31563 feat(i18n): add main-process locale IPC handler
  • 8fc884e feat(i18n): add LocaleChannels IPC constants
  • 008af2a feat(i18n): tighten GeneralSettings.language to LocaleSchema
  • 9709d7e feat(i18n): add main-process i18next instance factory
  • a7c4741 feat(i18n): add synchronous resource loader for main process
  • 8fb23e7 feat(i18n): seed locale JSONs for en/tr/ar and resources barrel
  • cfc3eb8 feat(i18n): export shared config and direction
  • 291c9d2 feat(i18n): add i18next type augmentation (resolves at Task 08)
  • ab9785d feat(i18n): add localeDirection helper via Intl.Locale.textInfo
  • 5cde163 feat(i18n): add display names and namespace registry config
  • 3417144 feat(i18n): add LocaleSchema and LocaleApi contract
  • f731bff feat(i18n): wire @memry/i18n into desktop app
  • 1120f0c feat(i18n): scaffold @memry/i18n package skeleton
  • 90cbeef Update development script to set MEMRY_DEVICE environment variable for Electron dev mode
  • 22330d9 Filter release upload to shipping artifacts only
  • a86f15d Fix release upload missing repo context
  • b434cc3 Remove Tauri migration; continue on Electron as sole desktop target
  • 0fc8df9 Verify mac signing cert before packaging
  • 0565afd Allow longer mac release notarization
  • bb5fb30 Speed up mac release signing walk
  • 1e058b5 Prune native build leftovers from desktop releases
  • f1f44df Fix mac release signing identity discovery
  • c74ddef Use workspace staging for Windows release packaging
  • fd65130 Fix mac and Windows release packaging
  • 94de173 Fix release packaging on CI platforms
  • 7e840f1 Fix desktop release asset builds
  • 6924d88 Split draft release and asset publishing workflows
  • 751e950 Skip Electron rebuild in CI unit tests
  • 4ca72a4 Fix dependency audit overrides
  • a63d544 Remove Electron freeze guard
  • 3af46a9 Add desktop draft release pipeline
  • 413da71 Add afterPack script to electron-builder configuration for app pruning
  • 33e4222 Update dependencies in package.json and pnpm-lock.yaml, enable code signing for macOS builds, and adjust build scripts for improved configuration handling.
  • f4d0197 Update .gitignore to include electron-builder.env, standardize @xmldom/xmldom version to 0.8.12 in package.json and pnpm-lock.yaml, and add new build script for signed macOS builds in desktop package.json.
  • 5192623 Implement CRUD operations for Blocknote in the notes module
  • 79161f3 m6(plan): introduce sync engine implementation plan and document manual dogfood follow-up
  • 28a1100 m5(renderer): align real Tauri command payloads
  • 2c66930 m5(plan): mark final verification blockers
  • 7f99acf m5(plan): close final verification ledger
  • 5893602 m5(rust): apply final rustfmt
  • de844ef m5(e2e): document runtime WebDriver platform support
  • e6edf11 m5(e2e): address runtime review gaps
  • 160caf2 m5(e2e): harden runtime scenario helpers
  • 9ca2a0f m5(e2e): cover notes runtime empty loading error offline states
  • f21b16d m5(e2e): prove runtime CRDT convergence across device origins
  • 25f2449 m5(e2e): cover runtime editor menu undo redo and paste
  • 14f8c1c m5(e2e): cover runtime typing latency and restart persistence
  • 2933565 m5(e2e): add runtime driver and vault helpers
  • 460c6c2 m5(e2e): add runtime Tauri harness dependencies
  • 0e9977c m5(e2e): shim real Tauri commands in browser mock lane
  • 559daf8 m5(contracts): align CRDT contract with Rust surface
  • 1014e34 m5(ipc): route notes and CRDT commands to Rust
  • 820256e m5(contracts): rehome notes and CRDT renderer contracts
  • 3b2cbbf m5(renderer): make ContentArea use the Rust-backed Yjs provider
  • 8b4f3ea m5(renderer): migrate Yjs provider to crdt command surface
  • 19e7252 m5(events): emit created note list-item payload
  • 72e97f7 m5(events): align note event names across Rust and renderer
  • 68a5748 m5(parity): require real notes CRDT commands and guard production mocks
  • 60550ab m5(bindings): register notes and CRDT command surface
  • a877624 m5(devtools): add debug-only runtime e2e helpers
  • 5abddd5 m5(crdt): seed first-open docs with BlockNote XML
  • 1ad0fc0 m5(crdt): satisfy markdown parser clippy
  • 778e79a m5(crdt): seed BlockNote Y.Doc from markdown
  • f0969f3 m5(crdt): markdown to BlockNote block list
  • 37337e8 m5(ipc): graduate notes mocks to real Rust
  • aa99419 m5(editor): bind BlockNote to shadow Y.Doc via YjsTauriProvider
  • c22053c m5(renderer): YjsTauriProvider with origin-guarded echo prevention
  • 1af8a09 m5(renderer): origin-tag helper for renderer Y.Doc echoes
  • e6d9ffd Implement M5 notes CRDT bridge
  • a903589 Fix CRDT command review issues
  • e0c1b72 m5(test): cover aggregate CRDT command flows
  • 9b241aa m5(cap): grant CRDT command permissions
  • 83445b1 m5(cmd): add CRDT get-or-init lazy entrypoint
  • d619094 m5(cmd): add CRDT sync step commands
  • 61c125b m5(cmd): return CRDT snapshot and state vector bytes
  • a94ce8d m5(cmd): stream oversized CRDT updates through chunks
  • 1996966 m5(cmd): crdt_apply_update with compaction threshold
  • d73663c m5(cmd): crdt_open_doc + crdt_close_doc with snapshot replay
  • 81bc7f8 Fix M5 notes command parity regressions
  • 559772c m5(parity): defer attachments to M6, export/version/import to M8
  • bb169d8 m5(cmd): notes_get_file plus native open/reveal wrappers
  • 8bb1f3b Refactor notes command imports and streamline code formatting
  • d753ff8 m5(cmd): property option mutations + delete_property_definition
  • 7087173 Fix notes wiki link previews and updates
  • bbca0f5 m5(cmd): property definition list/create/update/ensure
  • 66f56ba m5(cmd): notes_get_positions + get_all_positions + reorder
  • a7a1ffc m5(cmd): folder config get/set + template inheritance
  • 4fe0c09 m5(cmd): folder CRUD with cascading metadata updates
  • 9654f7b code-review: notes renderer wiring + Date adapter (codex findings 1,3)
  • 57f2610 code-review: notes Rust correctness fixes (codex findings 2,4,5,6,7)
  • bf4320e m5(bindings): regenerate after Phase E notes commands
  • 92ba0ff m5(test): aggregate commands_notes_test covering 7 happy paths
  • 9d82885 m5(cmd): notes_get_tags + notes_get_links + resolve/preview by title
  • 0eb4790 m5(cmd): notes_set_local_only + notes_get_local_only_count
  • dd907ad m5(cmd): notes_rename + notes_move + notes_exists
  • 33b1b18 Fix notes CRUD review findings
  • 9cf67dc m5(cmd): notes_list uses notes cache pagination
  • a193929 m5(cmd): notes_delete soft-deletes and trashes note file
  • ca4a6fa m5(cmd): notes_update updates body title and emoji
  • bc28107 m5(cmd): notes_get and notes_get_by_path
  • 1019d10 m5(cmd): notes_create writes vault FS + metadata + cache
  • 9fa72fa m5(cmd): scaffold commands/notes.rs with DTO types
  • c55845b m5(db): fix review findings for notes persistence
  • b5c0d7f m5(db): crdt snapshot compaction helpers
  • 0e811e3 m5(db): crdt update persistence helpers
  • 5d2e7bc m5(db): property_definitions CRUD helpers
  • 083ca67 m5(db): address folder config review gaps
  • 1398966 m5(build): make cargo test target forwarding work
  • 230aae1 m5(db): tag_definitions helpers
  • 9cd6f53 m5(db): folder_configs template helpers
  • 64423c5 m5(db): notes_cache refresh helpers
  • 67b61e1 m5(db): note_positions reorder helpers
  • cdfeb2a m5(db): note_metadata CRUD helpers
  • 51c6d4f m5(db): declare persistence modules
  • 5adbc91 m5(db): migration 0030 crdt_snapshots table
  • 971d558 m5(db): migration 0029 crdt_updates table
  • c6acf16 m5(build): make cargo clippy script accept forwarded args
  • d060604 m5(crdt): add wire event payload
  • 3ba9603 m5(crdt): compact doc into snapshot
  • 13713da m5(crdt): encode state vector v1
  • e46da61 m5(crdt): encode snapshot and diff v1
  • 5080006 m5(crdt): apply_update_v1 with origin tagging
  • 965c062 m5(crdt): implement DocStore with handle transactions
  • f7c3c1c m5(crdt): scaffold CrdtRuntime and DocStore with origin tag
  • 6fcb97c m5(error): add Crdt variant and From impls for yrs
  • 0d410c7 m5(deps): add lru and once_cell for CRDT layer
  • 549a5fe fix: update input handling for setupNewAccount and related tests
  • 0b9af1e feat: update setupNewAccount to accept input parameters and adjust related tests
  • fa923ab docs: sync contributor docs with tauri m4
  • de097d9 docs: document m4 auth ship
  • 2eb029b fix: align m4 auth linking parity
  • fa540d0 m4(build): exclude dev-only bins from tauri bundle
  • ae7911b m4(test): apply cargo fmt across auth+crypto modules
  • 8e0e826 m4(renderer): align ipc call sites with rust contract
  • ebf29a4 m4(rust): fix codex review findings — crypto guard + linking + devices contracts
  • 63426d9 m4(audit): classify auth crypto command parity
  • e9a1cc2 m4(renderer): route auth crypto commands to rust
  • a2abb97 m4(bindings): regenerate after auth contract alignment
  • 0544cbd m4(auth): align tauri auth+linking client with sync server contracts
  • decc8df m4(bindings): generate auth crypto command types
  • 5b71a7e m4(commands): expose auth crypto device commands
  • 2b52f81 m4(auth): add device linking flows
  • cc93dac m4(auth): implement otp setup and refresh flows
  • 0f67b6b m4(auth): add device identity storage
  • ed7b68f m4(sync): add auth http client
  • d4bd1c0 m4(security): add pii redaction helpers
  • 14919ee m4(secrets): add provider key status storage
  • fb43891 m4(auth): add vault key unlock flow
  • e908b41 m4(auth): add auth runtime state
  • eae2879 m4(keychain): add macos-backed secret store
  • d051f8b m4(crypto): add ed25519 signing helpers
  • fbd006f m4(crypto): add argon2id and kdf compatibility
  • b4355bf m4(crypto): add nonce and xchacha blob primitives
  • 8da08d2 m4(deps): add crypto keychain auth dependencies
  • ea026ce m3(lifecycle): register notify_flush_done in generate_handler
  • 4d93129 m3(bindings): regenerate AppError variants after vault work
  • 89749e9 m3(vault): enhanced vault command functionality with improved error handling and user feedback
  • afd407b m3(spike): drag-drop path resolution + documented fallback to dialog picker
  • 1f17200 m3(protocol): memry-file:// URI scheme with byte-range + missing-image fallback
  • dc54ee0 m3(commands): shell + dialog real impl + tauri-plugin-dialog wired
  • d3553eb m3(commands): vault_* command surface (open/close/list/read/write/...) + shell/dialog stubs
  • 0bd61de m3(vault): VaultRuntime + AppState extension + boot wiring
  • 3050621 m3(vault): watcher.rs notify+debounce emitting VaultEvent {path, kind}
  • e3253c4 m3(vault): registry.rs multi-vault list at /memry-{device}/vaults.json
  • 1fe321a m3(vault): preferences.rs vault config + UI prefs + count_markdown_files
  • f141778 m3(vault): notes_io.rs read/write/delete with content-hash skip + auto-repair
  • 5212537 m3(vault): frontmatter.rs serde_yaml_ng parse/serialize + Turkish/multiline/date round-trip
  • 7e135e4 m3(vault): fs.rs atomic_write + safe_read + list + sha256 content_hash
  • 66194d5 m3(vault): paths.rs canonicalize + traversal/symlink/hidden-dir guard
  • d22efc2 m3(vault): scaffold module + extend AppError with Vault/PathEscape/Io
  • b64e335 m3(deps): add notify, serde_yaml_ng, mime_guess, sha2, dunce, dialog plugin
  • ed34c6b m2(settings): implement settings_get/set/list commands with SQLite backing
  • cff7b17 m2(bench): 1000-row list query p50 < 20ms acceptance test
  • c749a1a m2(devx): add dev scripts and parity audit
  • 25be2d2 m2(devx): add MEMRY_DEVICE=A/B dev scripts
  • e510286 m2(settings): migrate useGeneralSettings onto real settings_get/set KV path
  • 55729a6 m2(renderer): swap settings_* mock for real invoke; useSettings hook wired
  • e1b2873 m2(bindings): regenerate with 22 domain types + settings commands
  • 75f6a2d m2(settings): settings_get/set/list commands + 5 Rust tests
  • 31e112e m2(db): add sync_{queue,devices,state,history}/search_reasons structs
  • 89ae821 m2(migrations): fix concurrent-replay race + FK pragma restore on error
  • f71cbe5 m2(db): add inbox/bookmarks/reminders/tag_definitions/folder_configs structs
  • 1d9f4a0 m2(db): add calendar_{events,sources,external_events,bindings} structs
  • 28ef02c m2(migrations): toggle FK off during replay; run integration tests by default
  • b0a6257 m2(db): add NoteMetadata/NotePosition/PropertyDefinition structs
  • f7b5dd8 m2(db): add Project/Status/Task structs with from_row helpers
  • 2a1682b m2(migrations): add full-apply integration tests (table set + field_clocks)
  • cd5c167 m2(migrations): port 0020-0028 hand-written (search_reasons/inbox_jobs/note_metadata/property_definitions/folder_configs/calendar tables and alters)
  • b231074 m2(migrations): port 0015-0019 (project/tag clocks, field_clocks, recent_searches + table rebuilds, capture_source)
  • 80963ff m2(migrations): port 0010-0014 (sync clocks on tasks/inbox/saved_filters, signing_public_key, current_device unique index)
  • b2ceda9 m2(migrations): port 0005-0009 (inbox alters, note_positions, tag_definitions, sync_devices/queue/state/history)
  • a68c5b5 m2(migrations): port 0001-0004 (bookmarks, inbox extensions, suggestion_feedback, reminders)
  • b1ced92 m2(migrations): port 0000 core schema (projects/statuses/tasks/task_notes/task_tags/inbox_items/saved_filters/settings)
  • 51fc2d9 m2(migrations): add runner and placeholders
  • 84d05b7 m2(db): add AppState Db and AppError
  • 5bd1fe3 m2(deps): add db foundation dependencies
  • 79e0755 chore: clean up .gitignore by removing internal docs & specs entry
  • a90bfe5 docs: note apps/desktop-tauri + freeze status in CLAUDE.md monorepo section
  • 4564c2a chore: M1 ship metadata — CHANGELOG + TODOS for 48 deferred review findings
  • 78e25e0 Document full Electron parity inventory and user-visible migration states for Tauri transition
  • 3cceb97 Enhance M1 documentation and address planning gaps for Tauri migration
  • dedb638 Update M1 documentation and visual baselines for Tauri migration
  • 4f17335 m1: close acceptance gate — phase j complete, milestone ready for m2
  • ddbd449 m1(parity): add visual baselines + README for m1 tauri renderer
  • 67d2753 m1(e2e): add playwright webkit suite — 34 specs covering every route + visual baselines
  • d9ce7b7 m1(lint): ignore apps/desktop-tauri/e2e/** so playwright specs don't need project-service
  • bd8c295 m1(port): return empty saved_filters_list until fixture schema matches contract
  • a21150e m1(bundle): restrict tauri bundle target to .app for m1 acceptance
  • 82c43a1 m1(port): align mock routes with renderer contracts so every route mounts
  • cc898dd m1(lint): mirror electron max-lines overrides for ported tauri files
  • a4e3d1e m1(tests): load tests/setup.ts into vitest so clearAllMocks + jest-polyfill run
  • 685e481 m1(tooling): add tauri-specta binding generation pipeline
  • 8073b3c m1(backend): add empty commands module + capability sanity check
  • 034ece4 m1(port): close codex-review gaps not covered by later milestones
  • a37038e m1(port): restore missing afterEach import in date-picker-calendar test
  • 608b6df m1(port): drive typecheck + tests to clean on production scope
  • fe74892 m1(port): delete window-api-forwarder + simplify lib/ipc-error for tauri
  • fd470cc m1(port): rewrite contexts/pages/components/features/sync to invoke()
  • acc30f5 m1(port): rewrite hooks to invoke() + widen setup-dom live-window lookup
  • a9ce8af m1(port): rewrite services to invoke() + tune test mock bridge
  • 995ef14 m1(port): copy preload types into tauri tree, redirect all imports
  • 2a8aca1 m1(port): add invoke forwarder helper + test mock bridge
  • e273ad4 m1(port): add tdd port-audit script
  • 61bf56c m1(port): fix @Renderer+@tests aliases flagged in Phase G review
  • fb1f108 m1(port): copy features/, pages/, services/, sync/ from electron renderer
  • 5e73d4f m1(port): copy components/ verbatim from electron renderer
  • e1a31ec Update TypeScript library target to ES2023 in tsconfig.json
  • 47dd7f2 m1(port): copy renderer entry + lib/hooks/contexts/types from electron
  • 38d6b19 m1(scripts): stub the four deferred verification scripts
  • 2e556fb m1(ci): rerun freeze guard on label changes + guard shared packages
  • e934148 m1(renderer): mount placeholder shell so the tauri window is not blank
  • f2b580b m1(ipc): loosen deepMerge generic so settings typechecks cleanly
  • ea3e730 m1(ipc): add typed listen wrapper for tauri events
  • 523da45 m1(ipc): add updater mock routes with no-update-available default
  • 5a072e0 m1(ipc): add saved filters mock routes with 6 fixtures
  • 930297e m1(ipc): add reminders mock routes with 6 fixtures
  • 6f1120b m1(ipc): add properties mock routes with 7 definitions
  • 1cf174b m1(ipc): add graph mock routes with 13 nodes and 12 edges
  • b46a196 m1(ipc): add search mock routes with 6 multi-kind hits
  • fed5f52 m1(ipc): add sync mock routes with idle default state
  • 619c1ba m1(ipc): add auth mock routes with unlocked-by-default device
  • f0f5295 m1(ipc): add vault mock routes with 2 fixture vaults
  • ffd1313 m1(ipc): add settings mock routes with realistic defaults
  • 7280bc2 m1(ipc): add templates mock routes with 6 fixtures
  • 8d5596d m1(ipc): add bookmarks mock routes with 12 fixtures
  • d99d5f1 m1(ipc): add tags mock routes with 8 fixture tags
  • 50ab0d9 m1(ipc): add journal mock routes with 7 entries spanning past week
  • edff0e0 m1(ipc): add inbox mock routes with 12 items across 5 statuses
  • 572b315 m1(ipc): add calendar mock routes with 22 events spanning 3 weeks
  • c5d2709 m1(ipc): add folders mock routes with 3 fixture folders
  • 4acef53 m1(ipc): add tasks mock routes with 15 fixtures across all statuses
  • b136b08 m1(ipc): add notes mock routes with 12 fixtures across 3 folders
  • b148bff m1(ipc): add mock router foundation with shared types
  • d40b7d7 m1(ipc): add typed invoke wrapper with mock/real router
  • 4e22a4d m1(styles): port tailwind config + global css from electron renderer
  • 0b92aad m1(deps): install renderer dependencies matching electron versions
  • c86f90d m1(cleanup): delete spikes/tauri-risk-discovery throwaway code
  • 5c78abb m1(freeze): mark apps/desktop as frozen + add CI path-guard
  • 2507a61 fix(spike-s1): correct playwright reporter + retry handling in bench
  • 8fed8db fix(m1): add stub main.tsx so vite build succeeds at end of Phase A
  • 4475d95 m1(scaffold): add typescript configs with @memry/* + @/* path aliases
  • 39b50c9 m1(scaffold): wire vite 7 + react 19 + tailwind v4 for tauri
  • bb565d2 m1(scaffold): init rust tauri 2.x backend with placeholder deps
  • 29eafe9 fix(githooks): increase MAX_LINES limit in pre-commit hook to accommodate larger files
  • 7c07162 m1(scaffold): create apps/desktop-tauri directory structure
  • 434df1b docs: address Codex adversarial review findings on migration planning
  • 7902d59 docs: add M1 implementation plan (Tauri skeleton + full renderer port)
  • 2742640 docs: add Electron → Tauri full migration design spec
  • 646b136 spike(s3): DB placement findings — 🟡 leaning 🟢 Option A
  • 14d38b4 spike(s2): CHECKPOINT 2 confirmation — 🟢 GREEN locked in
  • 6af2f54 spike(s2): fix Cargo default-run for tauri dev
  • adece26 spike(s2): Yjs placement findings — preliminary 🟢 GREEN
  • ce87e2b spike(s2): Prototype A — renderer-owned Y.Doc scaffolded
  • 2c9fb4e spike(s1): BlockNote + WKWebView compatibility findings — 🟢 GREEN
  • d39b9f9 spike(app): scaffold Tauri 2.x app with React+TS template
  • 36dea55 spike(setup): initialize spike 0 tauri risk discovery
  • 716ccd9 Update .gitignore to remove unnecessary entries and streamline ignored files
  • d5d48ff Publish unsigned Windows installer
  • 2149af5 Fix updater test imports
  • 6861b07 Add desktop release pipeline and updater
  • 108495e refactor(certificates): streamline certificate hash checking and extraction
  • f9ac55d refactor(sidebar): remove keyboard shortcuts and clean up sidebar navigation
  • aac280a feat(calendar): enhance event hover functionality and color management
  • eb92ff0 feat(calendar): add snoozeOffsetMinutes to calendar projections and enhance seed scripts
  • 9e678f6 Update sidebar navigation icons
  • b0ee82e fix(ci): regenerate IPC and RPC bindings
  • 6c20833 refactor(calendar): update CalendarItemChip styling and color management
  • d4d038a feat: per-type icons on calendar events, tasks sidebar, inbox snooze
  • 670e4a8 refactor(calendar): enhance visual type handling and styles across components
  • d12a0e3 feat: typed indicator dots in sidebar mini-calendar on calendar tab
  • 41b6293 fix(calendar): restore delete-event guard + mock native context menu in tests
  • 90b1396 feat(calendar): event dots + configurable day-cell click in Day Panel
  • d2a46aa feat(calendar): add selectedItemId prop to calendar views and update CalendarItemChip for selection highlighting
  • 0f66aa9 refactor(calendar): streamline CalendarItemChip component and enhance visual type styles
  • d61a800 fix(calendar): include weekend utility in calendar week view
  • 6c26cd9 refactor(calendar): enhance calendar month view with weekend highlighting and update visual type metadata styles
  • e625cd0 chore: regenerate IPC contracts (final)
  • f94d2f5 docs: add changelog entry for calendar sync triggers
  • 9a90a13 chore: regenerate IPC contracts and skills lock
  • 1ece8f5 build: add --mode flags to dev scripts
  • 802a7db test(calendar): update tests and time grid marquee for visual type filtering
  • ee7be91 fix(calendar): pass visualType selections to calendar views
  • 02118e8 feat(calendar): add visual type filtering and event deletion to calendar UI
  • c22aa61 feat(calendar): add DeleteCalendarEventDialog component
  • 6422027 feat(calendar): add useDeleteCalendarEvent mutation hook
  • dbfac00 feat(calendar): add visual type metadata and order constants
  • 2c25ca3 feat(calendar): export CalendarProjectionVisualType in RPC contract
  • 5478bb8 fix(calendar): sync Google Calendar on focus, resume, and manual refresh
  • 76a8557 fix(calendar): lay out overlapping events in side-by-side lanes
  • 272d597 fix(a11y): disambiguate "Go back" aria-labels across app
  • a4b6855 fix(e2e): align calendar + tags tests with M7 redesign
  • 27170e8 ci(e2e): enable Google Calendar E2E suites in workflow
  • 1a9ab1c ci: run only changed e2e tests on PRs, full suite on main
  • 00e0da5 chore(desktop): regenerate IPC invoke map + RPC bindings to canonical form
  • 550ea68 feat(calendar): verify Memry → Google write-back via direct-push E2E
  • 49b6caa chore(calendar): drop invented env-var gate in push-channels e2e
  • b725a8d refactor(tests): improve code formatting and readability in test files
  • f3811d5 feat(calendar): verify Google Calendar two-way sync via direct-pull E2E
  • bc7bdaf feat(calendar): scaffold Google Calendar E2E test hooks (Phase A)
  • 03108b4 fix: update webhook URL and adjust SQLite class references in configuration
  • bd82ef6 docs: update google calendar phase 2 spec
  • b4876a3 feat: finish google calendar phase 2 m7 redesign
  • fce2c2c fix calendar multi-account google routing
  • f91ba90 refactor(calendar): extract push-conflict-retry from sync-service (M6 T7)
  • db53494 feat(calendar): sync-health surface, lastError column, retry IPC (M6 T6)
  • 7ea3e4e feat(calendar): scope DISCONNECT_PROVIDER to a single account (M6 T5)
  • 0ae75ce feat(calendar): route Google push by target calendar's account (M6 T4)
  • 80db5c4 feat(calendar): provider status IPC returns per-account array (M6 T3)
  • ed9a56a chore: absorb prettier reformats from prior session
  • 5e9456c feat(calendar): OAuth flow uses Google profile email as accountId (M6 T2)
  • be10690 feat(calendar): partition keytar entries by accountId (M6 T1)
  • 169b12b fix(calendar): address Codex review findings on M5 (EXDATE tz, all-day exceptions, null propagation, external sync)
  • 3bd7a5a refactor(desktop): streamline sidebar and window controls with improved UI elements
  • 11865cc chore(calendar): regenerate IPC + typecheck fix after rich-field contract shift (M5 T7)
  • f68b09e feat(calendar): read-only rich metadata panel in event editor (M5 T6)
  • 9223b2e feat(calendar): field-level merge covers rich Google fields (M5 T5)
  • f0e6236 feat(calendar): single-instance recurring edits + rich field promotion (M5 T4)
  • 65a16c2 feat(calendar): Memry → Google write path carries rich fields + EXDATE (M5 T3)
  • c770b5f feat(calendar): Google → Memry mapper carries attendees, reminders, visibility, colorId, conferenceData, exception pointers (M5 T2)
  • 01cc4f0 feat(calendar): add rich fields + recurrence exception columns (M5 T1)
  • c4d8efe refactor(desktop): update sidebar toggle icons and improve sidebar trigger functionality
  • b4f69de refactor(desktop): split runner/cadence into google-sync-runner.ts
  • e2111de test(desktop): scaffold push-channel E2E behind GOOGLE_CALENDAR_E2E=1
  • b7276b6 feat(desktop): wire GooglePushRuntime into sync, IPC, and the engine
  • a929fc0 feat(desktop): back off calendar polling to 30 min while push channels are live
  • c825044 feat(desktop): route WS calendar_changes_available to a deps callback
  • a1b3d26 feat(desktop): add GoogleChannelManager singleton for push-channel lifecycle
  • 6a906e1 feat(desktop): extend GoogleCalendarClient with watchCalendar + stopChannel
  • a84ccfa fix(sync-server): tighten test mocks to satisfy tsc strict types
  • f0bb5c3 feat(sync-server): sweep expired google_calendar_channels in cron
  • 2d5a251 feat(sync-server): add /calendar/channels CRUD routes
  • 62f13b2 feat(sync-server): POST /webhooks/google-calendar fans out to user DO
  • 521ed98 feat(sync-server): add google-webhooks signature and lookup helpers
  • 4020327 feat(desktop): sidebar footer lays sync icon + vault switcher side by side
  • e57a9c4 feat(sync-server): carry sourceId through UserSyncState broadcast
  • fb9eea7 fix(desktop): restore WindowControls clickability when sidebar collapsed
  • ba95c7a feat(sync-server): add google_calendar_channels D1 table
  • 9e593f8 refactor(desktop): replace two-anchor WindowControls with viewport-fixed overlay
  • f029440 test(calendar): e2e coverage for M2 promote-external flow
  • ae7dfeb test(desktop): e2e coverage for WindowControls two-anchor layout
  • 7ac7c28 docs(desktop): add back-pointer comment on tab-bar WindowControls gate
  • a46bc31 feat(desktop): render WindowControls in leftmost tab-bar when sidebar hidden
  • aab380c refactor(desktop): move VaultSwitcher from sidebar header to footer
  • dfb64eb feat(desktop): render WindowControls in sidebar header
  • b4005da feat(desktop): switch sidebar to offcanvas collapse mode
  • 4a8bfc6 refactor(desktop): address WindowControls review feedback
  • ebcf0e8 feat(desktop): add WindowControls cluster component
  • 2138dfa chore(ipc): exempt generated rpc/ipc files from prettier
  • 3b85f91 feat(calendar): M3 — etag + field-clock conflict resolution
  • ba99b71 fix(calendar): address Codex M2 review findings — persist picker, register target sources, reopen onboarding
  • 912178b chore(calendar): clear lint warnings + reset generated IPC to canonical form
  • 347474d feat(calendar): M2 editable externals — Edit button + promote confirm dialog
  • 1b6476a feat(calendar): M2 first-connect onboarding modal for default target calendar
  • 9fe6738 feat(calendar): M2 renderer calendar picker + Google list hook
  • 9a565d0 feat(calendar): M2 onboarding + promote-external handlers
  • f432ed6 feat(calendar): M2 push resolution — target → setting → Memry fallback
  • 707cb68 feat(calendar): M2 settings IPC — persist Google Calendar defaults
  • 18dc717 chore(hooks): raise pre-commit MAX_LINES ceiling from 800 to 1000
  • 0334daf feat(calendar): M2 contracts — targetCalendarId, promote/list IPC, Google settings
  • e2da30d refactor(contracts): extract Notes and Inbox IPC channels from ipc-channels.ts
  • c4b66e1 feat(calendar): add target_calendar_id column for per-event Google targeting
  • 2a57dad docs(calendar): clarify 410 catch is defensive insurance against future client variants
  • 8c85266 fix(calendar): clear syncCursor and retry on Google 410 Gone
  • ddb99a5 test(calendar): pin no-phantom-mirror invariant for unseen Google cancellations
  • 6998f84 fix(calendar): archive mirror row when unbound Google event is cancelled
  • 70ebc62 fix(calendar): propagate Google cancellations through applyGoogleCalendarDelete
  • b0c44e2 fix(calendar): route bound Google updates through applyGoogleCalendarWriteback
  • fe52234 feat(calendar): add findCalendarBindingByRemoteEvent helper
  • f1432c2 feat(calendar): replace event-edit drawer with anchored popover
  • 0eb2ae0 fix(calendar): chip fills the full duration slot in day/week views
  • 7a3eea8 fix(calendar): create event on marquee Save-button click
  • 1606458 test(e2e): skip V6 CRDT on CI — sync engine cursor race
  • 86170c9 test(e2e): replace wall-clock waits with product-emitted signals
  • 5f1cd8e build(e2e): auto-rebuild better-sqlite3 for Electron ABI before test:e2e
  • 59f8dbb docs(changelog): record Day view all-day strip and V6 poll fix
  • 24f04d6 test(e2e): stabilize V6 CRDT convergence under CI load
  • 3d3a32e fix(calendar): render all-day items in Day view
  • b50439e feat(calendar): route sidebar date clicks to calendar view when active
  • 936e3ca feat(calendar): infinite horizontal day scroll in week view
  • 9fcd4db fix(e2e): stabilize shard 1 CI flakes
  • bb69a40 fix(calendar): surface silent IPC failures from quick-create/editor save
  • 05c0186 docs(changelog): fill PR #266 reference
  • fee6906 feat(calendar): use global right sidebar in Day view
  • 5142acf fix(e2e): stabilize two-note CRDT sync variant
  • c81270a fix(ci): fall back to notes tree in e2e lookup
  • c64ca5a fix(settings): always open on Account section, drop cross-session state
  • 955ca13 fix(ci): stabilize crdt variant shard
  • fcacaec ci: parallelize quality jobs and add turbo cache
  • 75cf66d test(settings): drop assertion for removed 'Memry' label
  • 3591623 build: add max-lines disable to IPC map generator and regenerate bindings
  • ed84d68 style: disable max-lines for auto-generated IPC invoke map
  • 19a3b53 refactor(settings): compact Google Calendar connected layout
  • 7ffce61 chore: sync generated IPC map, preload RPC, and formatting fixes
  • 78d3e8a docs: add changelog entry for Google Calendar OAuth error diagnostics
  • 0d3aa4a test(calendar/google): assert user-friendly error and structured log on token 400
  • 6d05641 fix(calendar/google): add structured error logging and user-friendly messages for OAuth failures
  • 401ac5f fix(ci): stabilize flaky e2e selectors
  • fd25059 fix(ci): extend e2e job timeout
  • cae90bc refactor(crdt): move IPC handler registration into ipc/crdt-handlers.ts
  • ecf244b fix(crdt): keep IPC handlers app-scoped to fix signout handler race
  • 54844a0 fix(ci): make e2e sync round-trip
  • a5df22d fix(calendar): persist events created via marquee quick-create
  • 68329cf refactor(calendar): extract localInputToIso date helper
  • 89e538b fix(ci): sequence manual sync smoke
  • f82896e fix(ci): stabilize manual sync smoke
  • e5c1021 feat(calendar): auto-scroll day/week views to current time on open
  • 718f3cb build(hooks): exempt root CHANGELOG.md from 800-line pre-commit limit
  • 2cd8104 fix(ci): restore main workflow checks
  • fcb4852 feat(calendar): gate Google Calendar sync behind Memry auth state (#258)
  • a3038db fix(ci): regenerate IPC and RPC bindings
  • 8a46b2a refactor(e2e): streamline Electron test fixtures and improve app life… (#257)
  • 15e484f fix(e2e): bump expect.timeout to 20s for CI shard headroom (#256)
  • c55231e fix(e2e): make T541 row-position drop test independent of task sort order (#254)
  • 99f6904 fix(e2e): give note-list sync poll 30s headroom for CI runners (#255)
  • 8373675 fix(e2e): unblock tags-rename-delete (emit tags-changed + fix selectors) (#253)
  • 4b840b2 fix(e2e): race-proof onboarding dismiss by setting flag via IPC
  • 213f8e6 ci(e2e): two-stage gnome-keyring init so libsecret finds login collection
  • c7c7d92 ci(e2e): start gnome-keyring+dbus session so keytar can store device keys
  • c074502 fix(preload): regenerate IPC/RPC bindings and mock electron-log in tests
  • 2432c5b feat(preload): enhance API structure with bookmarks and content management
  • 0d617ad chore(deps): remove unused libsodium-wrappers dep, keep -sumo variant (#251)
  • aef1cfa chore(drizzle): align drizzle-orm to ^0.45.2 + add upgrading-drizzle.md (#250)
  • 61fab89 chore(typescript): align typescript to ^5.9.3 across workspace (#243)
  • e614ba1 chore(native): add pnpm check:native mismatch detection script (#248)
  • 36c459e ci(lockfile): add drift detection workflow + outdated:check script (#246)
  • 8dcf16b docs(testing): audit vitest 4 patterns + add testing-vitest.md (#249)
  • 0392c98 docs(electron): add upgrading-electron.md monthly bump process doc (#247)
  • 85b0401 refactor(renderer): adopt React 19 ref-as-prop + useActionState pilots (#245)
  • f627d7c chore(deps): add renovate config with grouped rules (#244)
  • ce46950 test(reminders): cover target title + existence resolution paths (#239)
  • d90fa10 feat(journal): wire image upload + focus mode in editor toolbar (#240)
  • 7190dd6 feat(sidebar): wire tag rename + delete actions (#238)
  • a2e3d94 feat(tabs): implement maximize/reset-split chord shortcuts + cross-group tab movement (#237)
  • 1168f07 chore(turbo): declare typecheck outputs + scope cache inputs (#235)
  • 1be8a10 refactor(sync): split engine.test.ts into 4 domain files + shared tests/utils/engine-mocks.ts (#233)
  • 1217430 refactor(sync/item-handlers): consolidate test fixtures into shared tests/utils/fixtures/ (#234)
  • 2df88d0 refactor(vault): split notes.ts into focused files behind facade (#232)
  • c0c74f5 refactor(sync): extract BaseItemHandler + migrate 13 handlers (#231)
  • 696fdee test(contracts): add settings + plumbing schema coverage (#228)
  • f332a66 test(contracts): add domain APIs schema coverage (#227)
  • abda37d test(contracts): add sync cluster schema coverage (#236)
  • ce3c700 test(contracts): add auth + crypto + attachments schema coverage (#229)
  • 3291563 test(storage): add coverage for storage-data + storage-vault (#230)
  • d3f5e22 test(rpc): add schema + domain coverage (#226)
  • 34c0519 test(domain-tasks): add coverage for queries + commands (#225)
  • 038af73 refactor(ipc): apply registerCommand wrapper to sync handlers (Phase 2.5) (#242)
  • 21f958e refactor(ipc): split sync-handlers.ts god module (Phase 2.1–2.4) (#241)
  • b2483fb chore(vitest): include domain-tasks + rpc in shared project (#224)
  • cac7086 test(crypto): add cbor + index surface coverage (#223)
  • 58b8672 test(crypto): add keys + primitives coverage with Argon2id parameter lock (#220)
  • 31bd11d test(crypto): add recovery + rotation coverage (rotation had zero tests) (Phase 1.6) (#222)
  • 0e951b6 test(crypto): keychain coverage with mocked keytar + optional macOS E2E (Phase 1.5) (#221)
  • bc08f8c test(crypto): add dedicated signatures coverage (RFC 8032 + tombstone regression) (Phase 1.3) (#219)
  • 2053bc1 test(crypto): expand encryption coverage with golden vectors + boundary cases (Phase 1.2) (#218)
  • 965e1f0 chore(crypto): add Phase 1 golden-vector fixture scaffolding (#217)
  • c8c7ca0 refactor(sync): remove or justify remaining any usages in sync tests (Phase 1.9) (#216)
  • bfc63da test(crypto): add encryption coverage
  • 0ba4da2 test(calendar): stabilize page fixtures by local date
  • b67c9da chore(hooks): add 800-line file size pre-commit gate (#209)
  • 04da2f1 refactor(ipc): extract registerCommand wrapper and migrate notes handlers
  • fd4eb44 test(coverage): ratchet vitest thresholds from measured baseline
  • 2c5620c chore(lint): enforce 800-line max-lines rule
  • 9792f96 fix(preload): swap raw console.error for createLogger in contextBridge catch
  • 9b94a14 refactor(embeddings): type extractor with FeatureExtractionPipeline
  • 17b92bb fix(types): unblock websocket.test.ts type errors
  • 3a92828 build(ipc): regenerate invoke map after rebase
  • 083e4bd build(deps): bump @hono/node-server and esbuild to close known vulns
  • 278075d fix(ipc): regenerate invoke map to match current handler signatures
  • 36bd436 fix(ipc): regenerate preload RPC bindings to match current contracts
  • 6e5934f test(calendar): add comprehensive e2e suite covering views, filters, editor
  • 22720b2 style: reformat calendar source and related components via prettier
  • 014ff79 build(ipc): regenerate IPC invoke map and preload RPC bindings
  • 837c9a6 chore(deps): bump security overrides for hono-node-server and esbuild
  • 5b0259e test(calendar): fix flaky calendar page + ipc test suites
  • 148551e build(ipc): regenerate RPC bindings and IPC invoke map
  • 1de18e5 docs(changelog): patch TBD placeholder with PR #202
  • 4fdb6db docs(changelog): add entry for Vim Hint Mode
  • 13a2c27 test(hint-mode): add e2e tests for activation, narrowing, auto-click
  • ae6aa6b refactor(hint-mode): post-review polish on overlay, activation, and labels
  • a89e76f fix(hint-mode): address adversarial review findings
  • 4e60871 fix(hint-mode): use e.code for Alt+F on macOS + clamp badge position
  • d9a59ed test(hint-mode): add integration tests for HintModeProvider
  • 9a59ed5 feat(hint-mode): wire HintModeProvider and overlay into App
  • aa39369 feat(hint-mode): add HINT status indicator
  • b5476a1 feat(hint-mode): add HintOverlay portal rendering positioned badges
  • ad67bce feat(hint-mode): add HintBadge component with narrowing feedback
  • 7af86e7 feat(hint-mode): add activation hook with F / Alt+F / Esc handling
  • 7cc192f feat(hint-mode): suspend shortcuts when hint mode is active
  • 068da62 feat(hint-mode): add HintModeProvider context with module-level ref
  • 293f69d feat(hint-mode): add mnemonic-first label assigner
  • daad1ca feat(hint-mode): add DOM scanner with visibility filters
  • 768cb8d feat(calendar): live marquee preview with anchored popover
  • 14cd17c feat(hint-mode): add type definitions
  • 7d9a49b chore: remove pre-push hook for test execution
  • f5780b7 refactor: update IPC and RPC interfaces for improved type safety and consistency
  • 9482dc4 fix(calendar): single click on empty space does nothing, only drag or double-click creates events
  • 46f86b3 chore(calendar): remove internal marquee components from barrel exports
  • 31cc538 fix(calendar): add click-outside dismiss + fix week view popover positioning
  • d4ae454 chore(calendar): update barrel exports for marquee components
  • 9334f2c feat(calendar): wire marquee-to-create into month view
  • e41e2b6 feat(calendar): add useMonthGridMarquee hook for date-range drag
  • 28717dc feat(calendar): wire marquee-to-create into week view
  • 1da4fd7 feat(calendar): wire marquee-to-create into day view
  • 5459522 feat(calendar): add CalendarQuickCreatePopover with keyboard shortcuts
  • f323fc6 feat(calendar): add MarqueeSelectionOverlay component
  • f73c39b feat(calendar): add useTimeGridMarquee hook for drag-to-create
  • 4d810f3 refactor(calendar): add Math.round to pixel geometry + clarify END_OF_DAY constant
  • f9d0b99 chore: add skills-lock.json for shadcn/ui skill
  • 14e7894 docs: add implementation plans for clock format and calendar marquee
  • f071be3 feat(calendar): responsive month view and toolbar via container queries
  • b583021 chore: add .agents/ to gitignore
  • a9dc2d9 feat(calendar): add snap math utilities for marquee time selection
  • 976197e test(settings): update inbox-utils tests for clockFormat parameter
  • c294c4e feat(settings): wire inbox, content-section, and journal to clockFormat
  • f7af387 feat(settings): wire reminder, snooze, and related callers to clockFormat
  • 150888c feat(settings): wire task time formatting to clockFormat
  • 4bde216 feat(calendar): wire day/week/year views and item chip to clockFormat setting
  • 944f436 feat(settings): add time format dropdown to general settings UI
  • 577e6c8 feat(settings): add clockFormat to GeneralSettings schema
  • ff8f0b8 feat(settings): add shared time-format utility with tests
  • 00e6c75 feat(calendar): persist view mode across tab switches and app restarts
  • e86d37d refactor(calendar): replace hardcoded colors with theme tokens, redesign toolbar and year view
  • 7d001f5 feat(calendar): enhance Google Calendar integration with client secret support
  • 5c1660a feat(calendar): enhance event input and synchronization capabilities
  • ba911fa feat(calendar): enhance synchronization and projection updates
  • 0570bb9 fix: align calendar views with local dates
  • 8eb416f feat: add Google Calendar settings controls
  • 2f9a7eb feat: reuse calendar projection in journal
  • 95225c9 feat: add calendar workspace UI
  • cc9d341 feat: add calendar sync and Google provider backend
  • feb38f4 feat(calendar): integrate calendar event types and sync telemetry
  • 8c4c8cc docs: add Google Calendar phase 1 design spec
  • 96f32f0 fix(desktop): normalize Windows inbox filing paths
  • bd7115b chore: update CHANGELOG for sidebar nav alignment
  • 0174f6f style: align sidebar nav rows with folder/file row styling
  • 46acfe1 fix(sync-server): exhaust folder_config in sync telemetry mapping
  • aac403d fix(sync-server): exhaust folder_config in sync telemetry mapping
  • c750335 chore: restore IPC bindings to match contracts
  • 13641e5 chore: remove renderer and embeddings startup logs, trim tab persistence
  • 63c77e1 chore: reduce vault and CRDT startup log verbosity
  • 8e93916 chore: remove redundant IPC handler registration logs
  • 70344cd chore: silence dotenv banner and OPENAI_API_KEY notice
  • 957eb24 docs: update changelog for 2026-04-11 settings scroll fix and sidebar reorder
  • b224d46 feat: move search and new-note actions to sidebar top for faster access
  • 9459e8f fix: correct settings modal flex layout and overflow handling
  • 1332182 chore: regenerate IPC bindings
  • 7d8448a chore: regenerate IPC bindings for folder_config event
  • 607a3a8 refactor: extract folder-config sync effects to respect architecture boundaries
  • 3288aa7 feat: prefer DB folder icon in getFolders()
  • 17acdaa feat: add folder config updated event to renderer pipeline
  • 10e1597 fix: include path in folder_config delete snapshot payloads
  • 641fe9d feat: wire notes IPC handlers to folder_config sync
  • f0fd8b5 feat: add folder-config sync service and local mutations registry
  • 495c095 feat: implement folder-config sync handler
  • 6389f96 test: add folder-config-handler tests (RED)
  • 794b3ee feat: add folder_config sync contracts (type, payload, IPC event)
  • 06ef264 feat: add folder_configs DB table for folder icon sync
  • b744ea9 fix: avoid node Buffer in sync-server CRDT test
  • a740242 fix: guard full-sync CRDT catch-up when index db is unavailable
  • ee4da92 chore: mark all checklist items as complete for CRDT sync end-to-end testing
  • 935bbe0 feat: add writeback debug state tracking and enhance CRDT synchronization with applied sequence management
  • 3ccd9ef feat: add getAllCrdtNoteIds function to retrieve CRDT note IDs and integrate it into FullSyncRunner
  • 1976309 feat: extend CRDT functionality with new test hooks for pending counts and document conversion
  • c2e364d feat: enhance CRDT provider with optional seeding and improve network monitoring for sync control
  • 80451e0 feat: add event listener for opening test notes and enhance network control with sync helpers
  • 692b185 feat: implement test-only network control for deterministic online/offline transitions
  • c63e580 test: enhance main index tests to skip single-instance lock for multi-device scenarios
  • 8f1aa26 chore: update example environment variables for sync-server with new Google redirect URI and OTP HMAC key
  • dcc3a45 test: add test for maintaining hovered row insertion target during drag events
  • 991605c test: align inbox IPC handler coverage with domain delegation
  • 46f78a2 refactor: move note writes behind projection events
  • 2c3cfa4 chore: refresh pnpm lockfile
  • 4392b87 refactor: extract inbox domain and thin ipc handlers
  • 5ec86a1 refactor: update architecture reset checklist and progress notes
  • 3ce9949 refactor(sync-server): restrict record transport payloads
  • ccb07e6 refactor(sync): align phase 7 record transport
  • 73d7cba refactor: continue projection pipeline cleanup
  • 6bd078b fix: remove domain-inbox references reintroduced by merge
  • 70d5ffa docs: add changelog for sync adapter registry and architecture reset
  • 3fae4d4 chore: update architecture boundary rules and plan checklist for Phase 5
  • e28b1b4 fix: restore floating promise void prefix, deps array, and stable empty-array refs
  • 9b78d9f fix: restore proxy traps on createWindowApiForwarder
  • 9ad8c0a fix: restore transaction atomicity, Zod validation, and error handling in inbox handlers
  • f801455 refactor: route all sync dispatch through local-mutations adapter registry
  • 60b84b3 feat: add local-mutations sync adapter registry
  • 32a22fb fix: clean up App.tsx stale comments and restore proxy tests
  • 5556a15 fix: add projection flush to sync handlers and journal IPC
  • f7839e4 refactor: extract note commands into domain layer
  • 914d289 fix: add projection flush after note cache operations in vault layer
  • 9f042cc refactor: migrate note-sync from direct DB writes to projection events
  • c66e144 docs: update changelog and phase 3 checklist progress
  • 2ef4247 refactor: simplify TasksProvider to pure context shell
  • 81374b7 refactor: extract inbox domain logic from IPC handlers
  • 07baa6c build: wire @memry/domain-inbox into desktop app
  • d98cf42 feat: add @memry/domain-inbox package
  • 7cd499e docs: add changelog entry for RPC type consolidation
  • 41a7d1f refactor: streamline task context and queries
  • 00ddf5d refactor: enhance createWindowApiForwarder with additional proxy handlers
  • a83eb1a refactor: update inbox types and improve type exports
  • 68308ef refactor: update inbox-health-view imports to use @memry/rpc types
  • 1a290a0 refactor: update imports to use @memry/rpc type sources
  • ff5ed1e refactor: consolidate type exports via @memry/rpc packages
  • c319424 refactor: consolidate service API delegation via createWindowApiForwarder
  • e8ca3a5 feat: add createWindowApiForwarder utility for API proxy delegation
  • 1e14796 fix: update generated IPC invoke map and RPC bindings
  • edfc1d9 fix: regenerate IPC and RPC bindings
  • db77e26 fix: update test mocks for requireDatabase and store facades
  • 428fd6f fix: regenerate RPC and IPC bindings in sync
  • aca592f fix: add requireDatabase to test mocks
  • 0ecd5e1 fix: regenerate IPC invoke map
  • a246aa6 fix: regenerate RPC bindings
  • bee6d78 fix: remove unused DataDb type imports
  • 553430f fix: export requireDatabase from database module
  • a99f4e8 fix: regenerate IPC invoke map
  • 10cdd42 fix: regenerate RPC bindings
  • bf219b6 refactor: enforce architectural boundaries with typed database facades
  • f904bf0 docs: remove outdated design documents for calendar integration and hierarchical tags
  • 5554eb2 docs: update architecture reset plans for phases 01-07
  • ec816c0 Fix CI test mocks for canonical note metadata
  • c093ead Refresh lockfile for architecture reset packages
  • 79b6023 fix: resolve drizzle audit failure
  • fc42401 fix: unblock ci for rpc unification
  • 4caf8b0 refactor: remove legacy embedding queue
  • 746f31d Refactor note and journal canonical metadata
  • 8e87585 refactor: unify preload rpc and renderer types
  • 8219e4a refactor: add projection pipeline runtime
  • 577f985 refactor tasks vertical slice architecture
  • 59aa2e8 fix inbox slice ci
  • 2088be0 refactor(sync-server): align record and crdt transports
  • f60e006 refactor: simplify sync core
  • a87f8b6 add durable inbox job pipeline
  • 53f2db3 chore: add architecture boundary guardrails
  • 785538c docs: tighten architecture reset phase 00 plan
  • 551c366 docs: add architecture reset phased roadmap
  • 5fc25a5 fix: restore batched task hook updates
  • c48efd6 test(e2e): fix pre-existing failing tests in tasks/tabs/journal suites
  • 98771d1 feat(marquee): add Tab/Shift+Tab indent/outdent support to marquee selections
  • d1905d9 refactor: remove effect sync from tree tabs and voice UI
  • e360c3e refactor: remove effect sync from note and journal editors
  • 8bb959b refactor: remove effect-driven UI reset flows
  • a703cb3 refactor: derive task page state instead of syncing it
  • dea934a refactor: drop redundant loading resets in settings hooks
  • bfdbd5e feat(marquee): add Tab/Shift+Tab indent/outdent support to marquee selections
  • c90382e fix: make empty task blocks clickable with placeholder text
  • 10d12ae feat(marquee): extend block marquee selection to journal page
  • 94e2021 feat(marquee): support non-textblock selection + exclude non-editor panels
  • 675019f feat(marquee): extend hit zone to full scroll-area width
  • 593c5db fix(marquee): allow gutter-initiated drags to bypass text-selection gate
  • d268767 style(marquee): scope active-state selectors to .marquee-zone
  • ac8909b feat(marquee): mount marquee zone wrapper around editor with extended hit area
  • 30f9247 refactor(marquee): document trigger-el state choice and clean inherited prop
  • c406bca refactor(marquee): consume new hook shape and portal overlay into trigger zone
  • a6bccf7 refactor(marquee): tighten hook deps and restore intent comments
  • 85205c5 refactor(marquee): split block container from trigger container in marquee hook
  • ab756d9 test: fix marquee gray-strip drag coordinates and constant naming
  • 4594f42 test: add failing e2e cases for marquee gray-strip drag
  • 879de00 test: add marquee selection e2e tests
  • 374f952 feat: add marquee selection UI and ContentArea integration
  • 8d5b159 feat: add block marquee selection hook and overlay component
  • 74b8059 chore: update .gitignore to include .playwright-mcp directory
  • a0a8590 docs: add changelog entry for security fixes
  • 499b9c5 ci: fail security-audit job on HIGH+ CVEs
  • 5104a54 fix(sync-server): harden /recovery against account enumeration timing leak
  • f62017f fix(sync-server): narrow refresh token rotation grace window to 10s
  • 3fa0637 fix(deps): patch 4 critical Electron RCE CVEs and HIGH transitive CVEs
  • d614d8d style: move nested indent guide alignment to base.css
  • 860a616 test: add E2E coverage for Backspace deletion edge cases
  • f6b24fd fix: delete taskBlock on Backspace in empty title, restore selection ring
  • 16c3d05 fix: intercept Backspace before PM to prevent taskBlock cascade deletion
  • 0bd7142 test: add E2E tests for inline subtasks
  • 4e389ca feat: implement debounced auto-promote and demote/promote handlers
  • b4944a6 test: add unit tests for task intent analysis
  • 154acb0 feat: add task intent analysis utility
  • d2345e3 test: isolate E2E state and expose editor for testing
  • ce743df fix: sanitize theme values to prevent corruption
  • 47baa44 fix: preserve nested children when converting checkListItem to taskBlock
  • 7b1f1fa test: add round-trip tests for subtask serialization and normalization
  • 4e3db17 feat: promote subtask to standalone when un-indented (Shift+Tab)
  • 15ca897 feat: auto-detect indented checkboxes under task blocks as subtasks
  • 893e6ce fix: bypass type narrowing for taskBlock check in normalizeTaskBlocks
  • e497aae refactor: use cn() helper consistently for parentTaskId class
  • dc325e7 feat: serialize subtask taskBlock children in markdown output
  • 145bb60 feat: support subtask serialization and recursive normalization in task-block-utils
  • e908918 feat: indent subtask block rendering with ml-7 when parentTaskId set
  • b33a048 feat: add parentTaskId prop to taskBlock spec
  • b60382a chore: baseline clickableTitle render in task-block-renderer
  • db909a3 docs: add inline subtasks in notes implementation plan
  • 8985144 docs: add changelog entry for tasks tab state persistence
  • 3d1ebd5 feat: persist tasks tab view state across navigation
  • ca42d74 refactor: remove unused home tab
  • b45ca04 chore: update .gitignore to include additional files and directories for build, test, and environment management
  • 8c5f57f fix: resolve TS narrowing error in draft task block detection
  • 3572893 chore: regenerate IPC invoke map
  • 4c93481 docs: add inline task blocks changelog entry
  • e8c7e23 fix: apply activeTab from viewState when navigating from task block
  • 514b143 feat: add Enter/Escape key handling and focus management for task blocks
  • 831cddf refactor: add renderTitle, actions, and project change props to TaskRow
  • dc6abfe docs: add vertical sidebar navigation to changelog
  • 184186b refactor: replace horizontal nav with vertical sidebar nav
  • b460f6f docs: add linked task navigation fix to changelog
  • ef9de8a fix: pass viewState when navigating from linked tasks to task page
  • 635d280 fix: hide sidebar toggle in split view secondary panes
  • ec46a84 docs: remove Discord badge from README
  • c116d1f fix: only auto-focus title input on freshly created taskBlocks
  • e909e7a fix: remove focus border on taskBlock, keep cursor in title input
  • 2a53acc fix: stop hiding block content — only hide empty formatting toolbar
  • 4d29bbd fix: debounce task deletion scan to prevent race condition
  • 5d8cd9e fix: resolve ProjectWithStats type mismatch in convertCheckboxToTask
  • 1975629 feat: add quick-add parsing and task delete sync
  • 0ac76a0 fix: hide toolbar, add project badge, remove border, add navigate icon
  • 4fc1628 refactor: match task list row styling, reuse InlineStatusPopover and InlinePriorityPopover
  • 441388d fix: scan all blocks for checkListItems instead of relying on cursor
  • 002267e fix: remove action verb gate, make task title editable inline
  • 8144877 fix: auto-create tasks silently, remove broken popover dialog
  • 77a7d03 refactor: auto-create tasks from brackets, inline editable controls
  • 974391a fix: resolve type errors in taskBlock spec and popover anchor ref
  • 88db76f feat: add /task slash command, bracket trigger, and right-click promote
  • d4ab310 feat: add TaskCreationPopover for inline task property assignment
  • 37903a0 feat: integrate taskBlock into editor schema and markdown pipeline
  • c7fc6c4 docs: add calendar P1 implementation plan
  • e547215 feat: add TaskBlock renderer with live data and useTaskBlockData hook
  • d1e8fbb feat: add task block utility functions with tests
  • 3a5e096 docs: add calendar integration design spec
  • b2781bf docs: add checkbox alignment fix to changelog
  • a01dec4 fix: vertically center checkbox and text in note task lists
  • cd20839 chore: add gstack skill routing rules to CLAUDE.md
  • dfb0c0d fix: regenerate IPC invoke map to match current handlers
  • 1e1bf82 docs: add inbox detail panel polish changelog entry
  • 99c4865 chore: regenerate IPC invoke map
  • 29f4500 fix: align detail panels to tab bar edge and match widths
  • 8f95ded refactor: simplify link preview with extracted PreviewImage component
  • f01e82f refactor: remove tag usage count from autocomplete suggestions
  • 1f80ceb feat: show folder/note icons and stack filing sections vertically
  • 2c91339 feat: surface note emoji through inbox suggestions pipeline
  • e35492a docs: add inbox create folder changelog entry
  • 35d1ac2 feat: add inline folder creation to inbox filing dropdown
  • 10d4b96 chore: regenerate IPC invoke map
  • ed9a874 docs: add link embeds and mentions changelog entry
  • 248964a docs: add Reddit community banner assets
  • 663a103 chore: regenerate IPC invoke map
  • 8b32988 feat: add YouTube player to inbox link preview
  • 90d3d40 refactor: use mention and embed format for inbox link filing
  • a4f5fc3 feat: integrate link mentions and YouTube embeds into editor
  • 450545b feat: update CSP to allow YouTube iframe embeds
  • 4baa973 feat: add paste link menu for URL/mention/embed selection
  • a834deb feat: add YouTube embed block with markdown round-trip
  • a692aaa feat: add link mention inline content spec for BlockNote editor
  • 99a1ae0 feat: add renderer URL metadata and YouTube utility modules
  • 62620b0 feat: add Reddit JSON API metadata extraction and improve bot detection
  • 7ef5583 feat: add shared YouTube video ID extraction utility
  • 96891d0 chore: add .mcp.json to gitignore
  • d7a3004 docs: add Reddit community badge to README
  • 762aef6 docs: add Discord community badge to README
  • f7cb9a3 docs: add voice transcription changelog entry
  • 87863b8 feat: add voice transcription settings UI and recording readiness
  • 5126558 feat: wire voice transcription IPC, preload bridge, and lifecycle
  • 7f1502f refactor: route transcription by provider setting
  • 1799c03 feat: add voice transcription settings and OS keychain storage
  • a4e9a90 feat: add local Whisper Small transcription via worker thread
  • 8768f2a feat(contracts): add voice transcription IPC channels and settings schema
  • 9b95056 docs: add changelog entry for dead code cleanup
  • a6b7bd7 refactor: remove dead code across monorepo (~762 lines)
  • 82767f7 fix: align IPC handler formatting and test assertions after rebase
  • 2b5b2b9 docs: add changelog for clean code audit
  • 6be4216 refactor: add withDb/withErrorHandler HOFs to eliminate IPC try/catch boilerplate
  • 42a3a2f refactor: create structured logger for sync-server
  • 6543dd6 refactor: add type-safe DB mock factories to eliminate as-any in tests
  • 7eea9c4 refactor: decompose notes-tree.tsx (2,089 lines) into 7 focused modules
  • 8e686ac refactor: add type-safe DB cast helpers to eliminate as-any in sync tests
  • da1f9cb refactor: decompose ContentArea.tsx (1,482 lines) into 6 focused hooks
  • 8c1f45a refactor: split task-utils.ts (1,349 LOC) into focused sub-modules
  • 065c484 refactor: split use-inbox.ts (993 lines) into 5 focused modules
  • d2f3596 refactor: split queries/notes.ts (1,595 LOC) into focused sub-modules
  • a8780e0 refactor: decompose use-journal.ts (1,081 lines) into 8 focused modules
  • 35f2f28 docs: add changelog for sidebar chevron visibility (#135)
  • f70f022 refactor: use Picker component for sidebar tag sort dropdown (#134)
  • 9117a43 feat(sidebar): always-visible chevron for folder expand/collapse
  • af1980f feat: journal redesign with day panel, hierarchical tags, and task improvements (#117)
  • 6ad5552 refactor: split oversized modules into focused domain files (#116)
  • 3a1e806 refactor: migrate settings source of truth to config.json (#115)
  • a118ebe feat: redesign note page with Picker system and editor blocks (#114)
  • d84c81a feat(desktop): settings modal and sidebar color polish (#112)
  • 619cff4 feat(desktop): UI polish, inbox redesign, and settings consolidation (#111)
  • 2527840 fix(e2e): resolve rowBox redeclaration in drag preview test
  • 3fc37b1 fix(e2e): update drag tests for handleless row design and relax tab count assertion
  • 1d5b43f fix: resolve CI failures — lint errors, type errors, stale IPC map, and broken tests
  • ff7747b docs: update changelog for tasks-refinement branch
  • 44680ec test: add E2E tests for tab management and split-view
  • c1c8af9 test: add unit tests for tabs reducer, migrations, and layout helpers
  • c982e10 fix: add sectionId to kanban drag data for cross-section drops
  • 0f0ceff refactor: extract tabs reducer into domain modules and simplify split-view
  • a775b5d style: polish sidebar collapsed state, header, and due-date groups
  • 3bd8ad3 fix: prefer pointer position for kanban cross-column detection
  • aae2acf style: redesign tab bar from browser-style to underline indicators
  • 4e8cd71 refactor: integrate inline popovers and whole-row drag in task rows
  • 3f62dc7 feat: add inline status and priority popover components
  • c11d33b style: reduce focus ring width to 1px across all components
  • e3fa103 refactor: overhaul seed data with richer demo projects
  • faa64f7 test: add IPC handler tests for reorder and tag sync
  • 6c0c539 test: add sync handler and E2E tests for junction data
  • 2514ac0 feat: sync position and junction field changes from IPC handlers
  • 1f77beb feat(sync): enrich task payloads with junction table data
  • b170b36 feat(contracts): add tags and linkedNoteIds to task sync payload
  • 8ef9f79 style: format renderer components and E2E tests
  • f40743a test: add unit tests for drag handler cross-section support
  • a5b9390 test: add comprehensive E2E coverage for parent task reordering
  • b188df2 refactor: integrate reordering handlers in tasks page
  • 0e1ea54 refactor: wire up drag context enhancements in main app
  • 919799e refactor: update virtualized project task list for parent reordering
  • 155a1f1 refactor: update virtualized all-tasks view for cross-section reordering
  • 9cc1f3b refactor: update tasks context for reorder handler signature
  • b6a1810 refactor: enhance parent task row layout and reordering integration
  • 2dacc59 refactor: redesign task row for enhanced drag and selection support
  • 5fa880d refactor: update sortable task row for reordering support
  • b9f62df refactor: update sortable parent task row for drag state changes
  • 4ec190e refactor: update task drag overlay for new drag state structure
  • 8b29a53 feat: enhance drag overlay for multi-task cross-section moves
  • 4ef1511 refactor: update insertion indicator and droppable list header for edge support
  • 5b93b6b refactor: extend task order and selection hooks for multi-section support
  • e443dcd feat: support cross-section task moves in drag handlers
  • bc92b0c refactor: enhance drag context with edge detection and cross-section state
  • cc3ad2f feat: add drag state utility for reordering task sections
  • 2f259b3 refactor: integrate parent task reordering throughout task views
  • 6734c75 feat: add new drag-drop components for parent task reordering
  • 6516053 feat: add reusable drag-drop utilities and test infrastructure
  • 554bc3a feat: add priority and canonical-status kanban drop support
  • 50a19cf refactor: extract TaskRow component and remove droppable sections
  • 8dd327b fix: exclude subtasks from completed-task lists and preserve subtaskIds on complete
  • 0d9cb53 refactor: separate filter and sort persistence keys
  • a5741f0 refactor: redesign sidebar with custom nav icons and user profile
  • 52ae65f style: update priority colors and add none-priority tokens
  • 8a8728b feat: extract kanban drop resolver for convention-based column dispatch
  • aa8ab59 feat: show repeat indicator in task row variants
  • 78334f0 feat: consolidate priority config and improve kanban drag-and-drop
  • 3d30b9c feat: remove Done tab and add inline done sections with group-by
  • 50085a8 refactor: extract applyTaskUpdate and simplify derived state patterns
  • aa2268b docs: note kanban drag-to-done bug
  • 4951a91 test: add kanban card rendering tests
  • 9dab2fc feat: hide project badge when viewing single project
  • 5c0a9cc refactor: extract StatusIcon and complete inline SVG to Hugeicons migration
  • cc1e93d chore: regenerate IPC invoke map
  • 49af473 style: update In Progress default color to amber (#F59E0B)
  • ad316ad feat: migrate icon library from lucide-react to Hugeicons
  • 5edffb5 chore: regenerate IPC invoke map
  • 5994eee feat: add kanban board view for tasks
  • 82636a2 refactor: simplify quick-add input and restyle autocomplete dropdown
  • 9b2c8b0 feat: support day-first dates and show project names in quick-add
  • 1a6d8c0 feat: add status sort field and grouping for tasks
  • e0a2793 style: add calendar design tokens and fix low-priority background
  • e0b128c refactor: remove kanban view from tasks
  • 6223e28 feat: task UI refinement — redesign rows, filters, kanban, and CSS variable system (#109)
  • 00b4497 fix: mock both syndication and oEmbed fetch calls in social tests
  • 2814a73 ci: make dependency audit informational (continue-on-error)
  • 64a5472 fix: improve subtask visibility in Today view
  • 91963ba chore: regenerate IPC invoke map
  • 420c7b9 fix: extend subtask filtering to week and upcoming views
  • a90a2fd fix: exclude orphan subtasks from Today view and re-include via parent
  • 95c4a0d docs: add changelog entry for tasks-refinement
  • 4d9a59f feat: add first-run onboarding wizard
  • df63169 test: update task component tests for UI label and prop renames
  • 14f2900 style: migrate hardcoded task colors to CSS custom properties
  • 29dd99d chore: add agents/ to .gitignore
  • 1c80429 test: add unit tests for AddTaskModal component
  • dfc9940 test: add filter interaction regression tests for status+completion
  • d8d9be6 feat: wire task refinements into tasks page and tab bar
  • 090f835 refactor: extract default project resolution and polish quick-add input
  • 709ea21 refactor: update filter panels, dropdown, and active filters bar
  • 8c4b4b8 feat: add starred field to saved filters and Cmd+S save shortcut
  • c452847 refactor: extract TaskRepeatSection and make task detail drawer editable
  • bdd777c refactor: interactive badges use shared icons and simplified project badge
  • 7d59490 refactor: redesign date picker calendar and extract DatePickerContent
  • 09ef0e0 refactor: use status-aware circles in subtask rows
  • 5189f43 feat: add StatusIcon, PriorityIcon, and StatusCircle to shared task icons
  • d17e8f6 style: update color palette for In Progress status and group headers
  • 21630d4 refactor: polish sort dropdown and project dropdown UI
  • 9a1e1d0 style: tighten tasks page header and content spacing
  • c0d1ac2 refactor: remove hardcoded font declarations from filter components
  • 62b102e refactor: extract filter panels from filter-dropdown.tsx
  • e173739 refactor: extract interactive badges from task-badges.tsx
  • 8102c41 feat: add shared UI primitives and extend badge variants
  • 49305ce refactor: deduplicate note search filter in task detail drawer
  • 6d72374 chore: remove unused task detail panel, today view, and related files
  • fe043b7 refactor: replace detail panel with drawer and simplify tasks page
  • 8210250 refactor: simplify virtual list utils for flat and grouped rendering
  • 2ca9c7b refactor: streamline filter UI and add compact quick-add mode
  • 2edc595 refactor: redesign kanban cards and update task badges
  • ac97dfb refactor: redesign task rows with Linear-style status indicators
  • 05216df feat: add task icons, grouping utility, and group header components
  • 82dbe44 refactor: remove calendar heatmap from journal
  • 0aa2ced refactor: replace sidebar chevron with custom SVG and add nav separator
  • 1d1fb64 style: refine dark mode to cool dark palette
  • 95e09c2 refactor: move repeat indicator into pills container in task-row
  • 4f55ebb refactor: fix task-row title layout and remove inline repeat indicator
  • 9b3b0ea refactor: redesign task UI with compact rows, streamlined filters, and This Week view
  • 374f7e7 feat: add SectionDivider, FilterDropdown components and task utilities
  • b8fcf7c build: migrate fonts from Google Fonts to local @fontsource packages
  • 3892824 refactor: update task-row and virtualized-all-tasks-view components for improved styling and logic
  • 3025ff4 refactor: simplify component imports and remove doc comments
  • 879f6d5 refactor: add --font-heading CSS variable for Space Grotesk
  • a8fd544 feat: add social inbox filing and tweet syndication support
  • 1018ef3 refactor: integrate AIInlineProvider and update context usage
  • 083a976 style: update VaultSwitcher component for improved theming and UI consistency
  • 858db99 chore: regenerate IPC invoke map to reflect updated handlers
  • ed002a4 fix(e2e): fix 3 remaining test failures on Linux CI
  • 950a24c fix(e2e): fix 14 failing tests on Linux CI
  • 84641d4 fix(e2e): disable Chromium SUID sandbox for Electron on Linux CI
  • 3bf88fa ci(e2e): add system dependencies for Electron launch on Ubuntu (#108)
  • 5bfd877 ci: shard E2E tests and fix CI failures (#107)
  • 7c2c7b4 fix: resolve CI coverage threshold and E2E cert hash check failures (#106)
  • eec9a7e feat: white theme, tag sync fixes, and sidebar polish (#105)
  • a76c88c feat: add BlockNote xl-ai inline editing (#104)
  • 5551ce9 feat: add find-in-page, UI polish, and GPL-3.0 relicense (#103)
  • 511f189 feat: replace recent searches with search reasons tracking (#102)
  • 397cff3 feat: add breadcrumb navigation to note page (#101)
  • 9e96f56 chore: update .gitignore and package.json for improved project structure
  • e976560 docs: add star history chart to README
  • 9708faf feat: interactive knowledge graph view with inline tags (#100)
  • a2900da fix: add missing mocks for duplicates module and getInboxHealthMetrics in tests
  • a0236bf fix: regenerate IPC invoke map to pass CI check
  • fb190a4 refactor: regenerate IPC invoke map to include new handlers and improve type definitions
  • 762d9c2 refactor: move appearance settings from General to dedicated Appearance section
  • 78187e7 docs: mark Phase 11 tasks T077 (audit), T078 complete
  • c32a6e3 perf: memoize TriageItemCard + GPU-accelerate triage transitions (T078)
  • ef2d90d fix: wire onOpenTarget for reminder items in triage view
  • 1df4961 docs: mark Phase 11 tasks T071-T075, T079 complete
  • cd51547 feat: decouple reminders in triage + add Process entry to sidebar (T071, T075)
  • d25de39 feat: add captureSource tracking to inbox items (T072-T074, T079)
  • b490820 docs: mark Phase 10 delightful processing tasks complete (T063-T070)
  • 7a26379 feat: add undo toasts, streak badge, and triage celebration
  • f740267 feat: add undo IPC channels and processing streak query
  • 0b15fd0 feat: handle duplicate captures in Quick Capture and inline input
  • 60f090f feat: add duplicate detection for text and URL captures
  • e18bc45 feat: implement ArcGauge and AgeStrata visualizations in inbox health view
  • 7218cb2 feat: add inbox health metrics and bulk archive functionality
  • 6aae5e5 feat: enhance quick capture with image paste, voice, and drag-drop
  • 78b812d test: add link filing tests for folder, note, and multi-note targets
  • ac84656 feat: add triage mode UI with AI note suggestions
  • 8713a2b feat: add convert-to-task IPC and note suggestion types
  • b270b48 refactor: split inbox.tsx monolith into focused modules (Phase 2)
  • 0e08c06 feat: fix link filing, persist stale threshold, wire inbox empty state (Phase 1)
  • 2b4781b feat: settings system with decomposed sections, tag management, and preferences (#98)
  • ba59ccc feat: implement global search functionality with Cmd+K shortcut
  • f824137 ci: skip electron-rebuild in sync-server CI to fix NODE_MODULE_VERSION mismatch
  • c373713 ci: fix sync-server tests, audit command, and dependency vulnerabilities
  • 907e757 ci: remove explicit pnpm version to fix action-setup@v4 conflict
  • 8d6d54a test: enhance IPC and inbox list unit tests
  • b478715 test: add search-utils and search-service unit tests
  • cddf9b1 feat: add command palette UI with Cmd+K search
  • b27015e feat: wire search IPC handlers and preload bridge
  • 2f4dff7 feat: add FTS5 search backend with fuzzy fallback
  • 2c479bc feat: add search contracts and recent-searches schema
  • 83350e2 remove search
  • 4ad464b docs: update README to reflect development status and remove placeholder content
  • 8acd943 refactor: enhance SidebarHeader layout and styling
  • 87bcf1e chore: regenerate IPC invoke map for monorepo paths
  • 3c9a228 style: auto-format tsconfigs and imports
  • 9b50cd2 fix: rebuild keytar alongside better-sqlite3 for Electron
  • 9940bc4 fix: bundle workspace packages in electron-vite main and preload
  • b247e86 build: bump Node to 24
  • 6c01848 build: remove old sync-server, tests, and tsconfig from root
  • c70cc0e docs: update README with hero image and monorepo dev instructions
  • e0a22c9 ci: update workflows for monorepo paths
  • 49f3f6e build: migrate to turborepo monorepo structure
  • 688eb6f docs: add turborepo migration plan
  • 8f134c7 refactor(tasks): simplify subtasks empty state and improve autocomplete layout
  • b16cbb3 chore: remove internal docs, specs, and agent config from tracking
  • c8e933e refactor(tasks): improve layout handling in Quick Add Input component
  • 341143b refactor(tasks): enhance task flattening functions to preserve order
  • f42b9b7 fix(sidebar): hide scrollbar when sidebar is collapsed to icon mode
  • d0287d5 fix(sidebar): hide footer when sidebar is collapsed to icon mode
  • 9ba8482 refactor(ui): replace shadcn Calendar with custom DatePickerCalendar
  • ef0ba2d fix(tasks): show inline input instead of creating empty task on add click
  • 0254096 fix(tasks): use opacity exit animation instead of height collapse
  • 6b5e2f9 refactor(tasks): replace emoji icons with Lucide icons in quick-add autocomplete
  • 4e3643e feat(tasks): add token highlight overlay to quick add input
  • 5c004f9 refactor(tasks): replace project sidebar with dropdown selector
  • ba1c759 refactor(tasks): remove Upcoming view files and dead references
  • c712510 feat(tasks): remove Upcoming tab from navigation
  • 643eed2 feat(tasks): wire onAddTaskWithDate to TodayView, remove onViewUpcoming
  • b8d3353 feat(tasks): add This Week accordion to Today view
  • 452ebfa feat(tasks): extend virtual-list-utils with week accordion support
  • 1d00f49 feat(tasks): default This Week section to collapsed state
  • 7d6da8b feat(tasks): implement overdue tier styling and collapsible sections
  • a861394 refactor(ui): layout fixes, view mode toggle, and sidebar simplification
  • b2b8cb7 fix: voice recorder autoStart, inbox transcription refresh, duration format
  • 03cd7d2 docs: add 007-global-search planning artifacts and update CLAUDE.md
  • 5077721 fix: use local-time date serialization to prevent off-by-one day shift
  • cae69dc fix(ci): regenerate IPC invoke map to reflect updated handler signatures and improve type definitions
  • 085f9ea fix(ci): install libsecret-1-dev for keytar native module on Linux
  • 22308da fix(ci): regenerate IPC invoke map to match handler signatures
  • 49d5bd5 fix(ci): resolve lint, typecheck, and test failures in main CI pipeline
  • de28de1 fix(ci): resolve root dependency audit vulnerabilities
  • 3fc4c62 fix(ci): resolve sync-server test failures in CI
  • e8d5d00 fix(sync-server): add zod paths mapping for shared contract resolution
  • dfa7e3f fix(ci): resolve all 4 failing CI checks in PR #95
  • 1a5864d chore: update README and improve code formatting across multiple files
  • 5006fa8 fix(sync): prevent async close from destroying reopened CRDT docs
  • e994da4 feat(docs): overhaul README for clarity and branding
  • 179681d sync: address low-severity review findings
  • 1ae675b feat(sync): refactor CRDT close and flush methods to be asynchronous
  • 876e0fc refactor(ipc): streamline inbox handlers and improve modularity
  • af8502f feat(ipc): enhance IPC invoke map generation and validation
  • 2930d45 feat(sync): enhance pull coordination with structured state management
  • 6dd4b8d feat(sync): enhance network reconnection handling during offline-online transitions
  • 0f55d80 refactor(sync): streamline pull and push coordination logic
  • e4640d7 feat(sync-server): implement atomic batch processing for item upsert and storage update
  • 6e69d91 feat(scripts): add pretypecheck script for contract validation
  • bdd573a feat(contracts): add contracts drift check workflow and manifest
  • 50aeef2 sync-server: sanitize device metadata before persistence
  • b68a0bd sync-server: simplify fixed-length otp hash comparison
  • a9f06d1 sync-server: treat missing incoming clock as replay
  • 39367ce sync-server: remove global jwt key cache
  • 36447a0 crypto: surface signature verification exceptions
  • a1a1f30 crypto: avoid extra bip39 seed copies in memory
  • 08d319c crypto: harden secure cleanup and lock capability checks
  • cfd60ae feat(auth): add recovery route tests for email recovery process
  • 6cea6e4 feat(api): implement request body size validation for API and blob routes
  • 8820fcd feat(otp): add HMAC key validation and corresponding test case
  • 9f32a3f feat(auth): enhance token rotation logic to handle UNIQUE constraint collisions
  • fbae681 feat(linking): add scan confirmation mechanism to linking process
  • 2083b70 feat(linking): implement scan proof verification in linking process
  • a86cfb7 Fix Shared vs Server Contract Divergence
  • b33343b A-C1. SyncEngine is a God Object (2086 LOC)
  • dd506c2 feat(security): add alarm-cycle revocation fallback for WebSocket connections (S-M3)
  • e9676da fix(security): isolate recovery dummy secret from JWT signing key
  • 31e984e fix(security): eliminate timing oracle in /recovery endpoint
  • 8a30fba fix(security): enforce body size limit on chunked transfer requests
  • a6c1109 feat(security): replace unsalted SHA-256 OTP hash with HMAC-SHA256
  • 82145d1 test(security): linking secret, IP binding, and SAS verification coverage
  • e6bec35 feat(ui): display SAS verification codes in device linking
  • 49db944 feat(security): SAS verification codes and linkingSecret in client linking flow
  • cdb4cfc feat(security): QR-bound linkingSecret, IP binding, and rate limits for linking
  • 430531b fix(build): allow unsafe-inline in dev CSP for HMR
  • 95d08c6 style(docs): align markdown table columns in certificate-pinning guide
  • 1b53659 fix(auth): retry token rotation on UNIQUE collision instead of returning unpersisted tokens
  • 8444eef docs(security): certificate pinning deployment and rotation guide
  • 7a773d6 build(scripts): add cert hash check and SPKI extraction scripts
  • 4409a6b feat(security): runtime guard against placeholder cert pinning hashes
  • 37ed923 fix(crypto): zero newVaultKey and newMasterKey after key rotation
  • 7eb1fdd feat(sync): enhance contract definitions and add new IPC channels
  • ada7f01 feat(tests): add mocks for security warning and certificate pin failure events
  • 7f4eb2f feat(sync): quarantine, rate limiting, and remote wipe detection (T245i, T245j, T245k)
  • 10af8aa feat(a11y): ARIA labels and keyboard navigation for sync UI (T245c)
  • 665aa94 feat(security): TLS cert pinning, CSP headers, and failure handling (T245a, T245b, T245f)
  • f903fb7 docs(security): SQLite encryption decision — recommend OS FDE (T245e)
  • a5896b3 feat(renderer): user-friendly error messages for all error codes (T245d)
  • 691de70 feat(crypto): multi-version crypto decryption for forward compat (T245)
  • 305e7e9 feat(sync): secure deletion of temp files during sync (T245g)
  • 8f6d26e feat(crypto): memory-lock key material via sodium_mlock (T245h)
  • c87d223 feat(shared): security event contracts for T245 hardening
  • ffb22e7 docs(sync): mark completed tasks T232-T244 in task tracker
  • e0e6d5a feat(sync): auto-resume attachment uploads on network disconnect (T243)
  • de0c7fd fix(sync): normalize all timestamps to ISO 8601 UTC format (T244)
  • bb334ad feat(shared): add utcNow() utility for consistent ISO 8601 timestamps (T244)
  • d7b08ce feat(sync): graceful extended offline with reconnect strategy (T242)
  • f5f1e02 feat(sync-server): diagnose concurrent device linking with specific error codes (T241)
  • f239776 feat(sync): add StorageUsageBar component in Settings > Vault (T241c)
  • d49575f feat(sync): add IPC channel and preload bridge for storage breakdown (T241b)
  • c7c8dec feat(sync-server): add GET /sync/storage endpoint for usage breakdown (T241a)
  • 5f2829f feat(sync): implement storage quota handling and binary file type checks
  • 033b8ca feat(sync): detect device revocation and show warning dialog (T239)
  • 1c4cc76 feat(sync): add device_revoked error category and classify 403 AUTH_DEVICE_REVOKED (T239)
  • bc97a85 feat(sync): send X-App-Version header and handle version rejection (T237)
  • 821344a feat(sync-server): reject outdated clients via X-App-Version on WS upgrade (T237)
  • 6ac9b4b fix(sync): add payload size guard and drop non-retryable CRDT errors
  • a0a0e36 feat(sync): add CRDT doc compaction and gate binary notes
  • 90cc2ba perf(sync): parallelize snapshots, prefetch pages, add timing
  • a0e435d feat(sync): add concurrency, timing, and CRDT compaction utilities
  • b027dd8 feat(sync): add corrupt data detection and re-fetch recovery (T238)
  • 2f1c0df feat(sync): add parse_error ApplyResult and corrupt item IPC events (T238)
  • 2e12e51 docs: mark T229, T230, T231 as complete
  • 723668a feat(sync-server): add tombstone GC and orphaned blob cleanup (T232, T233)
  • c6b0486 feat(sync): emit session expiry from CRDT paths and auto-resume (T231)
  • aa7fcea feat(sync): add error classification and auth recovery in engine (T229)
  • 8f05248 feat(crypto): add CryptoError class with diagnostic error codes (T230)
  • c97991b feat(sync): add explicit sync shutdown step in before-quit (T227)
  • 2e22c03 feat(sync): attempt final push before engine shutdown (T228)
  • 982045f feat(sync): drain worker gracefully before shutdown (T228a)
  • 37c6ded feat(sync): implement CRDT snapshot handling for create operations
  • 7a79b73 feat(sync): wire CRDT robustness for offline creates and crash recovery
  • c0fabcf feat(sync): add concurrent open coalescing, persistence init, and snapshot push to CrdtProvider
  • 8d31c93 feat(vault): derive title from OS filename for copied notes
  • 12eda12 feat(sync): enhance logging and handle pending CRDT pulls during sync
  • 28cd830 feat(sync): implement CRDT batch updates for efficient synchronization
  • 695293d feat(sync): decouple auth from sync for instant post-auth redirect
  • 62d0656 feat(ui): add resizable sidebar with drag handle and localStorage persistence
  • 63cd27b fix(ui): prevent sidebar tree items from overflowing horizontally
  • 672e7b3 refactor(sync): remove verbose debug logs from CRDT provider and engine
  • e683022 chore(dev): add device C scripts for multi-device testing
  • c4822e3 fix(ui): prevent sidebar horizontal overflow at narrow widths
  • ba4f9ae feat(sync): implement abort signal handling in CRDT seeding and incremental updates
  • b32dbe1 feat(sync): add authentication checks for attachment upload and download handlers
  • 16ac7c5 feat(sync): enhance attachment signing and note handler cleanup
  • 0542638 feat(sync): enhance queue operations with coalescing logic
  • a839f1d refactor(sync): streamline session management and enhance logout process
  • 5886cee docs(tasks): mark US12-US14 tasks T190-T215a complete
  • ed8ccd6 feat(sync): add device list, key rotation wizard, and sync activity UX
  • 991541e feat(crypto): implement key rotation with vault key re-wrapping (US14)
  • 324ab99 feat(sync): implement device management and upload queue IPC (US12/US13)
  • 3302852 feat(server): add device management endpoints (US13)
  • e9624e8 fix(server): add user_id scoping to device queries and increase rate limits
  • 3801ad5 feat(sync): refactor engine for batch crypto, yielding, and retry (US12)
  • bda71c1 feat(sync): add upload queue and CRDT batch broadcaster (US12)
  • e6bb5d9 feat(sync): add worker thread for off-main-thread crypto (US12)
  • 54dbfad refactor(crypto): extract shared primitives module
  • 9b9bd36 feat(note): add local-only toggle to dropdown menu for note settings
  • dba443d docs(tasks): mark US11 local-only tasks T183-T189a complete
  • 55092aa feat(notes): add local-only flag to exclude notes from sync (US11)
  • 3aaea31 docs: simplify CLAUDE.md to minimal agent confusion log
  • fa79ec7 chore: add .pnpm-store to gitignore
  • 4ec2698 docs(tasks): mark US9 sync history tasks T173-T179a complete
  • 0d2831b feat(sync): add sync activity history panel to settings (Phase 11)
  • 091c69e refactor(auth): hoist wizard state from setup-wizard into auth-context
  • e588df2 docs(tasks): mark US8 sync status tasks T166-T172 complete
  • 1e42609 feat(sync): add sync status UI to sidebar and settings panel
  • 35a2425 fix(sync): purge all sync tables on logout and await runtime stop
  • 336d826 build: add ensure-native script to skip redundant native rebuilds
  • 3faac66 refactor(tests): streamline vitest configuration and enhance binary file handling in notes
  • 65b7e41 feat(preload): add getFileDropPaths API and implement file drop handling in sidebar
  • c5c6b17 fix(sync): handle binary files in applyUpsert instead of writing .md
  • 77c8c2f feat(sync): add mimeType/attachmentId to sync payload and binary file utilities
  • 2542930 feat(sync): enhance attachment upload error handling and event emission
  • 60fb957 fix(sync): enhance file import handling and binary file type detection
  • c7079b4 docs(tasks): mark US7 attachment sync tasks as complete
  • 9d3dc3b feat(ui): add sync progress overlay to file attachments
  • 9c4305f feat(sync): implement attachment IPC handlers
  • 3c594a6 feat(sync): add attachment upload/download service with thumbnails
  • 568108e feat(sync-server): add blob storage routes and error codes
  • eb57e86 feat(contracts): add attachment manifest CBOR order and chunk limit
  • a9cb751 feat(paths): add fromMemryFileUrl reverse converter
  • 7f6bf90 style: format codebase with Prettier
  • 8ff3452 test: fix broken assertions and mocks across test suite
  • b5de523 fix(sync): handle unavailable index database in seedUnclocked
  • 2a8725c refactor(sync): clean up logging and improve code readability in sync engine and task handler
  • d4d6b2f fix(sync): harden CrdtProvider init/destroy lifecycle against double-calls
  • 7deffe0 test(sync): add field-level merge tests for task handler applyUpsert
  • 141b0b8 refactor(sync): use enqueueRecoveredUpdate in dirty recovery for offline-aware rebinding
  • 27fcd3b feat(sync): track project changes with offline clocks when deviceId unavailable
  • ea28b51 feat(sync): track task changes with offline clocks when deviceId unavailable
  • 16094dd feat(sync): add offline clock rebind utilities for deviceless editing
  • 7437882 refactor(sync): streamline task and project sync enqueue methods
  • d17de50 feat(sync): enhance task sync handlers with improved logging and conflict resolution
  • aa7d88d feat(sync): implement offline clock management and enhance sync handlers
  • 09fdfbd feat(sync): implement markPushSynced method in item handlers and enhance dirty item recovery logging
  • 47543fe feat(sync): enhance sync handlers and project sync service for improved state management
  • a3f5560 feat(sync): T implement field-level merge logic and offline push race prevention for tasks and projects
  • 1dcfc74 feat(sync): implement SyncStatus component and related hooks for improved sync management
  • 7c9ff65 chore: update templates and scripts for improved agent context handling
  • 33a43ac feat(sync): enhance note handling with temporary file writes and rename event tracking
  • 55ecc8b fix(sync): enqueue sync delete before cache removal on file delete
  • 19dcadf feat(db): preserve tag insertion order with position column
  • e8bde83 fix: invalidate sidebar note list on notes:updated event
  • cdb9c58 Format
  • 2ebf672 fix(sync): create close snapshots and push CRDT state on quit
  • 144bece feat(sync): create snapshots during CRDT writeback
  • a7c0c53 chore: add logging to flush-on-quit protocol
  • 6d4ff05 feat: add flush-on-quit protocol to prevent data loss on shutdown
  • 42017d9 refactor: simplify use-properties hook and add sync pull refresh
  • 543a69f perf(sync): skip push when sync queue is empty
  • 6733277 feat(sync): wire tag definition sync service into runtime
  • eee7d84 feat(sync): add tag_definition and settings to manifest integrity check
  • cf05a54 fix(sync): handle empty properties and prevent writeback loops on pull
  • 6f4c583 fix(sync): include properties and pinned tags in note sync payload
  • 5d2a7a0 fix(sync): add emoji to reserved frontmatter keys to prevent property leak
  • d72b595 fix(sync): emit notes:tags-changed on pull and persist emoji to frontmatter
  • a180947 fix(sync): capture tag snapshot before mutation for correct delete clock
  • fdc0f4a feat(sync): add tag_definition sync type and pin state helpers
  • 385a0ad fix(sync): update frontmatter on disk when tags renamed/deleted/removed
  • 68840fb fix(sync): apply remote tags to existing notes during pull
  • 44933bb chore(sync): demote token refresh log to debug level
  • c2ccfa7 fix(sync): guard runtime startup with session check and lazy-init
  • 2a6e91c fix(sync): only enqueue sync push for metadata changes, not content
  • da701dc fix(sync): skip save on remote CRDT updates to prevent sync loop
  • 4eb82bd feat(sync): broadcast crdt_updated via WebSocket for targeted note pull
  • 17cfa53 feat(sync): advance pull cursor from push response maxCursor
  • af4aa97 refactor(sync): enhance token management and access in IPC handlers
  • 82f911c [STRIP] refactor(sync): strip content from note/journal update payloads
  • 5a75552 [STRIP] perf(sync): cache device public keys during pull cycle
  • d4bb851 feat(notes): add metadata update functionality for note titles
  • f8c05ca refactor(embedding-queue): streamline batch processing and result counting
  • b3796e7 refactor(react): component extraction, useEffect cleanup, LazyMotion, and sanitization
  • f1c0acf fix(react): use stable keys and passive scroll listeners
  • 8d76a78 fix(a11y): add ARIA roles, keyboard handlers, and form labels
  • b0da600 perf(react): extract module-level constants for stable default props
  • 17585a1 fix(react): replace derived-state useEffect with render-time sync
  • ed6b528 style: apply prettier formatting across codebase
  • 428a795 feat(sync): wire CRDT snapshot push/pull to server endpoints
  • dab9bba feat(sync): enhance manifest integrity checks for projects, notes, and journals
  • 69a4c51 fix(sync): resolve SYNC_REPLAY_DETECTED loop with fresh payload, dedup, and replay-as-success
  • 7a0eb64 feat(sync): add buildPushPayload to SyncItemHandler for fresh-at-push reads
  • 57b7a4c refactor(sync): clean up debug logging in SyncEngine
  • 1f145e5 fix(ui): invalidate folder queries on note rename events
  • 3804752 fix(sync): detect external folder renames via file existence check
  • 6c6699b fix(tree): prevent folder ID from leaking into editor on drag
  • b8237f7 fix(tree): improve selection handling in TreeNodeTrigger component
  • 0e4b4d5 feat(sync): handle remote title changes and clean up empty parent folders
  • e914332 feat(sync): enqueue sync update on local note rename
  • f52e541 fix(ui): use callback refs for rename input focus after context menu
  • ab44192 chore: disable auto-open devtools on window ready
  • c70e1e6 build: add y-prosemirror to optimizeDeps and dedupe prosemirror packages
  • dd75c55 fix(sync): set vault status before starting sync runtime
  • 4e06e81 feat(file-ops): add synchronous unique path generation for notes
  • 101214c refactor(notes-tree): streamline folder handling and note association
  • c605baf feat(sync): add folder path handling to note synchronization
  • 9090885 feat(notes-tree): enhance folder and note creation by focusing on the tree
  • c2ff730 fix(sync): pause CRDT queue on 401, resume after token refresh
  • 3a248ad fix(sync): strip undefined frontmatter fields during note serialization
  • 80112bd feat(db): add clock and synced_at columns to note_cache index
  • 6ea0e65 build: replace externalizeDepsPlugin with externalizeDeps, bundle BlockNote packages
  • 5c25c39 chore: add test database files to gitignore
  • cdb5c66 fix(sync): conditional Yjs collaboration, remove sourceWindowId, centralize fragment name
  • f1a1e1f refactor(sync): extract ContentSyncService base class from note/journal sync
  • d9b03db fix(sync): TTL-based writeback ignore, stale map eviction, CRDT cleanup on deletion
  • 73b72e9 fix(sync): per-note queue flushing, rename misleading encryptedData field
  • 3dc775f fix(sync): Zod-validated CRDT IPC, IpcOrigin loop fix, purge, approx compaction
  • a2a5791 fix(sync): add Ed25519 signature, AEAD noteId, compression to CRDT encrypt
  • eb47146 fix(sync-server): atomic sequence, remove snapshot blob, add signer tracking
  • e7639e7 docs(tasks): mark Phase 7 and 7.5 sync tasks complete (T140-T140v)
  • 4367fe6 feat(ui): add Yjs collaboration to editor and initial sync progress
  • 0318936 feat(sync-server): add CRDT incremental update endpoints
  • b350b7f feat(sync): implement CRDT engine, file sync, and write-back pipeline
  • 129599e feat(sync): add CRDT IPC contracts, sync payloads, and schema extensions
  • 953ba52 feat(sync): implement hybrid sync architecture and CRDT engine for real-time collaboration
  • 3c1975c docs(tasks): mark US4 recovery phrase tasks complete (T122-T128a)
  • b0a2b03 feat(ui): add stepped progress to recovery phrase input
  • bd491d8 refactor(crypto): extract recovery utilities and simplify IPC handler
  • 121d6a5 feat(sync-server): add unauthenticated recovery endpoint with anti-enumeration
  • de5b734 feat(auth): enhance device linking flow with new action and error handling
  • 98c3ee5 docs(tasks): mark US3 device linking tasks complete
  • 15e273e feat(ui): add QR linking components, approval dialog, and setup wizard integration
  • 99a84df feat(sync): add client linking service, IPC handlers, and WebSocket event plumbing
  • 7d70301 feat(sync-server): implement linking session service, routes, and DO coordination
  • 4af1f99 feat(crypto): add X25519 ECDH, linking key derivation, and master key encryption
  • 9219fe8 build(deps): add qrcode.react for QR code generation
  • 6cd97d8 refactor(contracts): update linking types, error codes, and CBOR field order
  • 6fb5c66 fix(tasks): persist status changes when updating projects
  • f5243ff feat(sync): add project sync handler, service, and schema
  • c89eb39 chore: update configuration and remove obsolete files
  • 0d360b1 chore: remove obsolete speckit prompts
  • 9ffd474 fix(auth): update device registration to handle conflicts and return device ID
  • efd55f7 fix(sync-server): increase WebSocket upgrade rate limit 5 → 15/min
  • d7a6a02 fix(sync): self-heal signing key mismatch instead of wiping state
  • 416ff71 fix(schema): add unique partial index for current device constraint
  • 08f94ab feat(crypto): add getOrCreateSigningKeyPair for idempotent device keys
  • a127596 feat(sync): add periodic pull interval with skip logging
  • 139d656 fix(sync): add default error listener and logging to WebSocketManager
  • 3f834db fix(sync): add queue observability and dequeue fallback
  • b699f22 fix(sync): validate signing key matches DB at runtime
  • 520133a fix(sync): harden integrity check and simplify registerDevice
  • 63389f6 fix(sync-server): wrap alarm send+close in try/catch
  • 407a808 fix(sync-server): include deletedAt in signature verification payload
  • d846c9e fix(schema): make signingPublicKey NOT NULL on sync_devices
  • 5334a25 feat(sync): enhance device key handling and logging
  • da3f9c1 feat(sync): enhance item operation handling in sync process
  • 33231c6 fix(sync): enhance SyncEngine to handle decryption errors and improve manifest integrity checks
  • 33eeeab refactor(database): enhance SQLite schema and logging structure
  • 86b10e7 fix(sync): harden engine with mutex, key cleanup, bounded retry, and pull validation
  • 8027f20 fix(sync): make queue dequeue atomically mark items in-flight
  • f7d318d fix(sync): remove dead contentHash, validate crypto version, document key constraints
  • d225a80 fix(sync-server): harden security — remove DELETE bypass, rate-limit endpoints, check device revocation
  • da995bf refactor(sync): extract per-type item handler strategy pattern
  • 0183761 fix(shared): add sync payload schemas, pull response types, and expand encryptable types
  • 382ccaa refactor(main): move embedding queue summary log to finally block
  • 1abaaa7 fix(renderer): handle clipboard promise rejection in recovery phrase cleanup
  • e929db8 feat(sync): add text-based ping/pong keepalive to WebSocket
  • 049d017 fix(sync): skip retries for all 4xx client errors except 429
  • 5d5573e fix(sync-server): relax pull itemIds validation to accept nanoid format
  • db44c67 fix(sync-server): add missing id column to sync_items upsert
  • db4d609 feat(sync): enhance sync engine with improved push handling and initial seed logic
  • c3b2939 test: mock electron-log/renderer in DOM test setup
  • aaee447 test(sync-server): align tests with implementation changes
  • a4125fa test: add missing mocks to main and renderer tests
  • 9d51f7d fix(renderer): clean up timers in useJournalScroll and useUndo
  • 33403dd fix(main): guard log.initialize for browser process only
  • 0edc25c fix(sync): defer engine activation until recovery phrase confirmed
  • 3570119 fix(sync): relax sync ID validation from UUID to non-empty string
  • 1ed9ec0 feat(crypto): add signing and verify KDF contexts
  • 3faf1fa fix(crypto): return false for mismatched-length buffers in constantTimeEqual
  • 0d2a617 test(sync): add missing event listener mocks in sync-context test
  • 8bd7da2 test(sync): add filter-sync and getSavedFilterById mocks to saved-filters test
  • b5de92e fix(sync): activate engine after device registration and update OTP flow
  • 1938163 feat(sync): gate engine on device registration and add activate()
  • 71fb651 feat(sync): add initial seed to enqueue pre-existing local items
  • a11a478 fix(sync): stop WebSocket reconnect loop on auth failure
  • 2467efd fix(sync): skip retry on 401 auth errors in withRetry
  • db5d406 fix(sync): guard sync handlers against uninitialized database on startup
  • 2d006b8 test(sync): add missing mocks and channel entries to sync handler tests
  • 2b48ceb fix(sync-server): return full pull items and preserve created_at
  • ae68443 fix(sync-client): advance clocks before enqueuing deletes
  • 0423be7 fix(sync-client): align pull contract and apply tombstones
  • 1136178 feat(sync): bootstrap engine runtime with vault lifecycle
  • 3acaa50 fix: return error object from notImplemented stubs instead of throwing
  • 4502c5b fix: wire onOAuthError event subscription in renderer
  • 206931b fix: handle keychain write failure with device rollback and add startup integrity check
  • 9df6e3a feat: subscribe to missing sync events in SyncContext and expose onOAuthError
  • 479a719 fix: add pre-encryption size check, manifest re-enqueue logic, and dead letter auto-purge
  • effd423 fix: harden sync engine with idempotency, clock skew pause, and conflict payloads
  • e016e8f fix: harden server error handling, blob errors, and add WS device revocation
  • fd42bf1 fix: use ON DELETE SET NULL for signer_device_id FK
  • 1f254fa chore: mark completed sync integration tasks in spec
  • 1fbb583 fix: enforce storage quota and harden blob retrieval
  • 3e66ac4 fix: use db.batch() for atomic cursor increment
  • a31c429 feat: update device last_sync_at on sync server push/pull
  • 247ae35 feat: add upload/download progress tracking to SyncContext
  • 84dd71b feat: expose settings sync and clock skew events in preload bridge
  • e5391da feat: enhance SyncEngine with multi-batch push and clock skew detection
  • 99bf0a5 feat: add manifest integrity check for server-local consistency
  • 3e4ab82 feat: expand ItemApplier for inbox, filter, and settings inbound sync
  • 71ea0ba feat: add outbound sync services for inbox, filters, and settings
  • ce99012 feat: extend IPC contracts for settings sync and clock skew detection
  • 2304fde feat: add clock/syncedAt columns to inbox and savedFilters schemas
  • c28918a fix: clean up task-sync lint and formatting issues
  • a256cc2 feat: subscribe TasksProvider to sync pull events (T103)
  • d52dbf8 feat: add ItemApplier for inbound sync with vector clock resolution (T102b)
  • d4fb45b feat: add TaskSyncService for outbound task sync enqueue (T102a)
  • 4e67aa6 feat: add clock and syncedAt columns to tasks schema (T101)
  • ca56a67 docs: expand CLAUDE.md architecture guide; mark T098a-T100a complete
  • add3807 feat: add SyncProvider with auth-gated event subscriptions (T100, T100a)
  • 28baffd fix: move updateLastSyncAt to success path in push/pull (T098a)
  • 4b4e549 feat: complete UserSyncState Durable Object and IPC handlers for sync status
  • 469b613 docs: update CLAUDE.md with maintenance note and clarify backward compatibility guidelines; mark sync API tasks as completed in tasks.md
  • 74b493d feat: implement UserSyncState DO with WebSocket broadcast and sync route wiring (T090-T093e)
  • ff159d5 feat: add WS error codes and extend CF Workers mock for DO hibernation API (T090)
  • 94e6a1f refactor: extract reusable JWT verification from auth middleware (T090)
  • e406e1b format
  • b0ef1c1 feat: add server sync endpoints for push, pull, changes, and item management (T082-T089c)
  • 7ebb175 refactor: extract shared base64 and Ed25519 utilities from auth routes
  • b5f0559 feat: wire sync engine into IPC handlers for status, history, and pause/resume
  • da5e8b8 feat: add sync engine orchestrating push/pull with pause/resume
  • 7af055f feat: add WebSocket manager with heartbeat and auto-reconnect
  • 6cfa7de feat: add network connectivity monitor with debounced status events
  • f9c41fd feat: add retry utility with exponential backoff and rate-limit awareness
  • 17df8c5 feat: add sync queue manager with priority and dead-letter support
  • b5ed1b7 feat: add sync item encrypt/decrypt pipeline
  • 8c3d3b6 build: add ws package for WebSocket sync connection
  • 18dc046 fix: harden IPC auth flow and store recovery phrase in main process (C2, H4, H6, H7, H8, H9)
  • dd94e81 fix: harden crypto — enforce equal-length comparison and derive vault key on-demand (H1, H2)
  • 928d924 fix: server auth hardening — persist refresh hash, remove dead blob check, bind setup token (C1, C3, H3)
  • 844cf1b fix: use sodium.memzero for BIP39 seed buffer cleanup (H5)
  • 10c6ed7 fix: add iteration limit to pickRandomIndices (L6)
  • 3525315 refactor: split OTP verify from device setup across IPC boundary (H2, C4, H8, M1, M12)
  • e30ceea fix: remove dead KDF contexts and zero signing key after copy (H7, L5)
  • bf8ef6d fix: align shared contracts with server responses (H1, H7)
  • bddfa41 fix: require ENVIRONMENT binding and strip health endpoint info (M5, M13, L7)
  • 9da50af fix: harden auth routes against race conditions and info leaks (C2, C3, H4, H9, M11)
  • f35aacb fix: add missing CASCADE and NOT NULL constraints in D1 schema (H5, L2, L8)
  • bbc850c fix: harden server crypto primitives (C1, C5, M2)
  • 4c768cd refactor: resolve merge conflicts and update voice-recorder and hooks with scoped logger
  • 8825e4f refactor: replace console.* with scoped logger in renderer components
  • 50e5b2a refactor: replace console.* with scoped logger in renderer pages/contexts/lib
  • c3121d9 refactor: replace console.* with scoped logger in renderer hooks
  • da79a39 refactor: replace console.* with scoped logger in lib/db/store modules
  • 7e5cc88 feat: add renderer-side logger wrapper for electron-log
  • f7245df refactor: replace console.* with scoped logger in inbox modules
  • 19e1710 refactor: replace console.* with scoped logger in IPC handlers
  • ff02568 refactor: complete extractErrorMessage migration across renderer
  • 1fdc080 refactor: replace console.* with scoped logger in vault modules
  • dba82ae refactor: replace console.* with scoped logger in IPC core
  • 3e8f848 refactor: replace console.* with scoped logger in main entry
  • b18cb8f feat: add electron-log logger module with scoped loggers
  • 72256ba refactor: migrate all renderer error handlers to extractErrorMessage
  • 74d8800 fix: sanitize IPC errors and return structured errors from link-via-recovery
  • 42e2d6a refactor: use extractErrorMessage in renderer error handlers
  • 1d1546c feat: add extractErrorMessage utility for IPC error parsing
  • e465d30 feat: add recovery-input step to setup wizard for re-linking
  • 9a9cfd6 feat: add needsRecoveryInput, RECOVERY_LINKED, and linkViaRecovery in auth context
  • 746018d feat: add RecoveryPhraseInput component for re-linking flow
  • ed745b1 Expose needsRecoveryInput and linkViaRecovery in preload
  • d839471 feat: implement link-via-recovery handler and needsRecoveryInput in main
  • cf20acf fix: fetch OAuth URL via http(s).get to avoid redirect
  • ef6be9c Add GET /auth/recovery-info for recovery phrase linking
  • 0e834f7 Add needsRecoveryInput to auth contracts and simplify link-via-recovery input
  • 9bbd7fd feat: add sign-out dialog and sidebar sync indicator
  • b8a22ca feat: add device list, email propagation, and logout handler
  • bb45695 fix: CBOR strict field validation, remove ts-ignore, safer type cast
  • d0fcb67 refactor: remove duplicate auth hook and recovery phrase from global state
  • 423ffb8 fix: harden server auth — token verification, single-use setup, device limit
  • 1f2f77f refactor: use getPrivateKey helper in generateTokens
  • 6de7202 feat: implement OAuth loopback redirect for Google sign-in
  • ee05e02 fix: update email sender domain to memrynote.ai
  • 860115f fix: normalize PEM newlines in JWT key parsing
  • b5dd381 chore: update gitignore and add dev vars example
  • 140478f chore: update .gitignore to include .wrangler
  • 9e9f99a fix: replace vite-plugin-static-copy with Rollup writeBundle hook
  • db27f50 chore: remove noisy embedding update log
  • b4aa058 fix: return empty devices list from GET_DEVICES stub
  • 92254ca fix: return null during vault loading to prevent flash
  • 1a0b8ec fix: guard snooze and reminder timers when vault is closed
  • ae652bb feat: add sync_devices migration and sync_queue indexes
  • 0ed0be9 docs: consolidate agent instructions into CLAUDE.md
  • b31f73f Complete User Story 1 by finalizing authentication services and token management
  • f7765f2 Add useAuth hook and extend renderer auth service
  • 6fa77e2 Add PKCE OAuth initiation and token refresh to main process
  • 0d74123 Mark T063-T069c complete after review and fixes
  • 64e2877 Use verifyOtp return value and harden setup wizard
  • 30fdef4 Fix OTP countdown timer recreation and clear input on verification error
  • bd832ae Randomize recovery phrase verification indices with crypto.getRandomValues
  • 3355f25 Clear clipboard after recovery phrase copy to prevent sensitive data leak
  • d5c2339 Return VerifyOtpResult from verifyOtp to fix stale closure race condition
  • 89b088b Format hasPendingOtp query string
  • fc15829 Integrate sync settings section with setup wizard
  • b5bcb1c Add sync auth context and setup wizard UI components
  • b45985c Add input-otp dependency and shadcn/ui OTP input component
  • bcf7dfb Persist device to local DB and harden first-device setup
  • d11ec6d Handle keytar failures with descriptive errors
  • 347d3b1 Add x-forwarded-for fallback for IP rate limiting
  • eb9350e Differentiate OTP resend from initial request and document nonce tradeoff
  • b61bc91 Add hasPendingOtp query for OTP resend validation
  • b7fcf3d Throw on email send failure instead of returning false
  • 358529f Mark US1 server and client implementation tasks complete
  • de1c9f0 Add renderer auth and device services (T050e, T070)
  • 3f8aad6 Implement sync IPC handlers for auth and device setup (T054-T057, T062)
  • 0eb3746 Add OAuth token keychain entries, OTP event, and sync store schema
  • 78ee4f3 Add sync HTTP client for server communication
  • 42ad2b0 Format code with prettier
  • 937fe30 Add jwt-keys tests and enable coverage reporting
  • a2f6ffd Fix 11 failing tests by aligning mocks with source changes
  • eef99ac Add 103 tests for auth services, middleware, and routes (T042-T053a)
  • 6c2bea8 Add sync-server to vitest workspace and align vitest to v4
  • 52d0e83 Fix OAuth CSRF by generating state token server-side (T049a)
  • bcc081d Add auth route handlers and mount at /auth
  • 4238297 Add setupToken, device tokens, and Google OAuth bindings
  • 7e2d3fa Add user, OTP, and setup auth services for auth flow
  • 14c90d6 Extract shared JWT key helpers into lib/jwt-keys.ts
  • dedb9d9 Fix test expectations to match current implementation
  • 9e08c7c Align crypto tests with implementation behavior
  • 0b723ea Record recent search before executing search query
  • 1b0745a Fix task filter persistence writing stale state on view switch
  • 1a56ce6 Extract EMBEDDING_DIMENSION to standalone constants module
  • 53530b8 Add sync-server service tests (auth, blob, cleanup, cursor, device, email)
  • 8219d86 Add sync-server middleware tests (auth, rate-limit, security headers)
  • de91e6b Add sync-server test infra and foundation tests (schema, contracts, libs)
  • 8dd99a7 Add tests for main process IPC registration, sync handlers, and preload bridge
  • 8dd8be3 Add tests for crypto foundation and vector clock operations
  • 3a2c441 Add tests for shared sync contracts and data schema exports
  • 231dab7 Add note_snapshots title column migration
  • 3a40d15 Add foundational tests for crypto module and server services
  • 46efe2e Align preload types with shared contracts and register tags handler cleanup
  • dd62217 Add cron cleanup, body size limits, Durable Object stubs, TOMBSTONE CBOR type
  • 9fd73df Harden server infra: blob auth, email validation, body limits, security headers
  • 786e3f8 Fix auth: persist refresh token, atomic rotation, compose device revocation
  • fa4d55b Fix crypto security: constant-time comparison, key cleanup, KDF context map
  • 87c3b4b Harden D1 and Drizzle schemas for data integrity
  • acc9464 Add tests for crypto handler base64 rejection and sodium readiness
  • 7a6183b Harden crypto handlers: sodium readiness guard and safe base64 decoding
  • 51e837e Add sync tables migration (devices, queue, state, history)
  • 4d0b337 Add CSRF protection to OAuth deep link callback
  • efd6a22 Add contract sync automation to prevent client/server drift
  • 222db08 Replace preload duplicate type declarations with shared contract imports
  • 9cb970e Warn when CBOR encoding silently excludes fields not in ordering
  • de3373d Split ipc-sync.ts omnibus into domain-specific contract files
  • 17dcc3b Fix crypto security: proper KDF derivation, buffer zeroing on exceptions, input length validation
  • 94087d5 Fix server security: rate limiter schema, cleanup timestamps, JWT type validation, secret enforcement, user-scoped device queries
  • da8c6ac Complete Phase 2 implementation: encryption, sync schemas, and renderer updates
  • b42e4b9 Update speckit tooling, project docs, and sync spec documents
  • 46481e1 Mark Phase 2 foundation tasks as complete (83 tasks)
  • deb8fee Copy shared contracts to sync-server for server-side validation
  • 66c4e16 Wire sync/crypto IPC handlers, preload bridge, and deep link protocol
  • 2a1d5aa Add sync server foundation with auth, rate limiting, and R2 services
  • 5f175eb Implement crypto module with XChaCha20, Ed25519, BIP39, and keychain
  • c7cc267 Add shared Zod contracts for auth, blob, linking, and CBOR ordering
  • c5f3bd2 Add local Drizzle sync tables for device state and queue tracking
  • ff62570 Add D1 database schema with 14 tables for sync infrastructure
  • de9be46 Mark Phase 1 sync setup tasks as complete
  • 1b3050d Scaffold Cloudflare Workers sync server with D1 and R2 bindings
  • 0c44b8c Add shared type contracts for sync API, crypto, and IPC
  • 454b5cb Scaffold sync and crypto directory structure
  • 74f84dc Add sync/E2EE dependencies and consolidate build config
  • 5a301da Enhance data model and task specifications for sync features
  • f8d09e5 3
  • b13a14f Refine OAuth integration to support only Google authentication
  • 3adf851 Enhance task specifications for CRDT and device registration features
  • 41c420f Update task specifications to include secure memory cleanup and refresh token endpoint
  • 5ddbf73 Update sync specifications with detailed task descriptions and schema enhancements
  • 1b898fb Enhance sync specifications with IPC-backed Yjs provider and SQLite integration
  • af2ada2 Update sync specifications to transition from y-indexeddb to y-leveldb
  • 33e3a21 Enhance sync specifications with device-level signing and schema updates
  • fe65e46 Update task specifications for sync features and UI integration
  • 28bcab5 Update task specifications for sync architecture and database schema
  • 10b0e83 Refactor token refresh logic and update task specifications
  • 322c11e Add new tasks for Ed25519 signatures and OTP codes in sync specification
  • 5666349 Implement passwordless email OTP authentication
  • cf9d79c Remove core data layer specifications and related documents
  • 53f98fa Remove outdated sync engine specifications and related documents
  • 72a7f10 Update project configuration and documentation
  • 1767278 Remove AGENT.md and frontend-developer.md files; integrate ExecPlan usage guidance into AGENTS.md for improved documentation consistency.
  • 83682bc Add cborg dependency for canonical CBOR encoding in sync engine
  • e5a5d63 Enhance sync specification with canonical CBOR encoding for signatures and HMACs
  • 50752b8 Update sync specification for key derivation and device linking improvements
  • f2a9f81 Update data model and specifications for enhanced key derivation and device linking
  • ddc2cf3 Refactor TabBarWithDrag component for improved rendering and scroll handling
  • 2d03701 Enhance sync specification with additional tasks for encryption, password management, and sync integration
  • e1d6293 Refactor sync specification to improve clarity and organization
  • 93151b1 Enhance sync specification with key derivation, encryption algorithms, and rate limiting
  • cb7bd90 Implement email/password authentication and enhance user account schema
  • d3ed5c4 Update sync specification with new user stories and functional requirements
  • f3877db Integrate SidebarDrillDownProvider and enhance folder view components
  • 5c925d5 Add binary file sync architecture and upload/download processes
  • 455882d Update TypeScript build info and refine specification templates
  • db0326d Add tag definitions table and update related database schema
  • d0e805a Enhance property management with drag-and-drop functionality
  • 7bba5ff Refactor property management in Journal and Note pages
  • fe9ee39 Add property renaming functionality to properties handlers
  • ce34a2d Remove outdated UI/UX designer and Speckit command documentation
  • 63d8cb5 Refactor properties handling and unify API for notes and journal entries
  • 6edf6d9 Remove estimate command documentation from the project. This deletion streamlines the command set by eliminating unused or outdated content related to development estimation