4.6 KiB
4.6 KiB
Changelog
All notable changes to noz-cli are documented here.
Format: Keep a Changelog · Versioning: Semantic Versioning.
[Unreleased]
[0.2.0] — 2026-05-17
Added
REPL commands
mv <old> <new>— rename a note and atomically rewrite all inbound wikilinks and markdown linksmkdir <name>— create a folder by writing a_index.md; navigates into the new folder immediatelylink <source> <target>— add a wikilink to the "Siehe auch" section (or create it);--bothfor bidirectionalsearch <query>— full-text search via Meilisearch; context-aware (defaults to current topic);--topic,--limitflagstemplates— list available server-side note templatesnew --template <name> <slug>— create a note from a template with{{title}},{{date}},{{topic}}placeholderscat --raw <slug>— print raw markdown (default now renders via MarkdownRenderer)clear— clear the terminal screen
PowerShell module
Get-NozGraph— all wikilink edges asNozGraphEdgeobjects; filterable by-Source/-TargetFind-NozNote— Meilisearch full-text search;-Topic,-LimitMeasure-NozGarden— garden-wide statistics: note counts by status/topic/lang, link count, orphan countSet-NozNoteStatus— patch thestatus:frontmatter field in place;SupportsShouldProcessGet-NozOrphans— notes with no incoming wikilinks;-TopicfilterRename-NozNote— wrapsNoteRenamerfor pipeline use;-PassThru,-WhatIfGet-NozTemplate— list server-side templatesAdd-NozLink— add wikilinks between notes;-Both,-Section
Server API routes (noz Next.js app)
GET /api/cli/graph— full wikilink adjacency list from pre-built indexGET /api/cli/search— Meilisearch / local-search with?q,?topic,?limitPUT /api/cli/folders/[...path]— create_index.mdfor a folderGET /api/cli/templates— list templates from_templates/GET /api/cli/templates/[name]— fetch a single template bodyPUT /api/cli/templates/[name]— create or update a template
Core library
NoteRenamer— fetches inbound edges, creates new note, rewrites links, deletes old slugNoteLinkHelper—AddLink()inserts wikilinks into existing sections or appends new ones;ApplyPlaceholders()for template renderingNozApiClient.GetGraphAsync(),SearchAsync(),GetTemplatesAsync(),GetTemplateAsync(),PutFolderIndexAsync()
Templates
- Four sample templates in
content/noosphere/_templates/:rezept,buch-notiz,konzept,meeting
Fixed
walkNotesnow skips directories with_prefix (previously only filenames were checked —_templates/content was indexed as regular notes)- Notes listing API now includes the
datefield
[0.1.0] — 2026-05-16
Added
- Interactive REPL with topic-based navigation (
cd,ls,ls -la,tree) cat— render a note with MarkdownRenderer (headings, blockquotes, code blocks, inline formatting)edit— open note in terminal editor (nano/vim) or VS Code / Zed / Sublime (-c)new— create a note with frontmatter template, open in editorrm— delete a note from serversync— pull notes from server to local directory (parallel downloads, SHA-256 hash diffing,--all,--dry-run)push— push local.mdfiles to server with slug validationstatus— diff between a local folder and the serverconfig— view and seteditor/code_editorpreferencesversion— print version and git hashhelp— list all commands with usageexit/quit/q— quit the REPL- JSON note cache (
~/.cache/noz/notes.json) — instant startup, background refresh,chmod 600, atomic write - Cache age shown in startup stats line ("vor 5 Min.")
- Ctrl+C: idle → exit REPL; during command → cancel command only
- Native AOT binary for macOS arm64 (~7.6 MB, no runtime required)
- Tab completion for commands, slugs, and folder segments
SlugGuard— path traversal prevention for all slug inputs and file operationsMarkdownRenderer— segment-based inline escaping (prevents Spectre markup injection from note content)- PowerShell module
NozwithGet-NozNote,Get-NozNoteContent,Set-NozNote,New-NozNote,Remove-NozNote - xUnit test suite (52 tests):
SlugGuardTests,ReplContextTests,NotesCacheTests,NoteRenamerTests,NoteLinkHelperTests - Forgejo Actions CI pipeline (
.forgejo/workflows/ci.yml): build + test on every push/PR - Version string from
AssemblyInformationalVersionwith embedded git short hash