Repository navigation
docs: add a VitePress site with the vaam-apps Material 3 theme - #33
Conversation
- docs/ becomes a standalone pnpm project building a VitePress site with @vaam-apps/vitepress-md3 (seed #128c7e), over the existing pages at their current paths, with a reader-ordered sidebar. - New home page (docs/index.md) and getting-started page (docs/getting-started.md), drawn from the README and Cargo metadata. - Links from the pages to files outside docs/ stay relative (as the workspace's link test expects) and are rewritten to GitHub URLs at build time; heading anchors use GitHub's slugs so the pages' existing #anchors resolve on the site. - .github/workflows/docs.yml builds the site on every pull request and deploys it to GitHub Pages from main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHhgumqDXUpmdkQUDfRrXY
…domain `configure-pages` reports an empty `base_path` for a site served at a domain root, and the old expression turned that into an empty DOCS_BASE, which the config's `||` fallback then replaced with the repository subpath. On main the base now always comes from Pages (`/<repo>/` on github.io, `/` behind a custom domain); pull-request builds still use the config's default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHhgumqDXUpmdkQUDfRrXY
There was a problem hiding this comment.
🅵 Fast automated pass — SAST + a quick, diff-scoped look (no repo-wide retrieval). For a deeper, repo-aware review, mention @lightbridge-assistant on this PR.
Reviewed all changed files: docs.yml (pins, least-privilege permissions, no secrets on fork PRs, artifact/deploy split all correct), .gitignore, theme/index.ts, config.ts (outsideDocs normalization + slugify), logo.svg (no script), package.json, pnpm-workspace.yaml (minimumReleaseAgeExclude is a real pnpm 10.16+ setting, valid name@version), and both markdown pages — none has a code defect. SAST was clean. The single P2 is docs/.vitepress/config.ts:8: the DOCS_BASE || "/meta-whatsapp-rs/" fallback mis-handles the empty base_path that actions/configure-pages returns for a custom-domain/root deployment, so the advertised "domain change needs no code change" would build the site against the wrong base. NOT reviewed in depth: docs/pnpm-lock.yaml (generated lockfile).
🤖 AI-generated review — treat it as untrusted, verify before acting; a human owns the final decision (AI governance).
… for RustSec advisories - rustls 0.23.45 -> 0.23.46 (RUSTSEC-2026-0346, -0347, -0348, -0349) - rustls-webpki 0.103.15 -> 0.103.16 (RUSTSEC-2026-0382) - webpki-roots 1.0.9 -> 1.0.10 (RUSTSEC-2026-0381) - webpki-root-certs 1.0.9 -> 1.0.10 (RUSTSEC-2026-0383) - yoke-derive 0.8.3 -> 0.8.4 (0.8.3 was yanked) Both Cargo.lock and .xtask/Cargo.lock; `just deny` is clean on both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHhgumqDXUpmdkQUDfRrXY
|
The fix is in its own PR, #34, which changes only the two lockfiles. I've merged that branch into this one (ae9a3d5) so Generated by Claude Code |
1. Summary
Adds a documentation site for meta-whatsapp-rs, built with VitePress and the vaam-apps house theme
@vaam-apps/vitepress-md3(seed#128c7e). It covers the existingdocs/pages and adds a home page and a getting-started page. A newdocs.ymlworkflow builds the site on every PR and deploys it to GitHub Pages frommainathttps://vaam-apps.github.io/meta-whatsapp-rs/.2. Intent
The ~18 pages in
docs/(guides, architecture, the service design, coverage/parity/categories, roadmap) are only readable on GitHub today. A site gives them navigation, search and a reading order without moving or rewriting them. Every existing file stays at its path, so links into them keep working.3. Scope
In
docs/package.json,docs/pnpm-lock.yaml,docs/pnpm-workspace.yaml:docs/is a standalone pnpm project. The workspace file holds only the pnpm 12 release-age exclusion for theme 1.0.0, which was published today. It says when to delete it (after 2026-10-22).docs/.vitepress/config.ts,docs/.vitepress/theme/index.ts. The sidebar runs in reader order: Start here (Introduction, Getting started) → Guides (index, then the guides in the orderguides/README.mdgives) → Architecture and design → What is implemented (coverage, parity, categories) → Plan (roadmap, OPEN_QUESTIONS on GitHub) → Development (dev environment, CONTRIBUTING and CHANGELOG on GitHub). The config also has local search, edit links and an MIT footer.docs/index.md(home) anddocs/getting-started.md(dependency, feature flags, crates, API reference, examples, the service, agent skills). Both are taken only fromREADME.mdand the crates'Cargo.toml. There are no docs.rs links: every crate ispublish = falseand nothing is on crates.io. The page says so and givescargo doc -p meta-whatsapp-rs --all-features --open, as the README does.docs/public/logo.svg: an M3 cookie shape in the seed colour with a white chat bubble..github/workflows/docs.yml: a new file with SHA-pinned actions. It builds on every PR, then onmainit uploads the Pages artifact and runsdeploy-pages..gitignore: addsdocs/node_modules,docs/.vitepress/distanddocs/.vitepress/cache.Out
.mdfile is edited. Many of them link to files outsidedocs/with relative paths (../../crates/…,../../OPEN_QUESTIONS.md), anddocs_tables.rschecks those paths. Rather than rewrite them, the config has a small markdown-it rule that turns those links intohttps://github.com/vaam-apps/meta-whatsapp-rs/{blob,tree}/main/…URLs at build time. Heading anchors use GitHub's slug rule, so the pages' existing#anchors(#1-on-metas-sideand the like) work on the site too.ci.ymlor skills are touched.docs/gets new pages only, no existing page changed;skills/n/a (no API change).4. Verification
cd docs && pnpm install --frozen-lockfile && pnpm build:build complete(pnpm 12.14.0, Node 22.22).ignoreDeadLinks: false, so any dead internal link would fail this build.hrefand#anchorin the built HTML with a script: 0 missing pages, 0 missing anchors. The 40 links rewritten to GitHub all point to files that exist.cargo test -p meta-whatsapp-rs --all-features --test docs_tableswith this branch's tree: 11/11 pass. This covers the new pages under the link/anchor and citation checks.markdownlint-cli2with the org default config (markdownlint/style/prettier, MD060 aligned) ondocs/index.mdanddocs/getting-started.md: 0 issues.zizmor --offline .github/workflows/docs.yml: no findings.yamllint -d relaxedon the workflow and the pnpm YAML files: line-length warnings only, no errors.just ciwas not run in full (it needs Postgres/Redis and the full toolchain run). This PR's CI runs it.Docsworkflow's deploy job can only run after merge, onmain.5. Screenshots / Evidence
Reviewed locally from
vitepress preview: the home page (light, full page and 390 px mobile), getting-started, the webhooks guide in dark mode, and parity. The hero, feature cards, sidebar, outline and tables all render. The PR build of theDocsworkflow is the reproducible check.6. Risk Assessment
docs/,.gitignoreand one new workflow changes.just ciafter a docs install.docs_tables.rs'swalk()goes into every directory underdocs/excepttarget. Afterpnpm installindocs/, it walksdocs/node_modulesand picks up third-party READMEs.links_and_anchors_in_the_docs_resolveandcited_items_decisions_and_questions_existthen fail locally. I reproduced this: 2 failures withdocs/node_modulespresent, 11/11 pass without it. CI is not affected, becauseci.ymlnever installs the docs packages. I left the test alone because this PR stays out of code. The one-line fix is to skipnode_modulesbesidetargetinwalk()(crates/meta-whatsapp-rs/tests/docs_tables.rs). Until then, deletedocs/node_modulesbefore runningjust ci.docs/pnpm-workspace.yamlis temporary. Delete it after 2026-10-22.7. AI Usage Declaration
8. Reviewer Focus
docs/.vitepress/config.ts.docs/getting-started.mdsays anything the README does not.node_modules/docs_tables.rsinteraction in section 6.After merge, a repo admin must: go to Settings → Pages → Build and deployment → Source and set GitHub Actions. The site will then be at
https://vaam-apps.github.io/meta-whatsapp-rs/. If you use a custom domain, set it there too; the workflow passes Pages' base path to the build, so no code change is needed.Generated by Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.