Memry v2026-05-06
·
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