Fix #170: markdown tabs in code section #171

Merged
crueber merged 2 commits from fix/issue-170 into main 2026-09-06 00:59:52 +00:00
Owner

Closes #170.

Tree view renders the current directory's .md/.markdown blobs as client-side tabs below the file list: README (case-insensitive) first and default-selected, rest alphabetical; section hidden when no markdown files. Bodies reuse the blob markdown-lite + sanitizer pipeline with the blob too_large cap, fetched lazily via the existing blob endpoint (per-segment encoded paths keep special-character filenames safe). Keyboard: native buttons with roving tabindex. No backend or SDK change, no new deps.

Tests: node --test web/test/unit/*.test.js 359/359 green (incl. new doctabs.test.js); headless-Chrome CDP drive 12/12 (tab order with case variant, default selection, client-side switch + hash, special-char anchor, ArrowRight, no-md dir hidden, large-md cap, deep link, zero console errors) in dark + light with screenshots. Doc decision appended to docs/go/12_web_ui.md.

Closes #170. Tree view renders the current directory's `.md`/`.markdown` blobs as client-side tabs below the file list: README (case-insensitive) first and default-selected, rest alphabetical; section hidden when no markdown files. Bodies reuse the blob markdown-lite + sanitizer pipeline with the blob `too_large` cap, fetched lazily via the existing blob endpoint (per-segment encoded paths keep special-character filenames safe). Keyboard: native buttons with roving tabindex. No backend or SDK change, no new deps. Tests: `node --test web/test/unit/*.test.js` 359/359 green (incl. new `doctabs.test.js`); headless-Chrome CDP drive 12/12 (tab order with case variant, default selection, client-side switch + hash, special-char anchor, ArrowRight, no-md dir hidden, large-md cap, deep link, zero console errors) in dark + light with screenshots. Doc decision appended to `docs/go/12_web_ui.md`.
Tree view renders the current directory's *.md/*.markdown files as
client-side tabs below the file list (docs/go/12_web_ui.md): README
(case-insensitive) first and default-selected, rest alphabetical;
section hidden when empty. Bodies reuse the blob markdown-lite +
sanitizer pipeline with the blob too_large cap, fetched lazily via the
existing blob endpoint (per-segment encoded paths keep special-character
filenames safe). Ordering/selection/anchor rules in headless-testable
web/src/lib/doctabs.js; no backend or SDK change, no new deps.
Sign in to join this conversation.
No description provided.