Skip to main content
SimDeck
AboutWhat's newHelpDemoSupportStudent login
AboutWhat's newHelpDemoSupportStudent login
View demo
ChinaEgyptClassroom

Release ledger

What's new in SimDeck

A version-by-version record of approved SimDeck improvements.

Source of truth

SimDeck release notes

Approved release notes are published here. Draft entries are labeled and are not live releases.

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.

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.

Version 0.45

July 16, 2026

Every export from one complete class moment

Full restore backups, inventory CSV files, and printable inventories now come from one integrity-checked database snapshot; SimDeck stops the export if any related class data is incomplete or changes cannot be read safely.

Why it matters

  • - A backup cannot quietly combine students, roles, cards, and Activity from different moments while class data is changing.
  • - Full restore backups keep the complete Activity history instead of falling back to only the 80 newest desk entries.
  • - CSV backups list every active role for a student, while inactive assignments remain available in the full restore backup.

Verification

  • - All 432 unit tests pass across 41 files, including one-transaction collection reads, 81-row Activity completeness, commit and rollback behavior, cross-class relationship rejection, route output, CSV safety and role rendering, and print snapshot wiring.
  • - Critical-source coverage is 85.32% statements, 72.07% branches, 96.50% functions, and 94.37% lines; the new export-snapshot module reaches 100% line coverage.
  • - All 465 public smoke and accessibility cases pass across Chromium, Firefox, WebKit, Mobile Chrome, and Mobile Safari, including the Version 0.45 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.45 release card was inspected at desktop and 390px mobile widths with no horizontal overflow.
  • - Read-only Appwrite schema, production health, integrity, backup/restore planning, and live eight-collection export-transaction checks pass without classroom or Auth writes.
  • - The Version 0.45 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

  • Added one shared Appwrite read transaction for the game, students, card templates, roles, both relationship collections, card instances, and complete Activity history.
  • Scoped relationship rows from either endpoint so dangling or cross-class links reach integrity review instead of disappearing from the export.
  • Reused the validated snapshot across JSON, CSV, and print output while preserving teacher authorization, private no-store headers, sanitized filenames, formula-safe CSV cells, and restore compatibility.

Version 0.44

July 16, 2026

New setup and imports only for the class David reviewed

Adding students, cards, or roles and replacing imported roster or card rows now stays tied to the exact game and complete collection on David's screen; changed setup stops the stale action before any write.

Why it matters

  • - An older Students, Cards, or Roles tab cannot add setup under a class that changed after David opened it.
  • - A bulk replacement cannot overwrite a student or card that was renamed or edited after David reviewed the import.
  • - Duplicate current names stop an import with a clear correction instead of choosing an arbitrary matching row.

Verification

  • - All 423 unit tests pass across 39 files, including malformed snapshots, collection membership/name/version drift, transaction-time parent drift, ambiguous names, replacement compare-and-set filters, and no-write aborts.
  • - Critical-source coverage is 84.93% statements, 71.89% branches, 96.36% functions, and 94.08% lines; actions reach 95.12% line coverage and the new setup-collection snapshot module reaches 100% lines/functions.
  • - All 465 public smoke and accessibility cases pass across Chromium, Firefox, WebKit, Mobile Chrome, and Mobile Safari, including the Version 0.44 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.44 release card was 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 or Auth writes.
  • - The Version 0.44 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

  • Bound student, card-template, and role creation to the rendered game version, with the same review repeated inside each insert transaction.
  • Added canonical complete roster and card-library snapshots covering membership, names, parent scope, and row versions before and inside bulk-import transactions.
  • Added exact row-version compare-and-set filters to every import replacement while preserving all-or-nothing batching and the 95-row limit.
Newer releases

Page 9 of 19

Older releases

SimDeck is demo classroom software for role-based card inventories.

PrivacyTermsSupportHelpWhat's new