Version 0.47
July 16, 2026
Copy a class directly from one exact snapshot
Settings can now create a complete new class without downloading and pasting JSON. SimDeck reads, validates, and copies the source graph in one all-or-nothing transaction, with fresh access codes and inert Activity history.
Why it matters
- - David can turn the class already open in Settings into a separately named practice or future class without the export-and-paste detour.
- - The source class is never written, and a stale page, invalid graph, oversized copy, or failed destination batch produces no partial new game.
- - The new class receives a fresh class code, every student receives a fresh access code with no copied sign-in, and the complete source Activity remains read-only evidence.
Verification
- - All 448 unit tests pass across 44 files, including canonical payload construction, exact-snapshot planning, cleared Auth links, fresh codes, inert history, rendered guidance, stale source rejection, distinguishable-name enforcement, combined operation limits, authorization inventory, and shared transaction insertion.
- - Critical-source coverage is 85.59% statements, 72.55% branches, 96.13% functions, and 94.50% lines; the new duplicate planner reaches 100% in every metric, export snapshots remain at 100% lines, backup/restore planning reaches 95.41% lines, and actions reach 95.13% lines.
- - All 465 public smoke and accessibility cases pass across Chromium, Firefox, WebKit, Mobile Chrome, and Mobile Safari, including the Version 0.47 release entry and updated Help guidance.
- - Typecheck, full lint, zero-warning static security lint, production build, backendless demo, 10 skeleton states, theme contrast, npm audit with zero vulnerabilities, and git diff validation pass.
- - Read-only Appwrite schema, production health, integrity, exact export transaction, complete-history restore planning, and exact-snapshot class-copy planning for every live game pass without classroom or Auth writes.
- - The public Version 0.47 release card was inspected at desktop and 390px mobile widths with no horizontal overflow.
- - The Version 0.47 draft was recorded on PI-213 before this public page entry; the canonical ledger was finalized after exact staging proof.
Source: Linear release ledger document, PI-213
- Ran the eight source-collection reads, source version check, graph integrity review, destination planning, and every destination write inside one Appwrite transaction.
- Counted those eight reads plus all batched writes against Appwrite's 100-operation limit before the first destination insert.
- Moved backup payload construction into one shared helper so downloaded backups and direct class copies cannot drift into different formats.
- Added a version-bound Duplicate class panel with a suggested new name, typed confirmation, and explicit fresh-access and read-only-history guidance.