Version 0.46
July 16, 2026
A restored class keeps its complete Activity history
Full backup restore now carries every exported Activity entry into the new game as read-only history, with student and card references remapped safely and old live controls kept inactive.
Why it matters
- - A full restore no longer drops the class history that the backup file preserved.
- - Old pending sends and Undo snapshots remain visible evidence but cannot reappear in the new class's approval or Undo queues.
- - Restored history links to the copied students and card instances while preserving the original summary, timestamps, closure state, and metadata.
Verification
- - All 438 unit tests pass across 42 files, including reference remapping, inert actions, preserved audit fields, invalid data and size rejection, history batching, atomic-limit enforcement, failed-history aborts, and rendered guidance.
- - Critical-source coverage is 85.63% statements, 72.56% branches, 96.52% functions, and 94.50% lines; backup/restore planning reaches 95.41% lines and actions reach 95.20% lines.
- - All 465 public smoke and accessibility cases pass across Chromium, Firefox, WebKit, Mobile Chrome, and Mobile Safari, including the Version 0.46 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 public Version 0.46 release card was inspected at desktop and 390px mobile widths with no horizontal overflow.
- - Read-only Appwrite schema, production health, integrity, exact export transaction, and complete-history restore planning checks pass without classroom or Auth writes.
- - The Version 0.46 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
- Validated and remapped every Activity game, student, and card-instance reference before opening the restore transaction.
- Stored copied actions under inert restored_* types with trusted source provenance and repeat-restore history chaining.
- Staged complete history before the new backup_restore event and counted every 100-row Activity batch against Appwrite's 100-operation atomic limit.