Skip to content

docs: document save slots and auto-sync being on by default - #144

Merged
gantoine merged 2 commits into
mainfrom
docs/saves-slots-and-auto-sync
Sep 19, 2026
Merged

gantoine merged 2 commits into
mainfrom
docs/saves-slots-and-auto-sync

Conversation

@gantoine

Copy link
Copy Markdown
Member

What

The saves documentation described emulatorjs.auto_save_sync as an opt-in that uploads on save-and-quit unless you turn it on. Since 5.3.0 it defaults to true (config_manager.py) and the player polls the emulator's save memory every second, so a save reaches the server seconds after the game writes it. Following that thread, two more things shipped with no docs at all.

  • docs/using/saves-and-states.md
    • Automatic save sync rewritten: on by default, how it actually works, the opt-out, and what happens to an upload the server doesn't take (held in the browser with its screenshot, retried later, scoped to the account that made it).
    • New Save slots section: autosave vs named slots, version history and the Latest tag, and MAX_SAVES_PER_SLOT retention.
    • In-emulator behaviour updated: EmulatorJS' Export/Import save buttons are hidden now, replaced by Load save or state (and Sync save when auto-sync is off).
    • Reworded the "save disappears after play" troubleshooting entry, which assumed the old flush-on-quit behaviour.
  • docs/reference/configuration-file.md: emulatorjs.auto_save_sync default corrected to true, with the sample showing the opt-out.
  • scripts/sources.toml: pinned romm ref bumped from 839605e to 5.3.0-beta.1 so the generated env-var table picks up MAX_SAVES_PER_SLOT.

Source

Behaviour verified against 5.3.0-beta.1 rather than PR descriptions:

Claim Source
Default is true backend/config/config_manager.py:762
Polls save memory every second frontend/src/views/Player/EmulatorJS/utils.ts:378 (SAVE_SYNC_POLL_MS)
Leaving the player flushes a pending save Player.vue, flushPendingSave on onBeforeRouteLeave
Failed uploads held and retried, per account frontend/src/services/pending-asset.ts
Retention is the tighter of server cap and client ask; slot-less saves never pruned backend/endpoints/saves.py:128-133, :369-371
Sync save button only when auto-sync is off Player.vue:344-351

Relevant PRs: rommapp/romm#4378, rommapp/romm#4517, rommapp/romm#4540, rommapp/romm#4558, rommapp/romm#4600, rommapp/romm#4615

Generated snippets

Re-ran all four generators after the ref bump. Only env-vars.md changed, and only by two rows: MAX_SAVES_PER_SLOT added, and WEB_SERVER_KEEPALIVE picking up its new 65 default. platform-aliases.md, scheduled-tasks.md and supported-platforms.md came back byte-identical.

Testing

uv run mkdocs build is clean, no link or anchor warnings. --strict aborts locally on an unrelated missing libcairo for social-card rendering, which is an environment issue rather than anything in this change. trunk check passes on the edited files.

AI assistance

Written with Claude Code. The prose is model-written; every behavioural claim was checked against the code in the table above by the model, and the whole diff was reviewed by me before opening.

🤖 Generated with Claude Code

gantoine and others added 2 commits September 19, 2026 09:54
`emulatorjs.auto_save_sync` defaults to true since 5.3.0, and the player
now polls the emulator's save memory rather than waiting for save-and-quit,
so the opt-in framing was backwards. Save slots and the in-emulator
"Load save or state" picker were undocumented.

Bumps the pinned romm ref to 5.3.0-beta.1 so the generated env-var table
picks up MAX_SAVES_PER_SLOT. The other generated snippets are unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gantoine
gantoine merged commit 017650c into main Sep 19, 2026
4 checks passed
@gantoine
gantoine deleted the docs/saves-slots-and-auto-sync branch September 19, 2026 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant