Strukturelle Folge aus Marken-Klärung (msbls = Marke unter flexsiebels-Umbrella,
Rechtsträger ist flexsiebels):
- shared/impressum.js: default owner ist jetzt flexsiebels; owners.msbls als
Legacy-Alias auf owners.flexsiebels (backward-compat). Header-Doku aktualisiert.
- heygoldi.de: Script-Tag auf data-owner="flexsiebels" data-variant="full".
- 9 Satire-Sites: Impressum-Script raus, statischer "Ein Projekt von msbls.de"-
Link im Footer (color:inherit, dezent).
Sites: patentonkel, paragraphenraiter, killuminati, kilitaer, killions,
killusion, killegal, killionaer, kilibri.
Build: ./build.sh -> 59 sites OK. Andere Overlay-Sites (ichbinotto, lexsiebels,
mai-otto, smartin3, martinsiebels, zensiebels) unverändert.
Closes via done-label: m/onepager#5
- Trigger: <a>-Link mit identischer CSS-Hülle wie die inline-minimal-
Variante (text-align:center; font-size:0.75rem; opacity:0.6;
padding:12px 0; margin-top:4px). Kein Footer-Layout-Shift mehr,
Höhe und Breite identisch zu vorher.
- Karte: nutzt --bg-card / --text / --accent / --border / --radius /
--font-primary vom Host (shared/css/variables.css) — Dark-Fallbacks
neutral. Auf hellen Themes greifen die CSS-Vars, auf Sites ohne
Variablen bleibt es dezent dunkel.
- max-width: min(420px, calc(100vw - 32px)) + box-sizing:border-box
+ overflow-wrap:break-word — Karte kann Viewport nie sprengen,
auch nicht bei langen unbreakable strings.
- Body-scroll-lock während Overlay offen ist; vorheriger overflow-
Wert wird beim Schließen restauriert.
- shared/impressum.js: Name korrigiert (msbls/flexsiebels = Matthias Siebels, nicht Martin),
echte Adresse aus youpc.org übernommen (c/o Online-Impressum.de #5892, Sankt Augustin).
Neuer Owner 'flexsiebels', neuer Owner 'martinsiebels' (für Martin als separate Person
mit eigener Adresse in Osnabrück). data-variant als offizielles Attribut, data-style
weiterhin als Legacy-Alias. Rendert in #impressum falls vorhanden, sonst footer.
- paragraphenraiter.de: hardcoded "Ein Projekt von Matthias Flexsiebels" → shared (msbls minimal)
- patentonkel.de: hardcoded "Matthias Flexsiebels" + kaputter window.__impressum() → shared (msbls minimal)
- smartin3.de: inline Impressum-Text → shared (martinsiebels full) in #impressum Div
- ichbinotto.de: shared (flexsiebels full) mit echter § 5 TMG-Angabe
Caddyfile: Regenerierung hat fehlende Einträge für 6034.de, traihard.de, zensiebels.de ergänzt.
Refs: #3
Self-injecting script following impressum.js pattern:
- data-tone attribute: playful | serious | minimal | none
- Reads document.documentElement.lang for KI (de) vs AI (en)
- MutationObserver on lang attr for i18n toggle compat
- All tones link to msbls.de/ki
- Injected into all 54 custom sites with data-tone="playful"
- Template infra: base.html includes script, render.sh reads disclosure.tone
- disclosure.tone added to 3 example site.yaml files
Implements m/onepager#2
Add shared/i18n.js: client-side language detection snippet.
- Detects browser language via navigator.language
- Falls back to German, stores preference in localStorage
- Swaps text via data-de/data-en attributes on any element
- Handles <title>, <meta>, and regular elements
- Optional toggle button via data-i18n-toggle attribute
- Exposes window.onepagerI18n API for programmatic use
Pilot implementation on ichbinotto.de:
- All visible text annotated with data-de/data-en
- Language toggle button in footer
- Title and meta description translated
Implements Gitea issue #1 (pilot phase).
- shared/impressum.js: configurable via data-owner and data-style attrs
- Default: minimal msbls.de attribution for satire sites
- Build now copies shared/ to build output
- Caddyfile serves /shared/* globally across all domains
- Removed martinsiebels.de references from 7 KI-satire sites