Skip to content

fix: point the Help button at the canonical documentation URL - #183

Merged
nelsonduarte merged 1 commit into
mainfrom
fix/help-button-dead-url
Sep 13, 2026
Merged

nelsonduarte merged 1 commit into
mainfrom
fix/help-button-dead-url

Conversation

@nelsonduarte

Copy link
Copy Markdown
Owner

What

The Help ("?") button in the title bar opened https://nelsonduarte.github.io/PDFApps/#guide, whose target section no longer exists. This is shipped in 1.15.0, so every user on the current release has a dead Help button. It now points at https://pdf-apps.com/docs#first-steps.

Why it broke, verified rather than assumed

Reconstructed with git log -S and independently confirmed by the reviewer:

  • b14d11d added the button and, in the same commit, the <section id="guide"> it pointed at plus its nav entry. The link worked when written.
  • 6847858 rewrote the repo path from PDFApps-en to PDFApps two days later. That is the form that shipped.
  • 350a419 replaced the single-page site with the five-page layout and deleted both the #guide section and its nav link. Nothing has re-added them.

The button worked for about two weeks and broke in the website redesign. The later migration to Cloudflare Pages was not the cause: it changed the canonical host but did not remove the anchor. Please do not re-attribute this to Cloudflare.

Why nobody noticed

The old host still answers 200 and serves the current five-page content, so there is no 404 to expose the failure. An unknown fragment is not an error in HTTP or in any browser, so the user silently landed at the top of a page without the section, with no status code, log, or crash to catch it.

The new target is the canonical URL the site itself declares, which also avoids the 308 the old host would issue.

Tests

tests/test_help_url_domain.py (new, 3 tests). Suite goes from 746 passed / 2 skipped on main to 749 passed / 2 skipped. Reviewer and QA both approved.

Known debt NOT addressed here

Recorded deliberately so it is not lost:

  • Two mutations survive all three new tests, both user-visible: removing the button from the layout, and removing the _a11y call. QA left the behavioural test that kills these, and which also kills the wiring and URL mutants. app/window.py is at 0% coverage.
  • The three new tests are source-text assertions. They break under an innocuous refactor: extracting the URL into a constant would break the regex. For the concrete bug they prevent this is the right shape, but they should be complemented by the behavioural test above.
  • Silent failure confirmed by execution: if webbrowser.open returns False or raises, the click produces no feedback at all. Pre-existing, not introduced here.
  • Seven packaging manifests still point at the retired host, and the tests scope to app/ so they do not see them: aur/pdfapps/PKGBUILD:7, aur/pdfapps/.SRCINFO:5, aur/pdfapps-bin/PKGBUILD:8, aur/pdfapps-bin/.SRCINFO:5, rpm/pdfapps.spec:7, snap/snapcraft.yaml:22, winget/nelsonduarte.PDFApps.locale.en-US.yaml:9, plus <url type="homepage"> and four screenshot URLs in the Flatpak metainfo.
  • Unpublishing or redirecting the GitHub Pages site is the only way to repair the links already shipped in 1.15.0, which cannot be recalled. The reviewer confirmed it is feasible, that it does not affect the application IDs in the manifests, and that the redirect must target /docs rather than the root.

Scope

One commit. No tags, no merge, no version change (APP_VERSION remains 1.15.0).

🤖 Generated with Claude Code

The Help ("?") button in the title bar opened
https://nelsonduarte.github.io/PDFApps/#guide, a URL whose target section
no longer exists. This is shipped in 1.15.0, so every user on the current
release has a dead Help button.

History of the breakage, verified with git log -S rather than assumed:

* b14d11d added the button and, in the same commit, the <section id="guide">
  it pointed at, together with its nav entry. The link worked when written.
* 6847858 rewrote the repo path from PDFApps-en to PDFApps two days later.
  That is the form that shipped.
* 350a419 replaced the single-page site with the five-page layout and
  deleted both the #guide section and its nav link. Nothing re-added them.

The button therefore worked for about two weeks and broke in the website
redesign. The later migration to Cloudflare Pages was not the cause; it
changed the canonical host but did not remove the anchor.

The failure is silent, which is why it survived this long. The old
nelsonduarte.github.io host still answers 200 and serves the current
five-page content, so there is no 404 to expose it. An unknown fragment is
not an error in HTTP or in any browser: the user simply landed at the top
of a page that no longer had the section, with nothing to signal the link
was dead.

The new target is the canonical URL the site itself declares, so it also
avoids the 308 redirect the old host would issue.

Adds tests/test_help_url_domain.py, which guards the whole class of
stale-domain regressions by forbidding the retired host across Python and
JSON sources under app/, and pins the Help URL to the canonical host and
docs path while leaving the section anchor free to change.

No version strings were touched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@nelsonduarte
nelsonduarte merged commit 8e3a392 into main Sep 13, 2026
4 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