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.
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
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 main2026-11-06 14:28:00 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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 IDG-7NBBNJNNQ7, plus thenext/scriptimport 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.dateModifiedis bumped.googletagmanager,gtagorG-IDs.Footer and site links
hello@vocahq.comare 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.UPSTREAM_REPO_URL./open-source/keeps the upstream name as plain text, so the site has one upstream credit link.X_URL,DISCORD_URLandEMAIL_URLare removed fromweb/src/lib/seo.ts.Tests
web/src/app/__tests__/no-analytics.test.tsscansweb/src,web/publicandnext.config.*byte for byte forgoogletagmanager,google-analytics,gtag(andG-measurement IDs. It fails on the pre-change tree.voculinux-rebrand.test.tsnow 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
Checklist
pytest). Ranpytest tests/test_rename_sweep.pyand the web jest suite; full pytest not run because no Python changed.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.shcommands on the FAQ, install, distro and engine pagesvocagateway.vocahq.comlinks, and the changelog's upstream release historyFollow-ups, not in this PR.
siteandcreatorare@vocahq(layout andbuildPageMetadata).SUPPORT.mdandCONTRIBUTING.mdpoint at VocaHQ Discord, Discussions and issues.web/src/lib/api/util.tscallsproxy.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.web/outcontains nogoogletagmanager,google-analytics,gtag(orG-marker.pytest tests/test_rename_sweep.py: 4 passed.p/defaultandp/owasp-top-tenon the HEAD tree: 0 findings. The first draft of the test had four path-join findings, which were rewritten..jscpd.json: 303 clones and 4.37% duplicated lines, identical to theorigin/mainbaseline.