Skip to content

Legal compliance: privacy policy, self-hosted fonts, consent-clean storage - #6

Merged
TueJon merged 1 commit into
mainfrom
fix/legal-compliance
Jul 24, 2026
Merged

Legal compliance: privacy policy, self-hosted fonts, consent-clean storage#6
TueJon merged 1 commit into
mainfrom
fix/legal-compliance

Conversation

@TueJon

@TueJon TueJon commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Implements the P1/P3/P4 items from the 2026-07-24 legal audit (full findings, official-checklist validation, and draft-text rationale in docs/LEGAL_COMPLIANCE_PLAN.md, included in this PR).

What changed

  • privacy.html (new) — bilingual Datenschutzerklärung per Art. 13 GDPR: controller, nginx server logs at netcup (Art. 6(1)(f), 14-day retention), the wmcp-lang localStorage entry (§ 165(3) TKG 2021), self-hosted fonts, data-subject rights, DSB complaint contact. Linked from every page footer and cross-linked with the imprint.
  • Self-hosted fonts — Familjen Grotesk + Spline Sans Mono (both SIL OFL) now served from /fonts/; all fonts.googleapis.com / fonts.gstatic.com references removed on every page. Removes the only third-country transfer of the site.
  • Consent-clean localStoragewmcp-lang is persisted only on an explicit language choice (toggle click or WebMCP set_language call), no longer on automatic first-load detection. Identical UX.
  • Imprint — address row labelled "Seat & address / Sitz & Anschrift" (§ 14 UGB); privacy cross-link added. (Audit result: the imprint passes every mandatory WKO item for an OG with a kleine Website — no other changes needed.)
  • Accuracy/a11y polish — announceable copy toast, German aria-label + diagram title in DE mode, og:image:alt/twitter:image:alt, llms.txt "byte-identical" → "behaves identically", softened absolute "costs nothing" claim.

Deliberately not in this PR: no cookie banner (correct while nothing non-essential is stored — DSB FAQ), no GA4 (stacked on top as #5 with its consent gate).

Verify

  • python3 build-de.py is idempotent on the committed de/index.html
  • Local serve: /, /de/, /imprint.html, /privacy.html, /fonts/fonts.css all 200; zero external font requests
  • After deploy: curl -s https://webmcpify.at/ | grep -c fonts.g → 0

Findings and full rationale in docs/LEGAL_COMPLIANCE_PLAN.md (audit 2026-07-24):

- Add privacy.html (bilingual, Art. 13 GDPR: server logs, localStorage,
  self-hosted fonts, data-subject rights, DSB complaint contact) and link
  it from every page footer plus the imprint
- Self-host Familjen Grotesk and Spline Sans Mono (SIL OFL) from /fonts/;
  drop the fonts.googleapis.com / fonts.gstatic.com embeds on all pages
- Persist wmcp-lang only on an explicit language choice (toggle click or
  WebMCP set_language call), not on automatic first-load detection
- Imprint: label the address row as seat & address (§14 UGB)
- Accessibility: announceable copy toast, localized toggle aria-label and
  diagram title in German mode, og/twitter image alt texts
- llms.txt: 'byte-identical' -> 'behaves identically' (accuracy)
@TueJon TueJon self-assigned this Jul 24, 2026
@TueJon TueJon added legal Legal/compliance work (Impressum, Datenschutz, consent) documentation Improvements or additions to documentation labels Jul 24, 2026
@TueJon
TueJon merged commit bc77d86 into main Jul 24, 2026
@TueJon
TueJon deleted the fix/legal-compliance branch July 24, 2026 18:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation legal Legal/compliance work (Impressum, Datenschutz, consent)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant