Release Notes
Added
rw serve --open (short -o) opens the site in your default browser once the
server is ready. It opens the actual bound port (so it's correct even after a
port fallback) and uses localhost when listening on 0.0.0.0. Off by
default; if the browser can't be launched, rw serve warns and keeps serving.
rw serve now falls back to the next free port when its default (7979) is
busy — it tries 7980, 7981, … and prints the port it settled on — so a
second rw serve just works. A port set explicitly (--port or
[server].port in rw.toml) stays a hard requirement and still fails with
"port N is already in use".
- Diagram code fences accept a
{#id} attribute block to set a stable
data-diagram-id on the rendered <figure class="diagram">
(e.g. ```mermaid {#architecture}). Diagrams without one get an auto
data-diagram-id="diagram-<n>". An explicit id survives diagram reordering;
auto ids do not. format is also set inside the block ({format=png}).
- Diagrams can now be opened in a fullscreen zoom popup. Every rendered diagram
shows an "Expand diagram" button on hover (always visible on touch) that opens
a modal where you can zoom (wheel, pinch, or on-screen controls) and drag to
pan, making large diagrams legible. It opens at natural size, scaled down only
to fit the screen, and keeps its proportions; Escape or the close button
dismisses it. While it's open, editing the diagram's source re-renders it live
on the next reload without losing your zoom or pan; a momentarily-broken edit
keeps the last good render until you fix it.
Changed
- Fenced code blocks now match the page theme instead of always rendering as a
dark box: a faint light-tinted surface in light theme, a subtly darker panel in
dark theme. Inline code and syntax highlighting are unchanged.
- Breaking (pre-1.0): the bare
format=png diagram fence form (outside the
braces) is removed. Set the format inside the attribute block: ```mermaid {format=png}.
- The embedded-preview shell (
rw serve --embedded, a Backstage-like host
wrapper for testing embedded rendering) is now compiled into every build,
instead of needing the embedded-preview Cargo feature. The flag stays hidden
from rw --help.
Fixed
- Inline comments now re-anchor to their passage in more cases after it's edited,
instead of dropping to the page timeline. The fuzzy re-anchor now uses a Myers
bit-vector matcher with no length limit (previously quotes over 32 characters
couldn't be matched at all) and ranks candidates by edit distance and
surrounding context, so edited quotes and moderate word substitutions
re-highlight (with the dashed "re-anchored" underline). Passages that are
genuinely gone or too ambiguous still drop to the timeline.
- An inline comment on a short passage (e.g. a section heading) no longer drops
to the page timeline when the text next to it is edited — for instance
inserting a paragraph between a heading and its list. As long as the passage is
still unique on the page and one side of its context still matches, the comment
stays anchored; previously a short passage needed both sides unchanged.
- Mermaid diagrams no longer render as solid black shapes with unreadable labels
in the fullscreen zoom popup. Mermaid scopes its embedded stylesheet under the
SVG's root id; the popup renames the clone's ids but left the stylesheet
selectors behind, orphaning every rule. Selectors and
aria-labelledby/aria-describedby references are now renamed in lockstep.
PlantUML/C4 diagrams were never affected.
- Inline comments no longer attach to rendered diagrams. A diagram is inlined as
an SVG whose labels are real text, so selecting one used to offer "Add comment"
and create a comment that couldn't be reliably re-found. Selecting text inside
a diagram (or across one) now shows no "Add comment" button, and a prose
comment can no longer jump onto a same-worded diagram label on re-render. On
the CLI, rw comment add --quote for text that appears only inside a diagram
now reports the quote as not found.
- Live-reloading the homepage (editing
docs/index.md or the README.md
homepage) no longer sometimes jumps your scroll position to the top. It
refreshed non-silently, so a reload slower than ~300ms briefly showed the
loading skeleton and collapsed the page height; the homepage now refreshes
silently like every other page.
- Comment keyboard navigation (
n/p/r) now works on non-Latin keyboard
layouts (Cyrillic, Greek, and similar). The shortcuts matched the typed
character, so on a Russian layout the physical keys produced letters that never
matched; they now fall back to the physical key position while still honoring
the labeled key on Dvorak/AZERTY. As a side effect they're now case-insensitive.
- Resolving an inline comment no longer makes the thread's position counter jump
to the end (e.g. "1 / 6" → "6 / 6"). The resolved comment stays in its slot with
its passage highlighted; the counter updates (to "1 / 5") only when you step to
the next comment.
rw serve no longer keeps showing broken diagrams from cache after you fix a
Kroki problem. A change to kroki_url, dpi, or the PlantUML include
directories now invalidates cached pages, and a page whose diagrams failed to
reach Kroki (network error or 5xx) isn't cached at all, so it recovers on the
next request. A genuinely broken diagram (Kroki returns 400) still caches, so it
doesn't re-hit Kroki on every request.
Install rw 0.1.29
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.29/rw-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.29/rw-installer.ps1 | iex"
Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rw
Download rw 0.1.29