fix(docs): repair broken documentation site - #120
Merged
Merged
Conversation
GitHub Pages runs Jekyll, which silently drops files whose name starts with an underscore. VirtualFile.h generates _virtual_file_8h.html, so that page 404'd on the site while being linked from 6 other pages. Publish a .nojekyll marker, and copy with "doc/html/." instead of the "doc/html/*" glob, which skipped dotfiles. Other configuration fixes: - STRIP_FROM_PATH still pointed at the original author's Windows folder, so every file page exposed the CI runner path and 6 useless directory pages were generated. - PROJECT_NUMBER is now derived from OSL_VERSION in src/oslib.h via the Makefile, keeping a single source of truth for the version. - Enable SEARCHENGINE; the API reference has 130 pages and no search. - PAPER_TYPE was set to the invalid value "a4wide".
OSL_KEY_BITS was documented as holding "bit numbers", but its values are the bit position plus one, so that 0 can mean "no key" in oslMake3Buttons. Following the old text (1 << OSL_KEY_CROSS) selected the wrong button. Document the one-based convention and point to OSL_KEY_MASKS and the named bitfields instead. The 18 button bitfields of OSL_KEYLIST, and the 6 of OSL_REMOTEKEYLIST, never appeared on the site: they live in an anonymous struct, which is itself undocumented and therefore removed by HIDE_UNDOC_MEMBERS, taking its documented members with it. Documenting the anonymous struct brings them back without exposing undocumented members elsewhere. Also: - Add @file to the 8 headers that lacked it, so the File List covers all 18 headers instead of 10. - Mark oslDrawTile and oslDrawImageSimple with @deprecated; both were described as deprecated in prose only and were missing from the Deprecated List. - Main page told the reader to click a "Modules" tab that Doxygen renames to "Topics", referred to an OSLib site that was never linked, and claimed a set of tutorials that does not exist.
dogo
force-pushed
the
fix/docs-site-issues
branch
from
September 14, 2026 13:22
8a7e6f3 to
5f85390
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Audit of https://dogo.github.io/oslib/ — crawled all 115 published pages and validated every link, anchor and asset, then reproduced the Doxygen build locally to confirm each root cause.
Broken on the live site
_virtual_file_8h.htmlreturned 404, while being linked from 6 pages (files.html,oslib_8h.html, thesrcdirectory page and 3 struct pages).GitHub Pages runs Jekyll, which silently drops files whose name starts with an underscore.
VirtualFile.hgenerates_virtual_file_8h.html(and_virtual_file_8h.js, used by the nav tree). The local build produces both; the published site has neither. Fixed by publishing a.nojekyllmarker and copying withdoc/html/.instead of thedoc/html/*glob, which skipped dotfiles anyway.The controller API had no field documentation. The
OSL_KEYLISTpage showed onlyvalue. All 18 button bitfields (cross,circle,up,start, …) are documented inkeys.hbut never rendered, and the "Data Fields" index linked to 26 anchors that did not exist. They live in an anonymous struct, which is itself undocumented and therefore removed byHIDE_UNDOC_MEMBERS, taking its documented members with it. Documenting the anonymous struct brings them back without exposing undocumented members elsewhere.Incorrect content
OSL_KEY_BITSwas documented as holding "bit numbers". Its values are the bit position plus one, so that0can mean "no key" inoslMake3Buttons(seemessagebox.c:value & (1 << (key - 1))). Following the old text,1 << OSL_KEY_CROSSselected SQUARE. The values are correct by design, so only the documentation changed.oslDrawTileandoslDrawImageSimplewere described as deprecated in prose only, using@noteor the brief, so they never reacheddeprecated.html.Configuration
STRIP_FROM_PATHstill pointed at the original author's Windows folder, so every file page exposed the CI runner path (/home/runner/work/oslib/oslib/src/audio.h File Reference) and 6 useless directory pages were generated for/home,/home/runner, etc.PROJECT_NUMBERwas empty — the site showed no version. It is now derived fromOSL_VERSIONinsrc/oslib.hthrough the Makefile, so the version has a single source of truth.SEARCHENGINEwas off on a 130-page API reference.PAPER_TYPEwas set to the invalid valuea4wide.@fileand so were absent from the File List.Verification
Rebuilt with Doxygen 1.9.8 (the version the CI installs) and re-ran the link checker over the generated site:
OSL_KEYLIST16/16 fields andOSL_REMOTEKEYLIST7/7 renderingOSL_VERSIONto9.9.9moved the site to9.9.9, reverting moved it backmake clean && makeexits 0 — the changes are comments and configuration only, no codeKnown limitation
52 entries in the alphabetical "Data Fields" index still do not scroll to their row: Doxygen emits no per-member anchor for members of an anonymous struct in C. The links land on the correct page, where the fields are now visible. The only setting that resolves it,
INLINE_SIMPLE_STRUCTS=YES, deletes all 27 struct pages (OSL_IMAGE,OSL_FONT,OSL_MAP, …), which is a worse regression. Before this PR the same index had 26 broken anchors and the fields did not exist at all.