Version 0.39
July 16, 2026
Single-card changes only for what David saw
Use, Restore, Archive, and Transfer now stay tied to the exact card and student destination on David's screen; if either changed, SimDeck stops instead of overwriting newer classroom work.
Why it matters
- - A stale game-desk or activity tab cannot use, restore, archive, or transfer a card after another classroom action changed it.
- - A student destination that was renamed, deleted, or otherwise changed must be selected again before a direct transfer can continue.
- - Use history names the card's trusted current holder, while Use and Bank-routing policy are checked again inside the transaction.
Verification
- - All 324 unit tests pass across 33 files, including stale versions for all four actions, raw-ID tampering, trusted Use attribution, destination drift, and Use/Bank policy drift.
- - Critical-source coverage is 84.99% statements, 71.88% branches, 95.98% functions, and 93.30% lines.
- - All 465 public smoke and accessibility cases pass across Chromium, Firefox, WebKit, Mobile Chrome, and Mobile Safari, including the Version 0.39 release entry.
- - 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.
- - The direct-action safety notice and the public Version 0.39 release card were inspected at desktop and 390px mobile widths with no horizontal overflow.
- - Read-only Appwrite schema, production health, integrity, and backup/restore planning checks pass without classroom writes.
- - The Linear release ledger was updated before this public page entry.
Source: Linear release ledger document, PI-213
- Bound every visible single-card teacher control to the rendered card version with shared hidden inputs across student inventory, David reserve, Bank, and Activity.
- Replaced raw direct-transfer student IDs with versioned destination selections and repeated destination validation inside the atomic transfer.
- Removed browser-supplied Use attribution and reloaded the trusted card holder and relevant card policy inside the transaction.