Repository navigation
Release 0.13.0: labelled links, Discard changes, your own posts - #49
Merged
Merged
Conversation
One scanner (grammar.rs, the studio's grammar.ts) now reads every link, directive, TK source ref, stub-quote and native-model bracket form. A link's label is its anchor text (escaped; an empty label falls back to the target's text); a directive's label is ignored by resolution and the bake. Literals restored into URLs are encodeURI'd as the studio does. Public API: link_refs, directive_ref, label_text, link_source, link_label, strip_generated_grammar (row 67), and Span::label on the native model. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mmar vectors 31 label_* corpus cases cover every labels.test.ts case plus labels in alt text, link text, URLs, TK output and malformed directives. The harness also runs grammar_input.json through grammar.ts and link-label.ts into parity/_grammar.json. Parity: 246/250 byte-identical, the same 4 known decision #60 divergences; grammar vectors all match. docs/RENDER.md describes the grammar, the API and the new pinned upstream behaviours. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
blyg_core::grammar now re-exports link_refs, directive_ref, label_text, link_source and strip_generated_grammar from blyg-render and adds only source_ids, label_range, replace_links and directive_source on top. The reading stream keeps a link's Span::label. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From patwater/burrow-blyg-windows- ae0bafa. App text added since the
port that said "this Mac", "macOS Keychain" or a ⌘ key now goes through
keymap::hint: lineage, the stub bar, sources, subscriptions, the stream,
the notes drawer, the About server notice ("your other Macs" becomes
"your other PCs"). Also wrapped: the new-note placeholder, the
signed-out toast and the theme-dark note.
The fork's README and WINDOWS.md are not taken: the README already
covers both platforms, and the Windows notes live in site/src/install.md,
which gains the fork's two new facts (macOS fonts named by a theme map
to Windows ones; About opens Explorer).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A published post with unpublished edits can go back to the version it has published (upstream's "discard changes"): ⌥⌘Z, Post › Discard Changes…, a toolbar button, and "Discard changes…" on the current version in ⌘Y. A sheet asks first, then restore(id, item.version). Disabled with a reason for drafts and scratch notes, withdrawn or clean posts, and offline. Every restore now runs through discard::restore_working_copy: core's restore holds the sync lock and drops the waiting outbox ops, and the editor doesn't save while the restore is on its way, so text typed meanwhile can't put the old copy back. A failed restore saves it. Tests: vm rules, headless window tests (typing during a discard, a failed discard), a store test, and real-studio e2e cases (incl. generated text, where dirty stays set). SPEC updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Your published posts are reading rows ("~own", studio 0.45's own-items
marker): in All, Today and the stream, and alone under "Your blyg" in the
Reader's sources pane, with the same reading pane and action chips. They
are never unread, never thumbed, never counted, and no read state or
signal is sent for them; AI reply isn't offered on them. Opening one shows
your current and pinned versions, pins from your public pin files.
On a published post the Posts view shows Reply · new stub, Quote into a
thread, Fork a pin and Link post · new fragment above the editor, also in
the Post menu with keys (⌥⌘R, ⌥⌘Q, ⌥⌘F, ⌥⌘L; in Reading they act on the
open post). They run the Reading view's code on the post's row, so a
self-stub's stub_of and a self-fork's forked_from name your origin
(protocol 0.4 §10.6, §5.6) and a quote's transclusion omits it (§10.3).
Forking your own pins is one switch, own::FORK_OWN. The lineage ring
offers Reply and Fork on your own post too.
Link posts and quotes are written with the label grammar's helpers. An
e2e case checks a self-stub and a self-fork against a local studio.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Burrow's [[ picker writes labelled links ([[id | label]]) that a studio older than 0.47 shows as literal text or a broken link. The sync engine now checks a studio floor once a session (and every minute, or on a manual sync, while it fails): the manifest's generator (blygger-studio/<version>, the one manifest key that moved between 0.46.1 and 0.47.0), else a /api/search probe for the label 0.47 hits carry; when neither can tell, the blyg isn't locked out. Below the floor nothing about a post is sent (outbox, publish, withdraw, pin, restore, upload, fork, responses, highlight), pulls go on, and the app says "Your blyg needs updating" once, in the status bar, on connect, and in About. The "older than 0.40" limits sheet and its About section go: every blyg that could see them now gets this. Docs, CHANGELOG, a real-studio e2e case (0.46.1 and 0.47.0), and BLYG_E2E_SKIP_NOTES for running it alone below the floor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The string literal wrapped onto a new line without its \ continuation, so
the toast's second line carried a run of spaces. The line is now a small
function, still_unpublished ("Still marked unpublished: vN has generated
text. ⌘⏎ publishes it as vN+1"), with a test that it has no double spaces.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The user's review decisions: - O1: your own posts show no thumbs, no unread dot and no AI reply. - O2 (b): no Fork on your own posts in Reading or the Posts view. The ForkPost action, its ⌥⌘F key and menu item are gone. ⌘Y offers "Fork this pin" on a pinned version of yours (forked_from naming your origin, protocol 0.4 §5.6), greyed with "Pin one in ⌘Y to fork it" on an unpinned one. vm::own_actions is the one place; own::FORK_OWN switches it. The lineage ring says your post forks from ⌘Y. - L3: Quote into a thread, the lineage map's Quote and → Notes write ![[id | label]] with directive_source (the opening heading, else the title; vm::quote_label, to unify with the picker's helper at merge). Reply and Link post stay bare. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(A) Each [[ / ![[ / ⌘K row leads with the post's title again, as in 0.12. A link's row adds a muted, italic "links as “…”" line when the label it writes isn't the title, and the excerpt line no longer repeats the label. A quote's row has no such line: its label is a note readers never see. (B) For a post with no heading, a pick writes the title as the label ([[id | Gardens, not streams]]) rather than the studio's quoted excerpt, with the first line and the body run together. The quoted excerpt stays for a title over 80 characters or a post with no text. This differs from the studio's paletteInsert on purpose; docs/SPEC.md rule 3 says why (blyg_core::pick::pick_label). The fake reading data's sample ids were upper case, and some used i, l, o or u, so the 0.47 grammar didn't read them and a demo row showed a raw ![[01K2…]]. They are now lower-case Crockford base32. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"⏎ inserts [[… | label]]" and "⏎ inserts ![[… | note]] on its own line", since a pick has written the long form since studio 0.47. docs/SPEC.md rules 3 and 7 (and the feature list) describe the labelled form: the label is the link's text, a quote's note is only for you, and the reading actions still write the bare forms. The site's Writing page says how to rename a link. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
⌥⌘Z respells to Ctrl+Alt+Z on Windows, and Windows reports AltGr as Ctrl+Alt: on layouts where AltGr+Z types a letter (Polish programmer's ż) typing it in a published post would open the Discard sheet, whose ⏎ throws the edits away. keymap::WINDOWS_KEYLESS drops that one key there; Menu › Post › Discard Changes… and the toolbar button still work, and the button's tooltip shows no key. The keymap tests allow the exception by name (keyless_here), not with a blanket skip, and a new test checks on every platform that the Windows table drops only that key and keeps its menu and button. The generated shortcut table, the site's Keys page, the Windows notes and docs/SPEC.md say so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The status bar's "public vN · unpublished edits" and the Posts row's edit marker get a tooltip naming both ways out: "⌘⏎ publishes them as vN+1 · ⌥⌘Z discards them" (vm::edits_tip, through keymap::hint_owned; on Windows, where Discard has no key, "Ctrl+Enter publishes them as vN+1 · Discard Changes in the Post menu"). The row's marker reads "Unpublished edits: …". The toolbar's Discard button is Lucide's eraser rather than undo-2, whose ↶ read as Undo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Posts row drew unpublished edits with marker.new in the accent: in
Paper the same dot as "unread" on the reading side, in Fortress a * next
to the ☼ of a published post. It now has its own theme slot,
marker.edited, drawn in color-edited (unset: a dot in color-edited), and
Fortress sets it to glyph("Δ"). marker.new keeps unread posts,
subscriptions and mentions, so the reading side doesn't change.
The edited mark ("Unpublished edits: ⌘⏎ publishes them as vN+1 · ⌥⌘Z
discards them"), the published vN pill and ☼ ("Published: vN is public
on your blyg") and the ⌘Y pin mark ("Pinned: this version stays public,
for others to quote or fork") have tooltips. docs/THEMES.md lists the new
slot.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Below blygger-studio 0.47 the floor no longer holds every push. A post waits only when its text has a labelled link or quote, [[id | label]] or ![[id | label]], outside code with a non-empty label (floor:: has_labels, on the studio's grammar). Its outbox ops and its publish wait. Everything else syncs, including other posts, withdraw, pin, restore, image uploads (unattached into a post not yet on the blyg) and forks. The check reads the text as it is on every flush, so removing the labels releases the post. Generated TK output counts like any text. The publish sheet on a held post offers enter to write the links bare and publish (floor::strip_labels). The list pill gets a tooltip on a waiting post. The pickers write the bare form on such a blyg (floor::picker_label). The notice, toast and About copy now say which posts wait. Tests: label detection (code, empty labels, directives), a mock-engine test of which ops wait, a UI test of the sheet, and the e2e floor case rewritten. The full e2e suite passes at studio 0.46.1 and 0.47.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"z −2 ▼" was the selected post's row number written as a Dwarf Fortress depth, with no tooltip; the top post read z −1 and ▼ showed on every post. Fortress now shows your last two weeks of posts as a text-mode strip, a day per character in block characters ▁▂▃▄▅▆▇█ (· for a day with none), in its chrome font and accent, from the same activity data as Harbour's tide sparkline. Its tooltip: "Your posts, last 14 days · today on the right". The ornament is block-sparkline (Kind::BlockSparkline); Kind::ZLevel and StatusData.depth are gone. A user theme that still names z-level loads: the name maps to block-sparkline, with a warning rather than an error. docs/THEMES.md and the theme tests follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Quote into a thread writes `![[id]]` when the blyg is below studio 0.47, as the pickers do, so the post doesn't wait (notes stay labelled: they never reach the blyg). blyg-core's grammar re-exports blyg-render's is_js_ws rather than keeping a copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vm::quote_label now uses blyg_core::pick::pick_label, so Quote into a thread and → Notes label a post exactly as the [[ picker does (heading, else title, else the quoted excerpt when the title is too long). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- What's new 0.13.0: labelled links, Discard changes, your own posts in Reading and Posts, the studio 0.47 requirement. Show me what's new starts at the new discard step. - Tour: discard (the sample published post with an unpublished edit; ⌥⌘Z, or the Post menu / eraser on Windows, opens the confirm sheet) and own-post (the chips on your published post; ⌥⌘R or a chip makes a stub). The quotes step becomes "Links and quotes": it counts a typed [[ and teaches labels; the Reader step names Your blyg. - Tests: the 0.12 -> 0.13 launch, and the 0.13 steps landing on the sheet, the chips, the picker and Your blyg. - Site: labelled links, renaming a link and what the picker writes; Discard changes and the edit marks' tooltips; replying to, quoting, linking and forking your own posts; Your blyg in Reading; keys and FAQ. - CHANGELOG: the 0.13 Added/Changed/Fixed lines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Burrow 0.13.0. The release notes are the
[0.13.0]section of CHANGELOG.md.What's in it
[[id | text]]/![[id | text]]). blyg-render now matches studio 0.47.0: parity is 246/250, and the other 4 are the known decision-#60 cases. The pickers, Quote into a thread, lineage, plain text, spell-check and generated text all handle the label.Checks
cargo fmt,clippy --workspace --all-targets -D warningsandcargo test --workspacepass on macOS.scripts/e2e-local.sh,BLYG_E2E_STOCK=1) against local studio builds: v0.47.0 48/48 core and 2/2 notes; v0.46.1 48/48 core and 2/2 notes.Not in this release: the upstream label-grammar fixes (blygger/blygger-studio#78), which go into a later re-sync, and a retake of
docs/screenshots/themes/fortress.png, which still shows the old z-level.🤖 Generated with Claude Code