Tolaria Release History

Stable builds appear when a stable-vYYYY.M.D tag is promoted. Alpha builds update on every push to main.

Use Tab to reach the channel picker, then use the arrow keys to switch between Stable and Alpha.

Tolaria 2026.4.25

April 25, 2026 · stable-v2026.4.25

Stable

What's Changed

  • 8207b87 fix: include linux signatures in stable release
  • 602a099 fix: polish contribute dialog copy
  • 2315122 fix: clear stale editor selection on note switch
  • ab4fcdb ci: include linux alpha updater signatures
  • a56cb8c fix: allow raw editor styles under CSP
  • b93e6d4 ci: test linux alpha release artifacts
  • 3152ff2 fix: allow optional pending diff loaders
  • dd018cf fix: queue diff opening until tab activation
  • d0d9d90 test: stabilize H1 wikilink smoke
  • 944efad fix: load note windows without vault scan
  • ef4ad25 feat: add Refactoring support card
  • c427cd2 fix: guard native file drops
  • 151e993 chore: ratchet codescene thresholds
  • 60554d0 fix: handle IME composition in AI composer
  • 4929f11 fix: harden windows release and git subprocesses
  • 3f4e5b5 fix: refresh image asset scope after attachment writes
  • cd49c81 feat: add status bar theme toggle
  • b9f3dc9 fix: refine contribute panel actions
  • 122aba7 fix: load current note in new window
  • 05896bd fix: restore editor external link toolbar actions
  • 87a933f fix: replace silent catch blocks with warnings
  • 54c0efa feat: add dark mode foundation
  • bdde0c8 fix: bound note prefetch cache by size
  • a474303 fix: preserve back history after cmd-click wikilinks
  • 4701485 fix: keep empty title clicks in h1
  • 135a8a0 fix: handle nested release artifacts
  • 0f5d7d5 fix: restore folder boundary validation
  • d6b3c0a feat: add windows desktop release support
  • f896c01 fix: publish linux stable release artifacts
  • c3cff0c feat: replace feedback with contribute modal
  • 8c7f923 fix: gate macos shortcut constants for linux clippy
  • 38acebb feat: add linux desktop support
  • 622977a fix: restore clone modal invoke typing
  • 9ce1c6f refactor: restore clone modal code health
  • 4686563 fix: harden clone git repo flow
  • 564ee0a test: cover native command wrappers
  • 11655c0 fix: harden inbox auto-advance merge
  • daa1e3e fix: keep ai composer responsive after image paste
  • f2c83be fix: format MCP config tests
  • 6104402 fix: write Claude Code MCP config to .claude.json
  • 67c8598 fix: keep clone flows off the UI thread
  • 7e386ff docs: move contributing guide to repo root
  • 309b816 Add custom funding URL to FUNDING.yml
  • 9f6779e docs: add contributing guide
  • 843cedd fix: align auto-advance test bridge types
  • 05156ca feat: add inbox auto-advance setting

Stable release — manually promoted from main

Includes macOS (Apple Silicon), Windows x64, and Linux x64 bundles

Built from 8207b87c on 2026-04-25

Tolaria 2026.4.24

April 24, 2026 · stable-v2026.4.24

Stable

What's Changed

  • ba5c165 test: harden macos titlebar coverage
  • 2308b26 docs: add ADRs for cache concurrency and git signing fallback (guard — from commits 42bb6c4, 6dbcc33)
  • b7f482b fix: respect macos header double click action
  • 33d7404 fix: keep blocknote tables editable after focus changes
  • 0ecac2a fix: allow unicode type filenames
  • 7c9f2b0 fix: guard editor selection churn around inline actions
  • 24e317c fix: handle unreadable non-utf8 files gracefully
  • 66c183f fix: keep IME composition stable in editors
  • dacf9bb fix: guard note loading without active vault
  • 3c92c20 fix: sync onboarding vault handoff
  • 61c3a3e docs: ratchet codescene thresholds
  • 2e7c94d fix: register created onboarding vaults
  • 98ade74 fix: avoid duplicate onboarding vault writes
  • 1877634 fix: persist onboarding vault selections
  • 57bbcdb fix: format cache hardening helpers
  • 42bb6c4 fix: harden vault cache updates
  • 070cd3a test: stabilize telemetry onboarding smoke
  • accc627 fix: restore vault images and default folders
  • 941f12a test: clear vitest cache before coverage
  • 4710a2d fix: reuse local smoke server by default
  • 65a4212 fix: satisfy arrow ligature type checks
  • 4ed0289 Revert "test: simplify main entrypoint setup"
  • 4ad32fa test: simplify main entrypoint setup
  • c9623d5 feat: add arrow ligatures in both editors
  • 7728645 fix: anchor settings default agent dropdown
  • 5b8aa8d fix: guard pull refresh during unsaved editor edits
  • 21b6d89 fix: support symlinked vault notes
  • 11fc123 fix: guard folder picker after update install
  • d98fa94 fix: retry commits when signing helper is missing
  • add3c40 fix: thread vault image path through tab swaps
  • fb0d550 fix: make starter vault images portable
  • 6adf7fd fix: capture react root errors in sentry
  • 3b4d959 fix: finish empty Claude Code runs
  • bb1b186 fix: stabilize smoke dev server watch
  • 6dbcc33 fix: create repos despite commit signing
  • 4944365 fix: detect local Claude Code installs

Stable release — manually promoted from main

Requires Apple Silicon (M1/M2/M3)

Built from ba5c1650 on 2026-04-24

Tolaria 2026.4.23

April 23, 2026 · stable-v2026.4.23

Stable

What's Changed

  • c4c6bb6 fix: restore folder row toggle
  • 35dd2dd docs: add/update ADR for note retargeting (guard — from commit 2c9361d)
  • 89141ba chore: ratchet codescene thresholds
  • 2b9294f style: format note move backend
  • a756af5 fix: keep note drop targets active during drag
  • b01b156 fix: align folder rows with sidebar items
  • 2c9361d feat: retarget notes to types and folders
  • 8b73ef5 feat: add sidebar folder rename and delete actions
  • a6a727a fix: align inspector create-type typing
  • bf13eed fix: handle filename collisions in create flows
  • a27a70e fix: allow PostHog and Google Fonts in app CSP
  • ca92bf4 fix: restore keyboard shortcut typing
  • 9fda0a6 fix: make note renames crash-safe
  • 0ffb7c6 Ignore history shortcuts while editing
  • 633d9f1 Add security policy and private reporting guidance
  • ba3d413 fix: recover from missing note paths
  • f328692 fix: satisfy clippy for MCP status
  • b0b476c fix: harden external AI tool setup
  • dac696b fix: guard toolbar popover anchors
  • cda87ee feat: add sidebar folder rename and delete actions
  • 33324a5 fix: harden mcp bridge and vault boundaries
  • f28626b fix: finish claude agent streams
  • 1bc2e3d docs: add ADRs for startup and linkify lifecycles (guard — from commits 59268ac, bf44264)
  • 8e6bdab docs: ratchet codescene thresholds
  • d52362a fix: repair tiptap patch integrity
  • bf44264 fix: silence duplicate linkify init warnings

Stable release — manually promoted from main

Requires Apple Silicon (M1/M2/M3)

Built from c4c6bb6c on 2026-04-23

Tolaria 2026.4.21

April 21, 2026 · stable-v2026.4.21

Stable

What's Changed

  • 1b3a444 fix: show welcome on fresh install without missing vault
  • c4da7f1 fix: narrow raw mode sync override
  • c5fe291 fix: sync inspector edits into raw editor
  • 59268ac fix: guard empty vault path during startup
  • 3e4e2eb refactor: simplify breadcrumb and note-list search ui
  • 0537525 Rename 'Documentation' section to 'Tech Docs'
  • 0c0354b Updated README badges
  • 6023e95 fix: serialize vitest coverage files
  • 88d5694 fix: retry flaky vitest coverage teardown
  • db6b388 fix: keep vitest coverage shards off workspace
  • ad9901b fix: stabilize coverage suite reruns
  • b785c53 test: increase strategic coverage
  • 8ae1ade test: cover live sidebar type picker sync
  • 35b0356 fix: adapt save reload callback
  • d3d663a fix: reload vault entries on tauri startup
  • 8f62435 test: cover journal vault scan
  • 0e54173 test: cover explicit journal visibility
  • a6f1524 ci: reject placeholder telemetry secrets
  • 4cd5bae fix: sync sidebar types with live vault state
  • fb1265e test: stabilize note list search timing
  • ca89662 fix: sync raw editor frontmatter state
  • 97f285e ci: upload coverage to codecov
  • 4bd4ef4 Added release badge in README
  • be29880 Added walkthroughs to the README
  • 7be5519 fix: sort alpha releases chronologically
  • 8cefbe9 fix: refine derived inverse relationship labels
  • dd0a55b docs: add ADR for external vault refresh after pulls and agent edits (guard — from commit 0020ade)
  • 610276b docs: ratchet codescene thresholds
  • e6c968e fix: satisfy note list keyboard build
  • 367a66f fix: debounce note list search
  • 6a40469 fix: harden startup telemetry urls
  • ec8b637 fix: hide uncloned getting started vault

Stable release — manually promoted from main

Requires Apple Silicon (M1/M2/M3)

Built from 1b3a4443 on 2026-04-21

Tolaria 2026.4.20

April 20, 2026 · stable-v2026.4.20

Stable

What's Changed

  • 3ee42fb test: align create-note smoke placeholder
  • eacf05a fix: reload notes after agent edits
  • a199fad fix: widen editor focus block typing
  • e956c80 fix: keep editor sync from clobbering live inserts
  • 7a6e386 fix: reopen active note after pull updates
  • e0e2dc4 test: add pull refresh regression
  • 0020ade fix: tighten pulled note refresh flow
  • 503e482 fix: normalize inverse relationship labels
  • 0d0e6af fix: keep vault menu remove action in row
  • dbaf361 test: fix starter-vault app shell coverage
  • d3741c8 test: fix starter-vault shell regression
  • b90d2f8 fix: reorder welcome onboarding actions
  • 9536efe fix: persist AI panel chats across reopen
  • c86a6ab docs: add/update ADR for starter vault local-first remote flow (guard — from commit 374b4f6)
  • 1d7c027 Updated Tolaria Icon
  • 74e50c6 fix: hide stale getting started vault entries
  • 8b97ef7 feat: refresh welcome screen branding
  • 08855ce fix: defer git history during note switching
  • 03042bb fix: normalize shipped telemetry secrets
  • cee4bef fix: harden shipped telemetry config

Stable release — manually promoted from main

Requires Apple Silicon (M1/M2/M3)

Built from 3ee42fb8 on 2026-04-20

Tolaria 2026.4.19

April 19, 2026 · stable-v2026.4.19

Stable

What's Changed

  • f223d4f refactor: curate demo-vault-v2 fixture
  • 2f693c4 fix: dedupe new type palette action
  • 44f0c7c feat: open favorites in neighborhood mode
  • ea14f1a fix: use rendered release note html
  • db21ae4 feat: improve release history page
  • 8019c4f fix: defer missing vault startup state
  • 0d552e1 fix: satisfy note-open perf build checks
  • 977f559 fix: stop note navigation from scaling with vault size
  • 261a5be chore: ratchet codescene thresholds
  • 8d3cce7 fix: satisfy neighborhood history build checks
  • e059482 fix: unwind neighborhood history on escape
  • b98d412 fix: stop seeding title during property init
  • 098dc42 test: add isolated vitest coverage runner
  • 326ccb0 test: stabilize vitest coverage artifacts
  • c2bbdb0 test: stabilize git default branch in helpers
  • 039f9e4 fix: cache inspector link lookups
  • 8581a1b fix: organize seeded claude shim files
  • 2c5cb59 Removed old Project spec reverence
  • 348b627 Updated README
  • f5cc5ff fix: satisfy clippy and stabilize app startup test
  • 374b4f6 feat: keep getting started vaults local by default
  • 36c20f3 fix: hide unavailable getting started vault
  • 8551d81 Deleted old unused font
  • d5497d7 Match getting started subtitle copy
  • 046afe0 Simplify Getting Started vault subtitle
  • cb1cc4b fix: include inverse neighborhood groups
  • 00cb938 fix: add cmd o quick-open alias
  • 80c1327 fix: keep neighborhood reverse matches path-aware
  • 9534449 fix: hide absent neighborhood groups
  • 2d5361b fix: keep keyboard note switching snappy
  • b22da65 fix: keep note switches instant
  • 862af86 fix: preserve image selection while hovering toolbar
  • 9ecefc9 feat: add stable landing page download link
  • 9693fe2 fix: restore type filter icon colors
  • 92ea32c feat: add neighborhood browsing mode
  • 2e2bd2f fix: preserve native welcome vault creation
  • 3556d93 test: format vault command assertions
  • feef938 fix: align fresh vault seed files
  • 67a9930 feat: add empty vault creation flow
  • aed4d05 docs: ratchet codescene thresholds
  • cac7f12 fix: stop duplicate native quick prompt paste
  • 72b5b52 feat: add view note-list controls
  • 7deeb49 feat: add number property type
  • 8c0a2e7 fix: share onboarding drag shell
  • c4e66dc fix: make onboarding window draggable
  • c0bb722 fix: reuse note content cache for rapid note switches
  • bc11c86 fix: stabilize ai mode paste editing
  • 502ecf0 test: stabilize wikilink smoke coverage
  • 8bbbba9 fix: correct vault path type guard
  • 86adf86 fix: restore bottom bar vault switching

Stable release — manually promoted from main

Requires Apple Silicon (M1/M2/M3)

Built from f223d4f6 on 2026-04-19

Tolaria 2026.4.18

April 18, 2026 · stable-v2026.4.18

Stable

What's Changed

  • cec1627 fix: preserve image toolbar hover bridge
  • b001834 fix: show Note metadata in autocomplete
  • ed9ceff fix: align Notes counts with explicit type
  • e18491b fix: preserve untitled rename session continuity
  • fd0cfc7 fix: exclude attachments from all notes totals
  • 6541ce5 test: stabilize wikilink smoke timing
  • 4456801 fix: keep h1 typing responsive
  • db7aaf1 fix: restore note type during vault repair
  • 54b2616 fix: restore manual commit dialog when autogit is off
  • 6a90e9f fix: correct editor layout diff callback type
  • b79c78a fix: save raw note changes before switching notes
  • 48a8882 Reorder CodeScene badges in README
  • 9827670 Added codescene badges
  • 857d55a fix: stop cmd+s from renaming note titles
  • b78dfad fix: resume onboarding after telemetry on fresh start
  • 9ac51ba test: pin app test active vault
  • 1fee994 test: cover mock vault config path
  • 764bbf0 test: scope inbox sidebar assertion
  • ff05ba0 chore: ratchet codescene thresholds
  • 347df47 fix: stabilize smoke vault harness

Stable release — manually promoted from main

Requires Apple Silicon (M1/M2/M3)

Built from cec1627a on 2026-04-18

Laputa 0.20260410.666

April 10, 2026 · v0.20260410.666

Stable

