feat: comprehensive UI/a11y/i18n fixes and pre-push quality test
CI / CD / test-build (push) Failing after 5m43s
CI / CD / deploy-dev (push) Has been skipped
CI / CD / deploy-production (push) Has been skipped

- Fix ClientWrappers missing 'about' namespace (MISSING_MESSAGE error)
- Add system/light/dark theme toggle with prefers-color-scheme detection
- Rewrite 404 page with i18n, accessibility, and proper navigation
- Rewrite books page with Header/Footer, i18n, and semantic HTML
- Add i18n keys to About, Footer, and both locale files
- Fix dark mode contrast: text-stone-300/600 -> text-stone-400
- Replace raw hex bg-[#fdfcf8] with bg-stone-50 across all components
- Guard console.error in ChatWidget and manage/page behind NODE_ENV
- Add aria-label to admin login form
- Remove emoji from manage page password toggle
- Update stale dates in privacy-policy and legal-notice
- Fix ScrollFadeIn index->delay prop type error in books page
- Fix privacy-policy and legal-notice landmark structure
- Add pre-push-check.test.ts: 13-category static analysis
  (i18n parity, namespace coverage, key resolution, accessibility,
   email validation, hex colors, emojis, console guards, env docs, types)
- Add explicit i18n check step to CI workflow
This commit is contained in:
denshooter
2026-05-14 15:42:52 +02:00
parent 462fde15c7
commit 31560a712f
26 changed files with 905 additions and 285 deletions
+35 -1
View File
@@ -161,6 +161,40 @@
"privacySettings": "Datenschutz-Einstellungen",
"privacySettingsTitle": "Datenschutz-Banner wieder anzeigen",
"builtWith": "Built with",
"aiDisclaimer": "Einige Inhalte dieser Seite können KI-generiert sein."
"aiDisclaimer": "Einige Inhalte dieser Seite können KI-generiert sein.",
"backToTop": "Nach oben",
"systemsOnline": "Systeme online"
},
"notFound": {
"title": "Seite nicht gefunden",
"description": "Der gesuchte Inhalt wurde verschoben, gelöscht oder hat nie existiert.",
"returnHome": "Zurück zur Startseite",
"goBack": "Zurück",
"exploreWork": "Arbeiten entdecken",
"exploreWorkDesc": "Vielleicht findest du, was du suchst, in meinem Projektarchiv?",
"viewProjects": "Projekte ansehen",
"errorReport": "Fehlerbericht"
},
"books": {
"title": "Bibliothek",
"subtitle": "Bücher, die meine Denkweise verändert und mein Wissen erweitert haben.",
"backHome": "Zurück",
"empty": "Noch keine Bücher."
},
"about": {
"status": "Status",
"aiAssistant": "KI-Assistent",
"library": "Bibliothek",
"viewAll": "Alle ansehen",
"myGear": "Mein Gear",
"gearMain": "Main",
"gearPC": "PC",
"gearServer": "Server",
"gearOS": "OS",
"curiosity": "Neugier über die Softwareentwicklung hinaus.",
"connect": "Verbinden",
"email": "E-Mail",
"code": "Code",
"professional": "Beruflich"
}
}
+35 -1
View File
@@ -164,7 +164,41 @@
"privacySettings": "Privacy settings",
"privacySettingsTitle": "Show privacy settings banner again",
"builtWith": "Built with",
"aiDisclaimer": "Some content on this site may be AI-assisted."
"aiDisclaimer": "Some content on this site may be AI-assisted.",
"backToTop": "Back to top",
"systemsOnline": "Systems Online"
},
"notFound": {
"title": "Page not Found",
"description": "The content you are looking for has been moved, deleted, or never existed.",
"returnHome": "Return Home",
"goBack": "Go Back",
"exploreWork": "Explore Work",
"exploreWorkDesc": "Maybe what you need is in my project archive?",
"viewProjects": "View Projects",
"errorReport": "Error Report"
},
"books": {
"title": "Library",
"subtitle": "Books that shaped my mindset and expanded my horizons.",
"backHome": "Back Home",
"empty": "No books yet."
},
"about": {
"status": "Status",
"aiAssistant": "AI Assistant",
"library": "Library",
"viewAll": "View All",
"myGear": "My Gear",
"gearMain": "Main",
"gearPC": "PC",
"gearServer": "Server",
"gearOS": "OS",
"curiosity": "Curiosity beyond software engineering.",
"connect": "Connect",
"email": "Email",
"code": "Code",
"professional": "Professional"
}
}