v0.2.0
Breaking
-
The bundle path is a positional argument instead of
--root, since there is only one thing to point this at.wikiview my-kb
Flags may sit on either side of it. Go's flag package stops at the first non-flag argument, which would have made
wikiview my-kb --port 3000serve on 8080 without saying so. -
--addris replaced by--hostand--port. They are two separate decisions: which machines can reach the server, and which port it answers on.wikiview --host 0.0.0.0 --port 3000
Binding to anything but a loopback interface now says so on startup. wikiview has no authentication and writes to the bundle, so anyone who can reach it can read every entry and tick boxes in them.
Changed
- Navigation names files rather than titles. The tree, the breadcrumb, a folder listing and a frontmatter reference all show the filename made readable, so
/2-server/001-what-to-pick.mdreads as "2 Server" and "001 What to pick". You navigated to a file, so the tree names the file. What an entry calls itself appears on the entry, and search matches either name.
Fixed
-
On Windows the bundle name read as the whole path to it. The rule that makes a filename readable is right for bundle paths, which use
/on every machine, and wrong for the folder the bundle lives in, which uses whatever the OS does. -
A backlink from a folder's
index.mdsays which folder: "1 Design (index)" rather than "Index", which every folder has one of. The tree and the breadcrumb still say "Index", because there the folder is already on screen. -
The icon rail expands when you hover the icons, not when the pointer crosses the empty column below them on its way somewhere else.
-
Going back returns to where you were. The view no longer blanks while an entry loads, so the container keeps its height and there is somewhere to put the old position. Coming back to a long entry from a short one retries until the incoming content is tall enough, rather than settling for the short one's maximum.
New
-
Files a bundle carries but does not index are served at
/raw/…. An image in an entry displays, and a link to a contract or a spreadsheet beside the notes about it opens in a new tab instead of a page that does not exist.Entries are served there too, as the bytes on disk.
/api/entryhands back a parsed entry, body separated from frontmatter, and you cannot rebuild the file from that, so/raw/notes/a.mdis what a backup or a diff should read.Only paths the index refers to are servable, so a request stays a map lookup rather than a file search. A
.envsitting next to your notes has no key and cannot be asked for.Anything that reads as text displays as text, so a
.solor a.rsopens as source instead of landing in your downloads folder. The bytes decide rather than a list of extensions, which would always be missing the language someone actually uses.Content types are declared and never sniffed.
.htmldownloads rather than displays, since an entry's HTML is deliberately not rendered and serving it from this origin would undo that. SVG displays, under a policy that blocks script and sandboxes the document: a diagram works, and a script inside one cannot reach the API. -
The console says what moved:
v4, /notes/a.md /notes/b.md, 2 listening. One line per version announced to clients, whether it moved because the watcher saw an edit or because a checkbox was ticked. Long lists are cut off after five paths, since atidy --allwould otherwise bury whatever happens next. -
The tree remembers which folders you left open, scoped per bundle, so five knowledge bases in one browser keep their preferences apart.
-
Entries that changed since you last opened them are marked in the tree, in the search palette, and on the folders above them. An agent editing the bundle while you read it no longer does so silently.
Each entry reports the bundle version its content last moved at, so this is one comparison per entry rather than a diff of two trees, and a client that missed ten events still gets the right answer from the eleventh. Which entries you have seen is one person's attention in one browser, and it stays there rather than being written into the files.
Arriving for the first time marks nothing. It means changed since you were here, not unread.