Changelog - v1.7.0 - Forge & Foresight
A content and quality update built around the Forge (Epic equipment rarity + Blacksmith upgrades), Weapon Disciplines (Phase 2 of the discipline system), a new Snooze & Reopen flow for events, and a deep auth/performance/admin refactor pass — plus a long list of polish and bug fixes.
Epic Equipment & The Forge
- New Epic rarity for market weapons with its own quality profile, drop pool and combat effects
- Epic items highlighted in the sidebar/inventory; equipment now sorted by rarity
- Dedicated DD Epic asset cache with an onError fallback chain for missing artwork
- Shared
_shared/itemDefinitions.tsas the single source of truth for both market generators - Heavy Axe renamed to Falcata; Victory Wreath image fixed
- New Blacksmith Upgrade Panel — spend gold to upgrade items into a higher rarity tier
Weapon Disciplines — Disciplines Phase 2
- Weapon-specific discipline trees with their own passives
- New combat handlers: Opening Cut, Killer Rhythm, Riposte Instinct, Arena Executioner, Arena Return Bonus, Last Stand, Icon of Ludus, and Arena Composure (QTE)
- Shared damage-pool helper, tactical damage pool, and tactical-aggression gating for cleaner round resolution
- Auto-combat path now correctly reads discipline fields; defender path emits RLP and achievement events
- New Discipline Tutorial with modal trigger and corrected z-index / click-flow targeting
- Player respec RPC hardened with server-side ownership and budget validation
Events — Snooze & Reopen
- New Snooze & Reopen flow lets you defer events instead of losing them on auto-deny
- Polished event display logic, unified effect previews
- Trigger evaluator bug fixed (no more silent auto-ignore on the "Patent" branch)
- Gold-cost events surface "insufficient funds" cleanly on the server side
Performance & Caching
- SWR-style cache patch across the data layer; auth caching layers refactored
- Roster fetches coalesced — fewer duplicated round-trips on initial load
- New
withTimeouthelper for robust edge-function calls - Heartbeat system for roster freshness (code path ready, default off)
- Reduced diagnostic logging, discipline snapshot cache, targeted cache invalidations
- Auth flow hardened: login redirect bug fixed; empty-cache returns no longer mask real errors
Admin Backend
- Slimmed-down Messages overview: pagination + system-generated threads hidden — admin-authored threads only, ~1374 → 50 per page, backed by an aggregated DB view
- Replay filter UI in the Replay Manager
- Sound Studio and Achievement Manager polish
UI / UX Polish
- Tooltip cards made click-permeable; popover→modal conversions where overlap was a problem
- Discipline modal: outside-click close + z-index layering fixed
- Subtle glow effects for buttons/menus, smoother modal close animation
- Updated default background; asset images now render immediately (no pop-in)
- New Help / Wiki link in the sidebar
- Fame icon replaces Trophy icon where semantically correct
Bug Fixes
- Gladiator portrait reset now restores the original market portrait instead of jumping to a random hash fallback (new
original_avatar_urlcolumn + backfill, applied for starter and purchased gladiators) - Ludus name duplication ("House House Of …") cleaned up in the database — one-time correction for affected accounts
- Market duplicates: 18-instead-of-9 race condition fully eliminated
- Milestone self-heal bug fixed (missed milestones now reapply on page load)
- Prestige cap UI bug, Invest button dialog, Respec z-index, tutorial overlay targets all corrected
- Opponent HP in replays initialized correctly; opponent avatar fixed in fight history
- Champion healing corrected; injury & bleeding-hazard calculation hardened
- RPC token collision fix prevents stale tokens from overwriting newer ones

