fix(web): remove Google Analytics and repoint footer links to the fork #35

Merged
xavierk merged 2 commits from fix/web-remove-analytics into main 2026-11-06 14:28:00 +00:00
Owner

Description

Removes Google Analytics from voculinux.com and repoints the footer and site links that pointed at VocaHQ channels.

Analytics removed

  • web/src/app/layout.tsx: the gtag script and inline config for measurement ID G-7NBBNJNNQ7, plus the next/script import they used.
  • web/src/app/privacy/page.tsx: the paragraph describing the GA tag now says the site has no analytics or tracking scripts, its code sets no cookies, and the header and footer logos are loaded from bongbetic.com. dateModified is bumped.
  • No CSP, headers, next.config or env entries referenced analytics, so none changed. A repo-wide search found no other googletagmanager, gtag or G- IDs.

Footer and site links

  • X, Discord and hello@vocahq.com are removed from the footer. The fork has none of those channels, so pointing them at the fork would be an invented claim. The footer keeps the fork source icon.
  • The footer's "Built in public by Jatin K Malik" link becomes the one upstream credit: "AGPL-3.0. Based on Vocalinux (upstream, by VocaHQ)", linked to UPSTREAM_REPO_URL.
  • The about copy on /open-source/ keeps the upstream name as plain text, so the site has one upstream credit link.
  • The home "Vocalinux (upstream)" provenance card is no longer a link, and the lede says upstream is credited in the footer.
  • X_URL, DISCORD_URL and EMAIL_URL are removed from web/src/lib/seo.ts.

