Keeps game save import in the sidebar while grouping viewer database
backup actions with their explanation in the main navigation.
Co-authored-by: Cursor <cursoragent@cursor.com>
Plot snapshots by export or import time instead of category indices so
coins, level, skill, and inventory trends reflect actual elapsed time.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pairs export with validated .db restore, documents the difference from game
save imports, and renames the JSON upload button to Import game backup.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extends the goals system and viewer UX so players can track item and skill
targets with groups, ETAs, global search, snapshot management, and DB export.
Co-authored-by: Cursor <cursoragent@cursor.com>
Log goal creation, group management, tab usage, deletions, and goals reached on import to measure feature adoption and completion.
Co-authored-by: Cursor <cursoragent@cursor.com>
Players can create named goal groups, set absolute item targets from inventory, track progress in a new Goals tab, and get banners when uploads complete goals or entire groups.
Co-authored-by: Cursor <cursoragent@cursor.com>
Load tagged-events from plausible.elpatron.me on all pages, allow it in CSP, and track successful save uploads with import status.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pass the viewer id via a body data attribute instead of a blocked inline script so personal links still load saved data after restart.
Co-authored-by: Cursor <cursoragent@cursor.com>
Build public links from host_url netloc behind reverse proxies so generated viewer URLs do not include the internal upstream port.
Co-authored-by: Cursor <cursoragent@cursor.com>
Each player gets an isolated SQLite viewer via a unique URL without login, with landing page warnings to save the link and compose-based hosting for sharing with others.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prepare the UI for English (default/fallback) and German with auto or manual locale selection, and report import issues with client-translated warnings instead of failing on minor save format changes.
Co-authored-by: Cursor <cursoragent@cursor.com>