Releases: rwdocs/rw
Releases · rwdocs/rw
0.1.28 - 2026-06-24
Release Notes
Added
@rwdocs/coreexposesRwSite.listSections(), which returns every documentation section in one call — flat, each with its canonical ref (kind:namespace/name), scope path, and full nearest-first ancestry (root last) — so a host no longer needs N+1getNavigation()calls to walk nested sections (which deliberately hide sub-sections as childless leaves).@rwdocs/coreexposesRwSite.listPages(), which enumerates every page in a site in one pass — each with its title and its(sectionRef, subpath)key (the same pair comments use as a page'sdocument_id) — so a host can cache human-readable page titles (e.g. for a comment inbox) without an N+1 of per-pagerenderPage()calls. The site's root page and virtual directory pages are included.
Changed
- Opening an inline-comment deep link (
#comment-<id>), or stepping to an inline comment withn/p, now lands the highlighted passage about a third of the way down the viewport instead of dead-center — so the passage sits where the eye rests on arrival, with room above for the comment thread.
Fixed
- Relative
.mdlinks from a leaf page (e.g.[sibling](./other.md)indocs/specs/notif.md) now resolve to the sibling page (/specs/other) instead of a non-existent path nested under the current page (/specs/notif/other). Links now follow standard CommonMark semantics — resolved relative to the source file's directory — for both leaf pages andindex.mddirectory pages. Links from README/index.mdhomepages (including thedocs/source-dir prefix case) are unchanged. - Opening an inline-comment deep link (
#comment-<id>) no longer leaves the comment thread pinned in the wrong vertical position. The thread in the right-margin column (and the narrow-screen comment popover) could land hundreds of pixels above its highlighted passage and stay there when content above the passage reflowed after the thread was positioned — e.g. a web-font swap on first load, or a late-loading image or diagram. Threads now re-align whenever their highlighted passage moves, not only when the article is resized, so they track the highlight through any late layout shift. A normal click was never affected (it happens after the page has settled). - The "Add comment" popover now appears when you select a line's first word by dragging right-to-left and release the mouse to the left of the article — and likewise for any text selection released outside the article body (past its right edge or below it). Previously the popover only showed when the mouse was released inside the article, so a right-to-left first-word selection silently produced nothing.
Install rw 0.1.28
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.28/rw-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.28/rw-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rwDownload rw 0.1.28
| File | Platform | Checksum |
|---|---|---|
| rw-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| rw-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| rw-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rw-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| rw-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| rw-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.1.27 - 2026-06-22
Release Notes
Added
- Inline-comment threads are now reachable on narrow windows and phones. Below the width where the right-margin comment column is hidden, tapping a highlighted passage opens its thread in a popover anchored to the highlight (with replies, resolve, and delete), and selecting text → "Add comment" opens the draft box there too — previously both silently did nothing because the only thread surface was the hidden margin column. Escape or tapping away dismisses it;
n/pnavigation and tapping another highlight move the popover to that comment. - Press
rwhile a comment thread is active (highlighted withn/p) to move keyboard focus straight into that thread's reply box — no mouse needed. Works for both the inline margin thread and page-timeline/orphaned threads, scrolls the reply box into view on long threads, and announces the move to screen readers. The existing reply shortcuts still apply: Cmd/Ctrl+Enter submits and Escape releases the box son/presume.ris ignored while you're already typing, when no thread is active, or on a resolved thread.
Changed
- The
rw commentCLI now stamps comments it creates with the AI identity ({ id: "local:ai", name: "AI" }, a sparkles avatar in the viewer) by default, instead of the human{ id: "local:human", name: "You" }. The CLI's primary user is an LLM agent, so unattributed agent comments are now visually distinct from a human reviewer's own comments in the browser. SetRW_COMMENT_AUTHOR_ID/RW_COMMENT_AUTHOR_NAME(or--author-id/--author-name) to override. Browser-authored comments viarw serveare unchanged (stilllocal:human). - The "Add comment" button that appears when you select text in a doc is now icon-only (a speech-bubble icon) instead of icon + "Add comment" text, for a more compact popover. The button keeps its "Add comment" accessible name, so screen readers and keyboard users are unaffected.
Fixed
- Comment highlighting no longer re-walks and re-wraps the entire article on every comment action (resolve, reply, reopen) or background live-refresh — only the changed highlight is updated. On long pages with many comments this removes a visible hitch, and a background refresh no longer wipes an in-progress text selection unless the change overlaps the selected text.
- Replying to a comment thread (or posting a new comment) no longer traps keyboard focus in the composer. After you submit, focus moves to the thread you just acted on; pressing Escape releases the composer field. Either way,
n/pcomment navigation works again without reaching for the mouse. - Comment deep-linking now works when the viewer is embedded (e.g. in Backstage), matching standalone mode: every comment thread shows a "Copy link" button, stepping through comments with
n/p(and opening a thread) writes a shareable#comment-<id>to the host page's URL, and Back/Forward or a manual hash edit re-focuses the linked comment. Previously these were silently disabled in embedded mode. Path-based host routing is unchanged — only the URL hash is touched. - A transient failure during a live-reload background refresh no longer blanks the page. A silent refresh that fails (server restart mid-edit, a flaky proxy, a momentarily-unreachable host) now keeps the last-rendered page on screen and recovers on the next successful reload, instead of replacing it with a full-height error.
- A transient failure during a live comment refresh no longer wipes the rendered comments or pops an error toast the user never triggered. Silent comment refreshes now keep the current comments quietly and recover on the next successful reload.
- A documentation page or the navigation sidebar no longer briefly shows a transient error (or blanks) when you navigate quickly between pages and a now-superseded request fails with a non-abort error. The superseded request's failure is dropped instead of overwriting the page you actually landed on.
- The mobile navigation drawer is now a proper modal dialog for assistive tech and keyboard users: it exposes
role="dialog"/aria-modal, moves focus into the drawer on open and restores it to the menu button on close, traps Tab within the drawer, and marks the page behind itinertso screen readers no longer read the obscured content. - Stepping through comments with
n/pis now re-announced to screen readers even when the move lands on the same position — e.g. wrapping around on a page with a single open comment, where the position text is identical each press. Previously the polite live region's text was unchanged, so NVDA/JAWS/VoiceOver stayed silent despite the move. - A reply draft typed into one comment thread no longer appears in every other thread. Drafts are now scoped to the thread they were written in: switching threads (with
n/por the prev/next buttons) shows each thread's own draft, an untouched thread stays empty, and returning to a thread restores the draft you left there. Drafts clear on submit and when you navigate to another page. - Comments from the previous page no longer briefly reappear after navigating to a page that shows none (e.g. Home): a now-superseded comment fetch that resolves after you've navigated away is dropped instead of repopulating the just-cleared list. Resolving or reopening a comment while a navigation is in flight likewise no longer writes the change into the next page's comment view.
- Accessibility: the active navigation link and the active "On this page" outline entry now expose
aria-current, so screen readers announce which page and heading you're on (previously conveyed by color alone); copying a comment's share link is announced via a polite live region rather than only swapping the button icon; and the desktop navigation landmark now carries an accessible name ("Documentation"), distinct from the breadcrumb, table-of-contents, and mobile-navigation landmarks.
Install rw 0.1.27
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.27/rw-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.27/rw-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rwDownload rw 0.1.27
| File | Platform | Checksum |
|---|---|---|
| rw-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| rw-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| rw-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rw-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| rw-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| rw-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
v0.1.26
Release Notes
Added
- Embedding hosts can supply their own comment client via
mountRw({ comments })— an injectedCommentApiClient(list/create/update/delete, plus optionalsubscribefor live refresh). When present, comments are enabled implicitly (no/configround-trip) and fully decoupled from the docsapiBaseUrl, so a host can serve comments at any URL shape and transport. When omitted, the viewer builds its existing HTTP client against{apiBaseUrl}/commentsand readscommentsEnabledfrom/config— unchanged.CommentApiClient,Comment,CreateCommentRequest, andUpdateCommentRequestare now exported from@rwdocs/viewer. - Embedding hosts can route transient notifications (e.g. a failed comment save) through their own toast/alert system by passing
mountRw({ onNotify }). Standalonerw servefalls back to a built-in toaster. - Comments carry a
canResolvecapability flag (alongsidecanDelete/canRestore) so a host's permission model decides whether the Resolve/Reopen affordance appears.rw servesets it true for top-level comments and false for replies, matching current behavior. PageMetanow exposes a section-relativesubpathfield (HTTP page API,@rwdocs/core, and@rwdocs/viewertypes) alongsidesectionRef. Embedding hosts that store their own comments can key them on the stable(sectionRef, subpath)pair instead of the URLpath. See Embedding.
Changed
- Breaking:
rw serveand therw commentCLI now both key inline and page comments on the stable(sectionRef, subpath)pair instead of the page's URL path, so CLI-created and browser-created comments land on the same key. Relocating or remounting a whole section (itssectionRefunchanged) no longer orphans the comments on its pages; a section rename or moving a single page within a section still changes the key for the affected comments. The--documentflag onrw comment add/rw comment liststill accepts the URL path and resolves it to the composite key internally. It now also accepts the markdown source file path, with or without the docs-root prefix (e.g.docs/guide.mdorguide.md), mapping it to the page's URL path the same way the server does — so a script or agent can pass the file it just edited directly. Comments created in 0.1.25 (keyed by the old path) are not migrated: they remain in the database but are no longer queried, so they effectively disappear from the UI and CLI — negligible impact given 0.1.25's age.
Fixed
- When a site's root page (
docs/index.mdor theREADME.mdhomepage) declares a sectionkindin its metadata, the navigation API now reports that kind for the root scope (and for the back-navigation parent of top-level sections) instead of the genericsectionkind, so a host mapping sections to catalog entities by kind now resolves the root consistently. Previously the page API'ssection_refand the navigation API disagreed about the root's identity. - Wide tables no longer collapse their short-content columns to a sliver (a single word breaking one or two characters per line). Columns now take their natural widths, and a table that is genuinely wider than the page scrolls horizontally inside its own box — keyboard-focusable and announced to screen readers — instead of being clipped.
- A comment whose save failed (e.g.
rw servewas down or unreachable) no longer loses the text you typed. The composer keeps your draft, its button changes to Retry, and a toast explains the save failed and that your draft is kept — instead of silently clearing the box. n/pcomment navigation no longer gets stuck on orphaned comments (inline comments whose anchored text was later edited away); they now highlight when selected, and navigation continues to the next comment.n/pcomment navigation no longer centers page-comment threads with many replies in a way that pushed the first comment off the top of the screen. Long page-comment threads now scroll so their first comment is visible, matching how the shareable#comment-<id>deep links already behaved.- Markdown blockquotes are restyled for readability — upright (no italics), normal-weight body text with no decorative quotation marks, set off by the left border alone. Long multi-line quotes are much easier to read.
Install rw 0.1.26
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.26/rw-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.26/rw-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rwDownload rw 0.1.26
| File | Platform | Checksum |
|---|---|---|
| rw-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| rw-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| rw-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rw-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| rw-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| rw-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.1.25 - 2026-06-19
Release Notes
Added
- Inline & page comments — review documentation directly in the browser: select text to anchor a comment to a passage, or comment on the page as a whole. Threads support replies, resolve/reopen, and a "Show resolved" disclosure with a count badge. Comments persist in
.rw/comments/sqlite.db(versioned schema with idempotent forward migrations) and survive re-renders via multi-selector anchoring (TextQuoteSelector + TextPositionSelector); when the original passage changes, the viewer falls back to fuzzy re-anchoring (diff-match-patch) and marks the comment "re-anchored" with a dashed underline. Anchors that would land on short or ambiguous text drop to the page timeline with their original quote instead of jumping to an unrelated occurrence, and highlights stack progressively darker where comments overlap.- Authorship — every comment carries an author (
{ id, name, avatarUrl? });local:humanrenders a person avatar,local:aia sparkles avatar (recommended for LLM agents), others fall back to name initials.rw servestamps browser-created comments as "You". - Markdown bodies — comment bodies render a safe, restricted CommonMark+GFM subset (paragraphs, bold/italic/
strikethrough, lists, blockquotes, inline and fenced code,http/https/mailtolinks). Raw HTML, images, tables, headings, and unsafe link schemes are neutralized; the rendered HTML ships in an additivebodyHtmlfield alongside the rawbody. - Deep links — every thread has a shareable
#comment-<id>URL with a "Copy link" button; opening one scrolls to and reveals the thread (auto-expanding the resolved disclosure when needed). Inbound deep-linking works when embedded; the copy button is hidden there since the host owns the URL. - Keyboard navigation — press
n/pto step between comments in document order, wrapping at the ends; each jump scrolls into view, opens inline threads in the margin, and is announced to screen readers. Keys are ignored while typing, and modifier combos pass through to the browser. - Live refresh — comments added, edited, or resolved by the
rw commentCLI or another browser tab appear without a manual reload, via a best-effort token-authenticated notify (using.rw/server.json) re-broadcast over the existing live-reload WebSocket. In-progress drafts are preserved, and the CLI stays decoupled — if no server is running, the comment is still written. - Delete replies — replies can be soft-deleted (kept visible, muted and struck-through, with a Restore button so a misclick is reversible in-session); top-level comments use Resolve instead. Deletes are non-destructive (
deletedAton the row) and hidden on the next refetch. - REST API & CLI —
/_api/comments(create, list, update, andDELETE /_api/comments/{id}with adeletedAtfield pluscanDelete/canRestoreflags) and anrw commentCLI (list, show, add, reply, resolve) for scripting and LLM agents. The CLI reads and writes the SQLite store directly whether or notrw serveis running, takes identity fromRW_COMMENT_AUTHOR_ID/RW_COMMENT_AUTHOR_NAMEor--author-*flags, and anchors inline comments with--quote(rejecting ambiguous or missing matches). @rwdocs/coreexportsrenderCommentBody(markdown)so hosts that store their own comments (e.g. a Backstage backend plugin) can render bodies to the same safebodyHtml. Returns aPromise<string>.
- Authorship — every comment carries an author (
- Status badges —
:status[Label]{color=NAME}renders an inline colored pill label (grey,red,yellow,green,blue,purple). Publishing to Confluence emits the nativestatusmacro, so badges stay editable and on-style. Color is case-insensitive and optional; unknown or omitted colors fall back togrey. - Custom section namespaces — sections can declare a
namespaceinmeta.yamlor frontmatter (e.g.namespace: payments), producing section refs of the formkind:namespace/namethat map to Backstage catalog entities outside thedefaultnamespace. The field inherits down the directory tree and a subtree can override it; invalid values fail the site load with an error naming the offending file. Wikilinks that omit the namespace resolve within the current page's namespace. - Named metadata sidecar files — place
<name>.meta.yaml(e.g.payments.meta.yaml) directly in a directory to declare a page or content-less catalog entity at that path, instead of creating a<name>/meta.yamlsubfolder. Works as a sidecar for an existing<name>.mdor stand-alone to register Backstage components/systems that exist only to build relations. The suffix follows the configured metadata filename. Named sidecars are leaf-only (novarscascade), and a directorymeta.yamlwins if both resolve to the same page. rw confluence render <markdown_file> --out <dir|->— renders markdown to a Confluence-publishable bundle (page.xhtmlplus one PNG per diagram). Stdin optionally accepts the current page's storage XHTML body to preserve inline-comment markers; without it, the command renders as a fresh page.--out -writes the body XHTML to stdout (erroring with exit 3 only if the render produced PNG attachments);--strictexits non-zero on any warning or unmatched comment.rw backstage publishnow surfaces diagram-processing warnings — broken or cyclic PlantUML!includepaths — in yellow on stderr instead of silently discarding them. Pass--strictto fail the publish when any warning was emitted; bundles still upload either way, so warnings can be fixed in a follow-up commit and republished.RW_DIAGRAMS_KROKI_URLenvironment variable — suppliesdiagrams.kroki_urlfor projects without anrw.toml(or one that omits the field). Precedence is CLI flag >rw.toml> env var, so explicit project config still wins. Lets teams rollrwout across many repos that share a single Kroki server by exporting the variable once.rw servewrites a.rw/server.jsonruntime-info file on startup (host, port, pid, version, start time, and a reserved secret token) and removes it on graceful shutdown — including on SIGTERM (docker stop, systemd), not just Ctrl-C. The file is written atomically with0600permissions in the gitignored.rw/directory, so the token never lands in version control. It lets other tooling discover a running server for the project.
Removed
- Breaking:
rw confluence updateandrw confluence generate-tokensare removed.rwno longer talks to the Confluence REST API; the[confluence]section inrw.tomlis no longer recognized (stale sections are silently ignored, not rejected). Userw confluence render <md> --out <dir>to produce a publish-ready bundle (XHTML body + diagram PNGs), then publish it with a tool of your choice. Comment preservation continues to work: pipe the current page's storage XHTML body into stdin andrwcarries<ac:inline-comment-marker>tags through to the new XHTML.
Changed
- Breaking: the HTTP API served by
rw servemoved from/api/*to the reserved/_api/*prefix (e.g./_api/navigation,/_api/pages/...,/_api/comments), freeing the/api/*URL space for documentation pages. The bundled viewer moves in lockstep; only external callers hittingrw serve's HTTP endpoints directly need to update. - Breaking: heading anchor IDs for headings containing
[[wikilink]]syntax now include the wikilink's resolved display text —## See [[overview]](resolver returning "Overview") now produces<h2 id="see-overview">instead of<h2 id="see">. The TOC entry title changes correspondingly. In-page anchor links targeting the old slugs need updating. - Block directives (
:::tab/:::notecontainers and::leafdirectives) are now parsed with awareness of markdown structure: they must be blank-line separated (each delimiter on its own paragraph), delimiters inside code or fenced blocks stay literal so directive syntax can be shown as an example, and directives now work inside blockquotes and loose list items. Standard blank-line-separated:::tabblocks are unaffected; any that relied on the old no-blank-line form now render as literal text until separated. - Single-page sites (only
index.md, or aREADME.mdhomepage) no longer show an empty navigation sidebar — the desktop sidebar, mobile hamburger, and mobile drawer are all hidden, leaving a clean centered article. Sites with a "back to home" link keep their sidebar. - Page modification times (
lastModified) now reflect the git commit time instead of the filesystem mtime, so timestamps stay stable acrossgit checkout,pull, and branch switching. S3-published bundles now carry these times in the manifest too (previously always epoch zero for Backstage-served pages). - Page outline (TOC) sidebar widened from 240px to 320px so opening a comment no longer narrows the article; it now appears at viewport widths ≥ 1304px (was ≥ 1224px), with the floating "On this page" popover below that.
@rwdocs/viewernow requires Node.js>=22.12.0(was>=20) — Vite 8 needs Node 20.19+/22.12+, and Node 20 reached end-of-life on 2026-04-30;22.12.0is the first release whererequire(esm)works without a flag.- Minimum supported Rust version raised to 1.96 — building
rwfrom source now needs a 1.96+ toolchain.
Fixed
rw serveno longer fails to start when a project has aREADME.mdbut nodocs/directory; the README is served as the homepage and live reload picks up adocs/directory created afterwards without a restart.- Requesting a page that exists in the navigation tree but whose markdown source is missing from storage now returns
404 Not Foundinstead of500 Internal Server Error. - Documentation pages whose URL begins with
/api/(e.g.docs/api/usage.md) no longer return 404 when opened directly or refreshed. - Pages that reference other pages — via
[[wikilinks]], cross-section links, or C4 diagram entity includes — no longer kee...
0.1.24 - 2026-04-10
Release Notes
Fixed
- Sites using
README.mdas homepage no longer return 500 errors when published to Backstage via S3 —FsStoragenow auto-detectsREADME.mdin the parent ofsource_dir, so all code paths (serve, publish, napi) get it automatically - Diagrams with decimal SVG dimensions from Kroki (e.g., Mermaid sequence diagrams) now scale correctly instead of rendering at full size and getting squished by the container
Install rw 0.1.24
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.24/rw-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.24/rw-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rwDownload rw 0.1.24
| File | Platform | Checksum |
|---|---|---|
| rw-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| rw-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| rw-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rw-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| rw-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| rw-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.1.23 - 2026-04-09
Release Notes
Added
pagesfield in directory-levelmeta.yamlorindex.mdfrontmatter to control navigation sidebar order — listed pages appear first in declared order, unlisted pages follow alphabetically
Changed
- Breaking:
getNavigation()onRwSiteis now async (returns a Promise) — previously it blocked the Node.js event loop during S3 operations on cold cache or reload - S3-backed
RwSiteinstances now share a single tokio runtime instead of each creating its own thread pool, reducing resource usage when serving multiple documentation entities
Fixed
- Relative links from README.md homepage (e.g.,
[Guide](docs/guide.md)) now resolve correctly to/guideinstead of the non-existent/docs/guide
Install rw 0.1.23
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.23/rw-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.23/rw-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rwDownload rw 0.1.23
| File | Platform | Checksum |
|---|---|---|
| rw-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| rw-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| rw-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rw-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| rw-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| rw-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.1.22 - 2026-04-03
Release Notes
Added
renderSearchDocument()method onRwSite— renders markdown pages to plain text for search indexing, stripping HTML formatting and replacing diagrams with meaningful text descriptions
Install rw 0.1.22
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.22/rw-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.22/rw-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rwDownload rw 0.1.22
| File | Platform | Checksum |
|---|---|---|
| rw-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| rw-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| rw-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rw-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| rw-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| rw-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
v0.1.21
Release Notes
Added
- Wikilink syntax for section-stable internal links —
[[domain:billing::overview]]resolves via section registry instead of filesystem paths, surviving directory reorganization. Supports explicit display text ([[target|text]]), current-section links ([[::page]]), and fragment links. Unresolved wikilinks render with a visual broken-link indicator. - Frontmatter support — page metadata can now be defined in YAML frontmatter (
---delimited) at the top of markdown files, in addition to meta.yaml sidecar files. Frontmatter values override meta.yaml when both exist. reload(force?)method onRwSite— when called withoutforce(orforce=false), checks whether S3 content has changed before reloading, using S3 ETags to skip unnecessary reloads.reload(true)forces an unconditional reload like before.
Fixed
- Directory renames under
docs/are now detected by live reload — previously, renaming a directory required manually deleting.rw/cacheand restarting the server - Page metadata no longer extracts
#comments inside fenced code blocks as H1 titles - Page metadata now correctly extracts plain text from H1 titles with inline formatting (bold, italic, code, links)
- Editing a page title inside a section no longer resets the sidebar to root navigation
- Navigation sidebar no longer flashes "Loading..." text during live reload when editing markdown files
Install rw 0.1.21
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.21/rw-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.21/rw-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rwDownload rw 0.1.21
| File | Platform | Checksum |
|---|---|---|
| rw-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| rw-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| rw-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rw-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| rw-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| rw-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.1.20 - 2026-03-24
Release Notes
Fixed
- S3 storage errors now include the full error chain (e.g., TLS, DNS, or connection details) instead of just "dispatch failure"
Install rw 0.1.20
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.20/rw-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.20/rw-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rwDownload rw 0.1.20
| File | Platform | Checksum |
|---|---|---|
| rw-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| rw-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| rw-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rw-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| rw-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| rw-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.1.19 - 2026-03-24
Release Notes
Fixed
- S3 storage errors now propagate instead of silently returning empty site — misconfigured or unreachable S3 returns proper error messages to the Backstage plugin and 503 responses from the HTTP server
Install rw 0.1.19
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rwdocs/rw/releases/download/v0.1.19/rw-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rwdocs/rw/releases/download/v0.1.19/rw-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install rwdocs/tap/rwDownload rw 0.1.19
| File | Platform | Checksum |
|---|---|---|
| rw-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| rw-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| rw-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| rw-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| rw-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| rw-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |