Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 07:56
· 2 commits to main since this release

Highlights

  • Page annotations. Select text on a rendered page, attach a note, and copy every note of the page as Markdown
    that names the source file (relative to the repository root) and quotes each passage, ready to paste into an LLM
    harness. Notes stay in the browser's localStorage. On by default, including in gomddoc build output: a public
    static site gains the annotation UI and its pages name their repo-relative source path. Turn it off with
    theme.features.annotations: false (GOMDDOC_SITE_THEME_FEATURES_ANNOTATIONS=false) or per page with
    features: {annotations: false}. See the guide's "Annotating a Page".
  • Localized client strings in every theme. Code copy buttons, search, color chips and annotations read their UI
    text from <script type="application/json" data-gmd-i18n="…"> blocks emitted by scripts-shared. The seven
    downloadable themes now show these strings in the page's language (they were always English). Theme scripts can
    add their own namespace (guide: Internationalization).
  • Built with Go 1.26.10 (GO-2026-6809, crypto/x509).

Upgrade notes

  • Renamed locale keys: copy → code_copy_label, copied → code_copy_done, aria_copy_code →
    code_copy_aria. Rename them in .gomddoc/locales/*.yml; the old names are ignored.
  • New locale keys: search_label (the search dialog; aria_search now only labels the header button),
    search_query, search_results, color_chip_label, color_chip_done, plus the annotation* keys. A fully
    translated site shows the default language for these until it adds them.
  • Plural variants: _zero, _one, _two, _few and _many are reserved suffixes, chosen by each language's
    plural rules. Variant strings take %d. A site key ending in one of these suffixes is now treated as a plural
    variant by .T.
  • The data-* attributes on <html> are no longer read. Themes that inline the shared modules themselves
    (instead of calling scripts-shared) must load code-copy.mjs, search.mjs, gmd-color-chip.mjs and
    gmd-annotations.mjs with <script type="module"> and emit their blocks with i18nStrings.
  • Static hosts must serve .mjs as JavaScript (_assets/gmd-i18n.mjs); the modules import it.
  • Per-page features: frontmatter overrides now work (they were ignored). Tag pages honour the site's feature
    toggles. Generated directory listings no longer carry a JSON-LD dateModified.

Changelog

Features

  • feat(annotations): annotation UI in the default theme
  • feat(annotations): core anchoring, export and storage module with Vitest gate
  • feat(i18n): code copy, search and color chips read namespaced blocks
  • feat(i18n): gmd-i18n.mjs helper for namespaced client strings
  • feat(template): i18nStrings namespaces and CLDR plural variants
  • feat(template): repo-relative SourcePath in the page context

Bug fixes

  • fix(annotations): bold markers outside quote whitespace, escape headings
  • fix(annotations): copy fallback, admonition titles, shortcut layouts, cross-tab sync
  • fix(annotations): follow the page colour scheme
  • fix(annotations): persistent live region, feature-detected define, anchoring fallback
  • fix(annotations): plural count label through tn
  • fix(annotations): plural labels, focus fallbacks, modal popover
  • fix(config): read per-page feature overrides from YAML frontmatter
  • fix(i18n): own string values only, plural rules per document
  • fix(make): test-ui hints at a missing Chrome; spec amendments
  • fix(server): git-URL subdir source prefix, no Stat for file pages
  • fix(template): _one labels only from the page language

Documentation

  • docs(agents): point plans at docs/plans, merge the network note, state the vulncheck scope
  • docs(annotations): README, guide index, components table, funcMap and static builds
  • docs(i18n): example namespaces, D51 format, fallback wording
  • docs(i18n): namespaced client strings in the guide, architecture and decisions
  • docs(i18n): upgrade notes, module inlining and static hosting
  • docs(plans): annotations execution notes
  • docs(plans): client-side strings execution notes
  • docs(plans): client-side strings plan
  • docs(roadmap): annotations shipped, follow-ups parked
  • docs(specs): annotations UI on custom elements, Popover API and dialog
  • docs(specs): annotations may span skipped elements
  • docs(specs): client-side page annotations design and plan
  • docs(specs): move specs and plans out of docs/superpowers, date prefix YYYYMMDD.
  • docs(specs): namespaced JSON data blocks for client-side strings

Other

  • build(go): toolchain go1.26.10 for GO-2026-6809 (crypto/x509)
  • build(make): binary name from go.mod, not the directory
  • build(make): canonical common.go.mk with TEST_FLAGS, GOLANGCI_ARGS and GORACE
  • build(make): sync common.go.mk (CI_EXTRA hook)
  • build(make): sync common.go.mk (deferred CI_EXTRA)
  • ci(workflow): key the UI cache on make ui-inputs-hash
  • refactor(annotations): custom elements, Popover API and Invoker Commands
  • refactor(annotations): labels through the shared i18n helper
  • refactor(annotations): lighter selection handling and one action helper
  • refactor(annotations): sourceless pages and bundle-derived label keys
  • refactor(i18n): shared test block helper, sturdier contract test, no CSS.escape
  • refactor(pipeline): normalise frontmatter once, clean git subdirs, one source prefix
  • refactor(server): providers report the served file
  • test(annotations): Playwright end-to-end and axe checks, UI suite in CI
  • test(annotations): per-page override through the real renderer, e2e tidy-ups