v0.5.6.5 adds the Mastering Workbench, a new endgame upgrade path for gear. It also overhauls item cards so tooltips, detail panes and equip comparisons are clearer and accurate. Combat presentation improves too: a shield bubble around the player, a full status-effect HUD rail and sharp Woodshed boss sprites. Lightning frames are now cheaper to render and can be turned off in Video options.
Summary
- v0.5.6.5 adds the Mastering Workbench, a new endgame upgrade path for gear. It also overhauls item cards so tooltips, detail panes and equip comparisons are clearer and accurate. Combat presentation improves too: a shield bubble around the player, a full status-effect HUD rail and sharp Woodshed boss sprites. Lightning frames are now cheaper to render and can be turned off in Video options.
Mastering Workbench
- New Mastering tab on the Studio workbench. It unlocks per character once you have cleared Woodshed wave 20 or higher and completed the Studio Act-II transition. A one-time introduction explains it when it unlocks.
- Mastering raises an item through eleven guaranteed tiers. Each tier multiplies the item's flat and percentage stats by a fixed factor, up to 2.83x flat and 5.75x percentage at tier 11.
- Each tier costs Sparks, Parts, one material that matches the item, and Vials. Tier 10 also needs Pure Inspiration. Upgrading several tiers at once shows one combined quote and spends everything in a single transaction.
- Parts costs are a tenth of the original design: 9,625 Parts to go from tier 0 to 10, and 12,650 Parts to reach tier 11.
- Place an inventory or equipped item in the center target slot to see a side-by-side preview of current and mastered stats, including damage and defense. Hover the item art to open the full item preview, both before and after mastering. The note listing stats that Mastering does not change (such as All Skills) sits above the target slot, and those stats are left out of the preview.
- Mastered items show a tier chip on their item card (for example M9/11) and a mastered frame. Mastered stats apply everywhere: equipment totals, item cards and comparisons.
- The advanced inventory pane can be opened while the Mastering tab is active, just like Acclivity Remix.
- Before using Acclivity on a mastered item you are warned that destructive rerolls (bricking or replacement) reset its Mastering with no refund.
- Mastering text uses larger, more readable fonts.
Item Cards
- Item tooltips, detail panes and equip comparisons were rebuilt. Stats are combined by stat type, aliases are merged, and comparisons follow the same slot routing as equipping (accessory A/B and follower slots). This is a display-only change: no gameplay, save or roll changes.
- Cards have rarity-colored frames, a pinned header that stays put while the rest scrolls, compact layout, and a unique icon and color for each stat.
- Item artwork is larger and scales with the header. Damage (weapons) and Defense (other gear) appear as a right-aligned header block with the roll range and the change versus your equipped item.
- Roll ranges for single-source stats are shown inline in light yellow. A Stat Sources section appears only for stats with more than one source, and the Acclivity/Raffle legend appears only when relevant.
- Hold Shift for the item preview; releasing Shift closes it. Hold Ctrl+Shift (or the controller compare chord) to compare against equipped gear. The screen is no longer dimmed behind the preview.
- In comparisons, NEW/LOST badges sit in their own aligned column. Differences are shown only for stats both items share, and LOST rows show the value you would lose.
- The mouse wheel scrolls the inventory list and advanced grid again. Hovering an equipped paper-doll or follower slot still scrolls the description pane.
Lightning Frames
- Epic, Set and Relic item description and preview panes, and the Mastering target slot, have a soft, glowing animated lightning ring that runs all the way around the frame. The whole ring is drawn in one batched pass, removing the frame spikes the earlier lightning caused.
- Animated lightning was removed from paper-doll slots.
- New Video option, Lightning Borders (on by default and saved to your preferences), turns off lightning on the title screen, cinematics, character creation and item frames.
Combat Presentation
- While any shield is active (barrier, Sound Barrier, fusion barriers or Prismatic Shield), the player is wrapped in a soft, reflective cyan bubble. It fades in as shields generate, flashes when it absorbs a hit, and fades out quickly when shields drop. It draws beneath floating equipped items and is wide enough to contain relic VFX, at a cost of about 150 batched quads.
- The status rail above the relic abilities now shows every active status (Slow, Shock, Bleed, Ignite, Freeze, Stun, vulnerabilities, immunities and more). It uses the same orbs drawn above the player's head, each with a radial timer ring. Slots shrink so they never overlap other HUD elements.
- Woodshed wave bosses now render sharply instead of blurry and pixelated. With HD sprites off, a boss loads its HD sprite sheet in the background, shows the standard sheet until it is ready, and unloads sheets that go unused. In both modes bosses are drawn through a sharpening upscale shader.
Fixes
- The Death Metal Skull Collector tooltip no longer says its extra ultimate slots use hotkeys T and Y. Saved copies are updated on load.
- The Character Sheet's Derived Stats table now has an Ability Dmg row. It splits the bonus into gear and other sources (set effects and the Manager's Free Promotion).
- Fixed telemetry validation and profiling benchmark test stalls, and patched audited telemetry and admin dependencies (Undici, Vitest, Vite, Zod, admin Next.js) without major-version upgrades.
Validation
- Full automated test suite passing (2025 tests), including new Mastering coverage: balance, costs, eligibility, progression, transactions, save round-trips, runtime aggregation and docked layout. Also new item presentation tests and video option save tests.
- Solution build completed with zero warnings and zero errors.
- Mastering balance remains subject to tuning based on player feedback.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.5.6.4 is a major enemy combat rebalance. Hostile damage now follows one authoritative scaling chain so enemy hits and items both matter. Dangerous enemy abilities get soft, readable ground telegraphs, so heavy attacks can be avoided instead of feeling like instant deaths. City Streets gets tougher enemies, more aggressive AI, clearer navigation and a stronger boss. This release also adds a new staged character creator, fixes HD enemy sprite clarity, and removes several combat hitches found in live performance captures. The changes have automated test coverage and were tuned over several playtest rounds; balance is still being tuned with player feedback.
Summary
- v0.5.6.4 is a major enemy combat rebalance. Hostile damage now follows one authoritative scaling chain so enemy hits and items both matter. Dangerous enemy abilities get soft, readable ground telegraphs, so heavy attacks can be avoided instead of feeling like instant deaths. City Streets gets tougher enemies, more aggressive AI, clearer navigation and a stronger boss. This release also adds a new staged character creator, fixes HD enemy sprite clarity, and removes several combat hitches found in live performance captures. The changes have automated test coverage and were tuned over several playtest rounds; balance is still being tuned with player feedback.
Enemy Damage Rebalance
- All hostile damage now flows through a single model: a per-level combat unit multiplied by onboarding, Amp, venue, wave and rank factors, then by each attack's ability coefficient. The combat unit is locked in when an enemy spawns, so levelling up mid-fight never buffs enemies already fighting you.
- The Amp hostile damage curve was flattened from up to 35x to 2.55x at Amp 11, so high Amp levels no longer produce runaway one-shots. Converted-ally damage keeps its original curve.
- Baseline enemy damage was raised after playtesting so packs and items feel meaningful at every level.
- Basic ranged projectiles (Rival shots, Swifty heart shots, Zombie strings) hit 2x their base contract.
- Schlock Rocker case explosions are a near-lethal, must-avoid blast, telegraphed on the ground before impact.
- Venue bosses, elites and champions use explicit rank factors instead of stacked legacy multipliers. Backyard bosses no longer get an extra damage halving, and boss basics no longer compound.
- Swifty and Energy Vampire leech heal only from Soul actually removed, never from barrier damage.
- Songwriter exposure is now a 1.25x debuff for 1.5 seconds, with 2 seconds of immunity afterwards.
- Retro Rockstar heals now have a 0.8 second warning, a 4 second channel with four 25% pulses, and a 10 second cooldown.
- The K-pop Diva rainbow beam turns at 75 degrees per second instead of snapping to the player.
Encounter Coordination
- A new encounter coordinator spaces out heavy impacts near the player, allows only one latch or pull at a time with a short grace period, and limits overlapping case explosions.
- Melee attackers are no longer capped, so the player can be surrounded and attacked from every side.
- The ranged-shots-per-second limit was removed.
- Death blasts that land together are grouped into one budget (strongest + 25% of the second + 10% of the third, capped at 1.35x the strongest), so chain deaths can't stack into an unavoidable one-shot.
- Swifties gain a pink heart projectile secondary attack. While one Swifty holds the latch, or the player is out of latch reach, the others fire heart shots. The latch still takes priority whenever it can land.
Ability Telegraphs And VFX
- Enemy special abilities, explosions, auras, AoE attacks and death blasts now show ground telegraphs before they hit.
- All telegraphs are proper ground ellipses that match their hit areas exactly.
- Telegraphs have a soft radial gradient fill, a feathered rim with a subtle shimmer, a glowing impact front that grows toward the hit edge, a thin line marking the exact hit boundary, and a final flash just before impact.
- Telegraph timings were lengthened for readability, including the Energy Vampire, Greedy Executive, Hook Bot, Samurai, Diva, Ninja and Songwriter abilities. Death blasts give a 1 second warning, and Amp never shortens a telegraph.
- Boss telegraphs are cleared the moment the boss dies, and no danger zone is drawn for a dead source.
- Swifty heart projectiles render as outlined pink hearts.
City Streets
- The venue HUD now reads "Areas Cleared: X/9" and "Active Area: <district>", using named districts such as North Side Stripmall, Downtown Center Square and South West Corner District instead of tile file names.
- Once the eight outer areas are cleared, a glowing green arrow above the player points toward Downtown Center Square. It fades out when the first downtown wave begins.
- City Streets wave enemies stay locked on to the player instead of giving up and walking back to their spawn.
- Final downtown waves chase the player's current position instead of clumping where the player stood when the wave started.
- Enemies walk around obstructions instead of stalling behind them, and back out of corners they get wedged in.
- The Music Shop Zombie death explosion and the Greedy Executive cash explosion deal 3x damage.
- Industry Security basic attacks are raised to 4. The Industry Samurai slash is raised to 6 and its basic attack to 3.
- Critics are now a real threat. They attack and then kite instead of hanging back out of their own range. Their pulse range, attack speed, movement speed and damage were increased, and groove drain rises from 8% to 14% per hit.
- The Street Gang Leader boss has 30% more base life and deals 30% more damage with every attack.
Backyard Party
- Charmed allies follow the player through Backyard portals: they are placed around the player inside walkable bounds, then escort the player and seek out enemies.
- After you turn in the Backyard Party quest, Sir Don automatically opens follower selection. Workbench lock messages point players back to it.
- Backyard bosses animate their swings and ability casts smoothly.
HD Sprites And Performance
- HD enemy sprites render at full resolution for every enemy, matching the crisp Swifty sprites, instead of being downscaled and then magnified until they looked blurry.
- Enemy sprite sheets are prewarmed when a venue loads and decoded once instead of twice, removing a large mid-combat stall.
- Changing display mode no longer clears the enemy sprite cache, and a video-memory leak on that path was fixed.
- Toggling HD sprites mid-run shows a Caching Sprites progress overlay that re-caches player and enemy sheets in Options, so combat does not hitch afterwards.
- Converted-fan route planning, the main source of combat hitches and music stutter in Backyard Party, now caches navigation grids and edge walkability per room and warms them in the background. A four-fan burst dropped from about 120 ms to about 0.5 ms.
- World-drop sprite lookups reuse cached asset directory listings instead of probing the disk for every candidate.
- The simulation time step is clamped again, so brief stalls slow the game momentarily instead of snapping entities forward (rubber-banding).
- Converted fans retreat to plausible room exits and fade out at room boundaries, with a stuck guardrail.
Character Creator
- A new staged character creator walks you through four steps: Class, Name, Mode and Review. You can step back at any point and edit any choice from the Review screen before creating the character.
- Class: class cards show each class's role and play style. Drummer (percussion brawler) and Guitarist (directional shredder) are playable; Bassist, Vocalist and Keyboardist are shown as Coming Soon.
- Animated class previews: each class plays a full-kit showcase on a preview stage against target dummies. The previews use the same VFX renderers as gameplay, so they match in-game effects exactly, including Arena Breaker, Encore Slam and Encore Nova, No Tomorrow, Prismatic Cadenza, Wall of Death speakers, Cyclone Solo with its combo-charge meter, and Stagebreaker. Each skill-tree ability is labelled with its tree and unlock level (for example "METAL - LV 18"). Preview controls let you go back, pause, resume, skip to the next ability or replay.
- Starting kit panel: shows each class's core abilities (Drummer: Melee Strike, Drumstick Throw, Groove Slam; Guitarist: Pick Rake, Sustain Beam, Power Chord), starting gear, starting stats and its Metal, Fusion and Punk skill trees.
- Name: live validation with clear messages. Names are 3-16 characters using letters, numbers, spaces, - and _. Leading and trailing spaces are trimmed, and the reserved name "NewSave" is rejected. Controller text entry follows the same rules.
- Mode: choose Standard (unlimited respawns; gear and progress are kept) or One-Take (permanent death, a separate One-Take leaderboard, and x1.15 Hideout card ticket payouts with 2 full-payout runs per day). A clear warning is shown before you commit to One-Take.
- Review: a summary of your class, name and mode, with a name-and-class portrait caption, before you create the character.
- The creator uses themed fonts and a lightning panel border, and supports mouse, keyboard and controller navigation.
- Roadie speaker textures now resolve through the standard asset search paths, like other game art.
Other UI Changes
- Midnight Rave locked rooms keep their starfield; only newly unlocked rooms fade in.
- Status effect icons sit above the relic ability strip.
- Removed the locked-venue planning text from the venue menu.
Validation
- Full automated test suite: 1968 tests passing, including new encounter-coordinator, damage-model, City Streets area-name and character-creator coverage.
- Solution build completed with zero warnings and zero errors.
- Combat hitch fixes were confirmed with a live instrumented Backyard Party capture and isolated probes.
- Balance values come from iterative native playtests and remain subject to tuning based on player feedback.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.5.6.3 improves movement reliability, reduces Rusty Nail portal and floor-rendering work, and makes telemetry capture and persistence more efficient. Telemetry remains consent-gated and bounded. Performance profiling is disabled in the standard production build. Automated tests and isolated telemetry measurements cover the changes; native gameplay performance still needs validation.
Summary
- v0.5.6.3 improves movement reliability, reduces Rusty Nail portal and floor-rendering work, and makes telemetry capture and persistence more efficient. Telemetry remains consent-gated and bounded. Performance profiling is disabled in the standard production build. Automated tests and isolated telemetry measurements cover the changes; native gameplay performance still needs validation.
Telemetry Efficiency And Reliability
- Unchanged build-state observations avoid rebuilding telemetry snapshots; warmed observer checks recorded zero thread allocations across 10,000 iterations.
- Build telemetry copies bounded state at the game-thread boundary and queues snapshot construction and canonicalization to a single background worker. Stale revisions, character sessions, and consent permits are rejected before snapshots are reported or attached to encounters.
- Encounter combat summaries use a four-buffer pool and bounded worker queue so summary construction and performance-window flushing stay off the game thread.
- Telemetry spool appends use bounded batches and one directory accounting pass; each upload batch reuses one sorted file snapshot instead of rescanning for every record.
- An isolated five-minute staging smoke persisted 2,686 events with zero spool-limit drops and 43.4 MB of spool-thread allocation, down from 256.7 MB in the pre-optimization smoke. This measures the isolated spool workload, not frame time or overall game performance.
- Queue, payload, retained-memory, disk, record-count, and retention limits remain bounded. Build snapshots are not reported or linked to encounters until local durable persistence succeeds.
Movement
- Click-to-move and enemy-approach movement are bounded to resolved movement, including blocked destinations and long frames.
- Velocity, footsteps, and movement bonuses follow actual displacement, keeping animation and movement effects consistent across frame rates.
- Added regression coverage for blocked movement, high speeds, long frames, and 30/60/144 FPS-equivalent durations.
- Player sprite-sheet prewarming reuses valid cached sheets instead of invalidating and reloading them.
- Collision-map baking skips a redundant pixel-count pass.
Rusty Nail Portals And Rendering
- Portal anchor and approach data share a per-run cache, with invalidation when collision or room geometry is refreshed.
- Newly unlocked and restored open portals prepare endpoint data outside the render loop.
- Portal rendering culls endpoints against the camera using their visual extents and avoids building prompts for distant endpoints.
- Room-framework fallback checks use cached floor textures rather than loading textures while rendering.
- Rusty Nail floor textures are incrementally prewarmed into the render cache during scene-entry prestaging.
- The Final Approach to Main Stage remains a physical connection.
Validation
- Focused Rusty Nail portal and movement tests passed: 66 tests.
- Telemetry regression tests cover bounded background handoff, cache/pool behavior, and zero-allocation steady-state observers.
- Release solution build completed with zero warnings and zero errors.
- The isolated telemetry smoke and observer allocation checks are not whole-game frame-time acceptance results.
- No native gameplay session, frame-time benchmark, or visual-equivalence capture was performed; smoothness and visual behavior remain for tester validation.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.5.6.2 improves optional telemetry reliability and developer dashboard accuracy. Fully equipped characters can report complete builds without confusing retained-memory estimates with upload size. Telemetry remains consent-gated, bounded, and processed off the game thread for serialization, storage, and networking.
Summary
- v0.5.6.2 improves optional telemetry reliability and developer dashboard accuracy. Fully equipped characters can report complete builds without confusing retained-memory estimates with upload size. Telemetry remains consent-gated, bounded, and processed off the game thread for serialization, storage, and networking.
Build Snapshot Reliability
- Separate retained-memory and encoded-event budgets allow realistic player equipment, follower gear, skills, and substantial Legacy allocations to be captured together without silently truncating them.
- Unchanged permanently rejected builds are no longer reconstructed every frame. Temporarily unavailable effective stats retry on a bounded schedule, or when relevant effective state changes.
- Pending build handoffs retain the same immutable snapshot, timestamp, sequence, and event identity across retries.
- Temporary local storage or spool capacity failures retain bounded pending build work instead of silently dropping it after queue acceptance.
- Encounters reference a build only after local durable persistence. Missing snapshots remain explicit and are never replaced with another character's or a newer build.
- Consent revocation, character switching, shutdown, and the seven-day retry/retention horizon remain respected. Memory-only work cannot survive a process crash, and previously discarded observations cannot be recreated.
Local Telemetry Status
- Privacy Choices now shows capture and local-delivery states, bounded rejection reasons, enrollment status, pending and persisted counts, storage deferrals, accepted batches, and the last batch HTTP status.
- Status text distinguishes remote queue acceptance from database commitment; upload acceptance alone does not prove a dashboard row exists.
- Sharing and deletion choices remain unchanged. No save files, installation identities, consent records, or existing telemetry are reset by this update.
Developer Dashboard
- Economy totals retain resource and source identity, so gains in one material cannot cancel spending in another.
- Build detail requests preserve the selected period and filters, including snapshots older than seven days in the 30-day view.
- Build values are labeled as captured historical state rather than current live player state.
- Installation/character scoping, owner authentication, bounded pagination, and cache protections are preserved.
Profiling And Validation
- Synthetic baseline tests run with production telemetry explicitly disabled; production synthetic-fixture restrictions retain separate coverage.
- Profiler test cleanup restores static state even after configuration failure, preventing synthetic-state contamination of save tests.
- Local validation passed 1,799 normal Release tests, 1,858 profiling Release tests, 71 backend tests, and desktop/mobile dashboard browser coverage.
- A game-generated fixture with 12 player items, six follower items, and 72 Legacy allocations encoded to approximately 25 KiB despite an approximately 141 KiB retained-memory estimate.
- Rejected-build observer checks allocated zero bytes across 100,000 unchanged observations and performed one capture attempt. These are microbenchmark results, not an FPS or first-capture frame-time guarantee.
Windows Installer
- The self-contained Windows x64 installer uses version 0.5.6.2 while preserving the existing upgrade identity and player save locations.
- Native x64 Windows and supported Windows 11 ARM64 x64 emulation remain allowed.
- Production packages require clean, revision-stamped source and exclude profiling instrumentation. The installer remains unsigned unless an Authenticode certificate is configured.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.5.6.1 introduces optional, consent-gated gameplay analytics and crash diagnostics so balance, drop rates, and performance can be tuned from real play sessions. Nothing is uploaded unless you opt in under Options > Privacy. This release also hardens save encryption, fixes boss corpse layering, enforces the Acclivity brick rarity floor, improves controller support for results screens and progression menus, and strengthens Windows packaging.
Summary
- v0.5.6.1 introduces optional, consent-gated gameplay analytics and crash diagnostics so balance, drop rates, and performance can be tuned from real play sessions. Nothing is uploaded unless you opt in under Options > Privacy. This release also hardens save encryption, fixes boss corpse layering, enforces the Acclivity brick rarity floor, improves controller support for results screens and progression menus, and strengthens Windows packaging.
Optional Telemetry
- Two independent choices in Options > Privacy, both off by default: share gameplay analytics and share crash diagnostics. Declining never changes gameplay, saves, rewards, or leaderboards.
- Gameplay analytics are pseudonymous: a random installation identifier and a derived character pseudonym, never character names, save files, passphrases, leaderboard credentials, Windows usernames, or machine names.
- Captured gameplay families: sessions and presence, build snapshots (skill ranks, equipment and stats), progression (fame and levels), economy (gear, relic, set item, material and Song Stone drops, crafting, remixing, salvage, shops and minigames), encounter damage summaries, and one-minute performance windows.
- Crash diagnostics send sanitized managed error fingerprints only; memory dumps and attachments are disabled.
- Events are held in a Windows DPAPI-encrypted local queue bounded to 4,096 events, 20 MiB, and seven days, so offline play or outages never grow storage without limit.
- Serialization, encryption, disk writes, and uploads run on a background worker; the game thread only performs bounded hand-offs.
- Uploads are batched (up to 100 events or 256 KiB, about eight requests per minute) and acknowledged only after the server accepts them, so interrupted uploads retry without data loss.
- Turning a choice off stops collection and discards that category's queued events. "Delete stored telemetry" requests authenticated deletion of previously uploaded records.
- The public privacy page now documents the collected data, processors, 12-month retention, and deletion controls.
Telemetry Reliability Fixes
- Opening the character sheet no longer forces a full build snapshot every frame. Previously this flooded the local queue with thousands of large events per minute, causing real drops such as relics to be discarded once the queue filled.
- The server's JSON complexity limit now scales with the 256 KiB batch size, so batches containing several build snapshots are accepted instead of rejected.
- When the server rejects a multi-event batch, the client now halves the batch and retries within seconds instead of falling back to one event per minute, so backlogs drain promptly and valid events are never dropped alongside an invalid one.
- Spool reads use one sorted snapshot and lock per upload batch, and append accounting uses a single allocation-light directory pass, reducing background allocations about six-fold.
- HTTP 400 responses are classified by a bounded, allow-listed error code for diagnostics without retaining response bodies.
Telemetry Dashboard
- The private developer dashboard's class filter now attributes performance windows, progression, and economy events through their character session, so filtering by class (for example Guitarist) shows the matching runs.
Gameplay And Saves
- Save encryption uses a stable data key with safe recovery, and save writes can no longer be silently lost.
- Save passphrase options are restored, and a defeated boss corpse once again renders behind live actors.
- Acclivity bricks now respect their rarity floor.
- A blocked-position recovery prevents the player from becoming stuck in Woodshed collision pockets after a teleport.
Controller Support
- Woodshed, Pinball, and Hideout Poker results screens are now fully controller-driven: the D-pad moves focus between sort, Submit, and Close buttons with a visible highlight, A activates, and X closes. Previously, leaderboard Submit required a mouse click.
- Leaderboard submission triggers once per press. Holding or repeatedly pressing A cannot send duplicate requests, a failed submission can be retried, and a submitted score cannot be sent again.
- The button press that opens or closes a results screen no longer leaks into gameplay as an attack, interaction, or click on the screen underneath.
- The Legacy Tree link in the skill tree is reachable with the D-pad (press Up from the top row) and opens with A, even when no skill points are unspent.
- LB/RB switch between the character and follower views on the character sheet.
- The Hideout Poker run recap scrolls with LT/RT.
- Controller button prompts now appear on the skill tree, the Legacy link, results screens, the character sheet view toggle, and the Options > Privacy screen.
- Starting a new game from the pause menu now defaults the confirmation to No.
- Keyboard and mouse controls are unchanged.
Windows Packaging
- Production telemetry installers are built only from a clean Git worktree, stamped with the source revision, and exclude all profiling instrumentation.
- The installer remains a self-contained Windows x64 package that preserves the existing upgrade identity and stores saves under local application data.
Verification
- Ordinary Release test suite passed 1,749/1,749 after the controller update (1,734/1,734 at the telemetry release); instrumented profiling suite passed 1,793/1,793; telemetry Worker, schema, and D1 suite passed 71/71 with a clean typecheck.
- A matched 30-minute fixed-seed benchmark (259,200 frames per mode) showed identical gameplay state on every frame with telemetry on versus off. Frame-time median and P95 changed by +2.8% and +2.5%, P99 improved by 0.93 ms, and frames over 25 ms dropped from 274 to 158, all within the release acceptance policy.
- A production drain check after the fixes recorded zero build-snapshot churn, 17/17 batches accepted, and zero HTTP 400 responses.
Known Limitations
- Telemetry is client-reported and pseudonymous; it informs balance and is not authoritative.
- Deletion removes records from the telemetry database; hosting-provider logs and backups expire on their own schedules.
- The installer remains unsigned when no Authenticode certificate is configured.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.5.5.7 is a hardening release focused on save safety, portable Windows packaging, leaderboard resilience, and presentation fixes. Existing character saves remain playable, including safely supported historical character IDs.
Summary
- v0.5.5.7 is a hardening release focused on save safety, portable Windows packaging, leaderboard resilience, and presentation fixes. Existing character saves remain playable, including safely supported historical character IDs.
Saves And Recovery
- Character IDs are validated before they participate in save, backup, journal, delete, and online-identity paths, preserving supported legacy identifiers without allowing unsafe path components.
- Character saves can use a versioned AES-256-GCM envelope derived from the player's passphrase, while plaintext legacy saves remain importable for migration.
- Existing saves can be re-encrypted transactionally when a passphrase is created or changed. Recovery and local key-cache options are documented as lockout prevention, not anti-tamper protection.
- Save writes continue to use atomic replacement, durable flushes, backups, and detached snapshots.
- A defeated boss corpse now renders behind the player and other live actors, preventing the death pose from appearing to float in front of the player.
Windows Packaging
- The release package is a self-contained Windows x64 Release publish and includes the required .NET runtime and native Raylib dependency, so players do not need a global .NET installation.
- The packaging pipeline stages a fresh versioned publish directory, validates required runtime/content files, and writes a SHA-256 content manifest and build stamp.
- The installer preserves the existing upgrade identity and stores saves separately under the user's local application data.
- The distributed installer is unsigned when no external Authenticode signing certificate is configured.
Global Leaderboards And API
- Run start and finish payloads now validate boards, classes, modes, seasons, scores, durations, game versions, and request sizes without imposing an artificial low score ceiling.
- Client-reported leaderboard results remain explicitly unverified. Server authentication, timestamps, idempotency, rate limits, and moderation reduce abuse but do not prove locally simulated gameplay was honest.
- Leaderboard deduplication is scoped to the character identity and ranking dimensions instead of only board, score, and duration.
- Public standings exclude hidden submissions and revoked identities. Pagination uses structured base64url cursors for stable tied-score traversal.
- Rate-limit increments use an atomic D1 operation. A protected operator moderation path records hide, reinstate, and identity-revocation actions in the audit table.
- Online submission remains optional and can be disabled server-side without disabling offline play.
Website And Release Delivery
- The website now advertises the v0.5.5.7 Windows installer and documents optional, pseudonymous, client-reported leaderboard submissions.
- Static website builds verify their security headers and externalize generated Next.js hydration scripts so strict `script-src 'self'` policies do not blank the page after refresh.
- Dropbox-hosted gameplay videos are allowed through the narrowly scoped media policy.
- Release checks use bounded retry behavior and do not create a title-screen network loop.
Verification
- Release solution build passed with zero errors and zero warnings.
- Filtered Game.Tests suite passed 1,440 tests.
- Self-contained win-x64 publish passed with a generated content manifest and build stamp.
- Local API migration, validation, pagination, moderation, and concurrent rate-limit smoke tests passed.
- Website export passed all 240 static routes, CSP verification, and production-output browser checks for refresh, representative routes, mobile navigation, and embedded video readiness.
Known Limitations
- Leaderboard credentials remain in the existing local identity-file format; separate OS credential storage is deferred.
- Client-reported scores are not cheat-proof or authoritative.
- Clean-machine Windows installation, code signing, and some staging/production operational rehearsals remain environment-specific checks.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.5.5.6 refines procedural-venue presentation and corrects the Platinum Encore CD music path. City Streets and Midnight Rave now reveal rooms against the starfield without leaking unrevealed tile art, while door and edge treatment follows connected-room state.
Summary
- v0.5.5.6 refines procedural-venue presentation and corrects the Platinum Encore CD music path. City Streets and Midnight Rave now reveal rooms against the starfield without leaking unrevealed tile art, while door and edge treatment follows connected-room state.
Venue Fog And Reveals
- Unrevealed City Streets and Midnight Rave room tiles are no longer rendered over the starfield backdrop.
- Newly unlocked tiles fade in locally over three seconds. The prior full-screen fog overlay/breakup pass was removed, eliminating reveal flashes outside the unlocked tile.
- City Streets unlocked tile edges now retain feathered transparency when they face an outer boundary or a locked neighbor. A shared edge becomes fully continuous only after its adjacent tile unlocks.
- Midnight Rave door visibility now follows shared-door geometry and active-room progression: paths from the current uncleared room remain visible, while doors do not appear in unrevealed destination tiles.
- Standard venue-door blocking, combat reclosure, and clear-to-invisible transition behavior remain unchanged.
Starfield
- PNG space artifacts and generated galaxies now use subtle authored-orientation variation ($-18^\circ$ to $+18^\circ$) instead of full-turn random rotations. Dust wisps retain their existing broader rotation range.
Audio
- Platinum Encore now resolves to `music/cd_platinum_encore.ogg`.
- New relic drops, migration defaults, and existing saved Platinum Encore CDs on activation all use the shipped track rather than the obsolete `cd_platinum_encore_default.ogg` path.
Version And Packaging
- `Game/Game.csproj`: Version, AssemblyVersion, and FileVersion are `0.5.5.6`.
- `CygnalARPG.iss`: installer version, output filename, and staging directory are `0.5.5.6` / `C:\cygstage\cyg0556`.
- `build_and_package.ps1`: staging directory is `C:\cygstage\cyg0556`.
- `Game/Core/OnlineLeaderboardClient.cs`: leaderboard submissions identify as `0.5.5.6`.
- `Website/api/src/site-data.ts` and `Website/web/src/lib/site-config.ts`: currentVersion is `0.5.5.6`.
- Website installer download now points to `CygnalARPGSetup_v0.5.5.6.exe` on Dropbox.
Verification
- Release solution build: zero errors and zero warnings.
- Focused fog presentation tests: 10 passed.
- Focused venue-door presentation tests: 15 passed.
- Focused venue texture-fade tests: passed.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.5.5.3 is a leaderboard correctness and website rankings release. It fixes minigame Global submit-button UI parity, corrects two leaderboard data bugs (run-mode mis-bucketing and shared player identity), cleans up one known-bad production row, and reworks the website's Woodshed rankings table with aligned columns, a Timestamp column, sortable headers, and a true per-mode top-100 cap.
Summary
- v0.5.5.3 is a leaderboard correctness and website rankings release. It fixes minigame Global submit-button UI parity, corrects two leaderboard data bugs (run-mode mis-bucketing and shared player identity), cleans up one known-bad production row, and reworks the website's Woodshed rankings table with aligned columns, a Timestamp column, sortable headers, and a true per-mode top-100 cap.
Minigame Leaderboard UI Parity
- Pinball's "Submit to Global" button now renders inline, right-anchored to the "Score:" row, instead of overlapping the bottom of the results panel.
- Poker's "Submit to Global" button is bottom-anchored inside the recap modal with a real reserved footer band, so it no longer overlaps the "Perks Selected" list on long recaps.
- Both buttons now grey out and read "Score Submitted!" after a successful submission, matching Woodshed's existing behavior.
- Pinball and Poker click hit-testing now reuse the exact same layout rects (`GameplayUiLayout.GetPinballSubmitButtonRect`, `GetHideoutCardRecapSubmitButtonRect`) as their rendering code, fixing a pre-existing 20px hitbox/visual mismatch on Pinball and preventing future drift on both.
Leaderboard Data Correctness
- Fixed Woodshed leaderboard submissions silently mis-bucketing One Take runs into the Standard table: the submitted `mode` token is now built as an explicit `"one-take"`/`"standard"` literal instead of `CharacterRunMode.ToString().ToLowerInvariant()`, which produced `"onetake"` (no hyphen) and never matched the website's category filter.
- Fixed the cached anonymous leaderboard identity (player token + display name) being shared machine-wide across every local character. It is now keyed per `CharacterId`, so each character registers and submits under its own name.
- One known-bad production `best_standings` row (a Drummer One Take run mis-attributed to a different character's identity, with the mode typo above) was split onto its own identity and corrected directly in the remote D1 database as a one-time data cleanup.
Website Rankings (`/leaderboards`)
- Standard and One Take Mode tables now share one fixed-width column set rendered via `<colgroup>`, so columns stay pixel-aligned between the two tables regardless of each table's own content widths.
- Added a Timestamp column after Amp, showing the local date/time a score was submitted.
- Level, Wave, Time, Class, and Amp column headers are now click-to-sort buttons; every sort's tie-break chain resolves Amp desc, then Wave desc, matching the "Amp outranks Wave" ranking rule. The default/initial table order follows the same rule.
- Each table is capped to the top 100 rows after sorting.
- The leaderboards API gained an additive `modeCategory` query parameter (`bs.mode LIKE '<category>|%'`) so the frontend can fetch a true top-100 per run-mode category; a single unfiltered, score-ordered fetch could otherwise starve one category if the other dominated the score range.
Version and Packaging
- `Game/Game.csproj`: Version, AssemblyVersion, and FileVersion are `0.5.5.3`.
- `CygnalARPG.iss`: installer version and output filename are `0.5.5.3`; packaging staging directory is `C:\cygstage\cyg0553` in both the build script and installer script.
- `Game/Core/OnlineLeaderboardClient.cs`: the `gameVersion` literal sent with score submissions is `0.5.5.3`.
- `Website/api/src/site-data.ts` and `Website/web/src/lib/site-config.ts`: `currentVersion` is `0.5.5.3`. The Windows installer download link intentionally still points at the live `v0.5.5.2` executable until a new installer is built and uploaded.
- Live README, project-state, architecture, engine-overview, player-wiki, and mirrored AI/design documentation identify v0.5.5.3.
Verification
- Full solution build: Release, zero errors and zero warnings (re-verified after the version bump).
- `Website/api` and `Website/web`: `npx tsc --noEmit` clean (zero errors) after the leaderboards page/API rework.
- `git diff --stat` / `--numstat` checked after each change set; no touched file showed net line shrinkage.
- Both Cloudflare Workers (`cygnal-api-production`, `cygnal-web-production`) were redeployed and confirmed live.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.5.5.2 is a Legacy correctness and combat-performance release. It completes the executable Crowd mechanics, tightens follower and cadence boundaries, centralizes localized secondary damage, and replaces cleanup-time Supernova inference with an injectable synchronous lethal-effect contract.
Summary
- v0.5.5.2 is a Legacy correctness and combat-performance release. It completes the executable Crowd mechanics, tightens follower and cadence boundaries, centralizes localized secondary damage, and replaces cleanup-time Supernova inference with an injectable synchronous lethal-effect contract.
Legacy Combat Corrections
- Groupie Surge now captures converted-fan movement and contact-damage scaling when a fan begins its exit.
- Converted fans deal one swept contact hit per crossed enemy at 50% average weapon damage before Groupie scaling.
- Headliner grants 3% outgoing damage per active converted fan, capped at 30%, to eligible player and attributed item/set sources.
- Crowd Wave and Headliner expiry explosions use spatial candidate queries and centralized secondary damage.
- Guitarist Power Chord preserves one nonzero cast identity across every cone target, so Punk Voltage triggers once per cast.
- Jam Session now improves at every rank, triggering after 10, 8, or 6 successful casts at ranks 1, 2, or 3.
- Metal Inferno coalesces nearby zero-ID requests within its burst window and enforces limits of 8 grounds per owner and 24 globally.
- Amplifier Overload triggers every fifth eligible direct player hit without an undocumented cooldown and deals exactly 150% current average weapon damage.
- Backstage Recovery begins only after four seconds without a qualifying combat action.
- Merch Table Armor damage reduction is now included in the character sheet through the same multiplicative calculation used by combat.
Supernova Lethal Contract
- `PlayerAttackContext` now carries explicit elemental and lethal-trigger metadata through direct attacks and ordinary projectiles.
- Central damage detects the exact positive-to-zero Soul transition and emits a stack-only `EnemyLethalDamage` receipt.
- `World.EnemyLethalEffectSink` is injectable for focused tests and future lethal effects; the default singleton implements Supernova.
- Supernova is host/single-player authoritative, uses `EnemySpatialGrid`, and resolves damage through the centralized secondary-damage gateway.
- DoTs, followers, converted fans, clones, replays, environmental damage, non-elemental attacks, and suppressed callbacks cannot trigger Supernova.
- Item, relic, CD, and set effects remain opt-in and must provide an explicit element with callbacks enabled.
- Supernova damage is callback-suppressed, so explosion kills cannot recursively create more Supernovas.
- Cleanup no longer reconstructs a killing source from corpse statuses, and `Slow` is never interpreted as Frost.
Followers
- Crew Resilience scales only follower Max Soul, Defense, and follower-owned damage.
- Bouncer Amp You Up and Manager Promotion power are no longer inflated by Crew Resilience.
- Rank 20 still provides the authored 50% follower durability and damage increase.
Performance and Bounded State
- Converted-fan updates reuse an instance-owned entity-ID buffer instead of allocating a key list every frame.
- Wall of Death pruning reuses world-owned scratch storage instead of allocating `Keys.ToArray()`.
- Ability capability resolution no longer allocates lowercase source-ID strings on hit paths.
- Localized Crowd, Headliner, Amplifier, Metal Inferno, and Supernova work uses bounded state or spatial queries.
- Supernova adds no persistent per-enemy attribution component or lifecycle cleanup burden. Nonlethal hits perform only primitive transition and bitmask checks; sink dispatch and spatial work occur only on eligible deaths.
Version and Packaging
- `Game/Game.csproj`: Version, AssemblyVersion, and FileVersion are `0.5.5.2`.
- `CygnalARPG.iss`: installer version and output filename are `0.5.5.2`.
- Packaging staging directory is `C:\cygstage\cyg0552` in both the build script and installer script.
- Live README, project-state, architecture, engine-overview, player-wiki, and mirrored AI/design documentation identify v0.5.5.2.
Verification
- Full solution build: Release, zero errors and zero warnings.
- Full solution tests: 1,082 passed, 0 failed.
- Focused Supernova lethal-contract tests: 6 passed, 0 failed.
- Focused Legacy, follower, Crowd, Guitarist, and registry regression tests passed.
- `git diff --check` and staged diff checks are clean.
- Protected large-file line counts show no unexpected truncation.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.5.5.1 completes the runtime implementation of the six-tree Legacy progression system and consolidates follower combat statistics behind a shared snapshot calculator. The release replaces scattered rank checks and visual-only placeholders with validated contracts, cached typed values, authoritative combat events, semantic attack attribution, real skill replay, deterministic elemental procs, multiplayer-safe state ownership, and focused regression coverage.
Summary
- v0.5.5.1 completes the runtime implementation of the six-tree Legacy progression system and consolidates follower combat statistics behind a shared snapshot calculator.
- The release replaces scattered rank checks and visual-only placeholders with validated contracts, cached typed values, authoritative combat events, semantic attack attribution, real skill replay, deterministic elemental procs, multiplayer-safe state ownership, and focused regression coverage.
Highlights
- Completed all 77 Legacy node contracts across Resonance, Crowd, Elemental, Groove, Speed, and Aura.
- Added a revisioned `LegacyEffectSnapshot` cache with clamped rank reads and contract validation.
- Added semantic attack tags and cast-instance attribution for class-neutral skill behavior.
- Added ordinary projectile context propagation so delayed impacts preserve source and recursion rules.
- Added callback-free Dual Encore and Jam Session skill replay for both released classes.
- Unified Bouncer, Roadie, and Manager combat-stat derivation through a pure follower snapshot calculator.
- Expanded behavior-level regression coverage for Legacy combat, follower snapshots, and registry integrity.
Legacy Registry and Caching
- `LegacyEffectRegistry` is the canonical definition for all 77 nodes, including branch, rank cap, effect kind, trigger, and output channels.
- `LegacyRankReader` clamps finite ranks and applies diminishing returns to infinite-pool ranks.
- `LegacyProgressionData` maintains a per-world revision counter and rebuilds its cached effect snapshot only when ranks change.
- Save loading and rank mutation paths invalidate the snapshot correctly.
- Runtime systems consume typed snapshot values instead of rebuilding formulas or reading raw ranks on hot paths.
Attack Attribution and Combat
- `PlayerAttackContext` now carries source kind, semantic ability tags, cast ID, callback suppression, resource suppression, and typed-damage state.
- Semantic tags cover primary attacks, skills, area effects, Core Slams, Metal, Fusion, Punk, and single-target attacks.
- Drummer Groove Slam and Guitarist Power Chord share Core Slam behavior.
- Ordinary projectile entities preserve their originating attack context through impact resolution.
- Delayed and secondary attacks suppress callbacks where required to prevent recursive hit, proc, resource, and replay chains.
- Wall of Death tracks unique targets by cast ID, retroactively applies its threshold bonus to earlier targets, and empowers later targets in the same cast.
Resonance
- Harmonic Amplifier, Overdrive, Resonant Strike, Crescendo, Feedback Loop, Solo Act, Dual Encore, and Amplifier Overload use the centralized contract values.
- Dual Encore now triggers from a successful skill cast instead of CD activation.
- Dual Encore replays the actual triggering skill at 60% effectiveness with no Groove cost, cooldown, combo consumption, or recursive cast callback.
- Amplifier Overload uses centralized cadence, damage, and radius values.
Crowd
- Opening Act, Fan Frenzy, Mosh Pit Protocol, Stage Dive, Crowd Wave, Groupie Surge, Encore Demand, Headliner, Festival Grounds, and Wall of Death are integrated with authoritative runtime events.
- Encore Demand grants stored free casts after each five conversions and scales additional charges by rank.
- Festival Grounds modifies area radius, conversion range, and single-target damage through semantic attack capabilities.
- Crowd Control movement and stun effects exclude allied converts and use the authoritative player-damage path.
Elemental
- Fire, Frost, and Lightning proc rolls now create gameplay effects instead of VFX-only overlays.
- Pyrotechnics applies Ignite; Frost Monitor applies Chill/Freeze; Live Wire applies Shock and chain damage.
- Arc Flash adds 3% Shock damage per rank and one chain target per four ranks.
- Metal Inferno creates three-second burning ground from Metal skill impacts.
- Fusion Cryogenics applies extra Chill every third basic-projectile hit.
- Punk Voltage triggers chain Shock from Core Slam impacts.
- Supernova adds 50% elemental proc damage and retains elemental death explosions.
- The Conductor receives real elemental proc events for its four-second Tri-Force window.
- Elemental Encore can add one random secondary elemental proc without recursive re-triggering.
- Perfect Combustion preserves its DoT critical-strike path without entering discrete-hit proc chains.
Groove and Speed
- Rhythm Section, Soul Riff, Bass Drop, Time Signature, Sustain Pedal, Breakdown, Jam Session, Infinite Set, Power Ballad, and Flow State use centralized values and event ownership.
- Jam Session counts successful skill casts and replays the strongest learned assignable skill every tenth cast.
- Free-cast previews do not consume Encore Demand charges; only successful casts consume them.
- Quick Set, Stage Sprint, Double Time, Adrenaline Rush, Hit & Run, Blitz, Flurry, Hyperspeed, Berserker's Tempo, and Grand Finale are integrated across both released classes.
- Hit & Run grants its authored 0.5-second movement burst at 20% movement speed after a moving primary hit.
- Flurry counts both melee and projectile primary hits and marks generated projectiles so they cannot advance their own counter.
Aura and Survivability
- Stage Presence, Thick Skin, Sound Barrier, Reverb, Backstage Recovery, Crowd Control, Crew Resilience, Iron Curtain, Phoenix Encore, and Battle Hymn use shared runtime state and snapshot values.
- Sound Barrier refills on the exact update its recharge timer expires and is included in HUD/network barrier totals.
- Iron Curtain applies incoming/outgoing modifiers and a cooldown-gated lethal clamp.
- Phoenix Encore revives with invulnerability and a temporary damage increase.
- Battle Hymn owns periodic healing and damage-buff timing.
Followers
- Added `FollowerStatCalculator` as the shared pure calculation boundary for Bouncer, Roadie, and Manager.
- Follower snapshots combine archetype base values, equipment modifiers, Legacy bonuses, and temporary buffs.
- Crew Resilience and follower-specific equipment values are applied consistently across all archetypes.
- Added regression tests for snapshot calculations and class-specific follower behavior.
Multiplayer and Lifecycle Safety
- Host-authoritative damage, conversion, death, and scene transitions own stateful Legacy effects.
- Barrier totals include temporary and Legacy Sound Barrier values in network snapshots.
- Scene cleanup resets transient barriers, cast tracking, burning ground, and queued replay state.
- Replay casts use separate negative cast IDs and cannot overwrite singleton ultimate state.
Version and Packaging
- `Game/Game.csproj`: Version, AssemblyVersion, and FileVersion are `0.5.5.1`.
- `CygnalARPG.iss`: installer version and output filename are `0.5.5.1`.
- Packaging staging directory is `C:\cygstage\cyg0551` in both the build script and installer script.
- Live README, project-state, architecture, engine-overview, and player-wiki documentation now identify v0.5.5.1.
Verification
- Full solution build: Release, zero errors and zero warnings.
- Full solution tests: Release, passing.
- Legacy combat regression suite: 59 passed, 0 failed.
- Registry and follower snapshot tests: passing.
- `git diff --check`: clean.
- Protected networking file size check: no unexpected shrinkage.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
v0.4.4.6 is a major gameplay, systems, and presentation update focused on the Legacy Set Item ecosystem, runtime set mechanics, drop-table correctness, compatibility/migration safety, and HUD/world readability polish. This cut also includes a targeted Deferred Damage Union mechanics fix so shielded damage interactions are fully supported.
Summary
- v0.4.4.6 is a major gameplay, systems, and presentation update focused on the Legacy Set Item ecosystem, runtime set mechanics, drop-table correctness, compatibility/migration safety, and HUD/world readability polish.
- This cut also includes a targeted Deferred Damage Union mechanics fix so shielded damage interactions are fully supported.
Highlights
- Implemented and integrated the authored set-item runtime system end-to-end.
- Added canonical set catalog coverage for 8 sets / 24 pieces.
- Expanded set mechanics runtime behavior and safeguards across combat loops.
- Added/updated set drop paths and parity logic with relic-tier event chances.
- Improved item migration and save-load normalization for legacy set data.
- Added broad test coverage for set runtime, factories, migration, and UI layout behavior.
- Extended world/HUD readability for set cues, indicators, and effects.
Deferred Damage Union Fix (Shield Compatibility)
- Root issue: deferred damage intake was evaluated after barrier/shield absorption in player hit resolution.
- Fix: deferred intake now evaluates before barrier absorption, allowing shielded hits to still accrue deferred debt.
- Result: Deferred Damage Union bonuses remain effective in typical shield-heavy builds.
- Added regression coverage for both Drummer and Guitarist class paths.
Drop Table and Legacy Set Cleanup
- Removed obsolete non-authored legacy set-rarity generation from generic roll paths.
- Preserved canonical authored set-piece drop paths (`IsSetItem + SetId + SetPieceId`).
- Added load-time migration normalization for obsolete legacy green set items.
- Ensured converted legacy items persist through save dirty-marking on load.
Versioning Updates
- `Game/Game.csproj`
- - `<Version>`: `0.4.4.6`
- - `<AssemblyVersion>`: `0.4.4.6`
- - `<FileVersion>`: `0.4.4.6`
- `CygnalARPG.iss`
- - `MyAppVersion`: `0.4.4.6`
- - `OutputBaseFilename`: `CygnalARPGSetup_v0.4.4.6`
Verification
- Release build: success.
- Release tests: passing.
- Focused set/runtime regression tests: passing.
Notes
- This release notes file summarizes the full staged change window since the previous commit and is intended to accompany the source-control commit for v0.4.4.6.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
Itemization correctness
- Added a typed item-stat registry covering canonical labels, units, valid equipment slots, legacy aliases, and runtime consumers.
- Made Bonus Damage apply globally and exactly once to player melee and projectile damage ranges.
- Corrected Critical Strike Damage to add in multiplier space, including Solo Act interactions.
- Separated flat Soul Reserve from percentage Max Soul and applied both through one authoritative Max Soul formula.
- Canonicalized Projectile Lightning Damage and Additional Projectiles naming and runtime aggregation.
- Corrected Single Stroke Engine to grant deterministic +100 projectile lightning damage and a total six-to-eight projectile fan.
- Replaced unsupported placeholder authoring labels with supported thematic stats and added exhaustive authored-template validation.
- Updated character-sheet and tooltip presentation to use canonical stat labels and units.
Combat attribution and relic behavior
- Added allocation-free player attack source contexts for basic attacks, skills, ultimates, relics, legendary powers, CD effects, damage-over-time effects, and clones.
- Added monotonic cast-instance IDs and propagated them through Ricochet, Stagebreaker, Cyclone Solo, No Tomorrow, Groove Cascade, and Arena Breaker delayed damage.
- Removed unattributed player damage resolution so every production hit now declares its source.
- Centralized player-applied status routing to prevent duplicate relic notifications.
- Corrected source-sensitive behavior for Echo Abbey, Cathedral Reverb, Iron Parish War Snare, Backline Overdrive, Riot Alley Stompers, Double Kick Legs, Backline Railpants, and Skull Collector.
- Preserved borrowed relic activation through Acclivity carriers and documented runtime/reset ownership for all 27 relics.
CD modifiers and follower relics
- Completed OverDrive Mode with +20% effective attack cadence, +15% non-ultimate assignable-skill cooldown recovery, and +25% direct player-hit damage.
- Added machine-readable activation, mutation, cleanup, and cooldown ownership contracts for every active CD modifier.
- Added one authoritative registry for all eight follower relic abilities, including generation type, display text, and runtime handler ownership.
Legendary powers and saves
- Persisted legendary power IDs independently of item rarity so Legendary items promoted to Epic retain their original powers.
- Prevented Set-to-Epic items and unknown persisted IDs from receiving accidental BaseId legendary powers.
- Added evidence-based inference for compatible old Epic saves without granting powers from BaseId alone.
- Persisted Skull Collector bonus-slot selections across save/load and equip transitions.
- Added idempotent migration for legacy stat aliases, flat Max Soul, deprecated placeholders, Single Stroke rolls, and the Royal Albert and Skull Collector legacy Power rolls.
- Kept new save fields default-compatible and left the multiplayer damage packet format unchanged.
Validation
- Release solution build: 0 warnings, 0 errors.
- Full automated test suite: 385 passed, 0 failed, 0 skipped.
- Added focused regression and ownership coverage for item stats, migration, attack attribution, relic behavior, OverDrive, legendary persistence, Skull Collector, CD modifiers, and follower relic abilities.
Packaging
- Updated executable Version, AssemblyVersion, and FileVersion to 0.4.4.3.
- Updated Inno Setup metadata and output filename to `CygnalARPGSetup_v0.4.4.3.exe`.
- Updated installer staging to `C:\cygstage\cyg0443`.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes
Release Scope
- This release captures all pending repository changes accumulated since the last push to `origin/main`, including gameplay systems, progression/UI, rendering/VFX, assets, persistence data, and content pipelines.
- Base commit before this release: `fe20449`
- Change footprint: 37 tracked files changed
- Diff stats: 18,976 insertions and 1,255 deletions
High-Level Summary
- v0.3.6 is a broad gameplay and rendering consolidation release with significant workflow and content updates:
- 1. Progression, state, and account systems were expanded.
- 2. Equipment and workbench logic received major implementation growth.
- 3. Loot/material definitions and icon assets were extended.
- 4. Combat and projectile handling were revised.
- 5. Rendering and venue-facing UI passes were updated, including grounded actor-shadow improvements for player and bosses.
- 6. Save/rankings data and test profile snapshots were refreshed.
- 7. Pinball collision-map assets were replaced and updated.
Live Runtime Addendum (May 14, 2026)
- This section reflects the currently validated gameplay surface beyond the original release cut summary.
- Studio hub with Sir Don progression and venue/minigame access
- Rusty Nail and City Streets campaign venues
- Backyard Party authored venue chain with room transitions, wave gates, and boss stage
- Midnight Rave connected-room progression with additional anti-softlock door/progression guards
- Woodshed endless arena with dedicated HUD and exit warp flow
- Pinball and Poker side activities integrated into progression/rankings UI
- Global rankings persistence across characters for Woodshed ladder, Pinball high score, and Poker high score
- Rankings UI tabs and Woodshed sorting controls
- Pinball interaction/render/runtime flow fully wired from Studio world interaction to scoring panel
- Backyard Party retreat-resume safeguards for wave continuity and safer non-city spawn resolution
- Acclivity and relic expansion runtime state actively integrated into current data/runtime paths
- Character-specific progression remains in Game/saves/*.json
- Cross-character rankings persist in Game/saves/global/rankings.json
- Legacy Woodshed leaderboard compatibility path remains in place for migration safety
Detailed Changes By Area
- Added new systems/state models:
- - `Game/Core/AcclivitySystem.cs` (new)
- - `Game/Core/RelicExpansionRuntimeState.cs` (new)
- Updated progression and core state orchestration:
- - `Game/Core/CharacterProgression.cs`
- - `Game/Core/GameState.cs`
- - `Game/Core/World.cs`
- Updated app boot/system registration and runtime flow wiring:
- - `Game/Core/GameApp.cs`
- Expanded gameplay catalogs:
- - `Game/Core/MaterialCatalog.cs`
- - `Game/Core/RelicCatalog.cs`
- Updated player combat ability implementation:
- - `Game/Core/PlayerSkills.cs`
- Extended loot component modeling:
- - `Game/Entities/Components/LootComponents.cs`
- Updated loot-generation/collection logic:
- - `Game/Systems/LootSystems.cs`
- Expanded equipment handling:
- - `Game/Systems/EquipmentSystem.cs`
- Major workbench implementation pass:
- - `Game/Systems/WorkbenchSystem.cs`
- Added new material icon assets:
- - `Game/assets/sprites/items/icons/materials/acclivity_shard.png`
- - `Game/assets/sprites/items/icons/materials/song_stone_fusion.png`
- - `Game/assets/sprites/items/icons/materials/song_stone_metal.png`
- - `Game/assets/sprites/items/icons/materials/song_stone_punk.png`
- Updated combat resolution and damage application:
- - `Game/Systems/CombatResolver.cs`
- Updated lifecycle and death/cleanup flow:
- - `Game/Systems/CleanupSystem.cs`
- Updated projectile behavior and handling:
- - `Game/Systems/ProjectileSystem.cs`
- Updated player movement/melee execution:
- - `Game/Systems/PlayerMoveAndMeleeSystem.cs`
- Updated relic systems:
- - `Game/Systems/RelicEffectSystem.cs`
- - `Game/Systems/RelicCloneSystem.cs`
- Updated progression surface logic and UI integration:
- - `Game/Systems/ProgressionUiSystem.cs`
- Updated studio NPC behavior:
- - `Game/Systems/StudioNpcSystem.cs`
- Updated hideout card game integration:
- - `Game/Systems/HideoutCardGameSystem.cs`
- Updated woodshed wave flow:
- - `Game/Systems/WoodshedWaveSystem.cs`
- Updated input mappings/handling:
- - `Game/Systems/InputSystem.cs`
- Updated asset support bindings and sprite resolution:
- - `Game/Systems/RenderSystem.AssetSupport.cs`
- Updated detailed panel and UI rendering paths:
- - `Game/Systems/RenderSystem.Details.cs`
- - `Game/Systems/RenderSystem.Inventory.cs`
- - `Game/Systems/RenderSystem.Hud.cs`
- - `Game/Systems/RenderSystem.Progression.cs`
- Updated venue and world rendering passes:
- - `Game/Systems/RenderSystem.Venue.cs`
- - `Game/Systems/RenderSystem.World.cs`
- - `Game/Systems/RenderSystem.cs`
- Updated pinball render pass:
- - `Game/Systems/RenderSystem.Pinball.cs`
- Implemented layered soft-shadow rendering support.
- Added dynamic shadow evaluation by runtime state for actor classes.
- Tuned player shadows for tighter foot contact and reduced float illusion.
- Applied equivalent grounding and directional-drift constraints for boss shadows.
- Updated save serialization/load handling:
- - `Game/Systems/SaveSystem.cs`
- Updated local save data snapshots:
- - `Game/saves/Ultimate_Tester.json`
- - `Game/saves/global/rankings.json`
- Replaced legacy pinball collision map:
- - Deleted: `Game/assets/tiles/pinball_collision_map_current_896x1536.png`
- Updated active collision map:
- - Modified: `Game/assets/tiles/pinball_collision_map_current_948x1659.png`
- Added additional collision-map copy:
- - `Game/assets/tiles/pinball_collision_map_current_948x1659 - Copy.png`
Versioning
- Project version has been incremented in `Game/Game.csproj`:
- `Version`: `0.3.5` -> `0.3.6`
- `AssemblyVersion`: `0.3.5.0` -> `0.3.6.0`
- `FileVersion`: `0.3.5.0` -> `0.3.6.0`
Complete Changed File Manifest
- `Game/Core/CharacterProgression.cs`
- `Game/Core/GameApp.cs`
- `Game/Core/GameState.cs`
- `Game/Core/MaterialCatalog.cs`
- `Game/Core/PlayerSkills.cs`
- `Game/Core/RelicCatalog.cs`
- `Game/Core/World.cs`
- `Game/Entities/Components/LootComponents.cs`
- `Game/Systems/CleanupSystem.cs`
- `Game/Systems/CombatResolver.cs`
- `Game/Systems/EquipmentSystem.cs`
- `Game/Systems/HideoutCardGameSystem.cs`
- `Game/Systems/InputSystem.cs`
- `Game/Systems/LootSystems.cs`
- `Game/Systems/PinballGameSystem.cs`
- `Game/Systems/PlayerMoveAndMeleeSystem.cs`
- `Game/Systems/ProgressionUiSystem.cs`
- `Game/Systems/ProjectileSystem.cs`
- `Game/Systems/RelicCloneSystem.cs`
- `Game/Systems/RelicEffectSystem.cs`
- `Game/Systems/RenderSystem.AssetSupport.cs`
- `Game/Systems/RenderSystem.Details.cs`
- `Game/Systems/RenderSystem.Hud.cs`
- `Game/Systems/RenderSystem.Inventory.cs`
- `Game/Systems/RenderSystem.Pinball.cs`
- `Game/Systems/RenderSystem.Progression.cs`
- `Game/Systems/RenderSystem.Venue.cs`
- `Game/Systems/RenderSystem.World.cs`
- `Game/Systems/RenderSystem.cs`
- `Game/Systems/SaveSystem.cs`
- `Game/Systems/StudioNpcSystem.cs`
- `Game/Systems/WoodshedWaveSystem.cs`
- `Game/Systems/WorkbenchSystem.cs`
- `Game/assets/tiles/pinball_collision_map_current_948x1659.png`
- `Game/saves/Ultimate_Tester.json`
- `Game/saves/global/rankings.json`
- `Game/Core/AcclivitySystem.cs`
- `Game/Core/RelicExpansionRuntimeState.cs`
- `Game/assets/sprites/items/icons/materials/acclivity_shard.png`
- `Game/assets/sprites/items/icons/materials/song_stone_fusion.png`
- `Game/assets/sprites/items/icons/materials/song_stone_metal.png`
- `Game/assets/sprites/items/icons/materials/song_stone_punk.png`
- `Game/assets/tiles/pinball_collision_map_current_948x1659 - Copy.png`
- `Game/assets/tiles/pinball_collision_map_current_896x1536.png`
- ---
Runtime Alignment Note (2026-07-01)
- This release note remains a valid historical record for the v0.3.6 cut, but the live project has advanced substantially beyond that version.
- Project version when this follow-up note was written: `0.4.4.1` (`Game/Game.csproj`)
- Target framework: `.NET 8` (`net8.0`)
- Save schema: `2` (`SaveSystem.CurrentSchemaVersion`)
- Multiplayer protocol: `NetProtocol 3.0` (`MajorVersion=3`, `MinorVersion=0`)
- Active world scenes are `StudioHideout`, `Venue`, and `Woodshed`.
- Top-level flow screens include title/loading, save/load/new-game flow, character creation, cinematic playback, gameplay, and multiplayer lobby/host/join states.
- Global rankings continue to track Woodshed, Pinball, and Poker records in `.../saves/global/rankings.json`.
- Use `README.md` and `PROJECT_STATE.md` as primary current-state references.
- Treat this file as versioned historical context for the v0.3.6 milestone.
Source commits for this release
- 684bce1 Publish v0.5.6.5 installer and release notes