What's Changed

  • 0aa3d15 fix: tighten settings panel organization toggle typing
  • 7bc7443 feat: add explicit note organization setting
  • 0e1d98a fix: ellipsize long property values
  • f37d111 fix: replace breadcrumb shadow with border
  • 3c51a18 feat: add created dates to note list rows
  • acd9add feat: add feedback modal flow
  • 7dace14 fix: align favorites sidebar rows
  • 09f5ab9 fix: hide view counts on hover
  • 7304c3c fix: move cmd+e to toggle organized
  • 378990c fix: restore filter field dropdown scrolling
  • f745bc4 chore: ratchet codescene thresholds to 9.68/9.33
  • b13d223 fix: support localized ai panel shortcut
  • c6d1034 fix: keep date filter rows aligned
  • 165f53f fix: refresh changes after frontmatter edits
  • 31c8ac4 fix: make ai panel shortcut command-only
  • dd78e25 fix: keep note list icons inline
  • cb2e28f fix: hide legacy title chrome for frontmatter titles
  • d13e181 fix: narrow pending tab swap target path
  • 4634949 fix: swap note content after pending navigation
  • 90fbe82 fix: hide stale title chrome while notes load
  • 64e923a fix: type property chip icon helper
  • 3ac2326 fix: restore built-in relationship chip icons
  • f4b59c9 chore: ratchet CodeScene thresholds to 9.68/9.32
  • 21ad9ad fix: unclip view filter field combobox
  • 8b4ab4a feat: preview relative date filters
  • 680a561 feat: enhance note list property chips
  • cffac28 feat: add searchable filter field combobox
  • c3a9400 fix: make AI panel shortcut command-only
  • 3feb167 fix: surface status in note list chip picker
  • 459145b fix: improve note icon property editing
  • 24f6a01 fix: hide legacy title section for H1 notes
  • 6640691 style: format search title lookup
  • 429aba7 fix: use h1 titles for displayed note names
  • ad46eb0 fix: serialize single-item yaml lists as blocks
  • 5c5d40f fix: require cmd-click for editor links
  • b06d084 docs: clarify CodeScene boy scout workflow
  • 7da50be fix: isolate pre-push smoke server
  • 8f614e4 fix: isolate smoke lane dev server
  • c0a5e8e fix: restore tauri runtime compatibility
  • 528c711 fix: narrow commit url before opening
  • 9078544 refactor: improve CodeScene hotspot health
  • e7fe938 test: keep the smoke gate on stable app flows
  • 616952b test: stabilize smoke lane and timer-heavy tests
  • e3eb774 test: stabilize the pre-push smoke lane
  • be57656 test: stabilize the smoke lane
  • f66c8cf fix: stabilize note list hotspots
  • 8141b8f refactor: split note list hotspots
  • 0cc21e6 docs: add ADRs 0046–0049 for starter vault clone, regex filters, relative date filters, per-note icon (guard — from commits ef4a512, b0b6a4f, 037fd39, 771409d)
  • ef4a512 feat: clone the starter vault on demand
  • 037fd39 feat: support relative date view filters
  • b0b6a4f feat: add regex mode for view filters
  • d33117d test: stabilize untitled draft title regression
  • 751d1e3 test: cover AI panel shortcut regression
  • 63eedbd fix: clear missing active vault paths
  • b674d20 fix: stop writing empty suggested properties
  • f00eb65 fix: tighten relationship chip typing
  • 927aa5c feat: show icons on relationship chips
  • f0ac684 fix: allow CodeScene recovery mode
  • 7e48b81 fix: tighten note icon typing
  • 771409d feat: add note icon property support
  • 2eb8e02 fix: stop syncing title frontmatter on note open
  • 31e41e8 fix: avoid duplicate list property drag tab index
  • 9cc3bcf feat: customize inbox note list columns
  • 6c67b39 fix: narrow deleted preview active tab path
  • 8218bcf feat: show deleted notes as restorable changes
  • 59205c4 fix: keep view filter values as plain text
  • c68c0a6 test: slim the pre-push smoke lane
  • b384cbf chore: enforce main-only workflow and adopt AGENTS.md
  • 578f369 chore: ratchet CodeScene thresholds to 9.45/9.29
  • cbad383 style: satisfy rustfmt pre-push check
  • 6a02317 fix: correct editor breadcrumb props typing
  • a12b350 fix: hide title section for untitled drafts
  • c403522 docs: rewrite vault AGENTS.md template — vault-agnostic, H1-as-title convention
  • 4a4ce4a fix: open editor immediately when clicking suggested property slots
  • 387ca56 docs: add/update ADRs for H1-as-title and Trash removal (guard — from commits d50f347, 9c87eca, d0c3a6b)
  • e0ea0dd chore: restore ui-design.pen (Pencil design file — not stale)
  • c9da52a docs: restore VISION.md — product vision, strategy and design principles
  • c5f6e15 chore: remove remaining stale screenshots
  • 89f655c chore: remove stale docs and assets (PROJECT-SPEC, ROADMAP, VISION, Design System Proposal, iPad Prototype, screenshots, untitled notes, prompt.txt, ui-design.pen)
  • ceda8ab fix: suggested property slots now reliably open editor after click
  • 95edc7f docs: require completion comment on Todoist task before /laputa-done (QA, refactoring, ADRs, code health)
  • 8fe5340 docs: require pre-task code health check — refactor before feature work if below gate
  • 8b98e77 fix: sync custom properties to VaultEntry on frontmatter changes
  • ca507f6 fix: forbid lowering CodeScene thresholds in CLAUDE.md
  • f756e6a feat: add note count chips to sidebar view entries
  • 0d08a80 style: cargo fmt on mod_tests.rs
  • 3411f4e fix: stabilize flaky SearchPanel keyboard tests with act() wrapping
  • e2890ec fix: don't bake demo-vault-v2 path into CI builds
  • 8bd26b5 fix: sanitize gray_matter YAML output to handle unquoted colons and hash comments in list items
  • 6762c5c style: cargo fmt
  • d284bef fix: add hasH1 to mock entries for build compatibility
  • 9c87eca feat: auto-rename untitled notes + Rust title resolution tests
  • d50f347 feat: H1-as-title — title resolution, TitleField hiding, breadcrumb filename
  • 0b58fd6 fix: change AI panel shortcut from Cmd+Option+I to Cmd+Shift+L
  • 0c5db9e fix: remove remaining trash navigation command and header title
  • d0c3a6b refactor: remove Trash system — delete is now permanent with confirm modal
  • 53072eb fix: Cmd+Option+arrow navigation now follows the visible note list order
  • 463c9bd fix: show Add button immediately in suggested relationship slots
  • b9ad9d4 fix: align suggested property slots with real properties in Inspector
  • 768b4c7 fix: add bottom padding to Favorites list matching top padding
  • 4573ea8 fix: default sidebar section to Inbox on app launch and vault switch
  • 4bbd1f4 style: apply rustfmt to classify_file_kind tests
  • 2a5386a fix: pass forceRawMode through ActiveTabBreadcrumb to BreadcrumbBar
  • ef17e7b fix: hide Raw toggle for non-markdown files forced into raw editor
  • 61a83f4 fix: wikilink filter values now match frontmatter format with alias support
  • d235f9b fix: wikilink autocomplete in FilterBuilder no longer clipped by dialog
  • d06dea9 fix: always show note title in breadcrumb bar when raw/diff mode active
  • 9ee6691 fix: make Select scroll buttons functional by using overflow-hidden on Content
  • b10cf8d fix: show types with 0 notes in sidebar by iterating typeEntryMap
  • 27b53d8 fix: wrap title + editor in editor-content-wrapper for consistent horizontal padding
  • f902b23 style: fix rustfmt formatting in trash.rs
  • b4f2fe0 feat: auto-purge notes trashed 30+ days ago on app launch
  • 64238e5 fix: exclude non-markdown files from Inbox view
  • c8b26b1 feat: show YAML name field as title for .yml files in breadcrumb bar
  • 7c1269c feat: replace native date picker with shadcn/ui Calendar + Popover in filter builder
  • 95742c3 feat: GitHub Desktop-style Changes view — filenames, status icons, auto-diff
  • fea8038 feat: disable BlockNote/Mantine editor animations and transitions
  • e98576d fix: resolve TypeScript errors in Sidebar and NoteList
  • de8a246 feat: remove AI Provider Keys section from Settings
  • c282244 feat: reactive vault state — editor changes propagate immediately to all UI
  • bf530c8 fix: include non-.md files in vault cache incremental updates
  • db31c11 test: update Sidebar test to match new behavior — types with 0 notes shown
  • 5db899a fix: wrap SearchPanel Enter keyDown in act() to prevent flaky test
  • 8e9a1ba feat: add body content filter support in Rust backend
  • 1145f4a feat: add organized toggle to breadcrumb bar and command palette
  • 49d7353 refactor: replace relationship-based inbox logic with _organized property
  • bfe06ae feat: add + button to TYPES header for creating new types
  • f44c831 fix: use full vault reload after view create/delete for reliable FOLDERS update
  • 7d16c75 fix: rustfmt formatting in discard_file_changes
  • a3da859 feat: add per-file discard changes in Changes view
  • 8b60c98 fix: coerce claudeCodeStatus/Version null→undefined for AppCommandsConfig
  • 2f0be6e fix: add claudeCodeStatus/claudeCodeVersion to AppCommandsConfig (TS error)
  • 66a7540 fix: update pnpm lockfile for @blocknote/core patch (CI frozen-lockfile fix)
  • 29bc072 feat: add Claude Code detected/missing badge to status bar
  • 3d6f16f feat: add body content filter for Views (contains/does not contain)
  • e6274e8 feat: add suggested property/relationship slots in Inspector
  • 97dc6e9 feat: move Info section below Backlinks in Inspector, add Phosphor icon
  • 2978149 fix: rename "Link existing" to "Add relationship" in Inspector
  • 8ae5b7c feat: enrich getting-started-vault with real PKM example notes (Luca's system, guided Welcome)
  • e1aa57f fix: wikilink autocomplete triggers mid-text, not only on empty lines
  • c07bdfd refactor: simplify getting-started-vault (3 types: Note/Topic/Person, no prefixes in filenames, Welcome as home)
  • ee3415c feat: redesign welcome screen with three vault options
  • 9a82e9a feat: include Type definitions in command palette's dynamic commands
  • 1d301ea fix: apply rustfmt formatting to vault module
  • ec16e75 feat: add getting-started-vault with onboarding content
  • 162aea6 fix: add listPropertiesDisplay to remaining VaultEntry literals
  • e70b5aa fix: add listPropertiesDisplay to mock entries for type check
  • 8d90b84 feat: add type-specific property chips in note list
  • 0be1060 fix: remove Update channel from Settings, keep only Release channel
  • b6517e2 fix: rename SECTIONS to TYPES in sidebar header
  • 0e71403 fix: enforce priority sort in laputa-next-task (p1 before p3/p4)
  • 7cd813e fix: update vault entries immediately after view create/delete
  • df8ed50 fix: remove Inbox period filter pills, show all notes by default
  • f163d63 fix: prevent CI runner vault path from leaking into distributed builds
  • c5b151a fix: remove Quarter filter pill from Inbox, keep Week/Month/All
  • f1476e1 test: add Playwright smoke test for filter wikilink autocomplete
  • 08e2803 feat: add wikilink autocomplete on [[ in view filter value field
  • 49df920 docs: add mandatory UI components rules to CLAUDE.md — always use shadcn/ui, never raw HTML
  • b84dc12 fix: add type="button" to EmojiPicker buttons to prevent form submission
  • ee5fd00 fix: parse date strings in view filter before/after operators
  • 8433aad feat: rebuild FilterBuilder with shadcn/ui components
  • d610a43 style: apply rustfmt to views migration code
  • 0270e29 feat: move view storage from .laputa/views/ to views/ in vault root
  • 734f13a feat: add edit button (pencil) on hover for sidebar view items
  • d3dd0e6 fix: show view emoji icon in sidebar instead of default funnel
  • fbf8909 fix: use substring match for contains/not_contains on relationship fields
  • e0cd537 fix: resize Create View dialog and make filters scrollable
  • de033c7 fix: match view items to section items style in sidebar
  • b44a6c7 fix: move separator outside SECTIONS group — between groups, not inside
  • 81142cf fix: equalize top/bottom padding on all sidebar group headers
  • 252618b chore: ratchet CodeScene thresholds to 9.56/9.33
  • 8c4652a fix: lower CodeScene thresholds to match current remote scores
  • 9a1ca42 fix: align FOLDERS header padding with FAVORITES/VIEWS/SECTIONS in sidebar
  • 0ed72c5 fix: path display below title — focus-only visibility + robust path computation
  • 8cbbe1e fix: editor title textarea clips wrapped lines — add field-sizing + robust auto-resize
  • 269cb58 feat: unify sidebar group headers — all caps, chevron, collapsable with separators
  • 05a4194 feat: release channels (alpha/beta/stable) via PostHog feature flags
  • cd3747c feat: implement PostHog event tracking plan
  • 8cb32ed feat: migrate from @sentry/browser to @sentry/react
  • fc1d74b fix: editor title wraps to multiple lines instead of overflow hidden
  • da51174 fix: note path below title — show only on focus, remove duplicate filename
  • e6e8e8a feat: selected type section uses type color — filled icon, colored chip, tinted bg
  • f185f22 fix: parse numeric YAML values as numbers so _favorite_index persists
  • b695a63 feat: add Cmd+D keyboard shortcut to toggle favorite
  • aadc704 fix: rework Custom Views — 5 QA bugs fixed
  • 3e18a34 chore: add .env.example, gitignore .env.local
  • 5fbb026 fix: breadcrumb action buttons always right-aligned
  • 6608730 chore: ratchet CodeScene thresholds to 9.72/9.34
  • b406067 chore: lower CodeScene average threshold to match remote score
  • 13c3fe2 fix: use useState for prevTitle tracking in TitleField
  • 1fc8652 chore: claude code loops forever — waits 10min when no tasks instead of exiting
  • 3e1ece2 docs: add ADR 0041 for fileKind/all-files-in-vault-scanner; update README index for 0038–0041 (guard — from commit d037272)
  • 790ef77 feat: add Custom Views UI — create dialog, filter builder, sidebar integration
  • 0e68f0b fix: apply rustfmt to favorite test assertion
  • 592cef4 feat: add favorites — sidebar section, star button, frontmatter-backed, drag-to-reorder
  • b7c4071 chore: remove laputa-task-done system event notification
  • fda54c9 fix: apply rustfmt to trashed_at serde attribute
  • 55352c0 feat: normalize system properties to _archived, _trashed, _trashed_at
  • 0fb115b feat: show vault-relative path below title in editor
  • cd39070 fix: remove H1 heading from new note editor body
  • ccf1b85 fix: apply rustfmt formatting to vault scanner code
  • d037272 feat: show all files in folder view, open text files in raw editor, gray out binary
  • c7f857f fix: use is_some_and instead of map_or for clippy compliance
  • 620515e feat: add custom views frontend — types, sidebar section, filter evaluation
  • a34274d feat: add custom views backend — YAML parser, filter engine, Tauri commands
  • 927e0e1 fix: show note title instead of filename in search results
  • d65bea0 fix: apply rustfmt formatting to git dates code
  • 30f8820 feat: use git history for note creation/modification dates
  • 292f751 fix: add favorite/favoriteIndex to all VaultEntry mock data
  • 0889d74 feat: add favorites section with star button, frontmatter persistence, and drag-to-reorder
  • c85d12a refactor: remove expand/collapse from sidebar type sections
  • fd24777 fix: refresh folder tree after creating a new folder
  • 57b89fc fix: reassign AI panel shortcut from Cmd+I to Cmd+Option+I
  • 49aff89 feat: pre-assign type when creating note from type section
  • c64a3e5 fix: use percentage heights instead of 100vh to fix status bar visibility in native app
  • a353509 fix: reduce editor minimum width and padding at narrow sizes
  • a525eca fix: make commit button always visible in status bar
  • 06bde75 fix: rustfmt formatting for fallback YAML parser
  • ba056a6 fix: vault scanner fallback parser for malformed YAML frontmatter
  • 3cefc75 fix: remove overflow:hidden from status bar to prevent commit button clipping
  • 13e0281 fix: prevent BlockNote from altering list markers and inserting HTML entities
  • 37f32de fix: rustfmt formatting for create_vault_folder
  • 01fdadf fix: address folder tree QA feedback — recursive filtering, folder creation, path display, remove flatten banner
  • 1488f6e fix: vault selection dropdown hidden behind sidebar
  • 8a17421 chore: update ui-design.pen
  • 81f9995 chore: fix CodeScene ratchet thresholds to match remote API scores
  • 4eca9ca fix: prevent infinite render loop when creating notes
  • 8365186 fix: active section badge shows primary background instead of gray
  • 10c4d79 fix: add error handling to createNoteImmediate to prevent crashes
  • fa37f6a fix: wikilink autocomplete uses relative path, prevent silent rename
  • 06485d5 fix: eliminate scroll stutter and fix breadcrumb shadow consistency
  • f8d94c3 fix: prevent status bar overflow from hiding commit button
  • e7c7c49 fix: use floor instead of round in CodeScene ratchet
  • e19476b chore: ratchet CodeScene thresholds to 9.85/9.39
  • 997fa47 chore: round down CodeScene thresholds to match actual scores
  • b9dd9eb fix: normalize property row and chip heights for consistent layout
  • 1e71869 chore: ratchet CodeScene thresholds to 9.85/9.39
  • 407d78c chore: fix ratchet thresholds — round down to match actual scores
  • 4022129 style: cargo fmt — fix pre-existing Rust formatting
  • 5a791d8 test: add Playwright + Vitest tests for raw editor type propagation
  • e1efcf6 fix: propagate frontmatter changes from raw editor to vault entries
  • f899046 docs: task not done until git push succeeds — fix pre-push failures before marking done
  • 44f5943 fix: use next_back() instead of last() on DoubleEndedIterator (clippy)
  • 93b8300 feat: detect external file renames and offer wikilink update via banner
  • 3ede96a feat: subfolder support — path-based wikilink resolution and cross-folder backlinks
  • 4dd30c5 feat: move filter chips to bottom of note list with gradient fade
  • 5db92fa fix: remove duplicate invoke import in App.tsx
  • e693ac2 feat: show blocking modal when vault has no git repo, offer auto-init
  • 8dd7501 test: add folder tree and filtering tests; docs: ADR-0033
  • 19326a7 feat: add FOLDERS section to sidebar with collapsible tree
  • 19795b6 feat: show Initialize/Invalid properties prompts for notes without frontmatter
  • 5fe18c0 feat: scan subdirectories and expose folder tree for sidebar
  • 5e060c2 docs: task-done notification is informational only — no Brian approval needed
  • f3c97bb fix: disable Tauri native drag-drop to restore BlockNote block dragging
  • 1b4341b feat: show note title in breadcrumb bar when scrolled past title
  • c30a4ae feat: add markdown syntax highlighting in raw editor
  • 3418b18 feat: use JetBrains Mono for the raw editor
  • 46089ee docs: add ADR-0031, ADR-0032; update README index (guard — from commits b229d59, 682470f)
  • fb8160c chore: ratchet CodeScene thresholds to 9.85/9.39
  • 552e085 fix: lower AVERAGE_THRESHOLD to 9.38 (actual score is 9.3884, threshold was set too high)
  • ee41060 docs: compress CLAUDE.md (176 → 130 lines) — remove garbled section, deduplicate QA scripts
  • c938e10 test: remove non-core Playwright tests to bring suite under 10 minutes
  • c59b8cf chore: ratchet CodeScene thresholds to 9.84/9.39
  • f6b9997 fix: unify property panel chip sizes and ellipse long text values
  • 27ec739 chore: lower CodeScene thresholds to 9.83/9.38 after feature additions
  • 9743f46 fix: update SearchPanel arrow-key test to fire keyDown on input element
  • 8d08545 chore: ratchet CodeScene thresholds to 9.84/9.39
  • b10e090 feat: simplify breadcrumb bar — remove left-side content and border
  • 9e849e4 fix: align breadcrumb bar, properties header, AI header to 52px
  • d3e2d45 feat: add Cmd+Shift+I shortcut to toggle properties panel, default closed
  • b229d59 feat: replace NoteWindow with full App instance for note windows
  • d137c3a fix: remove vertical padding between collapsed sidebar sections
  • 72b1562 docs: require Todoist comments on every task state transition
  • 084820c docs: Playwright only for core flows, < 10 min budget, cosmetic changes use Vitest
  • 56ceee2 docs: QA phase 2 uses pnpm tauri dev instead of DMG, remove Brian review phase
  • f595ee9 feat: ratchet CodeScene thresholds — never regress, auto-update on each push
  • f9f48bd docs: simplify product rules — remove keyboard-first/retrocompat (spec responsibility), clarify vault usage
  • bb5fa28 feat: add /laputa-next-task and /laputa-done slash commands, clean CLAUDE.md
  • e7a5ee1 docs: add native app QA phase to CLAUDE.md (Claude Code tests before Brian)
  • 8656980 docs: clarify task pickup priority in CLAUDE.md, simplify self-dispatch (no skip logic)
  • 2a88681 docs: restructure CLAUDE.md into 4 clear sections (workflow/process/product/reference)
  • 9d4736c feat: Claude Code self-dispatches next task autonomously after each completion
  • 873f290 feat: pre-populate commit dialog with heuristic message from git diff
  • 99d1987 fix: remove left indent from title when no emoji icon present
  • 18fd740 fix: move 'Add icon' button above title when no emoji (Notion-style)
  • 682470f feat: move Changes and Pulse from sidebar to bottom status bar
  • f2a26cc chore: update ui-design.pen
  • d756273 fix: double editor column min-width from 400px to 800px
  • 196ed61 fix: align title section with editor body text and stabilize top margin
  • add2876 fix: ensure resize handle receives pointer events along full panel height
  • 6aab170 fix: enforce min-width per column with cascade shrink on window resize
  • 9e883ca docs: add ADR-0029, ADR-0030; update README index (guard — from commits 1c5e216, a59640)
  • 60796dc fix: resize handle fills full panel height via self-stretch
  • 2dad6c9 fix: make breadcrumb bar draggable as window drag region
  • 1751240 fix: remove broken category nav strip from emoji picker
  • a81a362 fix: shorten Pulse view time filter labels to save space
  • 1c5e216 refactor: split useCommandRegistry into domain command builders
  • 2cc0458 fix: Properties panel — hash-based tag colors, single-item tags, chip consistency
  • b1d2c71 fix: title H1 layout — no emoji gap, add-icon above title, larger font
  • 7019cd4 fix: replace monospaced ALL CAPS labels with Inter sentence case
  • 4180599 test: add Playwright smoke test for Properties panel visual style
  • 08bcbc0 fix: align Properties panel visual style to design (pills, truncation, labels)
  • 730b56e feat: separate Backlinks and History with horizontal dividers in Inspector
  • 9df41c3 refactor: remove Anthropic API integration, CLI agent only (ADR-0028)
  • fc44277 fix: title H1 style with inline emoji layout
  • a42a15c refactor: extract useConflictFlow, useAppSave, useVaultBridge from App.tsx
  • 334ad09 refactor: extract github.rs from git.rs, move tests to vault.rs
  • 80fbf15 refactor: split commands.rs into commands/ module (ai, git, system, vault, mod)
  • c9715d7 docs: ADR timing rule — create in same commit as code, never before
  • e061785 Revert "docs: ADR-0028 — CLI agent only, remove API key (supersedes ADR-0027)"
  • 2f6b537 docs: ADR-0028 — CLI agent only, remove API key (supersedes ADR-0027)
  • 82d3c60 docs: forbid vault modifications for testing — use demo-vault-v2 only
  • 6a74f53 docs: update ARCHITECTURE.md / ABSTRACTIONS.md / GETTING-STARTED.md post-ADR audit
  • c3bd063 docs: audit ARCHITECTURE.md, ABSTRACTIONS.md, GETTING-STARTED.md — remove stale theme/tab/favorites refs
  • 1971019 docs: backfill ADRs 0026–0027, fix README index, remove duplicate ADR files
  • c6b09c5 docs: backfill ADRs 0016–0020 (historical decisions)
  • edc3c35 docs: backfill ADRs 0021–0025 (push-to-main, BlockNote, repair vault, cache location, type field)
  • 0ab7665 docs: backfill ADRs 0011–0015 (historical decisions)
  • 9b442b7 docs: backfill ADRs 0016–0020 (telemetry, canary channel, CodeScene gates, GitHub OAuth, keyboard-first)
  • dc05eff docs: backfill ADRs 0006–0010 (historical decisions)
  • da52a99 docs: backfill ADRs 0011–0015 (MCP server, Claude CLI agent, remove theming, git cache, auto-save)
  • c3da107 docs: backfill ADRs 0006–0010 (flat vault, title sync, underscore convention, keyword search, dynamic relationships)
  • 99fe614 docs: improve /create-adr command — adr-tools inspiration, superseding flow, Nygard best practices
  • 1e004e4 docs: add /create-adr Claude Code command + slim ADR section in CLAUDE.md
  • 04ff69a docs: slim ADR section in CLAUDE.md (format lives in README) fix: SearchPanel test — fireEvent.keyDown on window not document chore: ignore src-tauri/gen/ in eslint flat config (Tauri iOS generated files)
  • b8c2e8a docs: update ADR template — align with Fowler article (status lifecycle, advice field, decision bold)
  • c909870 docs: add Architecture Decision Records (ADRs) — 5 backfill + process in CLAUDE.md
  • 165ce53 fix: align pre-commit average threshold display and gate to 9.33 (was showing 8.9, checking 9.31)
  • 960ccde docs: update CI comment — average code health now 9.37 (was stale 8.9)
  • d7855b9 refactor: fix import ordering (cargo fmt)
  • 294df70 docs: update iPad prototype report — verified build + UI rendering on simulator
  • 59e3d4b feat: add iPad/iOS prototype via Tauri v2 mobile target
  • bfbc9d4 revert: remove pinned properties feature
  • 71f6f4c refactor: reduce complexity in parsing.rs and noteListHelpers.ts (gate: 9.31 → 9.33)
  • 98debe1 test: fix act() warnings in useVaultSwitcher — settle async effect (option D)
  • 5ec508b test: add Playwright smoke test for canary release settings
  • 2799d8f feat: add canary release channel and local feature flags
  • 929a96a fix: simplify Playwright telemetry tests to avoid mock override issues
  • ae5cc42 fix: set default mock telemetry_consent to false to unblock Playwright
  • d82dc27 fix: add telemetry fields to mock save_settings handler
  • e23c703 docs: add telemetry section to ARCHITECTURE.md and ABSTRACTIONS.md
  • ed01dc3 feat: integrate Sentry crash reporting + PostHog analytics
  • 2fd5ce2 feat: add telemetry consent dialog + Settings privacy toggles
  • d7166ea feat: add telemetry consent fields to Settings (Rust + TypeScript)
  • 3028a36 fix: tolerate flaky Playwright tests in pre-push hook
  • 76c10ea fix: allow flaky Playwright tests to pass pre-push hook
  • 08672db test: increase Playwright timeout from 15s to 20s (reduce flaky failures)
  • b315ada test: increase editor visibility timeout in latency smoke test
  • c4d954a test: stabilise flaky type-change E2E test (add settle time after note selection)
  • 8bfdb5b style: fix rustfmt blank line in frontmatter.rs
  • b5c1369 fix: resolve clippy type_complexity for extract_fm_and_rels return type
  • 3cd097d docs: update ABSTRACTIONS.md with _pinned_properties format
  • cd7a570 feat: add Rust backend for pinned properties + refactor hook complexity
  • aaa4691 fix: guard against undefined pinnedProperties + lint fixes
  • 8046e54 fix: remove duplicate imports in EditorContent and NoteItem
  • 473239b test: add tests for usePinnedProperties hook and frontmatter sync
  • ae2260c feat: drag-and-drop reordering for pinned properties bar
  • d263e43 feat: pinned properties — inline bar in editor + values in note list
  • caaa582 fix: narrow onCreateAndOpen type guard in SearchDropdownWithCreate
  • ad9d0e5 refactor: RelationshipsPanel — extract shared hooks to reduce complexity (avg: 9.36, gate: 8.90 → 9.31)
  • c8bb3fe test: skip relationship wikilink E2E test (single-note race condition)
  • 0d32735 test: fix E2E timing for single-note model
  • c6cb1ea test: update smoke tests for single-note model (no tab bar)
  • b3a98ce style: fix rustfmt blank line in menu.rs
  • 1bea9d4 fix: remove stale tab props from NoteWindow editor
  • 5b1ecd7 refactor: remove tab bar — single note open at a time
  • 971564e docs: add storage decision rule — vault vs app settings (follows vault vs installation-specific)
  • 3e9c3bd docs: add underscore convention for system properties + update design principles
  • 3f4ce6a test: fix E2E test — search for 'reload' instead of removed 'reindex'
  • 0ee8d38 style: rustfmt search.rs
  • a22fd73 fix: resolve clippy single-element-loop in build.rs
  • c079067 refactor: remove QMD semantic indexing — keep keyword search only
  • 63054f7 docs: add Boy Scout Rule to CLAUDE.md — leave every touched file better than found
  • e47625f ci: add Average Code Health gate (≥8.9 floor, target 9.5) to CI, pre-commit, pre-push
  • 8a86995 refactor: move vault UI config from ui.config.md to localStorage
  • 67e620c style: rustfmt use statement
  • 1984b8e refactor: remove theming system entirely
  • 8bf8688 test: add sidebar emoji icon rendering tests
  • 6187eee feat: add filter pills (Open/Archived/Trashed) to All Notes view
  • e74d4c8 fix: inbox sidebar ordering, filter chip wrapping, and editor banner architecture
  • e84d21d feat: show emoji icon in sidebar note items
  • 5504941 fix: align type selector chip left using grid layout matching property rows
  • c372193 style: apply rustfmt to vault_config.rs
  • fdf8af2 fix: store ui.config.md at vault root instead of config/ directory
  • c11a983 fix: use CSS grid for 50/50 label/value layout in properties panel
  • 85efe31 fix: match TitleField font-size/weight to BlockNote H1 and fix left alignment
  • 2a419ff fix: remove incorrect wikilink assertion from snippet smoke test
  • 00adf23 test: add smoke test for focus-event UI freeze regression
  • 5a376f9 fix: eliminate UI freeze on app focus by moving git commands off main thread
  • a1ca7e3 fix: note list resolves relationships by title/alias matching unified resolveEntry
  • 5a578f6 fix: remove vertical padding from PropertyRow to match InfoRow density
  • 93b6541 fix: force WKWebView pseudo-element style recalc on theme CSS var changes
  • a43a98e refactor: NoteList.test.tsx -- deduplicate makeEntry helpers and bulk action tests (CodeScene: 7.78 to 10.0)
  • b8e3b88 style: rustfmt formatting for mod_tests
  • 586e488 fix: note list shows incomplete relationships when opening from sidebar
  • 51fc929 fix: update smoke tests to find Changes badge in secondary sidebar area
  • 2d0d310 feat: move Changes and Pulse to secondary bottom area in sidebar
  • dd2a020 style: rustfmt import formatting
  • 6aca4e8 fix: remove invalid weight prop from lucide AlertTriangle icon
  • caa81ae feat: handle git divergence, conflicts, and manual pull from within Laputa
  • afc8fd5 test: add Playwright smoke test for Open in New Window command
  • 6cc07fa fix: use lowercase titleBarStyle for Tauri v2 WebviewWindow
  • 26f0909 feat: open note in new window (Cmd+Shift+Click / Cmd+Shift+O)
  • b532439 fix: reduce Properties row gap to match Info section density
  • 515e771 feat: adopt relationship chip style for type selector in Properties panel
  • 8bd6df2 fix: enforce 50/50 label/value layout in Properties panel with ellipsis
  • 8155b94 feat: add Inbox sidebar section showing unlinked notes
  • 27f8c95 feat: auto-save notes with 500ms debounce after last keystroke
  • d05b435 test: verify bullet-size and bullet-color live-reload via editor buffer
  • 4362405 fix: hide system properties (trashed, archived, icon) from Properties panel
  • 968d907 fix: show Note type in sidebar instead of excluding it as default/fallback
  • 8f6da24 fix: live-reload theme CSS vars on editor save and frontmatter changes
  • 7db3c2f fix: show all relationships for topics in note list
  • abe465c feat: show note emoji icon in tab bar, breadcrumb, and pinned cards
  • fa6f0fc fix: remove broken snippet visibility test + add data-testid to snippet
  • 5940181 fix: make snippet smoke test selector more specific
  • 2214a5c fix: align TitleField with editor by sharing scroll container
  • 2f43b4b feat: show note emoji icon in wikilinks, relationships, and backlinks
  • a1600d5 test: update smoke tests to use TitleField instead of H1 sync
  • 0bda7f4 style: rustfmt formatting for rename.rs assertions
  • 15b11d1 fix: decouple H1 from title sync + non-blocking TitleField rename
  • f94d8c6 fix: remove trashed/archived fields from frontmatter on restore instead of setting false
  • fc77ce6 fix: sync raw editor + suppress toast overwrite on trash/archive actions
  • 75ad88f docs: require explicit Todoist move to In Review in task completion flow
  • a4d9807 fix: remove legacy _themes/ dir creation, seed type defs at vault root
  • bc58424 test: add Playwright smoke tests for emoji picker rework
  • a9229d4 feat: full Unicode emoji picker with name search and continuous scroll
  • 027a85f fix: match filter pills row height to breadcrumb bar (45px)
  • ce7b5f9 ci: raise hotspot code health threshold to 9.5
  • 9c0e391 fix: update trash smoke test for new Archive action in trash view
  • 2b78689 feat: add filter pills (Open/Archived/Trashed) with count badges to note list
  • b846de1 fix: sync title on reopen of already-open tabs (desync detection)
  • d9fd65c fix: read owner/cadence from properties in ai-context
  • 9aa16b8 refactor: remove owner/cadence from Frontmatter, source created_at from filesystem
  • ddbbebb feat: add emoji icon picker for notes stored in frontmatter
  • 0897cc5 docs: update CLAUDE.md — CodeScene threshold 9.2/9.2, fix port/finish-signal for no-worktree workflow
  • dec9fe6 docs: add Kent Beck Test Desiderata to TDD section in CLAUDE.md
  • 4cfd31f style: rustfmt formatting
  • c02584f fix: remove unused import and dead code from title sync refactor
  • 0ac8ad8 test: Playwright smoke test for title/filename sync + update docs
  • 77b6961 feat: TypeScript calls sync_note_title on note open
  • 9112a24 feat: title/filename sync on note open + always write title in rename
  • 663e956 refactor: extract_title reads from frontmatter title, not H1
  • e74d0e4 fix: rustfmt formatting in mod_tests.rs
  • 7976d9f refactor: extract vault/mod.rs into submodules — fix CodeScene hotspot health
  • 3890960 style: rustfmt repair_vault tests
  • ee9af1e fix: repair vault now flattens type folders and migrates legacy frontmatter
  • 4d61774 fix: smoke tests skip Theme entries in note list to avoid type selector issues
  • 164b76d fix: resolve demo vault path relative to project root — fix smoke test failures
  • f9e89e4 fix: make CodeScene pre-push gate informational — remote API lags local changes
  • 4a69fc1 fix: correct CodeScene API key in pre-push hook — use code_health not average_code_health
  • bc4e637 style: rustfmt seed.rs and getting_started.rs
  • bb9fef9 refactor: improve code health for vault/mod.rs and Editor.tsx — fix CodeScene hotspot score
  • db0589c fix: update Repair Vault for flat vault structure — no theme/ or config/ dirs
  • 07a6ef0 feat: persist editor mode (raw/preview) across note switches
  • af46c04 style: rustfmt vault mod.rs
  • 6371e80 fix: uniform StringOrList normalization for all frontmatter string fields
  • fb82582 refactor: extract welcome/loading screens in App.tsx — reduce main component complexity
  • 427672c test: add Playwright smoke test for split-usenoteactions refactoring
  • 56b0a86 test: add unit tests for useNoteCreation and useNoteRename hooks
  • 71ccae1 refactor: extract frontmatterOps, update imports for useNoteCreation/useNoteRename split
  • 54e769f style: rustfmt vault mod.rs
  • f5d0bd0 fix: add missing VaultEntry fields (belongs_to, status, owner, cadence)
  • 49ab915 fix: use contains() instead of iter().any() for clippy manual_contains
  • 22d002c refactor: split NoteList.tsx god component into focused modules
  • 9f81a00 Resolve merge conflict: keep split vault module from origin/main
  • b5eb781 style: apply rustfmt to mod_tests.rs
  • c921403 fix: resolve clippy warnings from vault module split
  • 6b6bd46 refactor: split vault/mod.rs monolith into entry, frontmatter, file modules
  • 6520e36 fix: clippy manual_contains lint in vault frontmatter filter
  • cd0152c refactor: split useNoteActions into useNoteCreation + useNoteRename — CodeScene 7.92→9.38
  • 144a621 fix: frontmatter parsing fails when unknown fields have list values
  • a12ad57 fix: flat vault type resolution — remove type/ prefix from links and protected folders
  • 3fb7cf6 refactor: split DynamicPropertiesPanel into focused sub-components — reduce 699-line catch-all (#197)
  • 23d0417 feat: ensure .DS_Store in .gitignore for all new vaults
  • 1932b35 fix: cargo fmt formatting
  • ede51e2 fix: correct reloadVault type in useFlatVaultMigration
  • 7f1f81c test: add Playwright smoke tests for flat vault migration
  • d9e25be docs: update ARCHITECTURE.md and ABSTRACTIONS.md for flat vault
  • a8989e1 feat: add migration wizard for flat vault
  • db94b8b feat: add dedicated TitleField above editor
  • ed33058 refactor: reorder wikilink resolution for flat vault
  • 6460eae feat: add vault_health_check command
  • c7892fc refactor: restrict scan_vault to root + protected folders only
  • a33d1a0 style: rustfmt formatting fix
  • 9ceb005 fix: fall back to sub-heading text when snippet has no paragraph content
  • a27904a fix: render deleted notes banner outside Virtuoso for proper visibility
  • 582b181 feat: show deleted notes in Changes view
  • da3ec34 fix: make snippet Playwright test more robust for CI
  • 50826df fix: strip list markers from snippets + bump cache version for full rescan
  • ac035e4 fix: prevent crash when creating note from relationship input
  • 76c988d fix: resolve duplicate option match in changing-type smoke test
  • ddab886 fix: force WebKit reflow for pseudo-elements on theme CSS var changes
  • 90a3ff8 refactor: flatten vault structure — simplify migration API and flatten demo vault
  • 19830c1 fix: disable Tauri native drag-drop to unblock HTML5 DnD (tabs, blocks)
  • a333a63 fix: use first available note in rename smoke test instead of hardcoded 'Refactoring'
  • b916204 fix: prevent image drop overlay from breaking internal DnD and block handle
  • 968328b test: update changing-type smoke test for flat vault (no file movement)
  • 526965e style: cargo fmt
  • 0d23d9f refactor: remove dead code from flat vault migration
  • 094e806 feat: title = filename — wikilink resolution + slug collision detection
  • 69f50e5 feat: flatten vault structure — remove type-based folders
  • c431c1a test: fresh-install regression QA smoke tests for 7 Done tasks
  • b05f9ad docs: remove 'Current state' section from VISION.md
  • 37a2bd5 docs: fix Mermaid syntax error in Vault Cache diagram
  • 42f27ee docs: compress CLAUDE.md 360→93 lines — remove verbose explanations, keep rules
  • 2b33536 docs: convert remaining ASCII diagrams to Mermaid + add Mermaid rule to CLAUDE.md
  • 1b0f7d7 docs: add Mermaid diagrams to ARCHITECTURE and ABSTRACTIONS
  • 8e0bf67 ci: add .codesceneignore — exclude tools/, e2e/, tests/, scripts/
  • 68bbb19 ci: add average_code_health gate (≥8.8) to pre-push hook
  • 3436a48 refactor: extract useLayoutPanels hook from App.tsx — reduce god component churn (#195) (#196)
  • e81faf2 refactor: extract useAppNavigation hook from App.tsx — reduce god component churn (#194)
  • 848d3c1 refactor: extract useDeleteActions hook from App.tsx — reduce churn surface (#193)
  • 6acc802 test: extract useBulkActions hook and add unit tests (#192)
  • f5db984 test: add useEditorSaveWithLinks tests, remove dead useDropdownKeyboard (#191)
  • 19e386c chore: skip flaky theme-live-reload tests (dark theme mismatch)
  • 1a05f5d fix: use note-list-container scoped selector in reopen-closed-tab smoke test
  • 0e265dc feat: add Playwright smoke tests, data-tab-path attr, store full VaultEntry in closed tab history
  • 8ab8315 feat: add Cmd+Shift+T shortcut, menu item, and full wiring
  • ab1a1fb feat: add closed tab history and reopen-closed-tab support
  • 1ed9d0f style: format trash.rs with cargo fmt
  • f53829f docs: add trash management design file and update ARCHITECTURE.md
  • 5fa928a fix: update Playwright smoke test selectors for trash management
  • 4dd10dc feat: add Empty Trash menu bar item and Playwright smoke test
  • e2b2abc feat: trash management — bulk restore, delete permanently, empty trash
  • ce85d35 feat: add batch_delete_notes and empty_trash Rust commands
  • 6429551 test: mark pre-existing ai-notes-visibility WS port conflict as fixme
  • 9fef255 test: mark pre-existing theme-live-reload tests as fixme
  • af0c217 test: add Playwright smoke test for clickable editor empty space
  • 7a919ff fix: make empty space below editor content clickable to focus editor
  • 2c0ad91 fix: block vault API in theme-live-reload smoke test
  • ae92e05 style: format Rust theme modules with cargo fmt
  • a9411c1 test: add Playwright smoke test for theme properties defaults
  • e2c6f54 fix: write all theme.json defaults to vault theme frontmatter
  • ce6a61c test: add Playwright smoke test for note list preview snippets
  • 7249a9e fix: update note list snippet on save so all notes show preview
  • 33c4daa fix: sync raw editor (CodeMirror) content to BlockNote on mode switch
  • fe37bb4 feat: wire create-open relationship note to all panel contexts
  • 4a973e9 feat: add 'Create & open' option to relationship input dropdowns
  • b02227a fix: case-insensitive type entry lookup + Playwright smoke test
  • aaa5bc2 fix: sidebar section header reflects type icon, color, and label
  • 5107cd1 test: add real filesystem vault integration tests
  • 891e298 fix: update fix-note-filename-on-rename smoke test for title-sync rename
  • 12a5a7a fix: add missing old_title_hint arg to tests added on main
  • d1775ff style: cargo fmt on rename.rs
  • 7f2aaf5 fix: remove needless borrow flagged by clippy in rename.rs
  • 4405ecc test: Playwright smoke test for rename-wikilink-update
  • 1e1eb4f test: unit tests for rename-wikilink-update feature
  • d28c461 feat: wire H1 sync and frontmatter title change to full rename flow
  • 04f5803 feat: add old_title_hint to rename_note for H1 sync rename support
  • c5b5831 test: Playwright smoke test for serializer blank lines fix
  • a90ca8b fix: post-process BlockNote serializer to remove extra blank lines
  • 2bca5a2 test: add Playwright smoke tests for wikilink insertion and navigation
  • ee94ecb fix: unify wikilink resolution and disambiguate duplicate titles
  • 1486bae fix: image drop overlay no longer triggers on internal drags (tabs, blocks)
  • 92f0f96 test: Playwright smoke test for note filename rename on save
  • e0bf514 feat: rename file on save when title slug doesn't match filename
  • 761d6dc fix: rename_note handles filename-slug mismatch and collisions
  • 5f08e8e test: Playwright smoke test for changing-type data corruption regression
  • 7005f54 fix: mock move_note_to_type_folder collision handling + Rust collision content test
  • 265f7b3 fix: prevent data corruption when changing note type — preserve tab content instead of re-reading from disk
  • 8a8fa80 style: rustfmt formatting fix
  • 4c7e64d fix: bump cache version + handle Yes/No in TS frontmatter parser
  • e891ff6 test: Playwright smoke test for create note crash fix
  • 3084702 fix: prevent crash in handleCreateNoteImmediate — slugify fallback + try/catch
  • 89ae7e5 test: Playwright smoke test for theme live reload on save
  • 517a2af fix: live-reload CSS vars when saving active theme note in editor
  • 484324a test: add Playwright smoke test for rapid note switching latency
  • a2e65b3 test: add unit tests for prefetch cache, optimistic rollback, rapid switching
  • d8b61dd feat: optimize note open and trash/archive latency
  • db66e7c fix: scope Playwright selectors to dialog overlays to avoid sidebar matches
  • a760594 style: apply cargo fmt to is_file_trashed tests
  • 73060f3 fix: exclude trashed notes from search results and autocomplete
  • 46f289d fix: simplify cache-invalidation smoke test — container visibility only
  • 182f88c chore: rotate Tauri signing keypair — fix CI release builds
  • d6d35b3 fix: handle Archived/Trashed Yes/No string values in frontmatter parser
  • a73f181 fix: add reload_vault to vault API proxy for browser mock
  • 656679e style: apply cargo fmt to new tests
  • ba5ba58 fix: reload vault invalidates cache and rescans from filesystem
  • bc2d54d fix: resolve TypeScript overload errors in zoomCursorFix
  • 1354e50 test: add Playwright smoke test for CodeMirror cursor at non-100% zoom
  • 0082c02 fix: bypass CodeMirror posAtCoords for accurate cursor at non-100% CSS zoom
  • e3d616c fix: embed conversation history in AI agent chat messages
  • afe5494 ci: retrigger release — fix Tauri signing key secret
  • e414d3b test: fix flaky command palette smoke test — use reindex instead of settings
  • d3657d8 docs: consolidate VISION.md into docs/ — remove duplicate root file
  • 664426d fix: prune stale cache entries on vault open, not just cache write
  • 0755c4a fix: add 1 retry for Playwright smoke tests to handle server startup timing
  • fdb3fdf style: rustfmt vault/mod.rs test formatting
  • 010d2c3 fix: disk-first writes in useEntryActions, document three-layer model
  • dedb5b2 feat: wire Reload Vault into Cmd+K palette and menu bar
  • 587eb02 feat: add reload_vault_entry Tauri command
  • 9cc9ff8 refactor: remove hardcoded RELATIONSHIP_KEYS — detect wikilink fields dynamically
  • 3e05a94 test: add Playwright smoke test for exact-match search ranking
  • 55e479b feat: flip canonical type field — make type: primary, Is A: the alias
  • 02611f6 feat: move vault cache to ~/.laputa/cache/ and make writes atomic
  • b025211 test: add Playwright smoke test for exact-match search ranking
  • 4649662 fix: ensure exact title match always ranks first in search
  • dd1595c style: apply rustfmt to rename.rs
  • ab1cb62 test: add Playwright smoke test for move-note-to-type-folder
  • 873f85a feat: move note to type folder when Is A changes
  • 2d2c162 feat: add move_note_to_type_folder backend command
  • b53a158 docs: add Refactoring strategic context to VISION.md
  • 3d5423a docs: add Phase 1b — Tauri dev QA for filesystem/native tasks
  • 4ce9167 feat: exact-match-first ranking in search and wikilink autocomplete
  • dd7f0f9 docs: strengthen Phase 1 QA requirements in CLAUDE.md
  • 6801546 docs: add 'why this, why now, why us' section to VISION.md
  • 3dc1ae5 docs: clarify that evergreen notes are one output type, not the only one
  • 749647b feat: fast note open — use allContent cache to skip IPC disk reads
  • cfedcfe docs: add purpose-driven notes and evergreen notes to VISION.md
  • 8ce0706 docs: rewrite VISION.md as a coherent product narrative
  • f8f8d54 docs: add capture/organize philosophy and Inbox to vision and roadmap
  • ca65abd docs: add ROADMAP.md with strategic directions
  • d9f8d42 docs: expand VISION.md with product trajectory and updated principles
  • ea26e0a fix: use vault path for resolveNewNote, resolveNewType, resolveDailyNote
  • 4787673 docs: add design principles and semantic field conventions
  • 8eac9f9 fix: show all scalar properties in Properties panel — remove Owner from RELATIONSHIP_KEYS, remove notion_id from SKIP_KEYS
  • 71810a7 fix: resolve AI chat empty body race — read contextPrompt from closure, not stale ref
  • 87090ce feat: show type instances in inspector Properties panel
  • bb42ebb docs: update 'Is A' → 'type:' throughout — type: is now canonical
  • f2a9f02 fix: resolve AI chat empty body via || fallback + defensive body + Rust strip_frontmatter
  • 12fe497 fix: auto-save unsaved notes before trash/archive
  • 78954d8 style: rustfmt assert formatting
  • 3c711cb fix: parse lowercase 'archived' frontmatter field
  • 9af329f test: add Playwright smoke test for AI chat empty body fix
  • 48b6434 fix: strip frontmatter from AI context body field — fixes empty body bug
  • 270856f chore: extend .gitignore with runtime and generated artifacts
  • 09a8b55 chore: rotate Tauri signing keypair
  • 944bd8f chore: remove stale files and planning docs from repo
  • d41fe30 fix: AI chat receives live editor content instead of stale disk content
  • 5290e18 fix: CodeMirror cursor placement at non-100% zoom levels
  • d37c752 fix: pass active note content directly to AI context builder
  • 9c7f05f fix: embed conversation history in prompt instead of broken --resume
  • c47a671 fix: AI chat receives note body from open tabs instead of empty allContent
  • 43629ca fix: AI-created notes now visible — onVaultChanged fallback for missed file ops
  • 35afd09 fix: AI chat wikilinks — system prompt + integration tests
  • fe2cef0 fix: use --resume for AI chat conversation continuity
  • e29360e style: cargo fmt config_seed.rs and getting_started.rs
  • 2d41496 fix: clippy doc_lazy_continuation in config_seed.rs
  • f136fd5 docs: add config/ vault type to architecture and abstractions
  • c1e11f4 feat: add Repair Vault command and MCP configFiles
  • 50e4a63 feat: add config/ vault type with agents.md migration
  • dc22a2d fix: MCP install command always visible in Cmd+K regardless of mcpStatus
  • f2ec2ab feat: make MCP restore command always available in Cmd+K
  • 0d4ca63 fix: auto-save structural UI changes to disk immediately
  • 5324f72 fix: scope qmd update/embed to current vault collection only
  • 9911261 fix: wikilink clicks in AI chat now open note in tab
  • 924fb59 fix: add missing ws dependency for smoke tests
  • d3a2951 docs: update ARCHITECTURE, ABSTRACTIONS, GETTING-STARTED to reflect current codebase
  • 41cc824 test: add Playwright smoke test for AI note visibility and tab opening
  • a0eb1a2 test: add unit tests for detectFileOperation and parseBashFileCreation
  • 415bbb5 fix: AI-created notes now trigger vault refresh and auto-open in tab
  • fe9ebc9 fix: remove --resume from AI chat to fix conversation history
  • a7928ea feat: restore MCP UI-steering tools (highlight_editor, refresh_vault)
  • 872ccf1 test: add Playwright smoke test for wikilink rendering in AI chat
  • f54929c feat: render [[wikilinks]] as clickable links in AI chat
  • 36065b0 fix: clippy errors — reduce visibility of internal functions, fix PI approx
  • 1dccc02 feat: reindex vault command, indexing status bar, sync-triggered reindex
  • 47fe307 feat: add last_indexed_commit persistence to indexing backend
  • 4c28fa8 fix: rustfmt import formatting in commands.rs
  • 6e102b9 test: Playwright smoke test for push error UX
  • 902a545 feat: surface actionable push error messages in frontend
  • a4dac66 feat: add GitPushResult with error classification for push failures
  • bd6487c style: rustfmt formatting fix in cache test
  • 875d817 fix: add visible key to frontmatterToEntryPatch maps
  • 21bfaa8 fix: include full conversation history in AI chat requests
  • 7610f1b test: fix Sidebar tests after Favorites removal
  • 95f6c05 refactor: remove Favorites and Untagged from sidebar
  • 3f6b5b9 refactor: rustfmt formatting fixes
  • ddd6592 test: Playwright smoke test for trash → Changes badge
  • 7a7ba60 fix: refresh Changes panel after trash/archive operations
  • 7f6f5c2 ⚡ Pulse: fix slow note open — O(1) map lookup, no reloadVault on click
  • ef42086 style: rustfmt vault_config.rs
  • e5aaacd fix: add missing visible field to buildNewEntry in useNoteActions
  • 78c4597 test: add Playwright smoke test for visible type property
  • 486b0e9 feat: migrate hidden_sections from ui.config to visible property on Type notes
  • 4df386d refactor: remove hidden_sections from VaultConfig and delete useSectionVisibility
  • 48c3bd1 feat: add handleToggleTypeVisibility to useEntryActions
  • f7ac01a feat: filter sidebar sections by Type entry visible property
  • a7d94b3 feat: add visible field to VaultEntry for Type note sidebar visibility
  • 1817cb3 🐛 Auto-untrack .laputa-cache.json and .laputa/settings.json from git
  • 66f5844 ⚡ Pulse: lazy pagination with IntersectionObserver infinite scroll
  • 5fdece6 💅 Pulse: add right border, collapse commit files by default
  • 99faee6 fix: address clippy lints in title_case_folder
  • d81e211 test: add regression tests for hyphenated folder sidebar duplicates
  • 40b5d31 fix: normalize hyphenated folder names in infer_type_from_folder()
  • bfc79c8 refactor: apply rustfmt formatting
  • 1c2552a fix: vault cache misses files in new directories, breaking theme restore
  • 8712ce8 fix: write .gitignore on vault init to exclude .DS_Store
  • f4af2b4 refactor: split Rust backend into sub-modules — git, theme, github, frontmatter, commands
  • 282c3be chore: exclude tools/, scripts/ from CodeScene analysis
  • ebdc39b fix: latest.json must point to .tar.gz not .dmg for Tauri in-app updater
  • b0b0464 feat: add Playwright smoke test infrastructure for task-scoped QA
  • aaecd9a ci: import Apple certificate before Tauri build so beforeBuildCommand can codesign
  • e7f43d5 fix: sign qmd binaries with Developer ID + hardened runtime for notarization
  • c876997 docs: add mandatory Playwright Phase 1 QA step before laputa-task-done
  • 049b4a9 fix: bundle qmd source in tools/qmd/ so CI can compile it
  • 7c90675 ci: add bun setup step to release workflow (required by bundle-qmd.sh)
  • eda8bc3 fix: align ws-bridge.js imports with simplified vault.js API
  • 5d4c372 refactor: split InspectorPanels.tsx into focused modules — reduce 538-line file to focused per-panel components (#189)
  • c2b54e7 test: add configMigration tests — cover all migration branches (#188)
  • 817055a fix: make qmd/search work on fresh installs — auto-install, fix permissions, sign binaries
  • a2f58e1 style: rustfmt search.rs
  • 3306d5f feat: bundle qmd binary with app — search works on fresh installs
  • a3148de fix: rank command palette results by match score, not section order
  • 66c086f fix: move Go Back/Forward to Go menu, add toggles to Note menu
  • 51ccece fix: always show Resolve Conflicts in Cmd+K — show toast when no conflicts
  • f8e5cbf refactor: extract hooks and components from NoteListInner for code health
  • a3e3d9a style: rustfmt git.rs pulse functions
  • 559c585 feat: add Pulse — vault activity feed showing git commit history
  • 3431b79 style: apply rustfmt to vault_config.rs
  • 6b13120 feat: move vault UI config from localStorage to vault files
  • 87e28b0 feat: add vault_config module and view field to VaultEntry
  • 239ff7f fix: pass undefined to useRef for strict TypeScript compat
  • a364cbc feat: expose all theme.json properties in theme editor
  • 338f073 style: apply rustfmt to menu.rs
  • 03d4d51 fix: move view-toggle-backlinks to simple event map for type safety
  • a966b2c feat: reorganize menu bar with Go, Note, and Vault menus
  • 0eedf0c test: add color detection tests to propertyTypes
  • 3f9c7b7 feat: add color swatch + picker for property values
  • 9f35f04 fix: enable line wrapping in raw editor
  • da01d2e fix: make Restore Default Themes command always enabled in Cmd+K palette
  • 85234b1 feat: enable full shell access for AI agent + simplify MCP tools
  • f864bc4 style: rustfmt collect_wikilink_inner signature
  • 5189ed6 fix: strip wikilink brackets from note list preview snippets
  • d584959 feat: Add 'Restore Default Themes' command for vaults missing theme structure
  • e817d08 fix: rustfmt formatting in git.rs
  • eeada90 fix: stub WebSocket in test setup to prevent Node 22 + undici crash
  • 795badf fix: detect and resolve rebase conflicts in sync conflict resolution
  • 1056a15 fix: rustfmt formatting in trash regression tests
  • f3d197a fix: trashed notes reappear after restart due to frontmatter key casing mismatch
  • 1c7ee05 refactor: extract usePropertyPanelState hook into dedicated file (#187)
  • db1ae9b fix: stub fetch in test setup to prevent jsdom@28 + Node 22 undici crash
  • 1694676 feat: wikilink pills in message bubbles, noteList context injection
  • 9d8cf4d refactor: remove dead useMcpRegistration hook, add design file
  • 4dbcc7c feat: detect MCP server status and show warning in status bar
  • 1f1e115 fix: pass initial value to useRef for strict TS build
  • c127130 test: add tests for WikilinkChatInput and buildContextSnapshot
  • 5a2bcec feat: add wikilink autocomplete, animated border, structured context wiring
  • 3ab3ca2 feat: add reasoning streaming, markdown response, structured context snapshot
  • 8029e07 fix: use generic Error type in setup.ts to avoid NodeJS namespace
  • 3893d01 fix: restore drag-to-reorder for sidebar sections
  • 93d598d fix: MCP UI tools (highlight, open_note) now work in real-time
  • a2f1ab9 style: apply rustfmt to theme.rs
  • f99b9d0 fix: auto-provision theme files on vault open for any vault
  • 389e9d4 fix: show 'Installing search...' when qmd missing instead of 'Indexing...'
  • 9599dda fix: replace 'Index error' with graceful handling on fresh installs
  • 5dbdf50 style: apply cargo fmt to test assertions
  • cfe5d99 fix: apply rustfmt to claude_cli.rs
  • cc19d83 feat: make AI chat tool use blocks expandable with input/output details
  • 49092ea feat: render markdown in AI Chat assistant responses
  • 3f2a151 feat: replace app icon with new Laputa cloud logo
  • c887a0c fix: trash/archive banner appears immediately without reopening note
  • 7cbe9b9 fix: display correct app version as build number in status bar
  • f4c832a fix: use type-only import for DecorationSet (verbatimModuleSyntax)
  • beac078 feat: replace raw editor textarea with CodeMirror 6
  • 2548a80 fix: use git ls-files --unmerged for reliable conflict detection
  • d81eedf fix: open newly created theme in editor after New Theme command
  • 6475160 fix: check-for-updates command always visible in Cmd+K, handles all update states
  • deabb13 refactor: remove AI model indicator from status bar
  • 21e0cb6 fix: handle Escape at panel level and manage focus across active states
  • 4041655 fix: auto-focus AI Chat input on panel open and close on Escape
  • 79e8c9f fix: handle EADDRINUSE in MCP server ws-bridge — allow Claude Code to start when port is taken
  • 0eeb45e feat: add Check for Updates command to native menu and Cmd+K palette
  • 4499fe0 feat: persist note list sort preference in type file frontmatter
  • 995c81e fix: restore theming system after dark-editor merge regression
  • f91c6f1 refactor: extract useEditorSaveWithLinks and useNavigationGestures from App.tsx (#186)
  • 44256ba style: cargo fmt git.rs
  • 835578e fix: add useIndexing import and hook call, wire indexingProgress and onRemoveVault to StatusBar
  • 48b61d6 chore: add sync-conflict-resolution design file
  • c3722ba feat: add sync conflict resolution — resolve merge conflicts in-app
  • 351a91c style: cargo fmt --all
  • 35aea7a style: rustfmt lib.rs
  • 4a88cb3 fix: add missing X import and onRemoveVault prop to StatusBar after rebase
  • afa51bf feat: auto-index vault on open + qmd auto-install + status bar progress
  • d227cb4 style: rustfmt vault_list.rs
  • fbbfe0e feat: vault management — remove vault from list and restore Getting Started
  • 851e482 feat: sort picker shows custom frontmatter properties (#185)
  • fe8c9f5 feat: show archived note indicator banner in editor (#183)
  • 7bd19f0 feat: add command palette toggles for all BreadcrumbBar panels (#184)
  • 3d6e237 fix: show all direct relationship properties in note list sidebar (#182)
  • 1681193 feat: trashed notes read-only with visible banner in editor (#181)
  • aa0f657 fix: remove persistLastVault assertions from onboarding test
  • e769de3 fix: remove stale persistLastVault and unused imports after rebase
  • 1b6d7e5 fix: persist vault list across app updates
  • b473d70 fix: persist last vault path so app reopens correct vault after update
  • 3e83d31 feat: add "New Type" command to command palette (Cmd+K)
  • 68d28bc test: add asserting wikilink navigation E2E test — screenshot.spec.ts test had no expect() calls (#180)
  • 30f3cdf feat: add 'Check for Updates' command to command palette
  • 39161c8 feat: rename demo vault from 'Demo v2' to 'Getting Started', remove 'Laputa' vault entry
  • a293512 fix: use compile-time env!() macro for BUILD_NUMBER instead of runtime std::env::var
  • 1d4036e fix: bundle mcp-server into release app so AI Chat works (#178)
  • e2e5bef style: fix rustfmt formatting in cache test assertions
  • b649cba fix: sync changes badge count with list by invalidating stale vault cache
  • 5f1a3ae fix: correct git_uncommitted_files call after rebase conflict
  • 7543f37 fix: add aria-label to InlineRenameInput for test accessibility
  • e0b6e84 style: apply rustfmt to cache.rs test
  • 05c6863 feat: add Rename section to sidebar context menu
  • 5a7f5f7 fix: update_same_commit picks up modified files, not only new ones
  • 21d99fa style: apply rustfmt to theme.rs and vault/cache.rs
  • cf8142b fix: remove unused is_new_file_status function
  • f289ede fix: add isDark to useThemeManager return value
  • f467037 fix: remove stale deriveThemeVariables call and update test assertions after conflict resolution
  • f152e03 test: add theme command registry tests and minor fixes
  • 7169634 wip: themes-editable — theme management system WIP (13 files, 1014 insertions)
  • d1d5677 chore: sync Sidebar.tsx dragHandleProps removal from main
  • 4a0ce39 chore: sync SidebarParts dragHandle removal from main
  • f4d3640 fix: position context menu and customize popover at right-click coordinates
  • ef675da chore: remove dragHandleProps from SectionContent destructuring
  • 2bd41bc chore: remove remaining dragHandleProps from SortableSection
  • fea24f1 style: remove drag handle icon from sidebar sections
  • cd1cda7 style: align section icons with main nav items in sidebar
  • 74038af style: remove letter-spacing from status/property labels in inspector
  • 4474492 style: reduce editor body font to 15px, apply -0.5 letter-spacing to h2/h3/h4
  • 60dbfad fix: defer H1 selection to second rAF so content swap completes first
  • b043a7e fix: register Cmd+\ keyboard shortcut to toggle raw editor mode
  • c78d4b3 fix: editor background matches vault theme in dark mode
  • ecd19c5 feat: raw editor mode — plain textarea with frontmatter + wikilink autocomplete
  • 80b150f feat: auto-focus editor with H1 title selected on new note creation
  • 677585f fix: use globalThis instead of global in test setup (TS build compatibility)
  • bfd8717 feat: responsive tab width — shrink tabs to fit window
  • 13ee62c feat: dark theme applies to editor content area
  • 81990f0 docs: never open PRs — push directly to main always
  • 312abc4 feat: toggle archive/trash shortcuts — Cmd+E unarchives, Cmd+⌫ restores (#175)
  • 0b86070 fix: back/forward nav arrows reopen replaced tabs instead of skipping them (#174)
  • 0846183 fix: use openExternalUrl for release notes link in Tauri app (#171)
  • 8aee131 fix: customize icon & color works for types without Type entry (#173)
  • e58f521 fix: back/forward nav arrows reopen replaced tabs instead of skipping them (#172)
  • 986965a feat: note templates per type (💡 Note templates per tipo) (#170)
  • 7d563b2 feat: contextual AI chat on open note (Cmd+I) (#169)
  • 8895415 feat: add daily note command — Cmd+J creates or opens today's journal note (#168)
  • 9ec0e8a fix: show new (untracked) notes in Changes view (#161)
  • 8e2ca1e feat: enhance backlinks panel with collapsible section and paragraph context (#167)
  • ee69721 feat: allow custom sidebar label for type sections (#165)
  • 568f0ae fix: increase tab max-width and add ellipsis truncation (#166)
  • 2bcb36c feat: clicking section group header toggles collapse/expand (#164)
  • 1a18de2 feat: show dynamic build number in status bar (bNNN format) (#163)
  • 36a421d fix: preserve scroll position independently per editor tab (#162)
  • 5937a44 ci: exclude Tauri boilerplate from Rust coverage check
  • 5fb7b12 fix: use camelCase arg keys for Tauri theme commands (#160)
  • e0c5753 feat: replace Anthropic API with Claude CLI for AI chat and agent panels (#159)
  • 0b93630 feat: keyboard-first navigation — menu bar shortcuts, note list nav, inspector Tab/Enter (#158)
  • 5782bd9 fix: move update banner to bottom, white text on blue background
  • 5ba45fc feat: add 'Open Vault…' command to command palette (Cmd+K)
  • 01d827f docs: add keyboard-first principle — every feature must be testable without mouse
  • 5efb0e4 fix: remove http:default capability (plugin not installed)
  • 366991d fix: switch to newly created theme after createTheme (New Theme command had no visible feedback)
  • eac2962 fix: add http:default capability to allow fetch to external APIs (Anthropic CORS fix) (#157)
  • b6c826b fix(test): mock WebSocket in executeToolViaWs test to avoid jsdom/undici unhandled rejection
  • cb214ea fix: make 'New theme' command work in Tauri app (#156)
  • 264d4af fix: call Anthropic API directly instead of /api/* dev proxy (#155)
  • 3d0b493 docs: require QA on pnpm tauri dev, not browser mode
  • fdb6a73 design: merge theming-system frames into ui-design.pen
  • cae821e feat: vault-native theming system with live reload (#154)
  • 06e42b1 fix: resolve TypeScript build errors in AI agent files
  • 690dd6d feat: wire AiPanel into EditorRightPanel with undo + coverage exclusions
  • e405ea7 feat: wire AI agent panel to Claude API with tool calling
  • b610f1c fix: resolve wikilink paths and show entry title in Getting Started vault (#153)
  • 2137de8 feat: seed AGENTS.md in Getting Started vault and expose via vault_context MCP tool (#152)
  • f3d0681 feat: auto-initialize git repo on Getting Started vault creation (#151)
  • 9d0c549 fix: drag-and-drop images into editor — add drop overlay and copy-to-attachments (#150)
  • aeb4f64 feat: AI agent panel UI — 3-layer panel with action cards and WebSocket activity hook (#149)
  • e1e4b23 fix: derive sidebar type sections dynamically from vault entries
  • daae171 docs: add VISION.md — core principles and long-term direction
  • 324e389 fix: tags in properties — X button doesn't reserve space, fades in on hover without expanding pill (#148)
  • c1a3208 style: fix rustfmt formatting in lib.rs
  • ab4a243 fix: shift tab bar right when sidebar+notelist collapsed to avoid traffic lights overlap
  • 793c3dc test: add spawn_ws_bridge test to push Rust coverage above 85%
  • 2bd9cd9 docs: update architecture with full MCP server tool surface and auto-registration
  • d7f1fb3 feat: MCP server foundation with full tool surface and auto-registration
  • 9f3c36e docs: add design file for notes-type-icon-search fix
  • eb574ca fix: show type icon and label for "Note" type in search and autocomplete
  • cbfcb9d fix: show actual type icons in Properties panel TypeSelector (#147)
  • 75f68a8 fix: hide type note from note list, make header clickable to access it
  • e0b8f66 ci: trigger release with GitHub Pages updater endpoint
  • 3e87cd7 fix: serve latest.json via GitHub Pages for auto-updater endpoint
  • 12f1e1e fix: expand tilde in vault paths before passing to git and file system ops
  • c2e0640 feat: update app icon (green cloud + home)
  • fac1fef feat: type-aware commands in Command Palette (New/List [Type])
  • 9338356 design: command palette type-aware autocomplete mockups
  • 7a606f0 fix: search results — type icon on left, type label aligned right (#138)
  • 184055c feat: update app icon (tree/house cloud design)
  • 4e93e1e design: merge github-oauth-fix frames into ui-design.pen
  • 18cef0b fix: inline GitHub OAuth device flow in Connect GitHub modal (#136)
  • 074c222 style: cargo fmt (#135)
  • 9385cbd fix: use Tauri opener plugin for GitHub OAuth browser launch
  • 4cf8697 design: add GitHub OAuth device code UI frames
  • ef3e397 ci: trigger release with correct Developer ID certificate
  • b03d6df ci: temporarily disable notarization (awaiting new certificate)
  • 2aef467 feat: integrate welcome screen with tests and fix App tests
  • 99fcd27 feat: add Rust backend for Getting Started vault creation
  • 54e5b2a docs: add design file for Getting Started vault welcome screens
  • 33b851c design: merge tags-property-type + zoom-shortcuts frames into ui-design.pen
  • cc00e7f fix: useRef type for debounce timer (TS 5.9 compatibility)
  • fb4896f feat: zoom in/out keyboard shortcuts (Cmd+=, Cmd+-, Cmd+0) (#134)
  • 8388029 fix: use number | undefined for debounce timer ref (TS strict compat)
  • 84c9f26 feat: add tags (multi-select) property type (#133)
  • 222a9ff design: merge relationship-x-cosmetic frames into ui-design.pen
  • c3e9804 fix: useRef type for debounce timer (pre-existing build error on main) (#132)
  • acd4112 fix: remove invalid notarization field from tauri.conf.json (Tauri v2 uses env vars)
  • 89fbe15 ci: fix notarization — use Tauri v2 env vars (APPLE_CERTIFICATE + APPLE_SIGNING_IDENTITY)
  • ce83151 ci: trigger release with notarization
  • 3182fbe ci: add Apple notarization to release workflow (awaiting certificate)
  • a1ece6f feat: sync note title with H1 heading (predictive title)
  • 0948bdb fix: property panel responsive layout + status dropdown click regression
  • cbbea2c fix: properties panel bar height matches breadcrumb bar
  • d889c4f fix: search results — type icon on left, type label aligned right
  • e541c1f fix: reverse relationships — remove header, arrow prefix, dotted underline on hover
  • c1819c4 fix: type selector dropdown shows colored icons per type
  • fe79e61 fix: relationship item input height consistency + X button overlay on hover
  • 0cfce65 fix: tags X button appears on hover without expanding pill width
  • 2f56fad fix: make new note editor immediately interactive
  • 52e1e3f fix: multiselect uses only Shift+click; add Cmd+Del/Cmd+E bulk actions
  • 44f49e2 fix: restore status dropdown click + color picker per status value
  • 2ff5467 fix: add traffic light clearance to note list header when sidebar is collapsed
  • 5e6d2fd fix: update Tauri signing pubkey (new keypair, password stored securely)
  • ac81eaf fix: update Tauri signing pubkey to match new keypair (empty password)
  • 05aa6f6 fix: update Tauri signing pubkey (regenerated keypair with empty password)
  • 55018b8 fix: use TAURI_KEY_PASSWORD secret for signing (was hardcoded empty string)
  • c3f71f7 chore: add .claude-done for pencil-ui-design-light-mode verification
  • 21c0c12 design: add theme Light to 25 dark-mode frames, remove before variants
  • 29fddea design: fix search panel overlay layout positioning
  • a3b7305 fix: use portal-based positioning for property panel dropdowns (#130)
  • c03bc89 design: update new-note-creation.pen for unsaved state
  • 30ca211 feat: in-memory unsaved state for new notes (Cmd+N)
  • f3dcaad feat: replace search result snippet with metadata subtitle
  • 6e359d5 design: search results subtitle with metadata frames
  • 2479173 chore: add src-tauri/target to .gitignore
  • e9f42f7 fix: remove accidental src-tauri/target symlink from repo
  • 43e8fc7 fix: property dropdowns adapt to narrow panel width
  • 15089a6 fix: unify status dropdown and make color swatch visible (#128)
  • 9de3cec fix: multiselect range includes anchor note and prevents text selection (#127)
  • a990b24 fix: raise property type dropdown z-index above BlockNote editor
  • d202268 perf: optimize pre-push hook from ~12min to ~30s
  • e5f3746 fix: deduplicate search results by path in useUnifiedSearch
  • 142ff54 fix: apply 3 pending fixes directly to main
  • 707546c fix: remove unsupported --silent flag from vite build in pre-push hook
  • 91cff38 ci: replace remote CI with local pre-push hook
  • 95cbf1a ci: trigger GitHub Actions run
  • 47acd1c feat: status color picker — assign persistent color per status value (#120)
  • 4e6bbf4 fix: revert notelist subtitle to show snippet instead of metadata (#118)
  • a5c2d26 fix: unify type selector dropdown to match add-property style (#123)
  • 5941f16 refactor: decompose Editor.tsx, NoteList.tsx, Sidebar.tsx — CodeScene hotspots (#126)
  • 190ae64 refactor: clean up ui-design.pen — remove befores, integrate design files (#122)
  • 80dd525 refactor: extract SearchResultItem and SearchResultsList from SearchContent (#124)
  • f3629e2 feat: add multi-select notes with bulk archive and trash actions (#125)
  • 6602763 ci: auto-update open PR branches when main advances
  • eee0316 fix: use Tauri opener plugin for git commit link in status bar (#117)
  • c4c806c ci: switch from self-hosted to macos-15 GitHub runners
  • 175bcb3 ci: add Rust dependency cache to speed up PR checks
  • 6baa779 feat: new note creation — unsaved/in-memory state before first save (#112)
  • 87f847b feat: type-aware property value inputs — date picker, boolean toggle, status dropdown (#110)
  • 268b87c ci: isolate pnpm store per runner to prevent concurrent corruption
  • cdb9de5 fix: remove duplicate type icon in add-property input (#107)
  • 82b60f1 fix: resolve Calendar identifier conflict in DynamicPropertiesPanel
  • f019389 chore: remove coverage report and screenshot from git tracking (should be gitignored)
  • 02a04ec refactor: extract useEditorTabSwap hook from Editor — reduce complexity (#102)
  • 9145023 test: fix 5 failing tests after react-day-picker addition (#101)
  • 8e5cbb2 feat: note subtitle — show metadata (date + word count) (#94)
  • c177dd2 fix: hide empty Backlinks, Relations, and Referenced By sections (#99)
  • ba2c1e5 feat: git status bar — show last commit link, remove branch name (#92)
  • fc1badc revert: remove titlebar color darkening — superseded by custom drag region (#88)
  • 5dddf53 design: add 4 full-layout frames showing app in different states (#96)
  • 97d23cb feat: replace custom date picker with shadcn/ui Calendar + Popover (#98)
  • f351ed9 feat: use light type color as background for note type labels (#93)
  • 943f6e3 feat: structured design system in ui-design.pen (#95)
  • c0240c5 design: merge add-property-inline frames into ui-design.pen
  • f842f2b feat: redesign Add Property as inline horizontal form with type selector (#100)
  • 72295da design: merge status-property-dropdown frames into ui-design.pen
  • 2907bc5 feat: status property — Notion-style dropdown with color chips (#97)
  • 8fbaff7 fix: defer vault entries update via startTransition for instant tab creation (#90)
  • 9817842 fix: add devtools feature to tauri for open_devtools() support
  • bd65a4b design: design system proposal + canvas reorganization
  • 410f8b9 fix: restore properties panel header height to match tab bar (52px) (#87)
  • cb8efa7 fix: resolve custom type color and icon in all autocomplete contexts (#84)
  • 25a2970 fix: deduplicate inspector panels (Relations, Backlinks, Referenced By) (#82)
  • e961584 feat: darken title bar headers for visual separation from content (#85)
  • 369ecdc feat: auto-pull vault changes from Git (background sync + conflict handling) (#79)
  • c85e343 feat: smart property display — type-aware rendering with display mode override (#83)
  • 7ca5ee4 refactor: reorganize all 65 frames in ui-design.pen into logical grid (#86)
  • ac4db43 perf: speed up Cmd+N note creation from ~150ms to ~16ms (#81)
  • 9e90968 chore: remove merged feature design files (frames live in ui-design.pen)
  • 4224a91 docs: update design workflow — light mode, frame layout, cleanup on merge
  • 0d6f83d feat: remove native titlebar, implement custom drag regions
  • a6d8cc2 feat: unified search panel — progressive keyword+semantic results (#80)
  • 7bcf8bc ci: re-trigger release after fixing Tauri signing key secret
  • 8b8cfee fix: add missing outgoingLinks field to person mock entries
  • 27f0adc feat: populate macOS menu bar with native menus (File, Edit, View, Window) (#77)
  • 98f0e68 feat: back/forward navigation between opened notes (#75)
  • 5f0de00 fix: wrap Enter key assertion in waitFor to handle async state propagation in SearchPanel test
  • 3a85d47 fix: resolve conflict markers in InspectorPanels.tsx — take unified NoteSearchList approach
  • e473b41 feat: unify note search into shared NoteSearchList + useNoteSearch
  • 292cc68 fix: use self-hosted runner for CI test job to avoid billing costs (#67)
  • 462b920 fix: show type label for all notes in wiki-link autocomplete (#76)
  • 48cf359 feat: relations autocomplete shows note type badges (matching wiki-link UX) (#74)
  • 05ac689 fix: allow standard text shortcuts in command palette input (#73)
  • 6e23fc2 fix: restore Cmd+1/2/3 layout shortcuts (regression from App.tsx refactor) (#71)
  • 5384679 fix: cargo fmt
  • 2c8befa fix: make backlinks update reactively when wikilinks are added or removed
  • fa49059 fix: remove double border-radius causing rounded corners below macOS title bar (#72)
  • 2903196 feat: full-text search with qmd backend and SearchPanel UI (Cmd+Shift+F) (#64)
  • 6b0ee4b test: add tests for @mention autocomplete
  • 4fd1d97 feat: add @mention autocomplete for Person entries
  • 4ff3472 design: person-mention wireframes
  • 2f76895 feat: add optimistic error recovery for note creation (#69)
  • ca9ede5 fix: relation chips now show type color instead of default blue (#68)
  • f84ebbe refactor: split mock-tauri.ts into focused modules (8.81 → 10.0) (#65)
  • e48ac6a refactor: improve code health in github.rs, mock-tauri.ts, lib.rs (#63)
  • 558f50e refactor: extract hooks from App.tsx to improve code health (#62)
  • 131fe7d design: merge full-text-search frames into ui-design.pen
  • af0492b fix: exclude title heading and wikilinks from word count
  • 0e144b5 fix: pass modifiedFiles to NoteList so Changes view filters correctly
  • 3f79d16 fix: use Tauri opener plugin for URL property clicks
  • c33495a fix: debounce Cmd+N to prevent slow note creation on rapid keystrokes
  • e9e50a7 fix: align Type row padding with other property rows in Properties panel
  • a95625e fix: apply text-[12px] to URL values in Properties panel
  • e40c461 fix: apply rustfmt formatting
  • 1cabd55 fix: use strip_prefix instead of manual slice to satisfy clippy::manual_strip
  • 6438c15 wip: fix rename for empty notes + add regression tests (uncommitted on process death)
  • 154aab5 test: add command palette and fuzzy match tests
  • f51f061 docs: add design file for flat list autocomplete UI
  • 765f26c feat: replace grouped autocomplete with flat list and type badge
  • 5d24fda feat: add command palette with Cmd+K shortcut
  • f8edad2 design: command-palette wireframes
  • 23afa89 fix: derive green pallino from git status instead of in-memory tracker
  • 7ed9e30 fix: deduplicate autocomplete suggestions and disambiguate same-title notes (#54)
  • 4b4b64d fix: use type-defined colors and icons in Relations/Backlinks/ReferencedBy panels (#49)
  • 2d9593c fix: use type-defined colors and icons in Relations/Backlinks/ReferencedBy panels
  • dd6eb34 docs: add current state snapshot to VISION.md
  • 4e02644 docs: add product vision document
  • 76504d3 design: merge differenzia-pallino frames into ui-design.pen
  • 048391a fix: restore modifiedFiles/changes-filter support alongside getNoteStatus
  • 4f03751 feat: distinguish new notes (green dot) from modified notes (orange dot)
  • 0e9de3c design: merge vista-changes frames into ui-design.pen
  • 875d2fb design: icon-picker-sezioni wireframes (3 frames)
  • 4c6bc91 feat: expand icon picker with ~290 icons, search, and scrollable grid
  • 68b5b5f test: add tests for Changes view + design wireframes
  • 7b02dc1 feat: add Changes view for pending modifications
  • 236ac1c fix: use consistent 12px text size for property values in Properties panel
  • 0d6b285 feat: raise CodeScene code health threshold to 9.2
  • 55aff60 design: merge url-property-click frames into ui-design.pen
  • dd9b306 feat: make URL properties clickable with hover underline
  • cb623c6 design: url-property-click wireframes (3 frames)
  • f9008fc design: merge relations-edit frames into ui-design.pen
  • d2b2ae5 design: relations-edit wireframes (3 frames)
  • 4c6a0d4 feat: replace read-only Type field with editable dropdown selector
  • 00b0c1d feat: make relations editable with add/remove controls
  • f507998 fix: remove .claude-done from tracking, add to .gitignore
  • 11a9f37 docs: add design file placeholder for window-frame-border
  • 61b727b fix: add 1px inset border between macOS window frame and app content
  • d2c8d25 fix: exclude YAML frontmatter from word count in Inspector panel
  • 399e30c fix: serialize env-var tests with mutex to prevent race in parallel CI
  • c3b894e fix: widen savePending type in useCommitFlow to accept Promise
  • ec06d5a fix: require 2+ chars before showing wikilink autocomplete, limit to 20 results
  • b8273e7 fix: refresh dirty state after rename so indicator reflects reality
  • 91d0149 fix: use correct GitHub OAuth App client_id for device flow
  • 526cb55 test: add tests for string error display and double-click prevention
  • e770a5a fix: improve device flow 404 error with setup instructions
  • 16ae4bd fix: surface actual error messages in GitHub OAuth login flow
  • 4089e0e test: add edge case tests for tab drag-and-drop reorder
  • 8164576 fix: use refs in useTabDrag to prevent stale closures on drop
  • fbb1811 fix: remove broken Create New Vault button, unify with Open Local Folder
  • 059990f fix: remove vault.rs accidentally restored by cherry-pick
  • 4b5812a fix: prevent editor from reverting content after Cmd+S save
  • fafa876 fix: remove duplicate image upload in useImageDrop, fix build errors
  • 367eff3 ci: re-trigger after threshold update [skip codescene]
  • 635112b fix: remove broken Create New Vault button + update tests
  • 68bc72a fix: cargo fmt on migration.rs tests
  • f2268a4 test: add unit tests for vault/migration.rs to restore Rust coverage to ≥85%
  • 80a2e4d fix: remove stale modifiedFiles prop from useNoteListData call site
  • ad10550 fix: remove unused fileBuffer variable in e2e test
  • d5484ff ci: re-trigger after threshold update [skip codescene]
  • c6f0bdb fix: lint errors - move vaultPathRef update to useEffect, format vault.rs
  • 7a58291 test+design: add E2E drag-drop tests and design wireframes
  • 8a5df70 feat: add drag & drop image support in editor
  • ee85bfb chore: mark wikilink-underline task done
  • eb67253 design: wikilink underline color fix wireframe
  • 3ce3e4e fix: wikilink underline now follows type color
  • 96bc494 ci: re-trigger after threshold update [skip codescene]
  • 2c553e8 fix: cargo fmt git.rs + remove unused modifiedFiles dep from useMemo
  • 1dedd04 design: commit & push bug fix wireframes
  • 0aa5d7e fix: commit & push now saves pending content and refreshes modified files
  • 81b9857 style: rustfmt — remove trailing blank line in tests module
  • 98d0b39 fix: close mod tests block in lib.rs (unclosed delimiter from rebase)
  • 2ed9daf ci: re-trigger after threshold update [skip codescene]
  • aba23b3 ci: trigger CI check
  • 1149c05 style: rustfmt formatting fixes for CI
  • 4a26066 test: add HTTP mock tests for github.rs and ai_chat.rs to fix coverage
  • 1b22a12 test: add E2E tests for settings GitHub OAuth flow
  • f78f5d5 refactor: extract sub-components to improve SettingsPanel code health
  • ecdf759 design: add settings-github-oauth.pen wireframe file
  • 868e430 test: add tests for GitHub OAuth device flow types and Settings UI
  • 2a831e6 feat: replace GitHub token field with OAuth device flow login
  • 7a66fd4 fix: add migration module with migrate_is_a_to_type — was missing after vault.rs refactor
  • e4060e3 ci: re-trigger after threshold update [skip codescene]
  • 2582250 fix: use inner doc comment to fix clippy::empty_line_after_doc_comments
  • 6500e72 fix: restore save_note_content and missing pub fns from main merge
  • 0171209 docs: update ARCHITECTURE.md with vault module structure
  • 0eb0cfd refactor: split vault.rs into focused submodules
  • 31232db refactor: flatten extract_snippet and purge_trash complexity
  • 572113f ci: re-trigger after threshold update [skip codescene]
  • 536e7b6 chore: update docs and .claude-done summary
  • da8f652 fix: use vitest Mock type import to fix tsc build error
  • 5f1c022 design: modified notes indicator wireframes
  • ca22bca test: add tests for modified note indicators
  • 80096f2 feat: add modified note indicators in NoteList, TabBar, and StatusBar
  • 941c4c7 refactor: rewrite CLAUDE.md (107 lines, critical rules first) + add pre-commit hook
  • 75b9d9c docs: CI is a safety net, not discovery — enforce local checks before pushing
  • d26cef9 ci: re-trigger after threshold update [skip codescene]
  • cbc37c9 fix: increase timeout for 9000-entry virtuoso test to 15s
  • 40061a5 docs: update architecture and add completion summary
  • fa0049f fix: use proper ESM imports in test setup for TypeScript compatibility
  • f6a4ab1 test+design: add virtual list tests and design wireframes
  • 9770763 feat: virtualize NoteList with react-virtuoso for large vaults
  • b8c3a73 refactor: extract wikilink utils to src/utils/wikilink.ts, fix NoteList useMemo deps
  • 35f34a5 docs: no CI gate shortcuts — fix structural problems, not symptoms
  • a63a4a2 ci: lower hotspot health gate to 8.45 (project at 8.48, refactor in flight) [skip codescene]
  • ac362ef docs: two-stage QA protocol — lockfile + native app on ~/Laputa
  • e968d2b docs: strengthen QA requirements — native app on real vault mandatory for all tasks
  • 8343135 design: merge modified-notes-indicator frames into ui-design.pen
  • 9fb6c86 design: merge performance-note-list frames into ui-design.pen
  • a078392 design: merge relazioni-bidirezionali + wikilink-colorati frames into ui-design.pen
  • 99c41ce chore: add .claude-done summary
  • 9226d0c test: add E2E tests for vault picker local options
  • f525426 design: vault-picker-local wireframes (base copy)
  • 7c0111b test: add tests for local vault picker options
  • 1714362 feat: add local vault options to vault picker
  • 288003a fix: cargo fmt vault.rs formatting
  • 1d96106 test: add tests for ReferencedByPanel and useReferencedBy hook
  • bb64dc7 fix: cargo fmt vault.rs formatting
  • 57f00f8 feat: add Referenced By panel for bidirectional relationships
  • 5908161 design: wikilink-colorati wireframes
  • 7e65e0a design: Referenced By panel wireframes
  • 3d35eaf feat: color wikilinks by destination note type
  • 3869482 fix: cargo fmt vault.rs formatting
  • 2baff0a design: inspector before/after wireframe for Is a removal
  • 31f7941 test: add migration and type-field parsing tests
  • 4ad3777 feat: replace 'Is a' / 'is_a' with 'type' as the canonical frontmatter key
  • d5b89de design: click-opens-new-tab wireframes
  • da6da48 feat: click opens note in current tab, Cmd+Click opens new tab
  • 6e8c7a6 docs: fix design file instructions — additive only, no cp ui-design.pen
  • 75a3e1e docs: add .claude-done completion summary
  • 1a57793 test: update E2E test for Cmd+S save + add design file
  • 6c2e1b7 fix: replace broken auto-save with explicit Cmd+S save
  • 50e505e design: merge properties-inspector frames into ui-design.pen
  • 2a7de36 docs: update abstractions for properties inspector Info section
  • 4438e9c fix: hide is_a/Is A from editable properties (already shown as TypeRow)
  • d2b97a2 feat: distinguish editable from read-only properties in inspector
  • 08a4c61 design: properties-inspector wireframes
  • d5fbff0 fix: resolve TypeScript build errors and add E2E test
  • 180ade7 fix: implement auto-save for editor content
  • 1e19f22 ci: optimize self-hosted build — incremental Rust, drop Swatinem cache
  • d1d10af ci: use self-hosted mac-mini runner for macOS build
  • b37b9e5 ci: build only for Apple Silicon (aarch64), drop x86_64
  • 6a794f9 ci: retry after billing fix
  • fc7b874 ci: simplify release — drop lipo/re-signing, use per-arch dmg
  • 1029d45 ci: fix signing — hardcode empty password, update pubkey
  • 8ec33d2 ci: regenerate Tauri signing keypair (no password)
  • 67d5015 ci: fix signing key password secret name
  • 509ef9e ci: fix signing key secret
  • 17443fd fix: set proper bundle identifier for release builds
  • f9aa24d fix: wire useViewMode into App and fix filterEntries arity
  • 9aa00c9 feat: auto-build, GitHub Release, and in-app updater (#14)
  • 29eb458 fix: rustfmt build.rs
  • 61a596f fix: rustfmt formatting
  • 62860b3 docs: update ARCHITECTURE.md with release/update system
  • 9df9130 design: auto-build-release wireframes
  • ca7e1da test: updater component tests
  • 4106bea feat: in-app update notification UI
  • 62c52c7 ci: github pages with release history
  • 4b8d974 ci: auto-release workflow on merge to main
  • d14f6f5 fix: resolve all ESLint errors (lint now exits 0)
  • b88329e design: merge fix-note-mutation, vault-from-github, sidebar-collapsable frames into ui-design.pen
  • 0e628c1 fix: use Cmd+1/2/3 shortcuts and register real Tauri menu accelerators
  • fc5a97e test(e2e): add Playwright tests for sidebar collapse states
  • c9cc47d test: add tests for useViewMode and useAppKeyboard view shortcuts
  • eb8584f feat: add macOS View menu with panel visibility items
  • c346fac feat: collapsible sidebar and note list with ⌥1/2/3 shortcuts
  • 3086233 design: collapsible sidebar wireframes
  • 2f8f594 design: fix improve-sort wireframes — sort dropdown with direction arrows
  • 79f5da0 fix: remove unused DEFAULT_DIRECTIONS import from NoteList
  • 23a69d7 design: improve-sort wireframes
  • 8d0fe8b test: add tests for sort direction behavior
  • b91aded feat: add sort direction (asc/desc) to note list sorting

Requires Apple Silicon (M1/M2/M3)

Built from 0aa3d156 on 2026-04-10

Laputa 0.20260407.620

April 7, 2026 · v0.20260407.620

Stable

What's Changed

  • 0d9af0f chore: ratchet CodeScene thresholds to 9.45/9.29
  • 1ca2662 style: satisfy rustfmt pre-push check
  • eb2758c fix: correct editor breadcrumb props typing
  • 7d308a6 fix: hide title section for untitled drafts
  • 74850b5 docs: rewrite vault AGENTS.md template — vault-agnostic, H1-as-title convention
  • e486e86 fix: open editor immediately when clicking suggested property slots
  • 132618e docs: add/update ADRs for H1-as-title and Trash removal (guard — from commits 377a3f8, 7daf689, e581ad3)

Requires Apple Silicon (M1/M2/M3)

Built from 0d9af0fb on 2026-04-07

Laputa 0.20260406.619

April 6, 2026 · v0.20260406.619

Stable

What's Changed

  • d29d5a0 chore: restore ui-design.pen (Pencil design file — not stale)
  • 084c58f docs: restore VISION.md — product vision, strategy and design principles
  • 63d85bf chore: remove remaining stale screenshots
  • 17d6701 chore: remove stale docs and assets (PROJECT-SPEC, ROADMAP, VISION, Design System Proposal, iPad Prototype, screenshots, untitled notes, prompt.txt, ui-design.pen)

Requires Apple Silicon (M1/M2/M3)

Built from d29d5a03 on 2026-04-06

Laputa 0.20260406.612

April 6, 2026 · v0.20260406.612

Stable

What's Changed

  • 80914e1 style: cargo fmt on mod_tests.rs
  • 94d07f0 fix: stabilize flaky SearchPanel keyboard tests with act() wrapping
  • ef0709a fix: don't bake demo-vault-v2 path into CI builds
  • eac3b12 fix: sanitize gray_matter YAML output to handle unquoted colons and hash comments in list items
  • 25d9da5 style: cargo fmt
  • e366c84 fix: add hasH1 to mock entries for build compatibility
  • 7daf689 feat: auto-rename untitled notes + Rust title resolution tests
  • 377a3f8 feat: H1-as-title — title resolution, TitleField hiding, breadcrumb filename
  • 901326d fix: change AI panel shortcut from Cmd+Option+I to Cmd+Shift+L

Requires Apple Silicon (M1/M2/M3)

Built from 80914e1e on 2026-04-06

Laputa 0.20260405.605

April 5, 2026 · v0.20260405.605

Stable

What's Changed

  • 2cd192f style: apply rustfmt to classify_file_kind tests
  • 46106da fix: pass forceRawMode through ActiveTabBreadcrumb to BreadcrumbBar
  • 0051559 fix: hide Raw toggle for non-markdown files forced into raw editor
  • 3f19528 fix: wikilink filter values now match frontmatter format with alias support

Requires Apple Silicon (M1/M2/M3)

Built from 2cd192fa on 2026-04-05

Laputa 0.20260404.589

April 4, 2026 · v0.20260404.589

Stable

What's Changed

  • 3c4f6cc fix: coerce claudeCodeStatus/Version null→undefined for AppCommandsConfig
  • 313b11f fix: add claudeCodeStatus/claudeCodeVersion to AppCommandsConfig (TS error)
  • df1cff9 fix: update pnpm lockfile for @blocknote/core patch (CI frozen-lockfile fix)
  • 2b419b4 feat: add Claude Code detected/missing badge to status bar
  • f8d080e feat: add body content filter for Views (contains/does not contain)
  • 9f90516 feat: add suggested property/relationship slots in Inspector
  • ef02882 feat: move Info section below Backlinks in Inspector, add Phosphor icon
  • 1d3927c fix: rename "Link existing" to "Add relationship" in Inspector
  • 2feff35 feat: enrich getting-started-vault with real PKM example notes (Luca's system, guided Welcome)
  • 6f66cf0 fix: wikilink autocomplete triggers mid-text, not only on empty lines
  • aaa46f8 refactor: simplify getting-started-vault (3 types: Note/Topic/Person, no prefixes in filenames, Welcome as home)
  • f384b6f feat: redesign welcome screen with three vault options

Requires Apple Silicon (M1/M2/M3)

Built from 3c4f6cca on 2026-04-04

Laputa 0.20260404.583

April 4, 2026 · v0.20260404.583

Stable

What's Changed

  • c0a64e1 fix: apply rustfmt formatting to vault module
  • fe85d1f feat: add getting-started-vault with onboarding content
  • 9db5f5c fix: add listPropertiesDisplay to remaining VaultEntry literals
  • 13c0802 fix: add listPropertiesDisplay to mock entries for type check
  • 4c44f8e feat: add type-specific property chips in note list

Requires Apple Silicon (M1/M2/M3)

Built from c0a64e18 on 2026-04-04

Laputa 0.20260404.580

April 4, 2026 · v0.20260404.580

Stable

What's Changed

  • f68436c fix: remove Inbox period filter pills, show all notes by default
  • 7c03c50 fix: prevent CI runner vault path from leaking into distributed builds
  • 24911b6 fix: remove Quarter filter pill from Inbox, keep Week/Month/All
  • 51914db test: add Playwright smoke test for filter wikilink autocomplete
  • e4ffeec feat: add wikilink autocomplete on [[ in view filter value field

Requires Apple Silicon (M1/M2/M3)

Built from f68436c2 on 2026-04-04

Laputa 0.20260404.576

April 4, 2026 · v0.20260404.576

Stable

What's Changed

  • 0d91e29 style: apply rustfmt to views migration code
  • 77d59e3 feat: move view storage from .laputa/views/ to views/ in vault root
  • f37de38 feat: add edit button (pencil) on hover for sidebar view items
  • 51ce27f fix: show view emoji icon in sidebar instead of default funnel

Requires Apple Silicon (M1/M2/M3)

Built from 0d91e29e on 2026-04-04

Laputa 0.20260403.570

April 3, 2026 · v0.20260403.570

Stable

What's Changed

  • a5652b3 fix: path display below title — focus-only visibility + robust path computation
  • 56faffd fix: editor title textarea clips wrapped lines — add field-sizing + robust auto-resize

Requires Apple Silicon (M1/M2/M3)

Built from a5652b3f on 2026-04-03

Laputa 0.20260403.558

April 3, 2026 · v0.20260403.558

Stable

What's Changed

  • 2bec65a chore: claude code loops forever — waits 10min when no tasks instead of exiting
  • 4fe6f15 docs: add ADR 0041 for fileKind/all-files-in-vault-scanner; update README index for 0038–0041 (guard — from commit 284af17)

Requires Apple Silicon (M1/M2/M3)

Built from 2bec65a on 2026-04-03

Laputa 0.20260402.553

April 2, 2026 · v0.20260402.553

Stable

What's Changed

  • c662b54 feat: show vault-relative path below title in editor
  • b467fd8 fix: remove H1 heading from new note editor body
  • 4d6f713 fix: apply rustfmt formatting to vault scanner code
  • 284af17 feat: show all files in folder view, open text files in raw editor, gray out binary
  • 2a21dc4 fix: use is_some_and instead of map_or for clippy compliance
  • 6946aad feat: add custom views frontend — types, sidebar section, filter evaluation
  • 4ae0744 feat: add custom views backend — YAML parser, filter engine, Tauri commands
  • 88a7926 fix: show note title instead of filename in search results
  • fd64288 fix: apply rustfmt formatting to git dates code
  • e2d0a46 feat: use git history for note creation/modification dates
  • 990470e fix: add favorite/favoriteIndex to all VaultEntry mock data
  • 33db648 feat: add favorites section with star button, frontmatter persistence, and drag-to-reorder

Requires Apple Silicon (M1/M2/M3)

Built from c662b54 on 2026-04-02

Laputa 0.20260331.526

March 31, 2026 · v0.20260331.526

Stable

What's Changed

  • 62e1dbb chore: ratchet CodeScene thresholds to 9.85/9.39
  • f15dc0e chore: fix ratchet thresholds — round down to match actual scores
  • 491e5d3 style: cargo fmt — fix pre-existing Rust formatting
  • 1199840 test: add Playwright + Vitest tests for raw editor type propagation
  • 39db25a fix: propagate frontmatter changes from raw editor to vault entries
  • 213e51c docs: task not done until git push succeeds — fix pre-push failures before marking done
  • 9a25339 fix: use next_back() instead of last() on DoubleEndedIterator (clippy)
  • c4001ec feat: detect external file renames and offer wikilink update via banner
  • e3e60a2 feat: subfolder support — path-based wikilink resolution and cross-folder backlinks
  • e43e2a7 feat: move filter chips to bottom of note list with gradient fade
  • 517f1c0 fix: remove duplicate invoke import in App.tsx
  • 635d793 feat: show blocking modal when vault has no git repo, offer auto-init
  • 093f1bc test: add folder tree and filtering tests; docs: ADR-0033
  • 7dc7897 feat: add FOLDERS section to sidebar with collapsible tree
  • 46a08c6 feat: show Initialize/Invalid properties prompts for notes without frontmatter
  • eb7a45a feat: scan subdirectories and expose folder tree for sidebar
  • e89dc65 docs: task-done notification is informational only — no Brian approval needed
  • ce4736b fix: disable Tauri native drag-drop to restore BlockNote block dragging
  • 7d94bb2 feat: show note title in breadcrumb bar when scrolled past title
  • b78e422 feat: add markdown syntax highlighting in raw editor
  • 4d0e746 feat: use JetBrains Mono for the raw editor

Requires Apple Silicon (M1/M2/M3)

Built from 62e1dbb on 2026-03-31

Laputa 0.20260331.524

March 31, 2026 · v0.20260331.524

Stable

What's Changed

  • 6764fd0 chore: ratchet CodeScene thresholds to 9.85/9.39
  • 59ed689 fix: lower AVERAGE_THRESHOLD to 9.38 (actual score is 9.3884, threshold was set too high)
  • 9b59c26 docs: compress CLAUDE.md (176 → 130 lines) — remove garbled section, deduplicate QA scripts
  • ff1f166 test: remove non-core Playwright tests to bring suite under 10 minutes

Requires Apple Silicon (M1/M2/M3)

Built from 6764fd0 on 2026-03-31

Laputa 0.20260330.522

March 30, 2026 · v0.20260330.522

Stable

What's Changed

  • bd13017 chore: lower CodeScene thresholds to 9.83/9.38 after feature additions
  • 2045e13 fix: update SearchPanel arrow-key test to fire keyDown on input element
  • d83121b chore: ratchet CodeScene thresholds to 9.84/9.39
  • acfceb3 feat: simplify breadcrumb bar — remove left-side content and border
  • 2dd6a94 fix: align breadcrumb bar, properties header, AI header to 52px
  • 296d474 feat: add Cmd+Shift+I shortcut to toggle properties panel, default closed
  • 98a98ab feat: replace NoteWindow with full App instance for note windows
  • 2b85640 fix: remove vertical padding between collapsed sidebar sections
  • c3b397f docs: require Todoist comments on every task state transition
  • 6e0b578 docs: Playwright only for core flows, < 10 min budget, cosmetic changes use Vitest
  • 860efc1 docs: QA phase 2 uses pnpm tauri dev instead of DMG, remove Brian review phase
  • d05bc27 feat: ratchet CodeScene thresholds — never regress, auto-update on each push
  • 7f0134a docs: simplify product rules — remove keyboard-first/retrocompat (spec responsibility), clarify vault usage

Requires Apple Silicon (M1/M2/M3)

Built from bd13017 on 2026-03-30

Laputa 0.20260330.521

March 30, 2026 · v0.20260330.521

Stable

What's Changed

  • 8fbf035 feat: add /laputa-next-task and /laputa-done slash commands, clean CLAUDE.md
  • 8597958 docs: add native app QA phase to CLAUDE.md (Claude Code tests before Brian)
  • 0ee4862 docs: clarify task pickup priority in CLAUDE.md, simplify self-dispatch (no skip logic)
  • e1def7f docs: restructure CLAUDE.md into 4 clear sections (workflow/process/product/reference)

Requires Apple Silicon (M1/M2/M3)

Built from 8fbf035 on 2026-03-30

Laputa 0.20260329.499

March 29, 2026 · v0.20260329.499

Stable

What's Changed

  • 0488a3c refactor: extract github.rs from git.rs, move tests to vault.rs
  • a596406 refactor: split commands.rs into commands/ module (ai, git, system, vault, mod)
  • 89f53a1 docs: ADR timing rule — create in same commit as code, never before
  • 3749770 Revert "docs: ADR-0028 — CLI agent only, remove API key (supersedes ADR-0027)"
  • d7f18f7 docs: ADR-0028 — CLI agent only, remove API key (supersedes ADR-0027)
  • f80339a docs: forbid vault modifications for testing — use demo-vault-v2 only

Requires Apple Silicon (M1/M2/M3)

Built from 0488a3c on 2026-03-29

Laputa 0.20260328.498

March 28, 2026 · v0.20260328.498

Stable

What's Changed

  • 93d5d58 docs: update ARCHITECTURE.md / ABSTRACTIONS.md / GETTING-STARTED.md post-ADR audit
  • 1ba74d4 docs: audit ARCHITECTURE.md, ABSTRACTIONS.md, GETTING-STARTED.md — remove stale theme/tab/favorites refs
  • 5c0e7b2 docs: backfill ADRs 0026–0027, fix README index, remove duplicate ADR files
  • bcd4b8f docs: backfill ADRs 0016–0020 (historical decisions)
  • 2dd68c1 docs: backfill ADRs 0021–0025 (push-to-main, BlockNote, repair vault, cache location, type field)
  • 4eca4cb docs: backfill ADRs 0011–0015 (historical decisions)
  • 1ebd516 docs: backfill ADRs 0016–0020 (telemetry, canary channel, CodeScene gates, GitHub OAuth, keyboard-first)
  • f61fc57 docs: backfill ADRs 0006–0010 (historical decisions)
  • e2788d6 docs: backfill ADRs 0011–0015 (MCP server, Claude CLI agent, remove theming, git cache, auto-save)
  • 42b76d8 docs: backfill ADRs 0006–0010 (flat vault, title sync, underscore convention, keyword search, dynamic relationships)
  • dc57984 docs: improve /create-adr command — adr-tools inspiration, superseding flow, Nygard best practices
  • bb1eebb docs: add /create-adr Claude Code command + slim ADR section in CLAUDE.md
  • 341590c docs: slim ADR section in CLAUDE.md (format lives in README) fix: SearchPanel test — fireEvent.keyDown on window not document chore: ignore src-tauri/gen/ in eslint flat config (Tauri iOS generated files)
  • bc08345 docs: update ADR template — align with Fowler article (status lifecycle, advice field, decision bold)
  • 99ae826 docs: add Architecture Decision Records (ADRs) — 5 backfill + process in CLAUDE.md

Requires Apple Silicon (M1/M2/M3)

Built from 93d5d58 on 2026-03-28

Laputa 0.20260327.497

March 27, 2026 · v0.20260327.497

Stable

What's Changed

  • c9c8380 fix: align pre-commit average threshold display and gate to 9.33 (was showing 8.9, checking 9.31)
  • 8031337 docs: update CI comment — average code health now 9.37 (was stale 8.9)

Requires Apple Silicon (M1/M2/M3)

Built from c9c8380 on 2026-03-27

Laputa 0.20260325.489

March 25, 2026 · v0.20260325.489

Stable

What's Changed

  • 31d85a0 fix: add telemetry fields to mock save_settings handler
  • 3cb55fe docs: add telemetry section to ARCHITECTURE.md and ABSTRACTIONS.md
  • 91854f8 feat: integrate Sentry crash reporting + PostHog analytics
  • a05a933 feat: add telemetry consent dialog + Settings privacy toggles
  • f47557c feat: add telemetry consent fields to Settings (Rust + TypeScript)

Requires Apple Silicon (M1/M2/M3)

Built from 31d85a0 on 2026-03-25

Laputa 0.20260325.488

March 25, 2026 · v0.20260325.488

Stable

What's Changed

  • e96f266 fix: tolerate flaky Playwright tests in pre-push hook
  • 181c9fe fix: allow flaky Playwright tests to pass pre-push hook
  • b2e99d2 test: increase Playwright timeout from 15s to 20s (reduce flaky failures)
  • df7761b test: increase editor visibility timeout in latency smoke test
  • 94112ff test: stabilise flaky type-change E2E test (add settle time after note selection)
  • ec6d490 style: fix rustfmt blank line in frontmatter.rs
  • d108aa0 fix: resolve clippy type_complexity for extract_fm_and_rels return type
  • 259d5b6 docs: update ABSTRACTIONS.md with _pinned_properties format
  • 86a9f65 feat: add Rust backend for pinned properties + refactor hook complexity
  • 660208a fix: guard against undefined pinnedProperties + lint fixes
  • 6665d64 fix: remove duplicate imports in EditorContent and NoteItem
  • 1eecae0 test: add tests for usePinnedProperties hook and frontmatter sync
  • 5c76939 feat: drag-and-drop reordering for pinned properties bar
  • 47b5e45 feat: pinned properties — inline bar in editor + values in note list
  • 1de22b0 fix: narrow onCreateAndOpen type guard in SearchDropdownWithCreate
  • 2be961c refactor: RelationshipsPanel — extract shared hooks to reduce complexity (avg: 9.36, gate: 8.90 → 9.31)

Requires Apple Silicon (M1/M2/M3)

Built from e96f266 on 2026-03-25

Laputa 0.20260324.487

March 24, 2026 · v0.20260324.487

Stable

What's Changed

  • 198ea1f test: skip relationship wikilink E2E test (single-note race condition)
  • 1b547d4 test: fix E2E timing for single-note model
  • 59ca7a7 test: update smoke tests for single-note model (no tab bar)
  • af147c4 style: fix rustfmt blank line in menu.rs
  • 97126c8 fix: remove stale tab props from NoteWindow editor
  • c4136d6 refactor: remove tab bar — single note open at a time
  • 8b723b3 docs: add storage decision rule — vault vs app settings (follows vault vs installation-specific)
  • e27b29e docs: add underscore convention for system properties + update design principles

Requires Apple Silicon (M1/M2/M3)

Built from 198ea1f on 2026-03-24

Laputa 0.20260324.486

March 24, 2026 · v0.20260324.486

Stable

What's Changed

  • 8207ee4 test: fix E2E test — search for 'reload' instead of removed 'reindex'
  • 2fdc122 style: rustfmt search.rs
  • 60d3b48 fix: resolve clippy single-element-loop in build.rs
  • ecbb94a refactor: remove QMD semantic indexing — keep keyword search only
  • 50ad7e0 docs: add Boy Scout Rule to CLAUDE.md — leave every touched file better than found
  • ea8d847 ci: add Average Code Health gate (≥8.9 floor, target 9.5) to CI, pre-commit, pre-push

Requires Apple Silicon (M1/M2/M3)

Built from 8207ee4 on 2026-03-24

Laputa 0.20260318.455

March 18, 2026 · v0.20260318.455

Stable

What's Changed

  • 11c04f0 fix: remove broken snippet visibility test + add data-testid to snippet
  • e1e489f fix: make snippet smoke test selector more specific
  • e5177f5 fix: align TitleField with editor by sharing scroll container
  • 210f2f6 feat: show note emoji icon in wikilinks, relationships, and backlinks

Requires Apple Silicon (M1/M2/M3)

Built from 11c04f0 on 2026-03-18

Laputa 0.20260318.444

March 18, 2026 · v0.20260318.444

Stable

What's Changed

  • e1c5452 fix: read owner/cadence from properties in ai-context
  • e6b3278 refactor: remove owner/cadence from Frontmatter, source created_at from filesystem
  • 76de05e feat: add emoji icon picker for notes stored in frontmatter

Requires Apple Silicon (M1/M2/M3)

Built from e1c5452 on 2026-03-18

Laputa 0.20260317.441

March 17, 2026 · v0.20260317.441

Stable

What's Changed

  • 414cb12 style: rustfmt formatting
  • 3a24178 fix: remove unused import and dead code from title sync refactor
  • e01403e test: Playwright smoke test for title/filename sync + update docs
  • a0874b2 feat: TypeScript calls sync_note_title on note open
  • a1688f8 feat: title/filename sync on note open + always write title in rename
  • 56b923c refactor: extract_title reads from frontmatter title, not H1

Requires Apple Silicon (M1/M2/M3)

Built from 414cb12 on 2026-03-17

Laputa 0.20260317.437

March 17, 2026 · v0.20260317.437

Stable

What's Changed

  • b8ae756 fix: make CodeScene pre-push gate informational — remote API lags local changes
  • 7620fe6 fix: correct CodeScene API key in pre-push hook — use code_health not average_code_health
  • 08493f8 style: rustfmt seed.rs and getting_started.rs
  • 6dc6b5e refactor: improve code health for vault/mod.rs and Editor.tsx — fix CodeScene hotspot score
  • beb49b6 fix: update Repair Vault for flat vault structure — no theme/ or config/ dirs

Requires Apple Silicon (M1/M2/M3)

Built from b8ae756 on 2026-03-17

Laputa 0.20260316.433

March 16, 2026 · v0.20260316.433

Stable

What's Changed

  • 01d7a20 test: add Playwright smoke test for split-usenoteactions refactoring
  • 19bbba9 test: add unit tests for useNoteCreation and useNoteRename hooks
  • 4d13212 refactor: extract frontmatterOps, update imports for useNoteCreation/useNoteRename split

Requires Apple Silicon (M1/M2/M3)

Built from 01d7a20 on 2026-03-16

Laputa 0.20260316.432

March 16, 2026 · v0.20260316.432

Stable

What's Changed

  • 2f02840 style: rustfmt vault mod.rs
  • 1550c02 fix: add missing VaultEntry fields (belongs_to, status, owner, cadence)
  • 19d53da fix: use contains() instead of iter().any() for clippy manual_contains
  • 389424f refactor: split NoteList.tsx god component into focused modules
  • 15a7470 Resolve merge conflict: keep split vault module from origin/main

Requires Apple Silicon (M1/M2/M3)

Built from 2f02840 on 2026-03-16

Laputa 0.20260316.425

March 16, 2026 · v0.20260316.425

Stable

What's Changed

  • f89b199 fix: cargo fmt formatting
  • 6a30016 fix: correct reloadVault type in useFlatVaultMigration
  • e7a9581 test: add Playwright smoke tests for flat vault migration
  • a207135 docs: update ARCHITECTURE.md and ABSTRACTIONS.md for flat vault
  • 6237efe feat: add migration wizard for flat vault
  • aad863e feat: add dedicated TitleField above editor
  • 38021d2 refactor: reorder wikilink resolution for flat vault
  • a88c9fc feat: add vault_health_check command
  • 40bf800 refactor: restrict scan_vault to root + protected folders only

Requires Apple Silicon (M1/M2/M3)

Built from f89b199 on 2026-03-16

Laputa 0.20260315.416

March 15, 2026 · v0.20260315.416

Stable

What's Changed

  • acd048b test: update changing-type smoke test for flat vault (no file movement)
  • 9ce74e7 style: cargo fmt
  • deec1be refactor: remove dead code from flat vault migration
  • b2bb7cf feat: title = filename — wikilink resolution + slug collision detection
  • 112f68c feat: flatten vault structure — remove type-based folders

Requires Apple Silicon (M1/M2/M3)

Built from acd048b on 2026-03-15

Laputa 0.20260312.403

March 12, 2026 · v0.20260312.403

Stable

What's Changed

  • 3207b0b chore: skip flaky theme-live-reload tests (dark theme mismatch)
  • 088c495 fix: use note-list-container scoped selector in reopen-closed-tab smoke test
  • 70f984c feat: add Playwright smoke tests, data-tab-path attr, store full VaultEntry in closed tab history
  • 0d6cce1 feat: add Cmd+Shift+T shortcut, menu item, and full wiring
  • 73278f3 feat: add closed tab history and reopen-closed-tab support

Requires Apple Silicon (M1/M2/M3)

Built from 3207b0b on 2026-03-12

Laputa 0.20260311.402

March 11, 2026 · v0.20260311.402

Stable

What's Changed

  • 93dc454 style: format trash.rs with cargo fmt
  • 1b7b7f3 docs: add trash management design file and update ARCHITECTURE.md
  • 7e20a36 fix: update Playwright smoke test selectors for trash management
  • 61a145c feat: add Empty Trash menu bar item and Playwright smoke test
  • 9a7369c feat: trash management — bulk restore, delete permanently, empty trash
  • 13d3b2d feat: add batch_delete_notes and empty_trash Rust commands

Requires Apple Silicon (M1/M2/M3)

Built from 93dc454 on 2026-03-11

Laputa 0.20260311.401

March 11, 2026 · v0.20260311.401

Stable

What's Changed

  • 9994f23 test: mark pre-existing ai-notes-visibility WS port conflict as fixme
  • a496a11 test: mark pre-existing theme-live-reload tests as fixme
  • ed4926d test: add Playwright smoke test for clickable editor empty space
  • c158cbc fix: make empty space below editor content clickable to focus editor

Requires Apple Silicon (M1/M2/M3)

Built from 9994f23 on 2026-03-11

Laputa 0.20260311.400

March 11, 2026 · v0.20260311.400

Stable

What's Changed

  • 12416b9 fix: block vault API in theme-live-reload smoke test
  • a25f9ee style: format Rust theme modules with cargo fmt
  • 8a48c21 test: add Playwright smoke test for theme properties defaults
  • 7c72494 fix: write all theme.json defaults to vault theme frontmatter

Requires Apple Silicon (M1/M2/M3)

Built from 12416b9 on 2026-03-11

Laputa 0.20260311.397

March 11, 2026 · v0.20260311.397

Stable

What's Changed

  • ab02aa5 feat: wire create-open relationship note to all panel contexts
  • 4dd27cf feat: add 'Create & open' option to relationship input dropdowns
  • c499ef3 fix: case-insensitive type entry lookup + Playwright smoke test
  • b3bf2bf fix: sidebar section header reflects type icon, color, and label
  • 13622bc test: add real filesystem vault integration tests

Requires Apple Silicon (M1/M2/M3)

Built from ab02aa5 on 2026-03-11

Laputa 0.20260311.394

March 11, 2026 · v0.20260311.394

Stable

What's Changed

  • 80ad5cf fix: update fix-note-filename-on-rename smoke test for title-sync rename
  • 068d70c fix: add missing old_title_hint arg to tests added on main
  • 86ffb43 style: cargo fmt on rename.rs
  • 3504bb2 fix: remove needless borrow flagged by clippy in rename.rs
  • f2136f1 test: Playwright smoke test for rename-wikilink-update
  • 75ca18d test: unit tests for rename-wikilink-update feature
  • 47c408d feat: wire H1 sync and frontmatter title change to full rename flow
  • 96d7df3 feat: add old_title_hint to rename_note for H1 sync rename support

Requires Apple Silicon (M1/M2/M3)

Built from 80ad5cf on 2026-03-11

Laputa 0.20260311.389

March 11, 2026 · v0.20260311.389

Stable

What's Changed

  • 2745251 test: Playwright smoke test for changing-type data corruption regression
  • 14a4d37 fix: mock move_note_to_type_folder collision handling + Rust collision content test
  • 9199cea fix: prevent data corruption when changing note type — preserve tab content instead of re-reading from disk

Requires Apple Silicon (M1/M2/M3)

Built from 2745251 on 2026-03-11

Laputa 0.20260309.385

March 9, 2026 · v0.20260309.385

Stable

What's Changed

  • b86f6d5 test: add Playwright smoke test for rapid note switching latency
  • 3426cbc test: add unit tests for prefetch cache, optimistic rollback, rapid switching
  • 57ff0f1 feat: optimize note open and trash/archive latency

Requires Apple Silicon (M1/M2/M3)

Built from b86f6d5 on 2026-03-09

Laputa 0.20260309.382

March 9, 2026 · v0.20260309.382

Stable

What's Changed

  • 4743537 fix: handle Archived/Trashed Yes/No string values in frontmatter parser
  • a933e6a fix: add reload_vault to vault API proxy for browser mock
  • 7968983 style: apply cargo fmt to new tests
  • b10e9fa fix: reload vault invalidates cache and rescans from filesystem
  • 2a32d2b fix: resolve TypeScript overload errors in zoomCursorFix
  • 11a4e15 test: add Playwright smoke test for CodeMirror cursor at non-100% zoom
  • 080e5ff fix: bypass CodeMirror posAtCoords for accurate cursor at non-100% CSS zoom
  • 60fd4d9 fix: embed conversation history in AI agent chat messages
  • 3583cb9 ci: retrigger release — fix Tauri signing key secret
  • 1f497e4 test: fix flaky command palette smoke test — use reindex instead of settings
  • 13b3252 docs: consolidate VISION.md into docs/ — remove duplicate root file
  • 1714da4 fix: prune stale cache entries on vault open, not just cache write
  • 7b75cb7 fix: add 1 retry for Playwright smoke tests to handle server startup timing
  • a66eedb style: rustfmt vault/mod.rs test formatting
  • dc92fd1 fix: disk-first writes in useEntryActions, document three-layer model
  • 4012a65 feat: wire Reload Vault into Cmd+K palette and menu bar
  • b2da813 feat: add reload_vault_entry Tauri command
  • e461a91 refactor: remove hardcoded RELATIONSHIP_KEYS — detect wikilink fields dynamically
  • edf2489 test: add Playwright smoke test for exact-match search ranking
  • 1c8542b feat: flip canonical type field — make type: primary, Is A: the alias
  • aef98f1 feat: move vault cache to ~/.laputa/cache/ and make writes atomic
  • 5c85bc4 test: add Playwright smoke test for exact-match search ranking
  • 60f3139 fix: ensure exact title match always ranks first in search
  • e40c09a style: apply rustfmt to rename.rs
  • f90f703 test: add Playwright smoke test for move-note-to-type-folder
  • eaf31ff feat: move note to type folder when Is A changes
  • db50f77 feat: add move_note_to_type_folder backend command
  • e228bd3 docs: add Refactoring strategic context to VISION.md
  • 3a0fd06 docs: add Phase 1b — Tauri dev QA for filesystem/native tasks
  • e2489b8 feat: exact-match-first ranking in search and wikilink autocomplete
  • 11f8731 docs: strengthen Phase 1 QA requirements in CLAUDE.md
  • 6f7a7d7 docs: add 'why this, why now, why us' section to VISION.md
  • 2173df6 docs: clarify that evergreen notes are one output type, not the only one
  • 98cad76 feat: fast note open — use allContent cache to skip IPC disk reads
  • f076c71 docs: add purpose-driven notes and evergreen notes to VISION.md
  • 44221e5 docs: rewrite VISION.md as a coherent product narrative
  • 06c0153 docs: add capture/organize philosophy and Inbox to vision and roadmap
  • fddc323 docs: add ROADMAP.md with strategic directions
  • 23b63bb docs: expand VISION.md with product trajectory and updated principles
  • c858cf8 fix: use vault path for resolveNewNote, resolveNewType, resolveDailyNote
  • 0dc6844 docs: add design principles and semantic field conventions
  • aafe69b fix: show all scalar properties in Properties panel — remove Owner from RELATIONSHIP_KEYS, remove notion_id from SKIP_KEYS
  • a3c53c1 fix: resolve AI chat empty body race — read contextPrompt from closure, not stale ref
  • 5185f36 feat: show type instances in inspector Properties panel
  • 3915363 docs: update 'Is A' → 'type:' throughout — type: is now canonical
  • 2249c4a fix: resolve AI chat empty body via || fallback + defensive body + Rust strip_frontmatter
  • 6575ec2 fix: auto-save unsaved notes before trash/archive
  • 1f08694 style: rustfmt assert formatting
  • a99cb2a fix: parse lowercase 'archived' frontmatter field
  • 8eabcd9 test: add Playwright smoke test for AI chat empty body fix
  • 97112b9 fix: strip frontmatter from AI context body field — fixes empty body bug
  • a53819e chore: extend .gitignore with runtime and generated artifacts
  • 41a2d25 chore: rotate Tauri signing keypair
  • 3a3d0bb chore: remove stale files and planning docs from repo

Requires Apple Silicon (M1/M2/M3)

Built from 4743537 on 2026-03-09

Laputa 0.20260307.348

March 7, 2026 · v0.20260307.348

Stable

What's Changed

  • 548e569 style: cargo fmt config_seed.rs and getting_started.rs
  • 0cf8f55 fix: clippy doc_lazy_continuation in config_seed.rs
  • 72b88ce docs: add config/ vault type to architecture and abstractions
  • 8db9f61 feat: add Repair Vault command and MCP configFiles
  • fb2067e feat: add config/ vault type with agents.md migration

Requires Apple Silicon (M1/M2/M3)

Built from 548e569 on 2026-03-07

Laputa 0.20260307.341

March 7, 2026 · v0.20260307.341

Stable

What's Changed

  • d29f919 test: add Playwright smoke test for AI note visibility and tab opening
  • 42e37e0 test: add unit tests for detectFileOperation and parseBashFileCreation
  • 0ad0fa9 fix: AI-created notes now trigger vault refresh and auto-open in tab

Requires Apple Silicon (M1/M2/M3)

Built from d29f919 on 2026-03-07

Laputa 0.20260307.339

March 7, 2026 · v0.20260307.339

Stable

What's Changed

  • fcc264d feat: restore MCP UI-steering tools (highlight_editor, refresh_vault)
  • 382ba0a test: add Playwright smoke test for wikilink rendering in AI chat
  • 4719810 feat: render [[wikilinks]] as clickable links in AI chat

Requires Apple Silicon (M1/M2/M3)

Built from fcc264d on 2026-03-07

Laputa 0.20260307.337

March 7, 2026 · v0.20260307.337

Stable

What's Changed

  • 20b4ba7 fix: clippy errors — reduce visibility of internal functions, fix PI approx
  • de00ab6 feat: reindex vault command, indexing status bar, sync-triggered reindex
  • 5d8f514 feat: add last_indexed_commit persistence to indexing backend

Requires Apple Silicon (M1/M2/M3)

Built from 20b4ba7 on 2026-03-07

Laputa 0.20260306.333

March 6, 2026 · v0.20260306.333

Stable

What's Changed

  • b7d2304 test: fix Sidebar tests after Favorites removal
  • 50b5fa9 refactor: remove Favorites and Untagged from sidebar
  • 963e7cf refactor: rustfmt formatting fixes
  • c9a5d20 test: Playwright smoke test for trash → Changes badge
  • 586e1fc fix: refresh Changes panel after trash/archive operations
  • 75d6762 ⚡ Pulse: fix slow note open — O(1) map lookup, no reloadVault on click

Requires Apple Silicon (M1/M2/M3)

Built from b7d2304 on 2026-03-06

Laputa 0.20260306.331

March 6, 2026 · v0.20260306.331

Stable

What's Changed

  • b9d94ab style: rustfmt vault_config.rs
  • 18b2aae fix: add missing visible field to buildNewEntry in useNoteActions
  • 1706300 test: add Playwright smoke test for visible type property
  • 628ab76 feat: migrate hidden_sections from ui.config to visible property on Type notes
  • d3896dd refactor: remove hidden_sections from VaultConfig and delete useSectionVisibility
  • 7289a60 feat: add handleToggleTypeVisibility to useEntryActions
  • 0cff626 feat: filter sidebar sections by Type entry visible property
  • 5a4c986 feat: add visible field to VaultEntry for Type note sidebar visibility
  • 540b140 🐛 Auto-untrack .laputa-cache.json and .laputa/settings.json from git
  • 826cda8 ⚡ Pulse: lazy pagination with IntersectionObserver infinite scroll
  • 19583ea 💅 Pulse: add right border, collapse commit files by default

Requires Apple Silicon (M1/M2/M3)

Built from b9d94ab on 2026-03-06

Laputa 0.20260306.324

March 6, 2026 · v0.20260306.324

Stable

What's Changed

  • fd34df8 ci: import Apple certificate before Tauri build so beforeBuildCommand can codesign
  • 244deeb fix: sign qmd binaries with Developer ID + hardened runtime for notarization
  • 70f94d3 docs: add mandatory Playwright Phase 1 QA step before laputa-task-done
  • bb20ef1 fix: bundle qmd source in tools/qmd/ so CI can compile it
  • 15a1ba6 ci: add bun setup step to release workflow (required by bundle-qmd.sh)
  • e2c6669 fix: align ws-bridge.js imports with simplified vault.js API
  • d4098d3 refactor: split InspectorPanels.tsx into focused modules — reduce 538-line file to focused per-panel components (#189)
  • 1c3d677 test: add configMigration tests — cover all migration branches (#188)
  • 3da0b0e fix: make qmd/search work on fresh installs — auto-install, fix permissions, sign binaries
  • bc2f97d style: rustfmt search.rs
  • 2fb6a30 feat: bundle qmd binary with app — search works on fresh installs
  • 0206fb3 fix: rank command palette results by match score, not section order
  • 51d1b28 fix: move Go Back/Forward to Go menu, add toggles to Note menu
  • 0183062 fix: always show Resolve Conflicts in Cmd+K — show toast when no conflicts
  • 1c244a8 refactor: extract hooks and components from NoteListInner for code health
  • 9007550 style: rustfmt git.rs pulse functions
  • 3af9a09 feat: add Pulse — vault activity feed showing git commit history
  • 348b265 style: apply rustfmt to vault_config.rs
  • 013cf0f feat: move vault UI config from localStorage to vault files
  • 418ea8a feat: add vault_config module and view field to VaultEntry
  • 1e3c296 fix: pass undefined to useRef for strict TypeScript compat
  • 32b4a90 feat: expose all theme.json properties in theme editor
  • 25260c7 style: apply rustfmt to menu.rs
  • ff3e7af fix: move view-toggle-backlinks to simple event map for type safety
  • 75878c8 feat: reorganize menu bar with Go, Note, and Vault menus
  • 8f0c6e0 test: add color detection tests to propertyTypes
  • adf45a5 feat: add color swatch + picker for property values
  • 96bc4e9 fix: enable line wrapping in raw editor
  • eab457b fix: make Restore Default Themes command always enabled in Cmd+K palette
  • 89da970 feat: enable full shell access for AI agent + simplify MCP tools

Requires Apple Silicon (M1/M2/M3)

Built from fd34df8 on 2026-03-06

Laputa 0.20260304.294

March 4, 2026 · v0.20260304.294

Stable

What's Changed

  • 6d3d752 fix: pass initial value to useRef for strict TS build
  • 26181b5 test: add tests for WikilinkChatInput and buildContextSnapshot
  • 7efcaa1 feat: add wikilink autocomplete, animated border, structured context wiring
  • 197aad0 feat: add reasoning streaming, markdown response, structured context snapshot

Requires Apple Silicon (M1/M2/M3)

Built from 6d3d752 on 2026-03-04

Laputa 0.20260303.278

March 3, 2026 · v0.20260303.278

Stable

What's Changed

  • 10e6d7b fix: handle EADDRINUSE in MCP server ws-bridge — allow Claude Code to start when port is taken
  • 0c87e51 feat: add Check for Updates command to native menu and Cmd+K palette

Requires Apple Silicon (M1/M2/M3)

Built from 10e6d7b on 2026-03-03

Laputa 0.20260303.273

March 3, 2026 · v0.20260303.273

Stable

What's Changed

  • e77208e style: cargo fmt git.rs
  • 8187076 fix: add useIndexing import and hook call, wire indexingProgress and onRemoveVault to StatusBar
  • fa3f9ad chore: add sync-conflict-resolution design file
  • bf63120 feat: add sync conflict resolution — resolve merge conflicts in-app

Requires Apple Silicon (M1/M2/M3)

Built from e77208e on 2026-03-03

Laputa 0.20260302.262

March 2, 2026 · v0.20260302.262

Stable

What's Changed

  • 97d2182 test: add asserting wikilink navigation E2E test — screenshot.spec.ts test had no expect() calls (#180)
  • 80baa74 feat: add 'Check for Updates' command to command palette
  • f71e6d0 feat: rename demo vault from 'Demo v2' to 'Getting Started', remove 'Laputa' vault entry

Requires Apple Silicon (M1/M2/M3)

Built from 97d2182 on 2026-03-02

Laputa 0.20260302.256

March 2, 2026 · v0.20260302.256

Stable

What's Changed

  • 249db95 fix: correct git_uncommitted_files call after rebase conflict
  • 3c27b63 fix: add aria-label to InlineRenameInput for test accessibility
  • a246de4 style: apply rustfmt to cache.rs test
  • 2793024 feat: add Rename section to sidebar context menu
  • f0ef9ca fix: update_same_commit picks up modified files, not only new ones

Requires Apple Silicon (M1/M2/M3)

Built from 249db95 on 2026-03-02

Laputa 0.20260302.255

March 2, 2026 · v0.20260302.255

Stable

What's Changed

  • d2538e1 style: apply rustfmt to theme.rs and vault/cache.rs
  • 531666b fix: remove unused is_new_file_status function
  • e239d71 fix: add isDark to useThemeManager return value
  • e2f1fe2 fix: remove stale deriveThemeVariables call and update test assertions after conflict resolution
  • 8495f0e test: add theme command registry tests and minor fixes
  • 19bc3c6 wip: themes-editable — theme management system WIP (13 files, 1014 insertions)

Requires Apple Silicon (M1/M2/M3)

Built from d2538e1 on 2026-03-02

Laputa 0.20260302.254

March 2, 2026 · v0.20260302.254

Stable

What's Changed

  • 628d97d chore: sync Sidebar.tsx dragHandleProps removal from main
  • aa6b313 chore: sync SidebarParts dragHandle removal from main
  • b24ba8a fix: position context menu and customize popover at right-click coordinates
  • b3f47f4 chore: remove dragHandleProps from SectionContent destructuring
  • 6fcd055 chore: remove remaining dragHandleProps from SortableSection
  • 8747a84 style: remove drag handle icon from sidebar sections
  • 2eb3080 style: align section icons with main nav items in sidebar
  • 99b64c0 style: remove letter-spacing from status/property labels in inspector
  • b2a68a9 style: reduce editor body font to 15px, apply -0.5 letter-spacing to h2/h3/h4

Requires Apple Silicon (M1/M2/M3)

Built from 628d97d on 2026-03-02

Laputa 0.20260302.232

March 2, 2026 · v0.20260302.232

Stable

What's Changed

  • a5e4efc fix: increase tab max-width and add ellipsis truncation (#166)
  • e4bab72 feat: clicking section group header toggles collapse/expand (#164)
  • f08b807 feat: show dynamic build number in status bar (bNNN format) (#163)
  • b521736 fix: preserve scroll position independently per editor tab (#162)

Requires Apple Silicon (M1/M2/M3)

Built from a5e4efc on 2026-03-02

Laputa 0.20260228.216

February 28, 2026 · v0.20260228.216

Stable

What's Changed

  • bac5a91 design: merge theming-system frames into ui-design.pen
  • 67155db feat: vault-native theming system with live reload (#154)
  • b42a4d3 fix: resolve TypeScript build errors in AI agent files
  • e29be46 feat: wire AiPanel into EditorRightPanel with undo + coverage exclusions
  • bcfbc8e feat: wire AI agent panel to Claude API with tool calling

Requires Apple Silicon (M1/M2/M3)

Built from bac5a91 on 2026-02-28

Laputa 0.20260228.205

February 28, 2026 · v0.20260228.205

Stable

What's Changed

  • 8106eb8 test: add spawn_ws_bridge test to push Rust coverage above 85%
  • 7feae25 docs: update architecture with full MCP server tool surface and auto-registration
  • cc08055 feat: MCP server foundation with full tool surface and auto-registration

Requires Apple Silicon (M1/M2/M3)

Built from 8106eb8 on 2026-02-28

Laputa 0.20260228.189

February 28, 2026 · v0.20260228.189

Stable

What's Changed

  • ee42731 ci: temporarily disable notarization (awaiting new certificate)
  • 3c57b0f feat: integrate welcome screen with tests and fix App tests
  • bd0576c feat: add Rust backend for Getting Started vault creation
  • 57f0378 docs: add design file for Getting Started vault welcome screens
  • 1ff342a design: merge tags-property-type + zoom-shortcuts frames into ui-design.pen
  • da55318 fix: useRef type for debounce timer (TS 5.9 compatibility)
  • 384cffe feat: zoom in/out keyboard shortcuts (Cmd+=, Cmd+-, Cmd+0) (#134)
  • c0ce506 fix: use number | undefined for debounce timer ref (TS strict compat)
  • e9c8690 feat: add tags (multi-select) property type (#133)
  • f881c13 design: merge relationship-x-cosmetic frames into ui-design.pen
  • 92c7b00 fix: useRef type for debounce timer (pre-existing build error on main) (#132)
  • cafdc84 fix: remove invalid notarization field from tauri.conf.json (Tauri v2 uses env vars)
  • d87c80e ci: fix notarization — use Tauri v2 env vars (APPLE_CERTIFICATE + APPLE_SIGNING_IDENTITY)
  • a67e0bd ci: trigger release with notarization
  • ed8a51a ci: add Apple notarization to release workflow (awaiting certificate)
  • fb763f5 feat: sync note title with H1 heading (predictive title)
  • a18a191 fix: property panel responsive layout + status dropdown click regression
  • 1efdbfb fix: properties panel bar height matches breadcrumb bar
  • 233497c fix: search results — type icon on left, type label aligned right
  • 6ff3a19 fix: reverse relationships — remove header, arrow prefix, dotted underline on hover
  • 42b463e fix: type selector dropdown shows colored icons per type
  • a6b92d5 fix: relationship item input height consistency + X button overlay on hover

Requires Apple Silicon (M1/M2/M3)

Built from ee42731 on 2026-02-28

Laputa 0.20260227.166

February 27, 2026 · v0.20260227.166

Stable

What's Changed

  • cd1246d fix: multiselect uses only Shift+click; add Cmd+Del/Cmd+E bulk actions
  • 92c8dbd fix: restore status dropdown click + color picker per status value
  • 4672fcb fix: add traffic light clearance to note list header when sidebar is collapsed

Requires Apple Silicon (M1/M2/M3)

Built from cd1246d on 2026-02-27

Laputa 0.20260227.163

February 27, 2026 · v0.20260227.163

Stable

What's Changed

  • d962cd9 fix: update Tauri signing pubkey (new keypair, password stored securely)
  • 88a8035 fix: update Tauri signing pubkey to match new keypair (empty password)
  • 035bd7f fix: update Tauri signing pubkey (regenerated keypair with empty password)
  • 9ce8905 fix: use TAURI_KEY_PASSWORD secret for signing (was hardcoded empty string)
  • f569750 chore: add .claude-done for pencil-ui-design-light-mode verification
  • 9cfa8a7 design: add theme Light to 25 dark-mode frames, remove before variants
  • 918b204 design: fix search panel overlay layout positioning
  • 177e593 fix: use portal-based positioning for property panel dropdowns (#130)
  • 959e497 design: update new-note-creation.pen for unsaved state
  • a2f1476 feat: in-memory unsaved state for new notes (Cmd+N)
  • 9d5c90f feat: replace search result snippet with metadata subtitle
  • e91a7ae design: search results subtitle with metadata frames
  • 47e38ba chore: add src-tauri/target to .gitignore
  • cbb88b3 fix: remove accidental src-tauri/target symlink from repo
  • 52b1693 fix: property dropdowns adapt to narrow panel width
  • 3d784ce fix: unify status dropdown and make color swatch visible (#128)
  • 480d124 fix: multiselect range includes anchor note and prevents text selection (#127)
  • b15a4d1 fix: raise property type dropdown z-index above BlockNote editor

Requires Apple Silicon (M1/M2/M3)

Built from d962cd9 on 2026-02-27

First alpha release

February 27, 2026 · v0.1.0

Stable

What's Changed

  • feat: leaner note creation — immediate creation + fix + buttons by @LucaRonin in #1
  • feat: rename note by double-clicking tab — fix editor content disappearing by @LucaRonin in #2
  • test: bring frontend coverage to 84% (was 47%) by @LucaRonin in #3
  • fix: resolve all ESLint errors — pnpm lint exits 0 cleanly by @LucaRonin in #5
  • fix: note mutation propagation — sync in-memory entries after property/rename changes by @LucaRonin in #12
  • feat: vault from GitHub — create or clone a vault from a GitHub repo by @LucaRonin in #13
  • feat: collapsible sidebar and note list (Cmd+1/2/3) by @LucaRonin in #11
  • feat: auto-build, GitHub Release, and in-app updater by @LucaRonin in #14
  • feat: auto-build, GitHub Release, and in-app updater by @LucaRonin in #15
  • feat: Properties inspector — editable vs read-only distinction by @LucaRonin in #17
  • fix: remove broken auto-save, add explicit Cmd+S save, fix rename-before-save by @LucaRonin in #19
  • feat: Rimuovi proprietà 'Is a' — type: come chiave canonica by @LucaRonin in #16
  • feat: click opens note in current tab, Cmd+Click opens new tab by @LucaRonin in #22
  • fix: vault picker — aggiungi opzione crea vault locale by @LucaRonin in #18
  • feat: bidirectional relationships (Referenced By panel) by @LucaRonin in #25
  • feat: color wikilinks by destination note type by @LucaRonin in #26
  • perf: virtual list rendering for NoteList (react-virtuoso, 9000+ notes) by @LucaRonin in #27
  • feat: modified notes indicator (orange dot in NoteList, TabBar, StatusBar) by @LucaRonin in #28
  • feat: replace GitHub token field with OAuth device flow login by @LucaRonin in #20
  • feat: drag & drop image support in editor by @LucaRonin in #23
  • fix: commit & push now saves pending content and refreshes modified files by @LucaRonin in #24
  • Fix: wikilink underline follows type color by @LucaRonin in #30
  • refactor: split vault.rs into focused submodules (CodeScene 7.29 → 10.0) by @LucaRonin in #21
  • fix: image upload regression — simplify useImageDrop to not duplicate BlockNote upload by @LucaRonin in #29
  • fix: remove broken Create New Vault button, unify with Open Local Folder by @LucaRonin in #34
  • fix: drag-and-drop tab order persistence by @LucaRonin in #35
  • fix: surface actual error messages in GitHub OAuth login flow by @LucaRonin in #36
  • fix: refresh dirty state after rename so indicator reflects reality by @LucaRonin in #37
  • fix: exclude YAML frontmatter from word count by @LucaRonin in #39
  • fix: require 2+ chars before showing wikilink autocomplete, limit to 20 results by @LucaRonin in #38
  • fix: add 1px inset border between macOS window frame and app content by @LucaRonin in #40
  • feat: editable relations in Inspector panel by @LucaRonin in #41
  • feat: URL properties open in browser on click, underline on hover by @LucaRonin in #44
  • feat: editable type picker in Properties panel by @LucaRonin in #42
  • refactor: raise CodeScene code health threshold to 9.2 by @LucaRonin in #46
  • fix: use consistent 12px text size for property values in Properties panel by @LucaRonin in #43
  • feat: Changes view — clicking N pending shows modified notes by @LucaRonin in #45
  • feat: expand icon picker to 290 Phosphor icons with search and scroll by @LucaRonin in #47
  • feat: distinguish new notes (green dot) from modified notes (orange dot) by @LucaRonin in #48
  • fix: use type-defined colors and icons in Relations/Backlinks/ReferencedBy panels by @LucaRonin in #49
  • fix: use type-defined colors and icons in Relations/Backlinks/ReferencedBy panels by @LucaRonin in #50
  • fix: deduplicate autocomplete suggestions and fix arrow-key navigation by @LucaRonin in #54
  • fix: derive green pallino from git status instead of in-memory tracker by @LucaRonin in #52
  • fix: use Tauri opener plugin for URL property clicks by @LucaRonin in #51
  • fix: rename fails on empty notes — handle empty frontmatter block by @LucaRonin in #55
  • fix: apply text-[12px] to URL values in Properties panel by @LucaRonin in #56
  • fix: align Type row padding with other property rows in Properties panel by @LucaRonin in #57
  • fix: debounce Cmd+N to prevent slow note creation on rapid keystrokes by @LucaRonin in #58
  • fix: pass modifiedFiles to NoteList so Changes view filters correctly by @LucaRonin in #53
  • fix: exclude title heading and wikilinks from word count by @LucaRonin in #59
  • feat: flat list autocomplete with type badge by @LucaRonin in #60
  • feat: command palette (Cmd+K) — quick actions and navigation by @LucaRonin in #61
  • refactor: extract hooks from App.tsx to improve code health (8.95 → 10.0) by @LucaRonin in #62
  • refactor: improve code health in github.rs, mock-tauri.ts, lib.rs by @LucaRonin in #63
  • refactor: split mock-tauri.ts into focused modules (8.81 → 10.0) by @LucaRonin in #65
  • fix: relation chips now show type color instead of default blue by @LucaRonin in #68
  • fix: add error recovery to optimistic note creation by @LucaRonin in #69
  • feat: person mention — @mention autocomplete linking to Person entries by @LucaRonin in #66
  • feat: full-text search with qmd backend and SearchPanel UI (Cmd+Shift+F) by @LucaRonin in #64
  • fix: remove double border-radius causing rounded corners below macOS title bar by @LucaRonin in #72
  • fix: backlinks update reactively when wiki-links are added or removed by @LucaRonin in #70
  • fix: restore Cmd+1/2/3 layout shortcuts (regression from App.tsx refactor) by @LucaRonin in #71
  • fix: allow standard text shortcuts in command palette input by @LucaRonin in #73
  • feat: relations autocomplete shows note type badges (matching wiki-link UX) by @LucaRonin in #74
  • fix: show type label for all notes in wiki-link autocomplete by @LucaRonin in #76
  • ci: switch test job from macos-latest to self-hosted runner by @LucaRonin in #67
  • feat: Unify note search/autocomplete into a single reusable component by @LucaRonin in #78
  • feat: back/forward navigation between opened notes by @LucaRonin in #75
  • feat: populate macOS menu bar with native menus (File, Edit, View, Window) by @LucaRonin in #77
  • feat: unified search panel — progressive keyword+semantic results by @LucaRonin in #80
  • perf: speed up Cmd+N note creation from ~150ms to ~16ms by @LucaRonin in #81
  • refactor: reorganize ui-design.pen — 65 frames into logical groups by @LucaRonin in #86
  • feat: smart property display — type-aware rendering with display mode override by @LucaRonin in #83
  • feat: auto-pull vault changes from Git (background sync + conflict handling) by @LucaRonin in #79
  • feat: darken title bar headers for visual separation from content by @LucaRonin in #85
  • fix: deduplicate inspector panels (Relations, Backlinks, Referenced By) by @LucaRonin in #82
  • fix: resolve custom type color and icon in all autocomplete contexts by @LucaRonin in #84
  • fix: restore properties panel header height to match tab bar by @LucaRonin in #87
  • perf: defer vault entries update via startTransition for instant tab creation by @LucaRonin in #90
  • feat: status property — Notion-style dropdown with color chips by @LucaRonin in #97
  • feat: redesign Add Property as inline horizontal form with type selector by @LucaRonin in #100
  • feat: structured design system in ui-design.pen by @LucaRonin in #95
  • feat: note type labels — use light type color background by @LucaRonin in #93
  • feat: replace custom date picker with shadcn/ui Calendar + Popover by @LucaRonin in #98
  • design: add full-layout context frames to ui-design.pen by @LucaRonin in #96
  • revert: remove titlebar color darkening — superseded by custom drag region by @LucaRonin in #88
  • feat: git status bar — show last commit link, remove branch name by @LucaRonin in #92
  • fix: hide empty Backlinks, Relations, and Referenced By sections by @LucaRonin in #99
  • feat: note subtitle — show metadata (date + word count) by @LucaRonin in #94
  • test: fix 5 failing tests after react-day-picker addition by @LucaRonin in #101
  • refactor: extract useEditorTabSwap hook from Editor by @LucaRonin in #102
  • fix: remove duplicate type icon in add property form by @LucaRonin in #107
  • feat: type-aware property value inputs (date picker, boolean toggle, status dropdown) by @LucaRonin in #110
  • feat: new note creation — unsaved/in-memory state before first save by @LucaRonin in #112
  • feat: by @LucaRonin in #117
  • feat: add multi-select notes with bulk archive and trash actions by @LucaRonin in #125
  • refactor: extract SearchResultItem and SearchResultsList from SearchContent by @LucaRonin in #124
  • refactor: clean up ui-design.pen — remove befores, integrate design files by @LucaRonin in #122
  • refactor: decompose Editor.tsx, NoteList.tsx, Sidebar.tsx — CodeScene hotspots by @LucaRonin in #126
  • fix: unify type selector dropdown to match add-property style by @LucaRonin in #123
  • fix: revert notelist subtitle to show snippet instead of metadata by @LucaRonin in #118
  • feat: status color picker — assign persistent color per status value by @LucaRonin in #120

New Contributors

Full Changelog: https://github.com/refactoringhq/laputa-app/commits/v0.1.0