Skip to content

Releases: rwdocs/rw

0.1.28 - 2026-06-24

24 Jun 08:02
bd4d3af

Choose a tag to compare

Release Notes

Added

  • @rwdocs/core exposes RwSite.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+1 getNavigation() calls to walk nested sections (which deliberately hide sub-sections as childless leaves).
  • @rwdocs/core exposes RwSite.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's document_id) — so a host can cache human-readable page titles (e.g. for a comment inbox) without an N+1 of per-page renderPage() 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 with n/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 .md links from a leaf page (e.g. [sibling](./other.md) in docs/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 and index.md directory pages. Links from README/index.md homepages (including the docs/ 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 | sh

Install 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/rw

Download 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

22 Jun 12:05
c4103bc

Choose a tag to compare

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/p navigation and tapping another highlight move the popover to that comment.
  • Press r while a comment thread is active (highlighted with n/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 so n/p resume. r is ignored while you're already typing, when no thread is active, or on a resolved thread.

Changed

  • The rw comment CLI 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. Set RW_COMMENT_AUTHOR_ID/RW_COMMENT_AUTHOR_NAME (or --author-id/--author-name) to override. Browser-authored comments via rw serve are unchanged (still local: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/p comment 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 it inert so screen readers no longer read the obscured content.
  • Stepping through comments with n/p is 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/p or 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 | sh

Install 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/rw

Download 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

21 Jun 06:45
263b8dc

Choose a tag to compare

Release Notes

Added

  • Embedding hosts can supply their own comment client via mountRw({ comments }) — an injected CommentApiClient (list/create/update/delete, plus optional subscribe for live refresh). When present, comments are enabled implicitly (no /config round-trip) and fully decoupled from the docs apiBaseUrl, so a host can serve comments at any URL shape and transport. When omitted, the viewer builds its existing HTTP client against {apiBaseUrl}/comments and reads commentsEnabled from /config — unchanged. CommentApiClient, Comment, CreateCommentRequest, and UpdateCommentRequest are 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 }). Standalone rw serve falls back to a built-in toaster.
  • Comments carry a canResolve capability flag (alongside canDelete/canRestore) so a host's permission model decides whether the Resolve/Reopen affordance appears. rw serve sets it true for top-level comments and false for replies, matching current behavior.
  • PageMeta now exposes a section-relative subpath field (HTTP page API, @rwdocs/core, and @rwdocs/viewer types) alongside sectionRef. Embedding hosts that store their own comments can key them on the stable (sectionRef, subpath) pair instead of the URL path. See Embedding.

Changed

  • Breaking: rw serve and the rw comment CLI 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 (its sectionRef unchanged) 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 --document flag on rw comment add / rw comment list still 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.md or guide.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.md or the README.md homepage) declares a section kind in 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 generic section kind, so a host mapping sections to catalog entities by kind now resolves the root consistently. Previously the page API's section_ref and 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 serve was 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/p comment 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/p comment 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 | sh

Install 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/rw

Download 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

19 Jun 06:20
eae235a

Choose a tag to compare

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:human renders a person avatar, local:ai a sparkles avatar (recommended for LLM agents), others fall back to name initials. rw serve stamps 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/mailto links). Raw HTML, images, tables, headings, and unsafe link schemes are neutralized; the rendered HTML ships in an additive bodyHtml field alongside the raw body.
    • 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/p to 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 comment CLI 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 (deletedAt on the row) and hidden on the next refetch.
    • REST API & CLI/_api/comments (create, list, update, and DELETE /_api/comments/{id} with a deletedAt field plus canDelete/canRestore flags) and an rw comment CLI (list, show, add, reply, resolve) for scripting and LLM agents. The CLI reads and writes the SQLite store directly whether or not rw serve is running, takes identity from RW_COMMENT_AUTHOR_ID/RW_COMMENT_AUTHOR_NAME or --author-* flags, and anchors inline comments with --quote (rejecting ambiguous or missing matches).
    • @rwdocs/core exports renderCommentBody(markdown) so hosts that store their own comments (e.g. a Backstage backend plugin) can render bodies to the same safe bodyHtml. Returns a Promise<string>.
  • Status badges — :status[Label]{color=NAME} renders an inline colored pill label (grey, red, yellow, green, blue, purple). Publishing to Confluence emits the native status macro, so badges stay editable and on-style. Color is case-insensitive and optional; unknown or omitted colors fall back to grey.
  • Custom section namespaces — sections can declare a namespace in meta.yaml or frontmatter (e.g. namespace: payments), producing section refs of the form kind:namespace/name that map to Backstage catalog entities outside the default namespace. 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.yaml subfolder. Works as a sidecar for an existing <name>.md or 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 (no vars cascade), and a directory meta.yaml wins if both resolve to the same page.
  • rw confluence render <markdown_file> --out <dir|-> — renders markdown to a Confluence-publishable bundle (page.xhtml plus 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); --strict exits non-zero on any warning or unmatched comment.
  • rw backstage publish now surfaces diagram-processing warnings — broken or cyclic PlantUML !include paths — in yellow on stderr instead of silently discarding them. Pass --strict to 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_URL environment variable — supplies diagrams.kroki_url for projects without an rw.toml (or one that omits the field). Precedence is CLI flag > rw.toml > env var, so explicit project config still wins. Lets teams roll rw out across many repos that share a single Kroki server by exporting the variable once.
  • rw serve writes a .rw/server.json runtime-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 with 0600 permissions 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 update and rw confluence generate-tokens are removed. rw no longer talks to the Confluence REST API; the [confluence] section in rw.toml is no longer recognized (stale sections are silently ignored, not rejected). Use rw 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 and rw carries <ac:inline-comment-marker> tags through to the new XHTML.

Changed

  • Breaking: the HTTP API served by rw serve moved 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 hitting rw 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/:::note containers and ::leaf directives) 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 :::tab blocks 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 a README.md homepage) 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 across git 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/viewer now 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.0 is the first release where require(esm) works without a flag.
  • Minimum supported Rust version raised to 1.96 — building rw from source now needs a 1.96+ toolchain.

Fixed

  • rw serve no longer fails to start when a project has a README.md but no docs/ directory; the README is served as the homepage and live reload picks up a docs/ 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 Found instead of 500 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...
Read more

0.1.24 - 2026-04-10

10 Apr 12:57
788dc0e

Choose a tag to compare

Release Notes

Fixed

  • Sites using README.md as homepage no longer return 500 errors when published to Backstage via S3 — FsStorage now auto-detects README.md in the parent of source_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 | sh

Install 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/rw

Download 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

09 Apr 13:22
7189162

Choose a tag to compare

Release Notes

Added

  • pages field in directory-level meta.yaml or index.md frontmatter to control navigation sidebar order — listed pages appear first in declared order, unlisted pages follow alphabetically

Changed

  • Breaking: getNavigation() on RwSite is now async (returns a Promise) — previously it blocked the Node.js event loop during S3 operations on cold cache or reload
  • S3-backed RwSite instances 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 /guide instead 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 | sh

Install 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/rw

Download 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

03 Apr 12:41
0048922

Choose a tag to compare

Release Notes

Added

  • renderSearchDocument() method on RwSite — 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 | sh

Install 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/rw

Download 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

02 Apr 12:08
4afdbb9

Choose a tag to compare

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 on RwSite — when called without force (or force=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/cache and 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 | sh

Install 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/rw

Download 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

24 Mar 13:11
502b0e7

Choose a tag to compare

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 | sh

Install 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/rw

Download 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

24 Mar 11:05
b41b267

Choose a tag to compare

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 | sh

Install 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/rw

Download 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