Add initial user-facing docs#600
Conversation
mariusvniekerk
commented
Jun 26, 2026
- Add a Zensical-backed public docs tree for quickstart, configuration, commands, troubleshooting, and workflows.
- Add issue triager and code reviewer walkthroughs focused on the UI workflows maintainers use day to day.
- Include e2e-backed light and dark workflow screenshots generated from the sample backend.
55a68f1 to
d7e89f4
Compare
roborev: Combined Review (
|
middleman had implementation notes but no concise user-facing documentation for setup, operation, and maintainer workflows. Add the initial public docs tree with Zensical configuration, quickstart/configuration/commands/troubleshooting pages, and role-oriented issue triage and code review walkthroughs. The workflow captures are generated from the real seeded e2e backend in light and dark mode as actual standalone SVG DOM/CSS output. The generator preserves computed theme tokens for dark SVGs and waits for sync UI to idle before capture, so the docs do not show transient spinners or carry embedded raster screenshots. Validation: node frontend/node_modules/.bin/playwright test --config docs/screenshots/playwright.config.ts --project=chromium; standalone Chromium render check for both dark SVGs; rg -n '<image|data:image|base64|\.png|\.jpe?g|>\s*Syncing|>\s*syncing(?:…|\s*\()|aria-label="Syncing"|title="Syncing"' docs/assets/generated docs/screenshots returned no matches; go test ./internal/testutil -shuffle=on; git diff --cached --check; scripts/context-sync --check. Generated with Codex Co-authored-by: Codex <codex@openai.com>
d7e89f4 to
e476b5f
Compare
roborev: Combined Review (
|
The docs mode examples used flag placement that Go's flag parser treats as positional arguments, so copying them could fail instead of registering a folder. The sample config also suggested a tilde data_dir value that the loader does not expand, risking state in an unexpected relative path. Validation: rg -n "docs add-folder [^\n]*~[^\n]*--|data_dir = \"~" docs; go test ./cmd/middleman -run 'TestDocs|TestRunDocs' -shuffle=on; git diff --check\n\nGenerated with Codex\nCo-authored-by: Codex <codex@openai.com>
roborev: Combined Review (
|
The public setup docs still cloned the old wesm namespace even though this project now lives under kenn-io. Users copying those commands could land on the wrong repository or a stale namespace before they ever build middleman. Validation: rg -n "git clone https://github.com/wesm/middleman.git" README.md docs/*.md docs/zensical.toml; rg -n "git clone https://github.com/kenn-io/middleman.git" README.md docs/*.md; git diff --check Generated with Codex Co-authored-by: Codex <codex@openai.com>
roborev: Combined Review (
|
The docs screenshot task imported and executed Playwright through frontend/node_modules, which is not a stable path in a clean Bun workspace. Make the regeneration path resolve from the root package that declares Playwright, and add a regression guard so the command does not drift back to nested node_modules assumptions. Validation: node --test scripts/docs-screenshots-command.test.mjs failed before the fix with missing docs:screenshots script; make script-tests; make playwright-version-check; node node_modules/vite-plus/bin/vp run docs:screenshots --list; node node_modules/vite-plus/bin/vp run docs:screenshots; git diff --check Generated with Codex Co-authored-by: Codex <codex@openai.com>
roborev: Combined Review (
|
The docs screenshot workflow added a root Playwright dependency, but the branch was based before main moved the frontend workspaces and CI Playwright image to 1.61.0. GitHub Actions runs the PR merge commit, where that stale root pin made the guardrail report conflicting Playwright versions. Keep the root screenshot runner, workspace Playwright pins, and CI browser image comments on the same version so local hooks and the PR merge tree enforce one browser toolchain. Validation: make script-tests; make playwright-version-check; applied the initial root-pin diff to a temporary archive of the PR merge tree and ran scripts/check-playwright-version.mjs successfully; git diff --check Generated with Codex Co-authored-by: Codex <codex@openai.com>
Roborev flagged a few user-facing setup and maintenance traps in the initial docs work. Keep the dirty-migration guidance from telling users to discard the only copy of local-only state, restore the synthetic-example privacy rule, and make the docs screenshot command regression test execute the cheap --list path instead of only checking strings. Validation: make script-tests; git diff --check Generated with Codex Co-authored-by: Codex <codex@openai.com>
Bring current main into the docs branch so the PR merge tree no longer conflicts in the package manifests and lockfile after the Playwright pin fix. The merge keeps the docs screenshot root Playwright dependency while taking main's newer frontend package metadata. Validation: make script-tests; make playwright-version-check; git diff --cached --check Generated with Codex Co-authored-by: Codex <codex@openai.com>
Roborev pointed out that telling users to copy or rename the dirty database was ambiguous: copying alone leaves the bad database in place, so startup would retry the same failed migration. Make the recovery sequence explicit by backing up first, then moving the database and SQLite sidecars out of the data directory before restart. Validation: git diff --check Generated with Codex Co-authored-by: Codex <codex@openai.com>
roborev: Combined Review (
|