feat/cli-regroup #4

Merged
hans merged 9 commits from feat/cli-regroup into main 2026-09-22 14:11:08 +02:00
Owner

Passt.

Passt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replace 'Contract: delegates to ApplicationServices...' docstrings with
plain descriptions (implementation notes moved to comments), drop phase
references and the German quote, describe every argument, add help to
'show', fix the [n] citation marker that rich swallowed in 'ask --help',
and reflow paragraphs so the terminal wraps them. Filter option help
strings are now shared constants.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Nothing ever read these registry entry labels: no filter, default or access
decision used them, they were only echoed by 'zettel repos', 'config explain'
and the MCP repo listing, and their names clashed with the note-level
organizational fields. Removed the 'registry add --topic/--department'
options, the RepoEntry / EffectiveRepoConfig / RepoInfo fields, the
'repos --json' and MCP list_repos keys, and the reserved-key rejection in
repo markers. Registry files that still contain the keys keep parsing; the
keys are ignored.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Top-level help is now split into panels (Find and read / Write /
Repositories / Setup and maintenance) in a fixed order. Everything about
registered repos lives under 'zettel repo': list (was 'repos'), add (was
'registry add'), show (was 'config explain'), init, check, and embed /
annotate / commit (were top-level). 'serve' becomes 'serve mcp' and
'serve lsp' so the MCP-only transport options stop appearing for the LSP.
The filter options shared by search/ask/chat/list/graph are one set of
Annotated types.

The old names stay as hidden aliases on the same functions, so existing
scripts and agent/editor configurations keep working. User-visible
messages, AGENTS.md and the docs use the new names.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Move frozen material (phase plan, design-decision log, original architecture
docs, security review) to docs/history/, unbuilt designs to docs/proposals/
and essays to docs/essays/; stable component docs stay in docs/extensions/
so code comments citing them keep working. Add docs/README.md (index, what
is kept current, where each kind of fact goes), historic banners on the
frozen files, and rewrite organizational-fields.md as reference.

Clean up docs/extensions/: drop "Extension Proposal" titles and branch
names, give every doc a current Status line, fix stale department/topic
examples and links to moved files.

AGENTS.md gains a Documentation section: stable vs. history layout, what to
update together with a code change, and rules of thumb for keeping docs in
sync. Path references in code comments follow the moves.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
department and topic are ordinary organizational fields like any other a
repo declares. `zettel list --json`, `zettel search --json` and the MCP
get_note / search_notes no longer carry top-level department/topic keys;
read `org_fields` (MCP get_note and search_notes gain it).

`zettel repo annotate` hardcoded department/topic as the only annotatable
org fields. It now accepts title/tags/type plus whichever fields the repo
declares (the registry entry's org_fields, else the tool-wide default) and
rejects unknown ones with the valid list.

Docs: format-spec describes org_fields (required fields are id, title,
author, date, tags plus the declared ones); json-output.md gets the change
log entry; getting-started treats department/topic as the default pair.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Audited against the client UX guide (§4.2-4.4, §4.9):

- Hover card: title; repo · date · author; one line per organizational
  field the note's repo declares; tags; type; link type; ~220-char excerpt;
  the link as written last. An unavailable link shows only "Link not
  available" plus the reason and nothing about the target.
- Completion: every typed word must match, ranked by the guide's points
  table (org field values included), `repo:` prefix narrows, a typed
  #type is kept, capped at 30, never the note being edited; filterText /
  sortText set, missing `)` added, empty `[]` text filled with the title.
  The edit replaces what was typed instead of appending.
- Document links for repo:ULID entries in `links:` (block and flow form).
- Lint findings (hidden control characters, tags taxonomy) as one
  diagnostic each, with error/warning severity.
- A malformed inline zettel: link is now a warning, as in the guide.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The zettelmesh, zettelmesh-workspace and zettelmesh-vscode repositories are
readable anonymously over https, so install and clone instructions no
longer need an SSH key or the port-222 URL. Placeholders for private team
repos stay ssh. The missing-[tui] hint printed by the CLI follows.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
hans merged commit 21c91ba90d into main 2026-09-22 14:11:08 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
hans/zettelmesh!4
No description provided.