Skip to content

Docs: fix broken cross-references, and stop hiding undefined-label warnings - #289

Merged
garyo merged 5 commits into
mainfrom
docs/fix-property-set-links
Nov 11, 2026
Merged

garyo merged 5 commits into
mainfrom
docs/fix-property-set-links

Conversation

@garyo

@garyo garyo commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

The "Properties on the Image Effect Host" link on the OfxHost struct page goes nowhere, and so do about 60 other cross-references in the Reference docs. Documentation/build.sh filtered "undefined label" out of the Sphinx warnings it prints, so nobody saw them.

Causes and fixes

"Properties on ..." links (10). The OfxHost struct and Image Effect API pages linked to labels such as ImageEffectHostProperties. The old properties-by-object page wrote those as .. ImageEffectHostProperties:, an RST comment rather than a label, so the links were dead even before #267 removed that page. They now go to the matching section of the generated Property Sets reference, and the parameters link goes to that page as a whole, since it has one set per parameter type.

Multi-type properties (44). gen-props-doc.py wrote kOfxParamPropDefault, Min, Max, DisplayMin and DisplayMax once per type section, each time with the same label. Sphinx drops a label defined more than once, so every link to them failed. They now appear once, in a "Properties with Multiple Types" section. The generator also sized heading underlines to the name without its ** markup (about 500 "Title underline too short" warnings); a small rst_heading() helper fixes that.

Other pages (9, plus one enum). Eighteen pages used the same .. Name: comment form for labels; these are now real labels, which fixes the links to CoordinateSystems and ImageEffectsMultiThreadingRendering. The rest now point at labels that exist (mainEntryPoint, threadRecursionSafety, ParameterPropertiesDoubleTypesStrictlySpatial, the kOfxParamPropDoubleType macro). The Draw Suite page asked for OfxDrawTextAligment, so the text-alignment enum was missing from the docs.

Doxygen lists and duplicate targets. Two header comments (kOfxImageEffectPropSupportsMultiResolution, kOfxImageEffectPropMetalTextureEnabled) indented a lead-in list deeper than the "Valid Values" list after it, which Doxygen rejects; the lead-in lists are now sentences. ofxRendering.rst pulled in three field macros twice; the second list now refers to the first.

build.sh no longer hides "undefined label" warnings. With these fixes the build has none.

Verification

Built with Documentation/build.sh: no undefined-label, duplicate-label or underline warnings remain, and the rendered pages link to the right sections (checked in the HTML). The remaining warnings are C++ declarator errors for the suites' function-pointer members. They come from Doxygen 1.18.0, which changed how it writes those members to XML; Read the Docs uses an older Doxygen and is not affected. build.sh now warns when it finds Doxygen 1.18 or later.

Assisted-by: Claude Code / Claude Opus 5.5

garyo and others added 3 commits November 4, 2026 12:04
…ty sets

The OfxHost struct and Image Effect API pages linked to labels such as
ImageEffectHostProperties that no Sphinx page defines: the old
properties-by-object page wrote them as RST comments, not labels, and
that page has since been removed. Point each link at the matching
section of the generated Property Sets Reference, and the parameter
link at that page as a whole, since it has one set per parameter type.

Assisted-by: Claude Code / Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
A property with several types (kOfxParamPropDefault, Min, Max, DisplayMin,
DisplayMax) was written once per type section, each time with the same
label. Sphinx drops a label defined more than once, so every link to
those properties was dead. Put them in one "Properties with Multiple
Types" section instead.

Heading underlines were sized to the name without its ** markup, giving
some 500 "Title underline too short" warnings; the two page labels also
lacked the blank line before their titles. Add rst_heading() so every
heading gets an underline as long as its title, and regenerate.

Assisted-by: Claude Code / Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
…ld.sh

Eighteen pages marked sections with ".. Name:", an RST comment, where
".. _Name:" was meant, so links to CoordinateSystems and
ImageEffectsMultiThreadingRendering went nowhere. Make them labels.
Point the other dead links at the labels that exist (mainEntryPoint,
threadRecursionSafety, ParameterPropertiesDoubleTypesStrictlySpatial,
the kOfxParamPropDoubleType macro), and fix the misspelt
OfxDrawTextAlignment enum on the Draw Suite page.

build.sh filtered "undefined label" out of the Sphinx warnings, which is
how these went unnoticed; it no longer does. The build now has none.

Assisted-by: Claude Code / Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
@garyo
garyo marked this pull request as ready for review November 7, 2026 11:37
garyo and others added 2 commits November 10, 2026 21:47
Doxygen rejected the lists in kOfxImageEffectPropSupportsMultiResolution
and kOfxImageEffectPropMetalTextureEnabled: each indented a lead-in list
deeper than the "Valid Values" list after it. Re-indenting would merge
the two lists, so write the lead-in lists as sentences.

ofxRendering.rst pulled in kOfxImageFieldNone, Lower and Upper twice,
giving duplicate targets. The second list now refers to the first.

Assisted-by: Claude Code / Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
Doxygen 1.18 moved the closing parenthesis of a function-pointer member
from <argsstring> into <type>. Breathe still joins type, name and
argsstring, so every suite function fails to parse: it loses its
declaration and link target, and links to it silently become plain
text. Read the Docs uses an older Doxygen, so only local builds are
affected for now.

Assisted-by: Claude Code / Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
@garyo
garyo merged commit 9bc3390 into main Nov 11, 2026
14 checks passed
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