Releases: joeblack2k/RetroSaveManager
Releases · joeblack2k/RetroSaveManager
Release list
RetroSaveManager v0.1.12
RetroSaveManager v0.1.12
Highlights
- Hardened
AUTH_MODE=enabledso non-public routes require authentication. - Added opt-in
TRUST_REMOTE_USER_HEADER=truesupport for deployments behind a trusted reverse proxy. - Fixed helper auth rebinding for devices whose app-password binding points at stale device IDs.
- Fixed GBA/RetroDECK libretro saves that omit standalone mGBA signature footers.
- Fixed Game Boy
.rtcsidecar validation for libretro real-time-clock saves. - Fixed N64 Controller Pak uploads with blank note slots.
- Fixed false-positive rejection of real numbered game titles such as
007 - .... - Deduplicated quarantine records by payload SHA-256 to stop repeated rejected uploads growing without bound.
- Corrected
Defenders of Oasisfrom Genesis/Mega Drive to Game Gear. - Updated frontend lockfile dependencies so
npm audit --audit-level=moderateis green.
Operator Note
After upgrading from a release before v0.1.12, run a one-time save rescan if you have existing saves:
docker compose run --rm retrosavemanager rescan-savesThis reapplies current system detection and corrects existing Defenders of Oasis metadata to Game Gear.
Container Images
ghcr.io/joeblack2k/retrosavemanager:v0.1.12ghcr.io/joeblack2k/retrosavemanager:sha-22793a18a1d825ab331db7dc9817ce81bc67b11e
Source
- Commit:
22793a18a1d825ab331db7dc9817ce81bc67b11e
RetroSaveManager v0.1.11
Release Notes
v0.1.11 - 2026-04-25
Included
- Settings page cleanup:
- removed duplicate API/auth/user/storage summary noise from the main settings view
- made Game Support Modules the primary settings control
- replaced the wide technical module table with compact module cards
- moved fixed helper key management into a collapsed
Helper keyspanel - moved local
.rsmodule.zipuploads into a collapsed advanced panel
- Settings visual refresh:
- tighter dark layout aligned with the cleaner
My Savesand save detail direction - lower information density for non-essential technical fields
- clearer sync and refresh actions for runtime modules
- tighter dark layout aligned with the cleaner
Validation Summary
- Full frontend test suite passed locally
- Frontend production build passed locally
- Security gate passed locally
v0.1.10 - 2026-04-25
Included
- Runtime game support modules:
- added GitHub-backed
.rsmodule.zipbundles undermodules/ - modules use sandboxed WASM plus declarative YAML, so new parser-backed details and cheats can be added without rebuilding Docker
- module sync now validates bundle paths, file sizes, manifests, WASM ABI exports, and cheat-pack schemas before activation
- added GitHub-backed
- New module-backed parser/cheat coverage:
- Game Boy / Game Boy Color:
Donkey Kong Country,Pokemon Red/Blue/Yellow,Super Mario Bros. Deluxe, andWario Land II - Game Boy Advance:
Wario Land 4 - Nintendo 64:
Banjo-Kazooie,Banjo-Tooie,Wave Race 64, andYoshi's Story - Nintendo DS:
New Super Mario Bros. - Neo Geo:
Double DragonandMetal Slug 5 - PlayStation:
Castlevania: Symphony of the Night - PlayStation 2:
Burnout 3: TakedownandMortal Kombat Shaolin Monks - Sega Saturn:
Quake - Super Nintendo:
Super Mario World - Nintendo Wii:
Super Mario Galaxy 2
- Game Boy / Game Boy Color:
- Logical-save module bridges:
- PlayStation and PlayStation 2 cheat modules can target extracted logical saves instead of full memory-card images
- Sega Saturn modules can target extracted backup-RAM entries, including YabaSanshiro-style images
- module-backed cheat applies still create a new current save version and preserve existing history
- Save details and My Saves integration:
- save summaries now expose module-backed cheat capabilities after module sync/rescan
- save detail pages can render semantic module fields such as progress, lives, stage, inventory, or verified save facts
- Codebase cleanup:
- split the runtime module backend into focused files for import, GitHub library sync, WASM runner, inspection, cheat packs, and adapter bridging
- added contributor-facing comments around the module security model and WASM boundary
Deploy Notes
- Existing servers should run
POST /api/modules/syncafter updating so the runtime imports the new GitHub module library. - Run
POST /api/modules/rescanafter sync to enrich existing saves with module semantic fields and cheat capabilities.
Validation Summary
- Cheat pack validation passed locally
- Full backend test suite passed locally
- Full frontend test suite passed locally
- Frontend production build passed locally
- Security gate passed locally
- Live Docker deploy on the internal Docker host imported
19active modules with0module sync errors
v0.1.9 - 2026-04-25
Included
- Helper service mode backend support:
- added
POST /helpers/heartbeatfor daemon health, sensors, config snapshots, and last-sync counters - added
POST /devices/{id}/commandto publishsync.requested,scan.requested, anddeep_scan.requestedover the existing SSE stream - device records now expose service freshness, config hashes, folder counts, and helper sync stats
- added
- Backend-managed helper configuration:
- Devices can now store backend-managed
configSourcesandconfigGlobalpolicy - backend-managed sources survive future helper config syncs and are returned in
policy.sources[] - config edits publish
config.changedso always-on helpers can reload and write backconfig.ini
- Devices can now store backend-managed
- Devices UI upgrade:
- Devices now shows daemon status, heartbeat timing, reconcile interval, last event, last error, sensors, and quick commands
- Manage Device can add console/runtime/profile folders before a helper has discovered saves for that console
- Helper contract documentation:
- added
backend.mdas the canonical helper backend/service/config contract - updated
api.mdwith heartbeat, command, config source, and global policy fields
- added
- Sega scope alignment:
- added supported system slugs and strict raw-save validation coverage for
sega-cdandsega-32x
- added supported system slugs and strict raw-save validation coverage for
Validation Summary
- Full backend test suite passed locally
- Full frontend test suite passed locally
- Frontend production build passed locally
- Security gate passed locally
v0.1.8 - 2026-04-24
Included
- Cross-ROM duplicate cleanup for visible save tracks:
- identical payloads under the same canonieke game/region track are now treated as the same save even when helper ROM hashes differ
- upload idempotency now catches those cross-ROM duplicates before writing a new version
/saves, save detail history, and the agent summary API now count unique payload hashes per visible track
- Live cleanup support:
- rescan duplicate cleanup now removes redundant generic save records by visible track + SHA, not only by ROM hash + slot
- explicit rollback audit versions remain preserved and still count as intentional history
Validation Summary
- Targeted duplicate/canonical-track tests passed locally
- Full backend test suite passed locally
- Security gate passed locally
v0.1.7 - 2026-04-24
Included
- Save upload idempotency:
- generic save ingest now suppresses exact-latest duplicate uploads on the same canonical save line
- historical duplicate uploads now return a stale conflict instead of creating a new version
- duplicate/stale handling is enforced server-side instead of trusting helpers
- PlayStation and N64 logical duplicate suppression:
- PlayStation logical ingest now checks the full logical revision history, not only the latest revision
- N64 controller-pak logical ingest now checks the full logical revision history too
- identical projection payload rebuilds no longer create duplicate projection save records
- Duplicate cleanup during rescan:
- rescan now collapses redundant generic, PlayStation, and N64 duplicate history
- oldest duplicates survive by default, while current latest state is preserved when needed to avoid rolling cloud truth backward
- rollback-created audit versions remain exempt from cleanup
- rescan reporting now includes duplicate group and removed-version counts
Validation Summary
- Backend duplicate/idempotency regression tests passed locally
- Full backend test suite passed locally
v0.1.6 - 2026-04-24
Included
- Unified runtime-profile handling:
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
runtimeProfile - backward-compatible aliases such as
n64ProfileandsaturnFormatstill map into the shared runtime-profile contract - placeholder runtime-profile rows are rejected before they can pollute the save dataset
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
- Runtime-aware web downloads:
My Savesand save detail downloads now open a runtime/profile selector first- backend save responses expose
downloadProfiles[]so the web UI only offers compatible targets - non-converted saves still show
Original fileas a safe fallback choice
- Nintendo 64 controller pak sync:
- added parser-backed controller pak ingest and projection handling for N64
- controller pak entries are extracted into logical save tracks instead of being treated as opaque whole-pak blobs
- N64 projection downloads now stay aligned with the requested runtime profile
- Cheat pack management:
- added managed cheat-pack storage plus create, enable, disable, delete, and adapter-catalog API endpoints
- added a web
Cheatspage for publishing YAML packs and reviewing adapter capabilities - agent/API consumers can now inspect cheat adapters and managed packs directly
- Save validation tightening:
- weak raw-save placeholder titles are rejected or cleaned up before listing
- title alias cleanup preserves real saves while removing noisy placeholder-style rows
- PlayStation helper
save/latestruntime-profile enforcement is scoped to the projection flows that actually require it
Validation Summary
- Backend test suite passed locally
- Frontend test suite passed locally
- Frontend production build passed locally
v0.1.5 - 2026-04-23
Included
- Nintendo 64 cross-runtime projection:
- helpers now upload their real local N64 save format
- backend normalizes N64 uploads into canonical media truth
- helper latest/download flows now project back to the explicitly requested target runtime
- supported target profiles in tranche 1:
n64/mistern64/retroarchn64/project64n64/mupen-familyn64/everdrive
- Strict N64 helper contract:
- N64 helper requests now require
n64Profile - missing
n64Profilefails clearly for helper upload, latest, and download paths - new helper contract documented in
n64update.md
- N64 helper requests now require
- Diddy Kong Racing cheat support:
- added parser-backed
dkr-eepromcheat editor - curated
Diddy Kong Racingcheat pack included - safe slot-based editing with checksum rebuild
- added parser-backed
- N64 cheat audit coverage:
- added repository-backed N64 cheat inventory tests
- added supporting N64 cheat audit and intake docs
Validation Summary
- Backend test suite passed locally
- Security gate passed locally
- Live Docker deploy updated and smoke-checked successfully
v0.1.4 - 2026-04-23
Included
- Safe cheat editing v1:
- parser-backed cheat read/apply endpoints at
/save/cheatsand/save/cheats/apply - every cheat apply creates a new current save version instead of mutating history in place
- loc...
- parser-backed cheat read/apply endpoints at
RetroSaveManager v0.1.10
Release Notes
v0.1.10 - 2026-04-25
Included
- Runtime game support modules:
- added GitHub-backed
.rsmodule.zipbundles undermodules/ - modules use sandboxed WASM plus declarative YAML, so new parser-backed details and cheats can be added without rebuilding Docker
- module sync now validates bundle paths, file sizes, manifests, WASM ABI exports, and cheat-pack schemas before activation
- added GitHub-backed
- New module-backed parser/cheat coverage:
- Game Boy / Game Boy Color:
Donkey Kong Country,Pokemon Red/Blue/Yellow,Super Mario Bros. Deluxe, andWario Land II - Game Boy Advance:
Wario Land 4 - Nintendo 64:
Banjo-Kazooie,Banjo-Tooie,Wave Race 64, andYoshi's Story - Nintendo DS:
New Super Mario Bros. - Neo Geo:
Double DragonandMetal Slug 5 - PlayStation:
Castlevania: Symphony of the Night - PlayStation 2:
Burnout 3: TakedownandMortal Kombat Shaolin Monks - Sega Saturn:
Quake - Super Nintendo:
Super Mario World - Nintendo Wii:
Super Mario Galaxy 2
- Game Boy / Game Boy Color:
- Logical-save module bridges:
- PlayStation and PlayStation 2 cheat modules can target extracted logical saves instead of full memory-card images
- Sega Saturn modules can target extracted backup-RAM entries, including YabaSanshiro-style images
- module-backed cheat applies still create a new current save version and preserve existing history
- Save details and My Saves integration:
- save summaries now expose module-backed cheat capabilities after module sync/rescan
- save detail pages can render semantic module fields such as progress, lives, stage, inventory, or verified save facts
- Codebase cleanup:
- split the runtime module backend into focused files for import, GitHub library sync, WASM runner, inspection, cheat packs, and adapter bridging
- added contributor-facing comments around the module security model and WASM boundary
Deploy Notes
- Existing servers should run
POST /api/modules/syncafter updating so the runtime imports the new GitHub module library. - Run
POST /api/modules/rescanafter sync to enrich existing saves with module semantic fields and cheat capabilities.
Validation Summary
- Cheat pack validation passed locally
- Full backend test suite passed locally
- Full frontend test suite passed locally
- Frontend production build passed locally
- Security gate passed locally
- Live Docker deploy on the internal Docker host imported
19active modules with0module sync errors
v0.1.9 - 2026-04-25
Included
- Helper service mode backend support:
- added
POST /helpers/heartbeatfor daemon health, sensors, config snapshots, and last-sync counters - added
POST /devices/{id}/commandto publishsync.requested,scan.requested, anddeep_scan.requestedover the existing SSE stream - device records now expose service freshness, config hashes, folder counts, and helper sync stats
- added
- Backend-managed helper configuration:
- Devices can now store backend-managed
configSourcesandconfigGlobalpolicy - backend-managed sources survive future helper config syncs and are returned in
policy.sources[] - config edits publish
config.changedso always-on helpers can reload and write backconfig.ini
- Devices can now store backend-managed
- Devices UI upgrade:
- Devices now shows daemon status, heartbeat timing, reconcile interval, last event, last error, sensors, and quick commands
- Manage Device can add console/runtime/profile folders before a helper has discovered saves for that console
- Helper contract documentation:
- added
backend.mdas the canonical helper backend/service/config contract - updated
api.mdwith heartbeat, command, config source, and global policy fields
- added
- Sega scope alignment:
- added supported system slugs and strict raw-save validation coverage for
sega-cdandsega-32x
- added supported system slugs and strict raw-save validation coverage for
Validation Summary
- Full backend test suite passed locally
- Full frontend test suite passed locally
- Frontend production build passed locally
- Security gate passed locally
v0.1.8 - 2026-04-24
Included
- Cross-ROM duplicate cleanup for visible save tracks:
- identical payloads under the same canonieke game/region track are now treated as the same save even when helper ROM hashes differ
- upload idempotency now catches those cross-ROM duplicates before writing a new version
/saves, save detail history, and the agent summary API now count unique payload hashes per visible track
- Live cleanup support:
- rescan duplicate cleanup now removes redundant generic save records by visible track + SHA, not only by ROM hash + slot
- explicit rollback audit versions remain preserved and still count as intentional history
Validation Summary
- Targeted duplicate/canonical-track tests passed locally
- Full backend test suite passed locally
- Security gate passed locally
v0.1.7 - 2026-04-24
Included
- Save upload idempotency:
- generic save ingest now suppresses exact-latest duplicate uploads on the same canonical save line
- historical duplicate uploads now return a stale conflict instead of creating a new version
- duplicate/stale handling is enforced server-side instead of trusting helpers
- PlayStation and N64 logical duplicate suppression:
- PlayStation logical ingest now checks the full logical revision history, not only the latest revision
- N64 controller-pak logical ingest now checks the full logical revision history too
- identical projection payload rebuilds no longer create duplicate projection save records
- Duplicate cleanup during rescan:
- rescan now collapses redundant generic, PlayStation, and N64 duplicate history
- oldest duplicates survive by default, while current latest state is preserved when needed to avoid rolling cloud truth backward
- rollback-created audit versions remain exempt from cleanup
- rescan reporting now includes duplicate group and removed-version counts
Validation Summary
- Backend duplicate/idempotency regression tests passed locally
- Full backend test suite passed locally
v0.1.6 - 2026-04-24
Included
- Unified runtime-profile handling:
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
runtimeProfile - backward-compatible aliases such as
n64ProfileandsaturnFormatstill map into the shared runtime-profile contract - placeholder runtime-profile rows are rejected before they can pollute the save dataset
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
- Runtime-aware web downloads:
My Savesand save detail downloads now open a runtime/profile selector first- backend save responses expose
downloadProfiles[]so the web UI only offers compatible targets - non-converted saves still show
Original fileas a safe fallback choice
- Nintendo 64 controller pak sync:
- added parser-backed controller pak ingest and projection handling for N64
- controller pak entries are extracted into logical save tracks instead of being treated as opaque whole-pak blobs
- N64 projection downloads now stay aligned with the requested runtime profile
- Cheat pack management:
- added managed cheat-pack storage plus create, enable, disable, delete, and adapter-catalog API endpoints
- added a web
Cheatspage for publishing YAML packs and reviewing adapter capabilities - agent/API consumers can now inspect cheat adapters and managed packs directly
- Save validation tightening:
- weak raw-save placeholder titles are rejected or cleaned up before listing
- title alias cleanup preserves real saves while removing noisy placeholder-style rows
- PlayStation helper
save/latestruntime-profile enforcement is scoped to the projection flows that actually require it
Validation Summary
- Backend test suite passed locally
- Frontend test suite passed locally
- Frontend production build passed locally
v0.1.5 - 2026-04-23
Included
- Nintendo 64 cross-runtime projection:
- helpers now upload their real local N64 save format
- backend normalizes N64 uploads into canonical media truth
- helper latest/download flows now project back to the explicitly requested target runtime
- supported target profiles in tranche 1:
n64/mistern64/retroarchn64/project64n64/mupen-familyn64/everdrive
- Strict N64 helper contract:
- N64 helper requests now require
n64Profile - missing
n64Profilefails clearly for helper upload, latest, and download paths - new helper contract documented in
n64update.md
- N64 helper requests now require
- Diddy Kong Racing cheat support:
- added parser-backed
dkr-eepromcheat editor - curated
Diddy Kong Racingcheat pack included - safe slot-based editing with checksum rebuild
- added parser-backed
- N64 cheat audit coverage:
- added repository-backed N64 cheat inventory tests
- added supporting N64 cheat audit and intake docs
Validation Summary
- Backend test suite passed locally
- Security gate passed locally
- Live Docker deploy updated and smoke-checked successfully
v0.1.4 - 2026-04-23
Included
- Safe cheat editing v1:
- parser-backed cheat read/apply endpoints at
/save/cheatsand/save/cheats/apply - every cheat apply creates a new current save version instead of mutating history in place
- local override support under
SAVE_ROOT/<System>/<Game>/_rsm/cheats.local.yaml
- parser-backed cheat read/apply endpoints at
- Curated Nintendo 64 cheat packs:
Super Mario 64viasm64-eepromMario Kart 64viamk64-eeprom
- Mario Kart 64 editor coverage:
- Grand Prix cup progress for
50cc,100cc,150cc, andExtra - sound mode editing with checksum repair on main and backup save-info blocks
- Grand Prix cup progress for
- Cheat developer documentation:
- added
cheats.mdwith pack schema, override rules, API examples, and authoring guidance
- added
Validation Summary
- Backend cheat tests passed locally for SM64 and Mario Kart 64
- Frontend tests and production build passed locally
- Security gate and contract checks passed locally
v0.1.3 - 2026-04-23
Included
- Security gate sanitization:
- removed private-network fixture referenc...
RetroSaveManager v0.1.8
Release Notes
v0.1.8 - 2026-04-24
Included
- Cross-ROM duplicate cleanup for visible save tracks:
- identical payloads under the same canonieke game/region track are now treated as the same save even when helper ROM hashes differ
- upload idempotency now catches those cross-ROM duplicates before writing a new version
/saves, save detail history, and the agent summary API now count unique payload hashes per visible track
- Live cleanup support:
- rescan duplicate cleanup now removes redundant generic save records by visible track + SHA, not only by ROM hash + slot
- explicit rollback audit versions remain preserved and still count as intentional history
Validation Summary
- Targeted duplicate/canonical-track tests passed locally
- Full backend test suite passed locally
- Security gate passed locally
v0.1.7 - 2026-04-24
Included
- Save upload idempotency:
- generic save ingest now suppresses exact-latest duplicate uploads on the same canonical save line
- historical duplicate uploads now return a stale conflict instead of creating a new version
- duplicate/stale handling is enforced server-side instead of trusting helpers
- PlayStation and N64 logical duplicate suppression:
- PlayStation logical ingest now checks the full logical revision history, not only the latest revision
- N64 controller-pak logical ingest now checks the full logical revision history too
- identical projection payload rebuilds no longer create duplicate projection save records
- Duplicate cleanup during rescan:
- rescan now collapses redundant generic, PlayStation, and N64 duplicate history
- oldest duplicates survive by default, while current latest state is preserved when needed to avoid rolling cloud truth backward
- rollback-created audit versions remain exempt from cleanup
- rescan reporting now includes duplicate group and removed-version counts
Validation Summary
- Backend duplicate/idempotency regression tests passed locally
- Full backend test suite passed locally
v0.1.6 - 2026-04-24
Included
- Unified runtime-profile handling:
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
runtimeProfile - backward-compatible aliases such as
n64ProfileandsaturnFormatstill map into the shared runtime-profile contract - placeholder runtime-profile rows are rejected before they can pollute the save dataset
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
- Runtime-aware web downloads:
My Savesand save detail downloads now open a runtime/profile selector first- backend save responses expose
downloadProfiles[]so the web UI only offers compatible targets - non-converted saves still show
Original fileas a safe fallback choice
- Nintendo 64 controller pak sync:
- added parser-backed controller pak ingest and projection handling for N64
- controller pak entries are extracted into logical save tracks instead of being treated as opaque whole-pak blobs
- N64 projection downloads now stay aligned with the requested runtime profile
- Cheat pack management:
- added managed cheat-pack storage plus create, enable, disable, delete, and adapter-catalog API endpoints
- added a web
Cheatspage for publishing YAML packs and reviewing adapter capabilities - agent/API consumers can now inspect cheat adapters and managed packs directly
- Save validation tightening:
- weak raw-save placeholder titles are rejected or cleaned up before listing
- title alias cleanup preserves real saves while removing noisy placeholder-style rows
- PlayStation helper
save/latestruntime-profile enforcement is scoped to the projection flows that actually require it
Validation Summary
- Backend test suite passed locally
- Frontend test suite passed locally
- Frontend production build passed locally
v0.1.5 - 2026-04-23
Included
- Nintendo 64 cross-runtime projection:
- helpers now upload their real local N64 save format
- backend normalizes N64 uploads into canonical media truth
- helper latest/download flows now project back to the explicitly requested target runtime
- supported target profiles in tranche 1:
n64/mistern64/retroarchn64/project64n64/mupen-familyn64/everdrive
- Strict N64 helper contract:
- N64 helper requests now require
n64Profile - missing
n64Profilefails clearly for helper upload, latest, and download paths - new helper contract documented in
n64update.md
- N64 helper requests now require
- Diddy Kong Racing cheat support:
- added parser-backed
dkr-eepromcheat editor - curated
Diddy Kong Racingcheat pack included - safe slot-based editing with checksum rebuild
- added parser-backed
- N64 cheat audit coverage:
- added repository-backed N64 cheat inventory tests
- added supporting N64 cheat audit and intake docs
Validation Summary
- Backend test suite passed locally
- Security gate passed locally
- Live Docker deploy updated and smoke-checked successfully
v0.1.4 - 2026-04-23
Included
- Safe cheat editing v1:
- parser-backed cheat read/apply endpoints at
/save/cheatsand/save/cheats/apply - every cheat apply creates a new current save version instead of mutating history in place
- local override support under
SAVE_ROOT/<System>/<Game>/_rsm/cheats.local.yaml
- parser-backed cheat read/apply endpoints at
- Curated Nintendo 64 cheat packs:
Super Mario 64viasm64-eepromMario Kart 64viamk64-eeprom
- Mario Kart 64 editor coverage:
- Grand Prix cup progress for
50cc,100cc,150cc, andExtra - sound mode editing with checksum repair on main and backup save-info blocks
- Grand Prix cup progress for
- Cheat developer documentation:
- added
cheats.mdwith pack schema, override rules, API examples, and authoring guidance
- added
Validation Summary
- Backend cheat tests passed locally for SM64 and Mario Kart 64
- Frontend tests and production build passed locally
- Security gate and contract checks passed locally
v0.1.3 - 2026-04-23
Included
- Security gate sanitization:
- removed private-network fixture references from Saturn testdata notes
- retained fixture hashes, sizes, and source-path examples without leaking internal host details
- Agent and ops API expansion:
- added no-auth
/apiand/api/v1automation surface for saves, ROMs, devices, sync status, conflicts, helper auto-enroll, and logs - added paginated sync-log endpoint for the last 72 hours of helper and web save activity
- added no-auth
- Logs UI:
- added
Logsto the sidebar - added a paginated web table for recent sync activity with device, action, game, and error state
- added
Validation Summary
- Repository security gate passed locally after sanitization
v0.1.1 - 2026-04-23
Included
- Strict Sega save-domain backend:
- parser-led Dreamcast VMU/VMS/DCI detection and validation
- parser-led Sega Saturn backup RAM detection and validation
- strict raw SRAM validation for Genesis, Master System, and Game Gear
- empty Dreamcast VMUs and empty Saturn backup RAM images are rejected as noise
- Saturn metadata extraction:
- volume summaries for internal and cartridge backup RAM
- per-entry filename, comment, language, timestamp, block list, and payload size
- helper-compatible
saturnFormatexport support formister,internal-raw,cartridge-raw,mednafen,yabause,yabasanshiro,bup,ymir, andymbp
- Backend inspection metadata:
- explicit parser level, parser id, validated system, evidence, warnings, and slot metadata on supported Sega saves
- My Saves frontend redesign:
- compact English TreeGrid-style layout
- text-based sidebar navigation
- obsolete public links removed from the promoted shell
- denser high-contrast dark styling for save management
Validation Summary
- Backend test suite passed locally with Saturn and Dreamcast fixture coverage
- Frontend tests passed locally
- Frontend production build passed locally
v0.1.0 - 2026-04-22
Included
- Single-container runtime for self-hosted deploys:
- one
appcontainer serves both API and frontend SPA - one GHCR image:
ghcr.io/joeblack2k/retrosavemanager
- one
- Persistent storage hardening:
- save and config mounts must now be explicit persistent host paths
- demo bootstrap save is disabled by default for production-style deploys
- startup continues to rehydrate save state from disk-backed metadata under
SAVE_ROOT
- Save manager UI refresh:
- compact dark
My Savestree/grid layout - text-based sidebar navigation
- tighter typography and higher-contrast styling
- compact dark
- PlayStation save-domain improvements:
- extracted logical saves are the sync truth
- PS1/PS2 projections remain helper-compatible downloads
- real PS1 memory-card detection only
- real PS2 memory-card detection only
- unsupported PS1/PS2 save-state noise is rejected during rescan
- Memory-card detail enrichment:
- PS1 entry titles and icon previews
- PS2 entry titles from
icon.sys - PS2 entry previews, product codes, block counts, and size stats
- Live rescan behavior improved:
- noisy or false-positive PlayStation records are pruned
- valid PS memory cards remain grouped as
Memory Card N
- PS1 projection integrity fix:
- generated PS1 downloads now emit valid raw card header frames
- frame
0and frame63now contain canonicalMCmarkers plus valid XOR checksums - helper-facing
/saves/downloadoutput is validated by backend integration tests
Deploy Notes
- Default runtime is direct HTTP on port
80 - Docker Compose default is a single
appservice - Default deploy is GHCR-only; it no longer builds locally during
up - Optional local image builds now use
deploy/docker-compose.build.ymlviadeploy/scripts/build-local.sh - Macvlan stays available as an optional override
Validation Summary
- Backend tests passed on the test bench VM
- Frontend tests and production build passed locally
- Live deploy validated on the internal Docker host
- GitHub release tagging and release publication are part of this release
Conta...
RetroSaveManager v0.1.7
Release Notes
v0.1.7 - 2026-04-24
Included
- Save upload idempotency:
- generic save ingest now suppresses exact-latest duplicate uploads on the same canonical save line
- historical duplicate uploads now return a stale conflict instead of creating a new version
- duplicate/stale handling is enforced server-side instead of trusting helpers
- PlayStation and N64 logical duplicate suppression:
- PlayStation logical ingest now checks the full logical revision history, not only the latest revision
- N64 controller-pak logical ingest now checks the full logical revision history too
- identical projection payload rebuilds no longer create duplicate projection save records
- Duplicate cleanup during rescan:
- rescan now collapses redundant generic, PlayStation, and N64 duplicate history
- oldest duplicates survive by default, while current latest state is preserved when needed to avoid rolling cloud truth backward
- rollback-created audit versions remain exempt from cleanup
- rescan reporting now includes duplicate group and removed-version counts
Validation Summary
- Backend duplicate/idempotency regression tests passed locally
- Full backend test suite passed locally
v0.1.6 - 2026-04-24
Included
- Unified runtime-profile handling:
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
runtimeProfile - backward-compatible aliases such as
n64ProfileandsaturnFormatstill map into the shared runtime-profile contract - placeholder runtime-profile rows are rejected before they can pollute the save dataset
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
- Runtime-aware web downloads:
My Savesand save detail downloads now open a runtime/profile selector first- backend save responses expose
downloadProfiles[]so the web UI only offers compatible targets - non-converted saves still show
Original fileas a safe fallback choice
- Nintendo 64 controller pak sync:
- added parser-backed controller pak ingest and projection handling for N64
- controller pak entries are extracted into logical save tracks instead of being treated as opaque whole-pak blobs
- N64 projection downloads now stay aligned with the requested runtime profile
- Cheat pack management:
- added managed cheat-pack storage plus create, enable, disable, delete, and adapter-catalog API endpoints
- added a web
Cheatspage for publishing YAML packs and reviewing adapter capabilities - agent/API consumers can now inspect cheat adapters and managed packs directly
- Save validation tightening:
- weak raw-save placeholder titles are rejected or cleaned up before listing
- title alias cleanup preserves real saves while removing noisy placeholder-style rows
- PlayStation helper
save/latestruntime-profile enforcement is scoped to the projection flows that actually require it
Validation Summary
- Backend test suite passed locally
- Frontend test suite passed locally
- Frontend production build passed locally
v0.1.5 - 2026-04-23
Included
- Nintendo 64 cross-runtime projection:
- helpers now upload their real local N64 save format
- backend normalizes N64 uploads into canonical media truth
- helper latest/download flows now project back to the explicitly requested target runtime
- supported target profiles in tranche 1:
n64/mistern64/retroarchn64/project64n64/mupen-familyn64/everdrive
- Strict N64 helper contract:
- N64 helper requests now require
n64Profile - missing
n64Profilefails clearly for helper upload, latest, and download paths - new helper contract documented in
n64update.md
- N64 helper requests now require
- Diddy Kong Racing cheat support:
- added parser-backed
dkr-eepromcheat editor - curated
Diddy Kong Racingcheat pack included - safe slot-based editing with checksum rebuild
- added parser-backed
- N64 cheat audit coverage:
- added repository-backed N64 cheat inventory tests
- added supporting N64 cheat audit and intake docs
Validation Summary
- Backend test suite passed locally
- Security gate passed locally
- Live Docker deploy updated and smoke-checked successfully
v0.1.4 - 2026-04-23
Included
- Safe cheat editing v1:
- parser-backed cheat read/apply endpoints at
/save/cheatsand/save/cheats/apply - every cheat apply creates a new current save version instead of mutating history in place
- local override support under
SAVE_ROOT/<System>/<Game>/_rsm/cheats.local.yaml
- parser-backed cheat read/apply endpoints at
- Curated Nintendo 64 cheat packs:
Super Mario 64viasm64-eepromMario Kart 64viamk64-eeprom
- Mario Kart 64 editor coverage:
- Grand Prix cup progress for
50cc,100cc,150cc, andExtra - sound mode editing with checksum repair on main and backup save-info blocks
- Grand Prix cup progress for
- Cheat developer documentation:
- added
cheats.mdwith pack schema, override rules, API examples, and authoring guidance
- added
Validation Summary
- Backend cheat tests passed locally for SM64 and Mario Kart 64
- Frontend tests and production build passed locally
- Security gate and contract checks passed locally
v0.1.3 - 2026-04-23
Included
- Security gate sanitization:
- removed private-network fixture references from Saturn testdata notes
- retained fixture hashes, sizes, and source-path examples without leaking internal host details
- Agent and ops API expansion:
- added no-auth
/apiand/api/v1automation surface for saves, ROMs, devices, sync status, conflicts, helper auto-enroll, and logs - added paginated sync-log endpoint for the last 72 hours of helper and web save activity
- added no-auth
- Logs UI:
- added
Logsto the sidebar - added a paginated web table for recent sync activity with device, action, game, and error state
- added
Validation Summary
- Repository security gate passed locally after sanitization
v0.1.1 - 2026-04-23
Included
- Strict Sega save-domain backend:
- parser-led Dreamcast VMU/VMS/DCI detection and validation
- parser-led Sega Saturn backup RAM detection and validation
- strict raw SRAM validation for Genesis, Master System, and Game Gear
- empty Dreamcast VMUs and empty Saturn backup RAM images are rejected as noise
- Saturn metadata extraction:
- volume summaries for internal and cartridge backup RAM
- per-entry filename, comment, language, timestamp, block list, and payload size
- helper-compatible
saturnFormatexport support formister,internal-raw,cartridge-raw,mednafen,yabause,yabasanshiro,bup,ymir, andymbp
- Backend inspection metadata:
- explicit parser level, parser id, validated system, evidence, warnings, and slot metadata on supported Sega saves
- My Saves frontend redesign:
- compact English TreeGrid-style layout
- text-based sidebar navigation
- obsolete public links removed from the promoted shell
- denser high-contrast dark styling for save management
Validation Summary
- Backend test suite passed locally with Saturn and Dreamcast fixture coverage
- Frontend tests passed locally
- Frontend production build passed locally
v0.1.0 - 2026-04-22
Included
- Single-container runtime for self-hosted deploys:
- one
appcontainer serves both API and frontend SPA - one GHCR image:
ghcr.io/joeblack2k/retrosavemanager
- one
- Persistent storage hardening:
- save and config mounts must now be explicit persistent host paths
- demo bootstrap save is disabled by default for production-style deploys
- startup continues to rehydrate save state from disk-backed metadata under
SAVE_ROOT
- Save manager UI refresh:
- compact dark
My Savestree/grid layout - text-based sidebar navigation
- tighter typography and higher-contrast styling
- compact dark
- PlayStation save-domain improvements:
- extracted logical saves are the sync truth
- PS1/PS2 projections remain helper-compatible downloads
- real PS1 memory-card detection only
- real PS2 memory-card detection only
- unsupported PS1/PS2 save-state noise is rejected during rescan
- Memory-card detail enrichment:
- PS1 entry titles and icon previews
- PS2 entry titles from
icon.sys - PS2 entry previews, product codes, block counts, and size stats
- Live rescan behavior improved:
- noisy or false-positive PlayStation records are pruned
- valid PS memory cards remain grouped as
Memory Card N
- PS1 projection integrity fix:
- generated PS1 downloads now emit valid raw card header frames
- frame
0and frame63now contain canonicalMCmarkers plus valid XOR checksums - helper-facing
/saves/downloadoutput is validated by backend integration tests
Deploy Notes
- Default runtime is direct HTTP on port
80 - Docker Compose default is a single
appservice - Default deploy is GHCR-only; it no longer builds locally during
up - Optional local image builds now use
deploy/docker-compose.build.ymlviadeploy/scripts/build-local.sh - Macvlan stays available as an optional override
Validation Summary
- Backend tests passed on the test bench VM
- Frontend tests and production build passed locally
- Live deploy validated on the internal Docker host
- GitHub release tagging and release publication are part of this release
Container Images
ghcr.io/joeblack2k/retrosavemanager:v0.1.7ghcr.io/joeblack2k/retrosavemanager:sha-10f16038910a3d68b4f89cea8491a6a842545d44
Source
- Commit:
10f16038910a3d68b4f89cea8491a6a842545d44
RetroSaveManager v0.1.6
Release Notes
v0.1.6 - 2026-04-24
Included
- Unified runtime-profile handling:
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
runtimeProfile - backward-compatible aliases such as
n64ProfileandsaturnFormatstill map into the shared runtime-profile contract - placeholder runtime-profile rows are rejected before they can pollute the save dataset
- projection-capable helper uploads, latest checks, and downloads now resolve through explicit
- Runtime-aware web downloads:
My Savesand save detail downloads now open a runtime/profile selector first- backend save responses expose
downloadProfiles[]so the web UI only offers compatible targets - non-converted saves still show
Original fileas a safe fallback choice
- Nintendo 64 controller pak sync:
- added parser-backed controller pak ingest and projection handling for N64
- controller pak entries are extracted into logical save tracks instead of being treated as opaque whole-pak blobs
- N64 projection downloads now stay aligned with the requested runtime profile
- Cheat pack management:
- added managed cheat-pack storage plus create, enable, disable, delete, and adapter-catalog API endpoints
- added a web
Cheatspage for publishing YAML packs and reviewing adapter capabilities - agent/API consumers can now inspect cheat adapters and managed packs directly
- Save validation tightening:
- weak raw-save placeholder titles are rejected or cleaned up before listing
- title alias cleanup preserves real saves while removing noisy placeholder-style rows
- PlayStation helper
save/latestruntime-profile enforcement is scoped to the projection flows that actually require it
Validation Summary
- Backend test suite passed locally
- Frontend test suite passed locally
- Frontend production build passed locally
v0.1.5 - 2026-04-23
Included
- Nintendo 64 cross-runtime projection:
- helpers now upload their real local N64 save format
- backend normalizes N64 uploads into canonical media truth
- helper latest/download flows now project back to the explicitly requested target runtime
- supported target profiles in tranche 1:
n64/mistern64/retroarchn64/project64n64/mupen-familyn64/everdrive
- Strict N64 helper contract:
- N64 helper requests now require
n64Profile - missing
n64Profilefails clearly for helper upload, latest, and download paths - new helper contract documented in
n64update.md
- N64 helper requests now require
- Diddy Kong Racing cheat support:
- added parser-backed
dkr-eepromcheat editor - curated
Diddy Kong Racingcheat pack included - safe slot-based editing with checksum rebuild
- added parser-backed
- N64 cheat audit coverage:
- added repository-backed N64 cheat inventory tests
- added supporting N64 cheat audit and intake docs
Validation Summary
- Backend test suite passed locally
- Security gate passed locally
- Live Docker deploy updated and smoke-checked successfully
v0.1.4 - 2026-04-23
Included
- Safe cheat editing v1:
- parser-backed cheat read/apply endpoints at
/save/cheatsand/save/cheats/apply - every cheat apply creates a new current save version instead of mutating history in place
- local override support under
SAVE_ROOT/<System>/<Game>/_rsm/cheats.local.yaml
- parser-backed cheat read/apply endpoints at
- Curated Nintendo 64 cheat packs:
Super Mario 64viasm64-eepromMario Kart 64viamk64-eeprom
- Mario Kart 64 editor coverage:
- Grand Prix cup progress for
50cc,100cc,150cc, andExtra - sound mode editing with checksum repair on main and backup save-info blocks
- Grand Prix cup progress for
- Cheat developer documentation:
- added
cheats.mdwith pack schema, override rules, API examples, and authoring guidance
- added
Validation Summary
- Backend cheat tests passed locally for SM64 and Mario Kart 64
- Frontend tests and production build passed locally
- Security gate and contract checks passed locally
v0.1.3 - 2026-04-23
Included
- Security gate sanitization:
- removed private-network fixture references from Saturn testdata notes
- retained fixture hashes, sizes, and source-path examples without leaking internal host details
- Agent and ops API expansion:
- added no-auth
/apiand/api/v1automation surface for saves, ROMs, devices, sync status, conflicts, helper auto-enroll, and logs - added paginated sync-log endpoint for the last 72 hours of helper and web save activity
- added no-auth
- Logs UI:
- added
Logsto the sidebar - added a paginated web table for recent sync activity with device, action, game, and error state
- added
Validation Summary
- Repository security gate passed locally after sanitization
v0.1.1 - 2026-04-23
Included
- Strict Sega save-domain backend:
- parser-led Dreamcast VMU/VMS/DCI detection and validation
- parser-led Sega Saturn backup RAM detection and validation
- strict raw SRAM validation for Genesis, Master System, and Game Gear
- empty Dreamcast VMUs and empty Saturn backup RAM images are rejected as noise
- Saturn metadata extraction:
- volume summaries for internal and cartridge backup RAM
- per-entry filename, comment, language, timestamp, block list, and payload size
- helper-compatible
saturnFormatexport support formister,internal-raw,cartridge-raw,mednafen,yabause,yabasanshiro,bup,ymir, andymbp
- Backend inspection metadata:
- explicit parser level, parser id, validated system, evidence, warnings, and slot metadata on supported Sega saves
- My Saves frontend redesign:
- compact English TreeGrid-style layout
- text-based sidebar navigation
- obsolete public links removed from the promoted shell
- denser high-contrast dark styling for save management
Validation Summary
- Backend test suite passed locally with Saturn and Dreamcast fixture coverage
- Frontend tests passed locally
- Frontend production build passed locally
v0.1.0 - 2026-04-22
Included
- Single-container runtime for self-hosted deploys:
- one
appcontainer serves both API and frontend SPA - one GHCR image:
ghcr.io/joeblack2k/retrosavemanager
- one
- Persistent storage hardening:
- save and config mounts must now be explicit persistent host paths
- demo bootstrap save is disabled by default for production-style deploys
- startup continues to rehydrate save state from disk-backed metadata under
SAVE_ROOT
- Save manager UI refresh:
- compact dark
My Savestree/grid layout - text-based sidebar navigation
- tighter typography and higher-contrast styling
- compact dark
- PlayStation save-domain improvements:
- extracted logical saves are the sync truth
- PS1/PS2 projections remain helper-compatible downloads
- real PS1 memory-card detection only
- real PS2 memory-card detection only
- unsupported PS1/PS2 save-state noise is rejected during rescan
- Memory-card detail enrichment:
- PS1 entry titles and icon previews
- PS2 entry titles from
icon.sys - PS2 entry previews, product codes, block counts, and size stats
- Live rescan behavior improved:
- noisy or false-positive PlayStation records are pruned
- valid PS memory cards remain grouped as
Memory Card N
- PS1 projection integrity fix:
- generated PS1 downloads now emit valid raw card header frames
- frame
0and frame63now contain canonicalMCmarkers plus valid XOR checksums - helper-facing
/saves/downloadoutput is validated by backend integration tests
Deploy Notes
- Default runtime is direct HTTP on port
80 - Docker Compose default is a single
appservice - Default deploy is GHCR-only; it no longer builds locally during
up - Optional local image builds now use
deploy/docker-compose.build.ymlviadeploy/scripts/build-local.sh - Macvlan stays available as an optional override
Validation Summary
- Backend tests passed on the test bench VM
- Frontend tests and production build passed locally
- Live deploy validated on the internal Docker host
- GitHub release tagging and release publication are part of this release
Container Images
ghcr.io/joeblack2k/retrosavemanager:v0.1.6ghcr.io/joeblack2k/retrosavemanager:sha-87085b99b904b023a8b7a5ea25f19b75ec9ed2e1
Source
- Commit:
87085b99b904b023a8b7a5ea25f19b75ec9ed2e1
RetroSaveManager v0.1.5
Release Notes
v0.1.5 - 2026-04-23
Included
- Nintendo 64 cross-runtime projection:
- helpers now upload their real local N64 save format
- backend normalizes N64 uploads into canonical media truth
- helper latest/download flows now project back to the explicitly requested target runtime
- supported target profiles in tranche 1:
n64/mistern64/retroarchn64/project64n64/mupen-familyn64/everdrive
- Strict N64 helper contract:
- N64 helper requests now require
n64Profile - missing
n64Profilefails clearly for helper upload, latest, and download paths - new helper contract documented in
n64update.md
- N64 helper requests now require
- Diddy Kong Racing cheat support:
- added parser-backed
dkr-eepromcheat editor - curated
Diddy Kong Racingcheat pack included - safe slot-based editing with checksum rebuild
- added parser-backed
- N64 cheat audit coverage:
- added repository-backed N64 cheat inventory tests
- added supporting N64 cheat audit and intake docs
Validation Summary
- Backend test suite passed locally
- Security gate passed locally
- Live Docker deploy updated and smoke-checked successfully
v0.1.4 - 2026-04-23
Included
- Safe cheat editing v1:
- parser-backed cheat read/apply endpoints at
/save/cheatsand/save/cheats/apply - every cheat apply creates a new current save version instead of mutating history in place
- local override support under
SAVE_ROOT/<System>/<Game>/_rsm/cheats.local.yaml
- parser-backed cheat read/apply endpoints at
- Curated Nintendo 64 cheat packs:
Super Mario 64viasm64-eepromMario Kart 64viamk64-eeprom
- Mario Kart 64 editor coverage:
- Grand Prix cup progress for
50cc,100cc,150cc, andExtra - sound mode editing with checksum repair on main and backup save-info blocks
- Grand Prix cup progress for
- Cheat developer documentation:
- added
cheats.mdwith pack schema, override rules, API examples, and authoring guidance
- added
Validation Summary
- Backend cheat tests passed locally for SM64 and Mario Kart 64
- Frontend tests and production build passed locally
- Security gate and contract checks passed locally
v0.1.3 - 2026-04-23
Included
- Security gate sanitization:
- removed private-network fixture references from Saturn testdata notes
- retained fixture hashes, sizes, and source-path examples without leaking internal host details
- Agent and ops API expansion:
- added no-auth
/apiand/api/v1automation surface for saves, ROMs, devices, sync status, conflicts, helper auto-enroll, and logs - added paginated sync-log endpoint for the last 72 hours of helper and web save activity
- added no-auth
- Logs UI:
- added
Logsto the sidebar - added a paginated web table for recent sync activity with device, action, game, and error state
- added
Validation Summary
- Repository security gate passed locally after sanitization
v0.1.1 - 2026-04-23
Included
- Strict Sega save-domain backend:
- parser-led Dreamcast VMU/VMS/DCI detection and validation
- parser-led Sega Saturn backup RAM detection and validation
- strict raw SRAM validation for Genesis, Master System, and Game Gear
- empty Dreamcast VMUs and empty Saturn backup RAM images are rejected as noise
- Saturn metadata extraction:
- volume summaries for internal and cartridge backup RAM
- per-entry filename, comment, language, timestamp, block list, and payload size
- helper-compatible
saturnFormatexport support formister,internal-raw,cartridge-raw,mednafen,yabause,yabasanshiro,bup,ymir, andymbp
- Backend inspection metadata:
- explicit parser level, parser id, validated system, evidence, warnings, and slot metadata on supported Sega saves
- My Saves frontend redesign:
- compact English TreeGrid-style layout
- text-based sidebar navigation
- obsolete public links removed from the promoted shell
- denser high-contrast dark styling for save management
Validation Summary
- Backend test suite passed locally with Saturn and Dreamcast fixture coverage
- Frontend tests passed locally
- Frontend production build passed locally
v0.1.0 - 2026-04-22
Included
- Single-container runtime for self-hosted deploys:
- one
appcontainer serves both API and frontend SPA - one GHCR image:
ghcr.io/joeblack2k/retrosavemanager
- one
- Persistent storage hardening:
- save and config mounts must now be explicit persistent host paths
- demo bootstrap save is disabled by default for production-style deploys
- startup continues to rehydrate save state from disk-backed metadata under
SAVE_ROOT
- Save manager UI refresh:
- compact dark
My Savestree/grid layout - text-based sidebar navigation
- tighter typography and higher-contrast styling
- compact dark
- PlayStation save-domain improvements:
- extracted logical saves are the sync truth
- PS1/PS2 projections remain helper-compatible downloads
- real PS1 memory-card detection only
- real PS2 memory-card detection only
- unsupported PS1/PS2 save-state noise is rejected during rescan
- Memory-card detail enrichment:
- PS1 entry titles and icon previews
- PS2 entry titles from
icon.sys - PS2 entry previews, product codes, block counts, and size stats
- Live rescan behavior improved:
- noisy or false-positive PlayStation records are pruned
- valid PS memory cards remain grouped as
Memory Card N
- PS1 projection integrity fix:
- generated PS1 downloads now emit valid raw card header frames
- frame
0and frame63now contain canonicalMCmarkers plus valid XOR checksums - helper-facing
/saves/downloadoutput is validated by backend integration tests
Deploy Notes
- Default runtime is direct HTTP on port
80 - Docker Compose default is a single
appservice - Default deploy is GHCR-only; it no longer builds locally during
up - Optional local image builds now use
deploy/docker-compose.build.ymlviadeploy/scripts/build-local.sh - Macvlan stays available as an optional override
Validation Summary
- Backend tests passed on the test bench VM
- Frontend tests and production build passed locally
- Live deploy validated on the internal Docker host
- GitHub release tagging and release publication are part of this release
Container Images
ghcr.io/joeblack2k/retrosavemanager:v0.1.5ghcr.io/joeblack2k/retrosavemanager:sha-5f2571c43a6d99eddbb0d56ccd6352cf4aee249e
Source
- Commit:
5f2571c43a6d99eddbb0d56ccd6352cf4aee249e
RetroSaveManager v0.1.4
Release Notes
v0.1.4 - 2026-04-23
Included
- Safe cheat editing v1:
- parser-backed cheat read/apply endpoints at
/save/cheatsand/save/cheats/apply - every cheat apply creates a new current save version instead of mutating history in place
- local override support under
SAVE_ROOT/<System>/<Game>/_rsm/cheats.local.yaml
- parser-backed cheat read/apply endpoints at
- Curated Nintendo 64 cheat packs:
Super Mario 64viasm64-eepromMario Kart 64viamk64-eeprom
- Mario Kart 64 editor coverage:
- Grand Prix cup progress for
50cc,100cc,150cc, andExtra - sound mode editing with checksum repair on main and backup save-info blocks
- Grand Prix cup progress for
- Cheat developer documentation:
- added
cheats.mdwith pack schema, override rules, API examples, and authoring guidance
- added
Validation Summary
- Backend cheat tests passed locally for SM64 and Mario Kart 64
- Frontend tests and production build passed locally
- Security gate and contract checks passed locally
v0.1.3 - 2026-04-23
Included
- Security gate sanitization:
- removed private-network fixture references from Saturn testdata notes
- retained fixture hashes, sizes, and source-path examples without leaking internal host details
- Agent and ops API expansion:
- added no-auth
/apiand/api/v1automation surface for saves, ROMs, devices, sync status, conflicts, helper auto-enroll, and logs - added paginated sync-log endpoint for the last 72 hours of helper and web save activity
- added no-auth
- Logs UI:
- added
Logsto the sidebar - added a paginated web table for recent sync activity with device, action, game, and error state
- added
Validation Summary
- Repository security gate passed locally after sanitization
v0.1.1 - 2026-04-23
Included
- Strict Sega save-domain backend:
- parser-led Dreamcast VMU/VMS/DCI detection and validation
- parser-led Sega Saturn backup RAM detection and validation
- strict raw SRAM validation for Genesis, Master System, and Game Gear
- empty Dreamcast VMUs and empty Saturn backup RAM images are rejected as noise
- Saturn metadata extraction:
- volume summaries for internal and cartridge backup RAM
- per-entry filename, comment, language, timestamp, block list, and payload size
- helper-compatible
saturnFormatexport support formister,internal-raw,cartridge-raw,mednafen,yabause,yabasanshiro,bup,ymir, andymbp
- Backend inspection metadata:
- explicit parser level, parser id, validated system, evidence, warnings, and slot metadata on supported Sega saves
- My Saves frontend redesign:
- compact English TreeGrid-style layout
- text-based sidebar navigation
- obsolete public links removed from the promoted shell
- denser high-contrast dark styling for save management
Validation Summary
- Backend test suite passed locally with Saturn and Dreamcast fixture coverage
- Frontend tests passed locally
- Frontend production build passed locally
v0.1.0 - 2026-04-22
Included
- Single-container runtime for self-hosted deploys:
- one
appcontainer serves both API and frontend SPA - one GHCR image:
ghcr.io/joeblack2k/retrosavemanager
- one
- Persistent storage hardening:
- save and config mounts must now be explicit persistent host paths
- demo bootstrap save is disabled by default for production-style deploys
- startup continues to rehydrate save state from disk-backed metadata under
SAVE_ROOT
- Save manager UI refresh:
- compact dark
My Savestree/grid layout - text-based sidebar navigation
- tighter typography and higher-contrast styling
- compact dark
- PlayStation save-domain improvements:
- extracted logical saves are the sync truth
- PS1/PS2 projections remain helper-compatible downloads
- real PS1 memory-card detection only
- real PS2 memory-card detection only
- unsupported PS1/PS2 save-state noise is rejected during rescan
- Memory-card detail enrichment:
- PS1 entry titles and icon previews
- PS2 entry titles from
icon.sys - PS2 entry previews, product codes, block counts, and size stats
- Live rescan behavior improved:
- noisy or false-positive PlayStation records are pruned
- valid PS memory cards remain grouped as
Memory Card N
- PS1 projection integrity fix:
- generated PS1 downloads now emit valid raw card header frames
- frame
0and frame63now contain canonicalMCmarkers plus valid XOR checksums - helper-facing
/saves/downloadoutput is validated by backend integration tests
Deploy Notes
- Default runtime is direct HTTP on port
80 - Docker Compose default is a single
appservice - Default deploy is GHCR-only; it no longer builds locally during
up - Optional local image builds now use
deploy/docker-compose.build.ymlviadeploy/scripts/build-local.sh - Macvlan stays available as an optional override
Validation Summary
- Backend tests passed on the test bench VM
- Frontend tests and production build passed locally
- Live deploy validated on the internal Docker host
- GitHub release tagging and release publication are part of this release
Container Images
ghcr.io/joeblack2k/retrosavemanager:v0.1.4ghcr.io/joeblack2k/retrosavemanager:sha-2172dbe1e99e6ad8cf2082b1a08f1cce729b35dc
Source
- Commit:
2172dbe1e99e6ad8cf2082b1a08f1cce729b35dc
RetroSaveManager v0.1.3
Release Notes
v0.1.3 - 2026-04-23
Included
- Security gate sanitization:
- removed private-network fixture references from Saturn testdata notes
- retained fixture hashes, sizes, and source-path examples without leaking internal host details
- Agent and ops API expansion:
- added no-auth
/apiand/api/v1automation surface for saves, ROMs, devices, sync status, conflicts, helper auto-enroll, and logs - added paginated sync-log endpoint for the last 72 hours of helper and web save activity
- added no-auth
- Logs UI:
- added
Logsto the sidebar - added a paginated web table for recent sync activity with device, action, game, and error state
- added
Validation Summary
- Repository security gate passed locally after sanitization
v0.1.1 - 2026-04-23
Included
- Strict Sega save-domain backend:
- parser-led Dreamcast VMU/VMS/DCI detection and validation
- parser-led Sega Saturn backup RAM detection and validation
- strict raw SRAM validation for Genesis, Master System, and Game Gear
- empty Dreamcast VMUs and empty Saturn backup RAM images are rejected as noise
- Saturn metadata extraction:
- volume summaries for internal and cartridge backup RAM
- per-entry filename, comment, language, timestamp, block list, and payload size
- helper-compatible
saturnFormatexport support formister,internal-raw,cartridge-raw,mednafen,yabause,yabasanshiro,bup,ymir, andymbp
- Backend inspection metadata:
- explicit parser level, parser id, validated system, evidence, warnings, and slot metadata on supported Sega saves
- My Saves frontend redesign:
- compact English TreeGrid-style layout
- text-based sidebar navigation
- obsolete public links removed from the promoted shell
- denser high-contrast dark styling for save management
Validation Summary
- Backend test suite passed locally with Saturn and Dreamcast fixture coverage
- Frontend tests passed locally
- Frontend production build passed locally
v0.1.0 - 2026-04-22
Included
- Single-container runtime for self-hosted deploys:
- one
appcontainer serves both API and frontend SPA - one GHCR image:
ghcr.io/joeblack2k/retrosavemanager
- one
- Persistent storage hardening:
- save and config mounts must now be explicit persistent host paths
- demo bootstrap save is disabled by default for production-style deploys
- startup continues to rehydrate save state from disk-backed metadata under
SAVE_ROOT
- Save manager UI refresh:
- compact dark
My Savestree/grid layout - text-based sidebar navigation
- tighter typography and higher-contrast styling
- compact dark
- PlayStation save-domain improvements:
- extracted logical saves are the sync truth
- PS1/PS2 projections remain helper-compatible downloads
- real PS1 memory-card detection only
- real PS2 memory-card detection only
- unsupported PS1/PS2 save-state noise is rejected during rescan
- Memory-card detail enrichment:
- PS1 entry titles and icon previews
- PS2 entry titles from
icon.sys - PS2 entry previews, product codes, block counts, and size stats
- Live rescan behavior improved:
- noisy or false-positive PlayStation records are pruned
- valid PS memory cards remain grouped as
Memory Card N
- PS1 projection integrity fix:
- generated PS1 downloads now emit valid raw card header frames
- frame
0and frame63now contain canonicalMCmarkers plus valid XOR checksums - helper-facing
/saves/downloadoutput is validated by backend integration tests
Deploy Notes
- Default runtime is direct HTTP on port
80 - Docker Compose default is a single
appservice - Default deploy is GHCR-only; it no longer builds locally during
up - Optional local image builds now use
deploy/docker-compose.build.ymlviadeploy/scripts/build-local.sh - Macvlan stays available as an optional override
Validation Summary
- Backend tests passed on the test bench VM
- Frontend tests and production build passed locally
- Live deploy validated on the internal Docker host
- GitHub release tagging and release publication are part of this release
Container Images
ghcr.io/joeblack2k/retrosavemanager:v0.1.3ghcr.io/joeblack2k/retrosavemanager:sha-7d9e192e15ac0966d2258e1b6a74bdb110d7b810
Source
- Commit:
7d9e192e15ac0966d2258e1b6a74bdb110d7b810
RetroSaveManager v0.1.2
Release Notes
v0.1.2 - 2026-04-23
Included
- Security gate sanitization:
- removed private-network fixture references from Saturn testdata notes
- retained fixture hashes, sizes, and source-path examples without leaking internal host details
Validation Summary
- Repository security gate passed locally after sanitization
v0.1.1 - 2026-04-23
Included
- Strict Sega save-domain backend:
- parser-led Dreamcast VMU/VMS/DCI detection and validation
- parser-led Sega Saturn backup RAM detection and validation
- strict raw SRAM validation for Genesis, Master System, and Game Gear
- empty Dreamcast VMUs and empty Saturn backup RAM images are rejected as noise
- Saturn metadata extraction:
- volume summaries for internal and cartridge backup RAM
- per-entry filename, comment, language, timestamp, block list, and payload size
- helper-compatible
saturnFormatexport support formister,internal-raw,cartridge-raw,mednafen,yabause,yabasanshiro,bup,ymir, andymbp
- Backend inspection metadata:
- explicit parser level, parser id, validated system, evidence, warnings, and slot metadata on supported Sega saves
- My Saves frontend redesign:
- compact English TreeGrid-style layout
- text-based sidebar navigation
- obsolete public links removed from the promoted shell
- denser high-contrast dark styling for save management
Validation Summary
- Backend test suite passed locally with Saturn and Dreamcast fixture coverage
- Frontend tests passed locally
- Frontend production build passed locally
v0.1.0 - 2026-04-22
Included
- Single-container runtime for self-hosted deploys:
- one
appcontainer serves both API and frontend SPA - one GHCR image:
ghcr.io/joeblack2k/retrosavemanager
- one
- Persistent storage hardening:
- save and config mounts must now be explicit persistent host paths
- demo bootstrap save is disabled by default for production-style deploys
- startup continues to rehydrate save state from disk-backed metadata under
SAVE_ROOT
- Save manager UI refresh:
- compact dark
My Savestree/grid layout - text-based sidebar navigation
- tighter typography and higher-contrast styling
- compact dark
- PlayStation save-domain improvements:
- extracted logical saves are the sync truth
- PS1/PS2 projections remain helper-compatible downloads
- real PS1 memory-card detection only
- real PS2 memory-card detection only
- unsupported PS1/PS2 save-state noise is rejected during rescan
- Memory-card detail enrichment:
- PS1 entry titles and icon previews
- PS2 entry titles from
icon.sys - PS2 entry previews, product codes, block counts, and size stats
- Live rescan behavior improved:
- noisy or false-positive PlayStation records are pruned
- valid PS memory cards remain grouped as
Memory Card N
- PS1 projection integrity fix:
- generated PS1 downloads now emit valid raw card header frames
- frame
0and frame63now contain canonicalMCmarkers plus valid XOR checksums - helper-facing
/saves/downloadoutput is validated by backend integration tests
Deploy Notes
- Default runtime is direct HTTP on port
80 - Docker Compose default is a single
appservice - Default deploy is GHCR-only; it no longer builds locally during
up - Optional local image builds now use
deploy/docker-compose.build.ymlviadeploy/scripts/build-local.sh - Macvlan stays available as an optional override
Validation Summary
- Backend tests passed on the test bench VM
- Frontend tests and production build passed locally
- Live deploy validated on the internal Docker host
- GitHub release tagging and release publication are part of this release
Container Images
ghcr.io/joeblack2k/retrosavemanager:v0.1.2ghcr.io/joeblack2k/retrosavemanager:sha-631a3b35fc840fe4ddd18772486d1676c1b94541
Source
- Commit:
631a3b35fc840fe4ddd18772486d1676c1b94541