Files
2026-04-03 11:59:24 +02:00

108 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog
## [Unreleased]
### Changed
- Release-Automation ergänzt: `npm run release:sync`, `npm run release:verify`, `.githooks/pre-commit` und versionsbasiertes Cache-Busting aus `package.json` helldivers-trainer
- Practice- und Match-Flow wirken jetzt deutlich spielerischer mit Deployment-Countdown, Fokusbereich, direkter Feedback-Anzeige und staerkeren Mobile-HUDs
- Stratagem-Icons wurden breit ueberarbeitet und koennen ueber das neue Wiki-Download-Skript einfacher aktualisiert werden
- Admin-Bereich zeigt mehr Nutzer- und Aktivitaetsdaten, inklusive Sessions, letzter Aktivitaet, Passwort-Reset und Rollenpflege
## [2.1.3] 2026-03-31
### Fixed
- **Schwarzes Blob hinter Stratagem-Icon**: `::before` Pseudoelement ohne `position: relative` am Parent positionierte sich falsch und wurde als schwarzer Kreis gerendert — entfernt
- **Tabellen-Spaltenumbrüche**: `stratagem-icon-sm` wieder auf 22px (von 26px) damit Stratagemnamen in der History-Tabelle nicht umbrechen
---
## [2.1.2] 2026-03-31
### Changed
- **Stratagem main icon**: Größer (86→110px, mobil 70→88px), hellerer Gold-Filter mit `drop-shadow` Glow, leuchtender Kreis-Hintergrund für besseren Kontrast
- **Queue preview**: Icons größer (36→44px), Labels wrappen jetzt über 2 Zeilen statt abzuschneiden, Breite von 60→72px pro Item, Abstufung der Opazität (75%/55%/40% statt 70%/45%)
- **Dashboard/Tabellen-Icons** (`-md` und `-sm`): Größer (40→52px / 22→26px), stärkerer Gold-Filter, höhere Opazität (0.85→1 / 0.7→0.9) für bessere Erkennbarkeit
---
## [2.1.1] 2026-03-31
### Fixed
- **Speedrun scores never saved**: Individual scores were blocked by `if (mode !== 'speedrun')` guard; now saved per-stratagem like other modes. Final bulk-save with invalid `__speedrun__` stratagem name removed (was causing 400 errors).
- **Dashboard recent-sessions icons missing**: `r.icon` was always `undefined` since the server doesn't store icon paths in the DB. Now looks up icon from `state.stratagems` by name.
- **Variable shadowing in `renderDashboard`**: Outer `const r = eloRankFor(...)` was shadowed by `recent.map(r => ...)`. Renamed outer to `myRank`.
- **N+1 DB queries in `broadcastLobbyUpdate`**: Was running one `SELECT elo` per online user. Now batches into a single `WHERE username IN (...)` query.
- **N+1 DB queries in dashboard endpoint**: Same pattern fixed for the `/api/dashboard` online-users list.
- **Unnecessary `typeof` guards**: `typeof u === 'object'` checks in lobby/dashboard removed — `lobby-update` always sends objects, never plain strings.
- **Duplicate `else if (mode === 'endless')` branch in `nextStratagem`**: Was identical to the `else` branch below it; merged.
---
## [2.1.0] 2026-03-31
### Added
- **Stratagem icons**: 65 SVG icons downloaded from community icon set, served as static files under `/icons/`; icon download script at `scripts/download-icons.js`
- **Gold CSS filter** on all stratagem icons to match the game's yellow accent theme
- **Session summary modal**: opens after stopping practice or finishing a drill/speedrun — shows score, completed count, accuracy, best time, and top 5 stratagems
- **Queue preview strip**: shows next 3 upcoming stratagems (with icons) below the active stratagem
- **Score popup animation**: floating `+N pts` text appears on every correct completion
- **Shake animation on wrong input**: stratagem icon shakes on incorrect arrow key
- **Icon complete pulse**: stratagem icon scales + brightens when sequence is completed correctly
- **ELO rank icon** in post-match result header (matches rank tier badge)
- **Inline icons** in history table rows, best-per-stratagem table, and leaderboard
- `scripts/download-icons.js` — automated icon fetcher from GitHub community SVG repo
### Changed
- `index.html` fully rewritten: new elements for icon display, queue, score popup, session summary modal
- `app.js` fully rewritten (~1100 lines): icon helpers, queue builder, popup system, session stats, improved match/lobby flows
- `server.js` STRATAGEMS array: all 65 entries now have `icon` field (or `null` for missing ones)
- `broadcastLobbyUpdate()` now sends `[{name, elo, rank}]` objects with CSS-safe rank labels
- `challenge-received` WS event now includes challenger ELO for display in challenge modal
---
## [2.0.0] 2026-03-30
### Added
- **4 Practice modes**: Timed (configurable 15/30/45s, SVG ring timer), Endless (3 lives), Category Drill (progress bar), Speed Run (all stratagems, total time)
- **Settings modal**: timer duration and difficulty (Easy/Normal/Hard) persisted in localStorage
- **History view**: paginated session table with mode/category filters, SVG polyline score chart, best-time-per-stratagem table
- **ELO rating system**: server-side ELO (K=32) calculated after every match; rank tiers PRIVATE → GENERAL
- **Post-match result modal**: ELO delta display (`before → after +N`), round-by-round history
- **Challenge modal**: incoming challenge shows challenger name and ELO; replaces toast notification
- **Dashboard hero card**: ELO rank badge, rank icon, daily sequence preview arrows, mode column in recent sessions
- **Leaderboard tabs**: Practice Score / ELO Rating / Speed Run with correct column headers per tab
- **Mobile hamburger nav**: slide-in drawer with overlay backdrop, Esc key closes modals
- **DB migration**: `elo` column on users, `mode` column on practice_sessions, `stratagem_stats` table
- **Lobby redesign**: ELO + rank shown per player, 2-column layout (Online + Incoming Challenges)
- View fade transitions on every view switch
- Danger vignette flash at ≤5s timer remaining
- Streak fire glow effect (streak ≥ 5), combo multiplier badge (×N, streak ≥ 2)
- Keyboard shortcuts: `Esc` stops practice / closes modals, `Enter` starts practice
- `aria-label` on all D-pad buttons, modals with `role="dialog"` and `aria-modal="true"`
### Changed
- Full CSS redesign (~700 → ~1200 lines): glassmorphism cards, new design tokens, SVG timer ring, skeleton shimmer, animated modals
- Dashboard online list now shows ELO; lobby shows ELO + rank per player
- WS `lobby-update` now sends `[{name, elo, rank}]` objects instead of plain usernames
- WS `challenge-received` now includes challenger ELO
- Practice leaderboard query joined with `users.elo` for rank badge display
---
## [1.0.0] 2026-03-30
### Added
- Initial release
- Session-based auth with admin and user roles (mustChange password flow)
- Admin panel: create/delete users, view temp passwords
- Practice mode: randomized stratagem training with 30s timer, streak scoring
- Category filters for practice mode
- 1v1 mode via WebSocket: challenge system, lobby, real-time match (first to 5 rounds)
- Dashboard: personal stats, daily challenge, online users, recent sessions
- Leaderboard: top-20 by total score, sessions, match win rate
- SQLite database (WAL mode) for users, practice sessions, matches
- Helldivers 2 military UI theme (dark, yellow accents, grid overlay, scanlines)
- Mobile D-pad support
- Arrow key input with correct/wrong animations