Skip to content

fix(links): the donate buttons funded another organisation, and two nav entries went nowhere - #388

Merged
github-actions[bot] merged 1 commit into
mainfrom
fix/links-that-point-elsewhere
Aug 26, 2026
Merged

fix(links): the donate buttons funded another organisation, and two nav entries went nowhere#388
github-actions[bot] merged 1 commit into
mainfrom
fix/links-that-point-elsewhere

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

Found by walking all 33 public pages rather than reading the code.

Donations were going to Revamp-IT

/get-involved/donate carried two hardcoded buttons:

https://ko-fi.com/revampit
https://github.com/sponsors/revampit

On evig's own donate page. Someone clicking "spenden" funded the organisation evig span out of. evig has no Ko-fi and no GitHub Sponsors account, so there was nothing to repoint them at — the choice was remove them or keep collecting for someone else. Removed; the bank transfer and device-donation paths above and below them are evig's real routes.

Two more links pointed at the wrong GitHub org: the "contribute code" button (github.com/revampit) and the CO₂ page's "check our maths" link (github.com/g-but/revampit — the previous org's repo and a retired handle). Both derive from EXTERNAL_LINKS.sourceCode now.

Two nav entries rendered <a href="">

Marktplatz → evig Shop read EXTERNAL_LINKS.shopware; Lernen → Wiki read EXTERNAL_LINKS.wiki. Both are empty strings — evig has neither a Shopware storefront nor a wiki. Neither MegaMenuContent nor MobileMenuNav filters empty hrefs, so both shipped as <a href="" target="_blank">: the first item of the Marktplatz menu opened a blank duplicate of the current page in a new tab. The shop entry's comment still read "The official RevampIT storefront is the external Shopware shop", while .claude/CLAUDE.md says evig has one store and it is /marketplace.

Nothing could have caught this — not a missing key (the labels exist), not a broken route (there is no route), not a type error ('' is a valid string). So the gate is new: navigation-links-resolve.test.ts asserts every href in the real exported tree is non-empty and well-formed, which also covers the derived builders (buildServicesNavigationItems, buildMarktplatzNavigationItems).

Proved by mutation — planting the empty href back turns "every href is present and non-empty" red and leaves the other three green.

Three dead links shipped in DE copy

  • faq.groups[4].items[1] sold "die REVAMPED-Zertifizierung" and linked to /revamped — a 404 since feat(brand): evig repairs becomes evig technicians, and evig stops asking for printers #382 deleted that page. My own regression: I removed the page and its inbound CTA but not the FAQ entry. REVAMPED is the previous org's product name, so the question goes rather than the link.
  • Lernen → Guides pointed at /knowhow#guides; the Guides card on that page pointed at /#guides. Neither anchor exists — /knowhow's only id is ressourcen — and the two didn't even agree with each other. There are no guides.

Lernen now points at what evig actually owns

/workshops renders "0 Workshops · Aktuell sind keine Workshops geplant" and /blog renders nothing, while the 43-entry open-source alternatives registry (1029 lines, real, sitemap-indexed) and the Linux page with its distro matrix sat three levels down under Dienstleistungen.

Both are in Lernen now — where someone looking to learn would look — alongside a Ressourcen entry pointing at the curated-links section that does exist.

/knowhow claimed Revamp-IT's history as evig's

"Wir teilen unser 16+ Jahre Knowhow"

On an organisation founded in 2026. That is exactly what .claude/CLAUDE.md forbids — "evig claims no 'since 2003' of its own". Its H1 also sold "Vintage Hardware", repeated in the meta description and the guides card — the opposite of what evig sells, which is machines good enough for real work today. Rewritten to Linux, open software and the practical use of AI, in all eight locales.

Verification

npm run verify green: lint, umlauts, chrome, docs, compliance, typecheck, 7750 tests (534 suites), production build.

🤖 Generated with Claude Code

…av entries went nowhere

Found by walking all 33 public pages rather than reading the code.

## Donations were going to Revamp-IT

`/get-involved/donate` carried two hardcoded buttons:

    https://ko-fi.com/revampit
    https://github.com/sponsors/revampit

On evig's own donate page. Someone clicking "spenden" funded the organisation
evig span out of. evig has no Ko-fi and no GitHub Sponsors account, so there
was nothing to repoint them at — the choice was remove them or keep collecting
for someone else. Removed; the bank transfer and the device-donation path
above and below them are evig's real routes.

Two more links pointed at the wrong GitHub org: the "contribute code" button
(github.com/revampit) and the CO₂ page's "check our maths" link
(github.com/g-but/revampit — the previous org's repo AND a retired handle).
Both derive from EXTERNAL_LINKS.sourceCode now.

## Two nav entries rendered <a href="">

`Marktplatz → evig Shop` read EXTERNAL_LINKS.shopware and `Lernen → Wiki` read
EXTERNAL_LINKS.wiki. Both are empty strings — evig has neither a Shopware
storefront nor a wiki. Neither MegaMenuContent nor MobileMenuNav filters empty
hrefs, so both shipped as `<a href="" target="_blank">`: the FIRST item of the
Marktplatz menu opened a blank duplicate of the current page in a new tab. The
shop entry's comment still read "The official RevampIT storefront is the
external Shopware shop", while .claude/CLAUDE.md says evig has one store and
it is /marketplace.

Nothing could have caught this: not a missing key (the labels exist), not a
broken route (there is no route), not a type error (`''` is a valid string).
So the gate is new — `navigation-links-resolve.test.ts` asserts every href in
the real exported tree is non-empty and well-formed, which also covers the
derived builders. Proved by mutation: planting the empty href back turns
"every href is present and non-empty" red and leaves the other three green.

## Three dead links shipped in DE copy

  - faq.groups[4].items[1] sold "die REVAMPED-Zertifizierung" and linked to
    /revamped — a 404 since #382 deleted that page. My own regression: I
    removed the page and its inbound CTA but not the FAQ entry. REVAMPED is
    the previous org's product name, so the question goes rather than the link.
  - `Lernen → Guides` pointed at /knowhow#guides; the Guides card ON that page
    pointed at /#guides. Neither anchor exists — /knowhow's only id is
    `ressourcen` — and the two did not even agree with each other. There are
    no guides.

## Lernen now points at what evig actually owns

/workshops renders "0 Workshops · Aktuell sind keine Workshops geplant" and
/blog renders nothing, while the 43-entry open-source alternatives registry
(1029 lines, real, indexed) and the Linux page with its distro matrix sat
three levels down under Dienstleistungen. Both are in Lernen now, where
someone looking to learn would look, alongside a Ressourcen entry pointing at
the curated-links section that does exist.

## /knowhow claimed Revamp-IT's history as evig's

"Wir teilen unser 16+ Jahre Knowhow" — on an org founded 2026. That is exactly
what .claude/CLAUDE.md forbids ("evig claims no 'since 2003' of its own").
Its H1 also sold "Vintage Hardware", repeated in the meta description and the
guides card — the opposite of what evig sells, which is machines good enough
for real work today. Rewritten to Linux, open software and the practical use
of AI, in all eight locales.

npm run verify green: lint, umlauts, chrome, docs, compliance, typecheck,
7750 tests (534 suites), production build.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions
github-actions Bot merged commit af59e63 into main Aug 26, 2026
9 checks passed
@github-actions
github-actions Bot deleted the fix/links-that-point-elsewhere branch August 26, 2026 09:43
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