Repository navigation
v0.10.0
A note created as … I/O ….md landed as folder … I and note O ….md, and nothing could refuse it: with a string path, a/b.md and a title holding / are the same bytes. Every path the tools carry is now an array of segments (ADR-0029), so a separator inside a name is an error at the write that caused it, not a surprise at a later read — and the contract no longer states a separator character at all.
Breaking
- A path is
["dir", "note.md"], root to leaf;[]is the vault root. Requests, responses and error details alike, on every tool. A string path is refused at the schema. A segment that is empty,.,.., or holds/,\or NUL is rejected asSEGMENT, naming the segment; a title such asI/OneedsI∕O(U+2215) orIO. move_notesnames its target with exactly one ofdestorinto.destis the full destination path including the new basename;intois a directory to move into keeping the basename ([]for the root). The trailing-/convention that carried this distinction is gone; both or neither rejects the item asMISSING_CONTENT.list_notesitems carrykind(note|dir). Directory paths no longer end in/;kindis how a directory is told apart. A directory item'spathis exactly whatmove_notes.intotakes.- A transfer
PUTnever creates a directory. A URL cannot tell a separator from a/in a title, soPUT /api/notes/{path}under a missing parent answers409 Conflict(RFC 4918 §9.7) with the way out in the body: make the directory through the note tools (create_noteswith a path under it), then put again. The recipe says so on its PUT line.
Notes
- Markdown links inside note bodies and the transfer API's URL paths stay strings — each has a path syntax of its own. On disk, in the event journal and in git commit subjects nothing changed.
- The server
instructionsstate the array form up front, and name the intro note as the arrayread_notestakes. - A mistyped directory segment still creates that directory silently: this release catches separators, not typos. A
create_dirsguard stays a compatible follow-up if that failure shows up.