Skip to content

docs: mark Doxygen source listings noindex and keep them out of the sitemap - #398

Merged
luisleo526 merged 3 commits into
mainfrom
lvd/n35-noindex
Oct 17, 2026
Merged

luisleo526 merged 3 commits into
mainfrom
lvd/n35-noindex

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

The API documentation site drew most of its search impressions to raw C++ source listings. Those Doxygen source-listing pages now carry noindex and are left out of sitemap.xml; the API reference, file reference, class, namespace, hand-written and landing pages are unchanged, and robots.txt still allows everything so crawlers can read the noindex.

  • docs/build.sh and docs/seo_postprocess.py: identify source-listing pages and post-process them.
  • docs/ci.md: documents the check.

Proven on the real built site: 125 titled source listings = the 125 pages carrying noindex (independent title check), 0 name-only matches, a pineforge.dev link on every page, a second pass byte-identical. Docs only; all CI steps passed on this exact tree.

🤖 Generated with Claude Code

luisleo526 and others added 2 commits October 15, 2026 14:35
…itemap

The API documentation site draws most of its search impressions to raw
C++ source listings (Doxygen's per-file `*_8<ext>_source.html` pages),
while the API reference pages get few.

docs/seo_postprocess.py now adds one `<meta name="robots"
content="noindex">` in the head of a source listing, replacing any robots
meta it already had, and drops every page that carries a noindex or none
directive from sitemap.xml. A page is a source listing only when its file
name matches that pattern and its title ends with "Source File", which is
how Doxygen titles a listing: a hand-written page can choose a colliding
name with an explicit page id and must stay indexable. File reference pages (`*_8hpp.html`), class,
struct, namespace, member, group and directory pages, the hand-written
pages, the landing page and the 404 page are unchanged. robots.txt keeps
allowing everything: a crawler that may not fetch a page never sees its
noindex. A second pass over the output is byte-identical.

The `--self-test-seo` self-test gains a second phase with six source
fixtures (including one with a conflicting robots meta, one with an
uppercase tag and one whose title has trailing whitespace), twelve API and
narrative fixtures, among them a class whose name ends in `source`, and a
hand-written page whose explicit id collides with the listing name pattern
and must stay indexable and in the sitemap. It asserts which pages get the
tag, the sitemap URL set, the position of the tag, untouched assets and a
byte-identical second pass. The footer already links to pineforge.dev on
every page, source listings included; docs/ci.md says so.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@luisleo526
luisleo526 merged commit a41aefd into main Oct 17, 2026
18 of 20 checks passed
luisleo526 added a commit that referenced this pull request Oct 17, 2026
* docs: the 1.6.1-rc.1 release candidate notes

Prepare the 1.6.1-rc.1 changelog entry dated 2026-10-17, carrying forward the reviewed 1.6.1 — Unreleased section (b148979, c818585) and naming all pull requests merged since v1.6.0 (#398, #400, #401, #402). Update the two CHANGELOG section anchor links in README.md and docs/pages/public-contract.md introduced by b148979 from #161--unreleased to #161-rc1--2026-10-17 while keeping the current final release and pair lines on 1.6.0.

* docs: drop the hpo-candidate pairing line from the 1.6.1-rc.1 entry (review of #403)

No pineforge-hpo release candidate exists yet and the reviewed 1.6.1 entry
did not claim one.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>

---------

Co-authored-by: HaoLiangWen <[email protected]>
Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant