Files
helldivers/CHANGELOG.md
T

91 lines
5.8 KiB
Markdown
Raw Normal View History

# Changelog helldivers-trainer
## [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%)
---
## [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