Skip to content

Added the ProperDocs Documentation Website - #30

Merged
lecode-official merged 1 commit into
developmentfrom
docs-website
Aug 4, 2026
Merged

Added the ProperDocs Documentation Website#30
lecode-official merged 1 commit into
developmentfrom
docs-website

Conversation

@lecode-official

Copy link
Copy Markdown
Owner

Added a documentation website, built with ProperDocs (properdocs.yml, requirements.txt) on top of the existing hand-written docs/ tree, so docs_dir needs no separate source folder. The site gets a generated "API Reference" section built at deploy time from the framework's XML documentation comments, via a new gen-files hook (docs/build/generate-api-docs.py) that shells out to the xmldoc2md local tool (newly pinned in .config/dotnet-tools.json). Because Roslyn never expands <inheritdoc/> in the emitted XML documentation file, clinet-core now also references SauceControl.InheritDoc (PrivateAssets="all") to rewrite it into real text as a build step, so the generated API docs are not full of empty members. Three more build hooks handle the smaller pieces: copying the favicon to the site root, rewriting links that point outside docs_dir into absolute GitHub URLs, and injecting the "API Reference" nav entry into the overview page. A new light/dark logo and favicon set was added under docs/assets/, along with CSS that teaches the site's Material theme to honor GitHub's #gh-dark-mode-only / #gh-light-mode-only image suffixes and to swap the header logo with the color scheme. A new "Docs" GitHub Actions workflow (.github/workflows/docs.yml) builds and deploys the site to GitHub Pages on every push to main.

Restructured the documentation to make room for this. Merged docs/developer-manual/architecture/ into a single docs/developer-manual/architecture.md, renamed contributing.md to contribution-guide.md and tooling/formatting-dprint.md to tooling/code-formatting-dprint.md, and moved design/DESIGN.md to docs/developer-manual/logo-design.md, adding a small new design/README.md that just lists the asset files left behind. Added a new "Documentation Website" article describing all of the above, and updated CLAUDE.md and the various indexes to match.

The website's own build output goes into build/documentation-website/ (site_dir in properdocs.yml), which meant a top-level build/ directory now existed in the repository for the first time. While touching that, the C# projects' bin//obj/ output was redirected into it too, so all build output — the website's and the .NET projects' alike — lives in the same place: a new Directory.Build.props under source/ (shared by clinet-core and sample-app, keyed off each project's own folder name) and another under tests/unit-tests do the redirecting. .gitignore, the shared VS Code settings, and the CSpell ignore list were all updated from the old bin//obj/ patterns to build/, and .gitignore also picks up node_modules/, .venv/, and __pycache__/ for the new NPM and Python tooling the website needed. Added shared VS Code launch.json and tasks.json files with a "Debug Sample App" launch configuration and its matching build task.

The website's Python dependencies needed pinning in a new requirements.txt to match this project's policy of never using version ranges (see Dependency Management), and since that pinning had to be introduced anyway, the linters got the same treatment on the NPM side: a new package.json / package-lock.json pins dprint, cspell, and markdownlint-cli2 instead of installing global, unlocked versions in CI and in the pre-commit hooks in .claude/settings.json — both now run npm ci once and invoke the linters through npx.

Finally, added a CLAUDE.md golden rule that changes are never staged or committed automatically — only the user does that, by hand — matching a new "Never Stage or Commit Automatically" section in the commit-messages article.

This work was done with the help of Claude Code, which built the ProperDocs site and its build hooks, wrote the GitHub Pages workflow, redirected the build output, migrated the linters to npm, and updated the documentation to match.

Closes issue #25.

