6 Commits
Author SHA1 Message Date
ferdi2goandClaude Opus 4.8 836d0eeda5 chore: unify name to "Meeting Mixer", README tech stack, name magic numbers (#16)
- Canonical name "Meeting Mixer" everywhere: <title>, README, .vch-description
  (now non-technical per convention) and package.json (meeting-mixer).
- README gains a Tech-Stack section and an accurate, non-misleading port note.
- Magic numbers replaced by named constants: LOW_PRIORITY_PENALTY in
  algorithm.js; MIN/MAX_MODERATORS_PER_DAY in utils.js, used by data.js,
  calendar.js and app.js.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 13:44:45 +00:00
ferdi2goandClaude Opus 4.8 0efb9cb853 perf(state/assets): debounce saveState, defer SheetJS script (#11)
- saveState is now debounced (~400ms) to coalesce rapid changes; a pending
  write is flushed on beforeunload and on visibilitychange→hidden so the last
  change is never lost.
- The SheetJS <script> gets defer so it no longer blocks initial parse; the
  typeof XLSX guard already covers any not-yet-available case.

Verified headless: app loads without JS/CSP errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 12:54:41 +00:00
ferdi2goandClaude Opus 4.8 f8efcf136a fix(security): add SRI to SheetJS CDN + Content-Security-Policy (#6)
- SheetJS <script> now carries a sha384 integrity hash and crossorigin so a
  compromised/MITM'd CDN cannot inject code.
- Adds a CSP meta: default-src 'self'; script-src limited to self +
  cdn.sheetjs.com; style-src self + Google Fonts (+inline for app styles);
  font-src gstatic; object-src 'none'; base-uri 'self'.

Verified headless against localhost: no CSP violations, SheetJS loads with
a valid integrity digest, app.js renders normally.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 12:33:34 +00:00
ferdi2goandClaude Opus 4.7 e4ae866375 chore: ui polish — extract inline styles to CSS classes, add header art
- Move inline style.cssText to semantic classes (cal-legend, cal-header-cell,
  cal-day-tag-label, cal-btn-row) in calendar.js
- Buttons "FT"/"BU" → "Feiertag"/"Betriebsurl." for clarity
- Decorative turntable/mixer SVG header art in index.html
- style.css build-out for the new classes
- Initial README content
- Dev port 3000 → 3001

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 09:43:53 +00:00
Ferdinand 3240f78904 fix: add type=button to tab buttons to prevent accidental form submit 2026-04-08 10:42:22 +02:00
Ferdinand f306c634d5 feat: project scaffold with tabs, styles and package.json 2026-04-08 10:40:32 +02:00