Tests

  • New web/src/app/__tests__/no-analytics.test.ts scans web/src, web/public and next.config.* byte for byte for googletagmanager, google-analytics, gtag( and G- measurement IDs. It fails on the pre-change tree.
  • voculinux-rebrand.test.ts now asserts that the upstream constant is linked once in the footer, is absent from the nav, and that no VocaHQ channel appears in the nav.

Related issue

Refs #16. The spec issue is closed, so this does not auto-close it.

Type of change

  • New feature
  • Bug fix
  • Breaking change
  • Documentation
  • Refactor
  • Tests
  • Packaging / CI

Checklist

  • Code follows project style (Black, isort, flake8). No Python changed. Web lint and typecheck pass.
  • Documentation updated when user-facing behavior or install steps change (privacy page)
  • Tests added or updated for the change
  • Local tests pass (pytest). Ran pytest tests/test_rename_sweep.py and the web jest suite; full pytest not run because no Python changed.
  • Conventional commit message style

Screenshots (if applicable)

Footer and home provenance card changed. No screenshots attached.

Notes for reviewers

Deliberately unchanged. Functional upstream links stay labelled as upstream, because the fork artefacts are not published yet and existing honesty tests require those labels:

  • raw.githubusercontent.com/VocaHQ/vocalinux/main/install.sh commands on the FAQ, install, distro and engine pages
  • the AppImage link to upstream GitHub Releases
  • the nix flake snippets, the VocaHQ Flatpak remote, the vocagateway.vocahq.com links, and the changelog's upstream release history

Follow-ups, not in this PR.

  • Twitter site and creator are @vocahq (layout and buildPageMetadata).
  • Every page's JSON-LD author names Jatin K Malik and links his GitHub profile.
  • Root SUPPORT.md and CONTRIBUTING.md point at VocaHQ Discord, Discussions and issues.
  • web/src/lib/api/util.ts calls proxy.getcreatr.com, but nothing imports it.

Verification (run locally on the committed tree)

  • web/: npm run lint (0 errors; the 2 <img> warnings on the home cards were already there), npm run typecheck, npm test (12 suites, 106 tests), npm run build.
  • The built web/out contains no googletagmanager, google-analytics, gtag( or G- marker.
  • pytest tests/test_rename_sweep.py: 4 passed.
  • semgrep 1.178.0 with p/default and p/owasp-top-ten on the HEAD tree: 0 findings. The first draft of the test had four path-join findings, which were rewritten.
  • jscpd 4.3.0 with .jscpd.json: 303 clones and 4.37% duplicated lines, identical to the origin/main baseline.
## Description Removes Google Analytics from voculinux.com and repoints the footer and site links that pointed at VocaHQ channels. **Analytics removed** - `web/src/app/layout.tsx`: the gtag script and inline config for measurement ID `G-7NBBNJNNQ7`, plus the `next/script` import they used. - `web/src/app/privacy/page.tsx`: the paragraph describing the GA tag now says the site has no analytics or tracking scripts, its code sets no cookies, and the header and footer logos are loaded from bongbetic.com. `dateModified` is bumped. - No CSP, headers, next.config or env entries referenced analytics, so none changed. A repo-wide search found no other `googletagmanager`, `gtag` or `G-` IDs. **Footer and site links** - X, Discord and `hello@vocahq.com` are removed from the footer. The fork has none of those channels, so pointing them at the fork would be an invented claim. The footer keeps the fork source icon. - The footer's "Built in public by Jatin K Malik" link becomes the one upstream credit: "AGPL-3.0. Based on Vocalinux (upstream, by VocaHQ)", linked to `UPSTREAM_REPO_URL`. - The about copy on `/open-source/` keeps the upstream name as plain text, so the site has one upstream credit link. - The home "Vocalinux (upstream)" provenance card is no longer a link, and the lede says upstream is credited in the footer. - `X_URL`, `DISCORD_URL` and `EMAIL_URL` are removed from `web/src/lib/seo.ts`. **Tests** - New `web/src/app/__tests__/no-analytics.test.ts` scans `web/src`, `web/public` and `next.config.*` byte for byte for `googletagmanager`, `google-analytics`, `gtag(` and `G-` measurement IDs. It fails on the pre-change tree. - `voculinux-rebrand.test.ts` now asserts that the upstream constant is linked once in the footer, is absent from the nav, and that no VocaHQ channel appears in the nav. ## Related issue Refs #16. The spec issue is closed, so this does not auto-close it. ## Type of change - [ ] New feature - [x] Bug fix - [ ] Breaking change - [x] Documentation - [ ] Refactor - [x] Tests - [ ] Packaging / CI ## Checklist - [ ] Code follows project style (Black, isort, flake8). No Python changed. Web lint and typecheck pass. - [x] Documentation updated when user-facing behavior or install steps change (privacy page) - [x] Tests added or updated for the change - [ ] Local tests pass (`pytest`). Ran `pytest tests/test_rename_sweep.py` and the web jest suite; full pytest not run because no Python changed. - [x] Conventional commit message style ## Screenshots (if applicable) Footer and home provenance card changed. No screenshots attached. ## Notes for reviewers **Deliberately unchanged.** Functional upstream links stay labelled as upstream, because the fork artefacts are not published yet and existing honesty tests require those labels: - `raw.githubusercontent.com/VocaHQ/vocalinux/main/install.sh` commands on the FAQ, install, distro and engine pages - the AppImage link to upstream GitHub Releases - the nix flake snippets, the VocaHQ Flatpak remote, the `vocagateway.vocahq.com` links, and the changelog's upstream release history **Follow-ups, not in this PR.** - Twitter `site` and `creator` are `@vocahq` (layout and `buildPageMetadata`). - Every page's JSON-LD author names Jatin K Malik and links his GitHub profile. - Root `SUPPORT.md` and `CONTRIBUTING.md` point at VocaHQ Discord, Discussions and issues. - `web/src/lib/api/util.ts` calls `proxy.getcreatr.com`, but nothing imports it. **Verification (run locally on the committed tree)** - `web/`: `npm run lint` (0 errors; the 2 `<img>` warnings on the home cards were already there), `npm run typecheck`, `npm test` (12 suites, 106 tests), `npm run build`. - The built `web/out` contains no `googletagmanager`, `google-analytics`, `gtag(` or `G-` marker. - `pytest tests/test_rename_sweep.py`: 4 passed. - semgrep 1.178.0 with `p/default` and `p/owasp-top-ten` on the HEAD tree: 0 findings. The first draft of the test had four path-join findings, which were rewritten. - jscpd 4.3.0 with `.jscpd.json`: 303 clones and 4.37% duplicated lines, identical to the `origin/main` baseline.
xavierk added 2 commits 2026-11-06 14:26:07 +00:00
The root layout loaded the gtag script for measurement ID G-7NBBNJNNQ7,
and the privacy page described it. Remove both. The privacy page now says
the site runs no analytics or tracking scripts, sets no cookies, and loads
its header and footer logos from bongbetic.com.

A jest test scans web/src, web/public and the next.config files for
googletagmanager, google-analytics, gtag( and G- measurement IDs, so the
tag cannot return unnoticed.

Refs #16
fix(web): point footer and site links at the fork
CI / security (pull_request) Successful in 1m12s
CI / lint (pull_request) Successful in 21s
CI / ai-review (pull_request) Successful in 7s
6afb9218e0
The footer's X, Discord and mailbox links went to VocaHQ channels the fork
does not have, so they are removed and the footer keeps the fork source
link. The footer's personal credit to Jatin K Malik becomes the one upstream
credit, "Vocalinux (upstream, by VocaHQ)". The about copy and the home
provenance card no longer link to upstream.

The Twitter handle, the JSON-LD author fields and the functional upstream
install and release links are unchanged.

Refs #16
xavierk merged commit f0a50fcff6 into main 2026-11-06 14:28:00 +00:00
Sign in to join this conversation.