Added a documentation website, built with ProperDocs (`properdocs.yml`,
`requirements.txt`) on top of the existing hand-written `docs/` tree,
so `docs_dir` needs no separate source folder. The site gets a
generated "API Reference" section built at deploy time from the
framework's XML documentation comments, via a new `gen-files` hook
(`docs/build/generate-api-docs.py`) that shells out to the `xmldoc2md`
local tool (newly pinned in `.config/dotnet-tools.json`). Because
Roslyn never expands `<inheritdoc/>` in the emitted XML documentation
file, `clinet-core` now also references `SauceControl.InheritDoc`
(`PrivateAssets="all"`) to rewrite it into real text as a build step,
so the generated API docs are not full of empty members. Three more
build hooks handle the smaller pieces: copying the favicon to the
site root, rewriting links that point outside `docs_dir` into
absolute GitHub URLs, and injecting the "API Reference" nav entry
into the overview page. A new light/dark logo and favicon set was
added under `docs/assets/`, along with CSS that teaches the site's
Material theme to honor GitHub's `#gh-dark-mode-only` /
`#gh-light-mode-only` image suffixes and to swap the header logo with
the color scheme. A new "Docs" GitHub Actions workflow
(`.github/workflows/docs.yml`) builds and deploys the site to GitHub
Pages on every push to `main`.

Restructured the documentation to make room for this. Merged
`docs/developer-manual/architecture/` into a single
`docs/developer-manual/architecture.md`, renamed `contributing.md` to
`contribution-guide.md` and `tooling/formatting-dprint.md` to
`tooling/code-formatting-dprint.md`, and moved `design/DESIGN.md` to
`docs/developer-manual/logo-design.md`, adding a small new
`design/README.md` that just lists the asset files left behind. Added
a new "Documentation Website" article describing all of the above,
and updated `CLAUDE.md` and the various indexes to match.

The website's own build output goes into `build/documentation-website/`
(`site_dir` in `properdocs.yml`), which meant a top-level `build/`
directory now existed in the repository for the first time. While
touching that, the C# projects' `bin/`/`obj/` output was redirected
into it too, so all build output — the website's and the .NET
projects' alike — lives in the same place: a new `Directory.Build.props`
under `source/` (shared by `clinet-core` and `sample-app`, keyed off
each project's own folder name) and another under `tests/unit-tests`
do the redirecting. `.gitignore`, the shared VS Code settings, and the
CSpell ignore list were all updated from the old `bin/`/`obj/` patterns
to `build/`, and `.gitignore` also picks up `node_modules/`, `.venv/`,
and `__pycache__/` for the new NPM and Python tooling the website
needed. Added shared VS Code `launch.json` and `tasks.json` files with
a "Debug Sample App" launch configuration and its matching build task.

The website's Python dependencies needed pinning in a new
`requirements.txt` to match this project's policy of never using
version ranges (see Dependency Management), and since that pinning
had to be introduced anyway, the linters got the same treatment on the
NPM side: a new `package.json` / `package-lock.json` pins `dprint`,
`cspell`, and `markdownlint-cli2` instead of installing global,
unlocked versions in CI and in the pre-commit hooks in
`.claude/settings.json` — both now run `npm ci` once and invoke the
linters through `npx`.

Finally, added a `CLAUDE.md` golden rule that changes are never
staged or committed automatically — only the user does that, by
hand — matching a new "Never Stage or Commit Automatically" section
in the commit-messages article.

This work was done with the help of Claude Code, which built the
ProperDocs site and its build hooks, wrote the GitHub Pages workflow,
redirected the build output, migrated the linters to `npm`, and
updated the documentation to match.

Co-Authored-By: Claude <noreply@anthropic.com>
@lecode-official lecode-official added this to the Milestone v0.3.0 milestone Aug 4, 2026
@lecode-official lecode-official self-assigned this Aug 4, 2026
@lecode-official lecode-official added Type: CI/CD The issue or pull request concerns the continuous integration and deployment (CI/CD) pipeline. Type: Documentation The issue or pull request concerns the updating or adding of content to the documentation. labels Aug 4, 2026
@lecode-official lecode-official linked an issue Aug 4, 2026 that may be closed by this pull request
@lecode-official
lecode-official merged commit 18a6070 into development Aug 4, 2026
2 checks passed
@lecode-official
lecode-official deleted the docs-website branch August 4, 2026 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Type: CI/CD The issue or pull request concerns the continuous integration and deployment (CI/CD) pipeline. Type: Documentation The issue or pull request concerns the updating or adding of content to the documentation.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add a Website for the Documentation

1 participant