Skip to content

v0.7.0

Choose a tag to compare

@zekaizer zekaizer released this 17 Jul 08:04
· 98 commits to main since this release

Outlines are re-encoded as text rows addressed by minimal unique suffixes (ADR-0026), cutting the vault-wide outline payload to ~22% of the previous encoding.

Breaking changes

  • read_outlines returns a text block, not a heading array. NoteOutline.headings is replaced by NoteOutline.outline: one <line> <#×level> <title> row per heading in document order, following the read_notes content-string envelope pattern. The grammar is unambiguous by construction — titles cannot contain newlines, heading rows start with a digit, marker rows with ↳. The response budget now measures rendered rows.
  • Heading addresses are minimal unique suffixes. Each heading carries the shortest ancestor-chain suffix that resolve_heading maps back to it, emitted as a ↳ heading_path: [...] row only under headings whose bare title does not resolve. occurrence becomes optional and is set only when even the full chain is duplicated; the ambiguous field is dropped — a multi-element address is the signal, and it answers the question agents actually have: does the bare title suffice?

Fixes

  • search_notes matches CJK terms across spacing and inline style. Korean spaces words optionally, so 전역지침 and 전역 지침 are one term, but the query was split on whitespace and matched as literal substrings — the two directions disagreed, and **전역** 지침 never matched 전역지침. A second scan now runs over a shadow copy with CJK-adjacent gaps folded, unioned with the raw scan; snippets and match_count still report original bytes.
  • The Windows build compiles again. The OAuth token store reached for unix-only file-permission APIs, so x86_64-pc-windows-msvc failed to compile and no Windows binary was attached; closes #10.
  • Ambiguity errors point at the outline's ↳ address rows instead of a heading flag the outline no longer emits.

Notes

  • Measured on a real vault (156 notes / 3107 headings): 99.2% of headings resolve by bare title, and every emitted address round-trips through resolve_heading.
  • The read_outlines description now names the ~10 KB threshold (see size_bytes in list_notes) above which outline-first reads pay off, and states the small-note fast path explicitly.
  • The OAuth store stays owner-only (0600) on unix; Windows has no mode bits, so it inherits the state directory's ACL — keep MD_STATE_DIR under a per-user location.
  • The Windows release asset remains best-effort and does not block the Linux binary.