Skip to content

v0.43.0

Pre-release
Pre-release

Choose a tag to compare

@Fade78 Fade78 released this 20 Aug 08:11
· 168 commits to main since this release
49567c1

A card is called what its author declared, and nothing else.

One rule replaces five. A card's id is the slug: line its author wrote. Nothing derives it, nothing falls back to its position, and no ordinary edit moves it — not reordering the deck, not inserting a card, not tags: excluded, and not rewriting the heading. That last one is what the derived identity could not hold: it was stable exactly as long as the title was, and a title is what an author retouches. A link you have already given out, or printed as a QR code, now survives everything except you changing the slug on purpose.

slug: is required. A card without one stops the build with an error that names the remedy, because someone meeting it for the first time has a series that will not build and no way to guess a command exists to fix it.

Two new commands. lightwebpres series slug lists every card of the series and the name it is published under, in text or JSON — status answers by article, which is the unit series.json describes, and a link points at a card. lightwebpres series slug set writes a slug into every card that has none, and only those. It is the one command in this tool that edits your articles, which is why it is a verb you type rather than a flag on the build: a build that rewrote its own inputs would surprise a read-only CI, a version-controlled tree that comes back dirty, and an encrypted series in the browser editor. --dry-run says what it would write and writes nothing.

What it writes is random, not derived from your title. Once the value is in the file it IS the identity, and deriving it would make it look as though it still followed the title it came from. Rename it to something readable before you publish: slug: barrage-de-vajont is worth more than slug: 3f7c1a9e, and the error message says so too.

Two cards on one slug is now an error rather than a silent -2. Two values you declared that happen to match are a typing mistake, and a suffix appended in silence would publish an anchor nobody wrote while the card you meant to reach keeps the other.

Gone with the derivation: the Latin-mark folding, the truncated hash, the sN and sN-series aliases, the collision suffix, and the audit finding about identities that are not durable. The only visible change to a built page is the disappearance of those empty alias spans.

slug_prefix: survives, and is now the only thing left that can change what you wrote: it puts a namespace in front of every card id on the page, which is what a series whose pages reuse card names needs.

Also in this release: one rule for the ampersand across both grammars — a & outside a tag is escaped, what is inside a tag is left verbatim — so a source: line carrying ?q=marks&copy=1 no longer reaches the reader as ?q=marks©=1. A CommonMark autolink is refused by name instead of being blamed on a tag nobody wrote. --build-stamp is legible on every theme. And the shell completion offers each command only the options that command accepts, on every typed path.