All notable changes to this project are documented here. The format follows Keep a Changelog; versions follow Semantic Versioning.
0.8.0 - 2026-10-21
- cache reads in remote mode behind NOTELET_REMOTE_CACHE
- rename the remote read cache to LocalCache and confine it to stdio
0.7.0 - 2026-10-19
- (ui) group path matches above body hits in search
0.6.0 - 2026-10-18
- match the search text against the note path as well as the body
- bundle a Claude Code plugin that links the notes a session wrote to /ui
- show a copyable path@version#lines reference for each section in /ui
- run the Postgres integration test on a throwaway Docker container
0.5.0 - 2026-10-17
- declare tool annotations and state allowed values in input schemas
- keep the store's contract under concurrent writes
- keep notes private and intact through import / export
0.4.0 - 2026-10-17
- project a note onto a local file in note_get / note_put, with git-style conflict files and note_restore
- add a remote backend for serve and stdio
- make the actor span test independent of other tests' tracing state
- Generate the tool list in the docs from the tool router
0.3.0 - 2026-10-15
- record the authenticating token's actor in updated_by
- Describe moving a deployment from the single token to one token per client
0.2.0 - 2026-10-13
- keep the cause in CoreError and log through tracing instead of eprintln
- add tail_lines and max_bytes to note_get for reading the end of a note
- read-only browser view at /ui with HTTP Basic auth
- breadcrumb links show only their own segment; deploy-dev takes the app name
- loopback Host check on /ui without a token, plus boundary tests
0.1.1 - 2026-10-12
- Shorten the notelet-mcp description so the Homebrew formula passes brew style
- Add the notelet umbrella crate
notelet-core:Note/Revision/Filter/Pagedomain,NoteRepoport,NoteService, Postgres adapter with optimistic locking and revisions, in-memory adapter, embedded migrations.notelet-mcp: streamable HTTP and stdio transports, bearer middleware, eight tools (note_get,note_put,note_append,note_delete,note_list,note_search,note_history,note_dump), three guide resources.justfile, CI (fmt / clippy / test), Fly configuration placeholders, Dockerfile.note_delete { path, expected_version? }keeps the removed body as the last revision, readable throughnote_history; withoutexpected_versionit deletes whatever is there.note_historytakesinclude_body(defaulttrue);falsereturns metadata with the size in bytes.notelet-mcp import <dir> [--prefix] [--dry-run]andnotelet-mcp export <dir> [--prefix]: operator bulk transfer between a file tree and the store (not MCP tools).
note_put,note_appendandnote_deleteanswer aWriteOutcome:path,version,updated_at,size(bytes),sha256,changed.note_putwith a body identical to the current one is a no-op (changed: false, no version bump, no revision).note_listandnote_historyreportsizein bytes (UTF-8) in both adapters.note_dumppages default to 20 and are capped at 100.- A conflict error carries
expected_version(nullon create) next tocurrent_version, and its message readsexpected none/expected 7. - A note re-created at a path that still has revisions starts one past the highest of them, so versions never repeat within a path.