a06a94ff58
feat: #13 Light/Dark + EN/DE Toggle — Shift-2 Rollout
...
Rollout des Toggle-Patterns auf alle 57 statischen Sites (dasbes.de + dumusst.com sind dynamic, kein index.html).
1. **Bulk-Wiring (53 Sites)** via tools/patch-theme.py:
- Anti-FOUC inline IIFE im <head> (vor erstem Paint)
- <link rel="stylesheet" href="/shared/css/theme.css">
- <script src="/shared/theme.js"> + toggles.js (i18n.js bleibt, hängt sich ans neue Widget)
2. **Per-Site Light-Overrides (14 Sites)** via tools/patch-light-overrides.py:
- 6034, allainallain, commanderkin, hallofraumaier, heygoldi, keinefreun, lexsiebels, machesdocheinfach, matthiasbreier, orakil, osterai, patentonkel, traihard, wartebitte
- Pro Site nur die failing accent-vars darkened (--green-dim, --text-faint, --warm-dim, --gold-dim, etc.)
- AA 4.5:1+ auf white bg gesichert; Brand-Akzent erhalten
3. **data-theme-lock="dark" (4 Sites)** auf <html>:
- kilibri, killusion, killionaer, killuminati
- Aesthetisch dark-only — toggles.js blendet Theme-Button automatisch aus, Lang-Button bleibt
4. **Footer-Toggle Removal (52 Sites)** via tools/remove-footer-toggle.py:
- Bestehende footer [data-i18n-toggle] Buttons entfernt — top-right widget übernimmt
- Disclaimer-Information in tooltip des neuen Buttons + ai-disclosure.js footer
QA:
- ./build.sh: 59/59 sites built clean
- contrast-audit.py --both: 0/59 dark fail, 0/59 light fail
- anti-ai-lint: 0/57 sites flagged
Tools committed (idempotent, für Wiederverwendung):
- tools/patch-theme.py (--all wired alle Sites)
- tools/patch-light-overrides.py (per-site OVERRIDES dict)
- tools/remove-footer-toggle.py (4 Patterns für versch. Footer-Strukturen)
2026-05-08 11:16:15 +02:00
b6d23f6d99
fix : #12 lift sub-WCAG-AA text colors on 33 dark-bg sites
...
Replaces FAIL-level (<3:1) and WEAK (<4.5:1) --text-muted/--text-dim/
--text-faint/--text-dimmer/--accent-dim/--gold-dim values across all
33 affected sites. Targets: text-muted >=4.6:1 (WCAG AA),
text-dim/text-faint >=7:1 (WCAG AAA).
Shared palette pattern (15 sites: deinesei, fragina, ichbinaufbali,
ichbinaufbarley, insain, kainstress, kinowhow, knzlmgmt, kopffrai,
legalais, martinsiebels, schulfrai, smartin3, sorgenfrai, vonschraitter):
--text-muted #44444f -> #7a7a8e (2.06 -> 4.71)
--text-dim #6e6e7a -> #9a9aab (3.93 -> 7.14)
Otto/mai-otto pattern (purple-tinted): #404068 -> #7373bb,
#7070a0 -> #9797d8.
Per-site fixes for kainco, kainefrage, kilitaer (olive), killegal,
killionaer, killuminati, killusion, killions, orakil (warm),
paragraphenraiter (gold), keinefreun, julietensity, billableaua,
allaisonme, allainallain, slopschild — each preserves its tint while
crossing the AA threshold.
Audit before: 31 FAIL, 2 WEAK / 33 sites flagged.
Audit after: 0 FAIL, 0 WEAK / 0 sites flagged.
Adds tools/contrast-audit.py (lifted from /tmp) so future edits can
re-run the regression check from the repo.
2026-05-07 16:48:37 +02:00
e06d4938ce
mAi: #6 - Revive knuth: i18n + AI/KI-Disclosure auf alle Sites
...
Merge mai/knuth/ai-ki-disclosure-footer (3 commits vom 2026-04-01) nach diesem
Branch. Bringt:
- i18n-Annotations (data-de/data-en) + Footer-Toggle auf 54 Custom-Sites
- shared/ai-disclosure.js (3 Tones: playful/serious/minimal, KI/AI nach lang)
- Template-Infrastruktur in render.sh + base.html (title_i18n, sections,
ai-disclosure-Tag mit disclosure_tone)
Konflikt-Auflösung (Issue #6 ):
- shared/impressum.js: main behalten (theme-aware + msbls-alias aus #4 )
- 10 Sites mit Marken-Setup aus #3 + #5 : main's Brand-Konfiguration
behalten, nur knuth's i18n-Annotations und ai-disclosure/i18n-Scripts
übernommen.
- heygoldi, lexsiebels, mai-otto: <script impressum.js data-owner=flexsiebels>
- martinsiebels: <script impressum.js data-owner=martinsiebels>
- 9 Satire (kilibri/kilitaer/killegal/killionaer/killions/killuminati/
killusion/paragraphenraiter/patentonkel): KEIN impressum.js, dafür
statischer onepager-msbls-link Footer.
- billableaua, smartin3, clemensplassmann: main's neuere Prosa/Struktur
behalten (durch #1 , #5 , #7 nachträglich umgeschrieben). Knuth's i18n-
Annotations dort verworfen, da auf altem Text. Toggle/Scripts kommen
trotzdem rein (auto-merged), Re-Annotation später möglich.
QA: ./build.sh -> 59 sites OK. Smoke-Tests heygoldi/kilibri/ichbinotto:
korrekte Brand-Setup, ai-disclosure + i18n.js geladen, Footer-Toggle da.
2026-04-27 20:17:24 +02:00
m
596ccac889
fix: billableaua — 'nicht nur ein Job'
2026-04-02 10:57:42 +02:00
m
d3efd8231f
fix: billableaua — lifestyle threshold at 7.96 (rounds to 8.0)
2026-04-02 10:56:46 +02:00
m
e6d397a77b
fix: billableaua — >= 8h threshold for lifestyle verdict
2026-04-02 10:52:14 +02:00
m
c9f97eb43f
fix: billableaua — center invoice, thresholds 6/7/8, new verdicts
2026-04-02 10:50:59 +02:00
m
8992f6775f
refactor: billableaua — invoice-style layout, lower thresholds
...
Calculation now looks like an invoice with left-aligned labels and
right-aligned values. Verdict thresholds lowered: >8h lifestyle,
>6h warning, >4h "klingt machbar".
2026-04-02 10:47:32 +02:00
m
7702963902
fix: billableaua — 'Minuten mehr an jedem anderen Tag. Jeden.'
2026-04-02 10:45:17 +02:00
m
536e693b18
fix: billableaua — 'Jeden Tag.'
2026-04-02 10:44:54 +02:00
m
6596ac14fa
fix: billableaua — show only delta minutes per missed day
2026-04-02 10:44:27 +02:00
m
cfa491c47e
fix: billableaua — show missed day impact in minutes
2026-04-02 10:42:42 +02:00
m
f7b5439387
feat: billableaua calculator — show impact of missed days
2026-04-02 10:41:57 +02:00
m
327e1fcd43
fix: billableaua calculator default to 1800h
2026-04-02 10:41:05 +02:00
m
6aa3d79d20
feat: billableaua — add line about unbilled office hours
2026-04-02 10:35:56 +02:00
m
3d4dd8c49a
fix: billableaua — sharper line about unbilled work
2026-04-02 10:34:24 +02:00
m
5173611b46
fix: billableaua — rephrase idea line, remove 'ohne Atmen'
2026-04-02 10:30:49 +02:00
m
069a2a3b4a
refactor: billableaua critique — deeper, structural criticism
...
Remove Partnertrack + client-pays items. New focus: the systemic
misalignment between billable hours and actual value creation.
Inefficiency rewarded, creativity happens off-clock, 6-minute
consciousness, innovation as revenue threat.
2026-04-02 10:28:34 +02:00
m
882179d533
refactor: billableaua — remove concrete numbers from intro, move calculator down
...
Intro now focuses on billable hours as the sole KPI metric rather than
specific numbers. Calculator moved below the critique section. Removed
the "8h work = 6.5 billable" item (too specific for the new tone).
2026-04-02 10:23:55 +02:00
m
b4d2ef7991
fix: billableaua calculator — step-by-step breakdown, correct labels
...
Show the full calculation as a written equation:
365 - 52x2=104 Wochenendtage - Urlaub - Feiertage = Arbeitstage.
Fixes "104 Wochenenden" → "52 x 2 = 104 Wochenendtage".
2026-04-02 10:22:39 +02:00
m
9a92d9651f
feat: billableaua.de — add billable hours calculator
...
Interactive calculator: enter annual hours target + vacation days,
shows actual billable hours per working day after subtracting weekends,
vacation, and public holidays. Makes the absurdity of 2400h targets visible.
2026-04-02 10:20:38 +02:00
m
84b28d64f5
feat: AI/KI disclosure footer — shared/ai-disclosure.js + all 54 sites
...
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
2026-04-01 13:26:04 +02:00
m
5c92a7b021
feat: i18n annotations — data-de/data-en + toggle for all 54 custom sites
...
Phase 2 of i18n rollout:
- All 54 static custom sites now have data-de/data-en attributes on
visible text elements with English translations
- i18n.js script tag injected into all sites
- Language toggle button with machine-translation disclaimer added
to every site's footer area
- Brand names / domain wordplay preserved unchanged in both languages
- 2 dynamic sites (dasbes.de, dumusst.com) skipped — no static HTML
2026-04-01 13:19:40 +02:00
m
53cb359f76
feat: add billableaua.de onepager
...
Satirical critique of billable hours in big law firms.
Dark, typographic manifesto style. Anonymous, no impressum.
2026-03-30 15:56:10 +02:00