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.51

July 16, 2026

Pending sends reserve the card before they queue

Approval-required student sends now reserve the exact card version and create the pending request together, so stale or simultaneous submissions cannot leave an invalid or duplicate decision for David.

Why it matters

  • - Two nearly simultaneous send submissions for the same card cannot both become pending decisions.
  • - A card change that wins the race leaves no stale approval request behind.
  • - A failed reservation, duplicate recheck, Activity write, or transaction commit leaves no partial classroom state.

Verification

  • - All 459 unit tests pass across 46 files, including exact reservation filters, reserved-version metadata, losing-reservation no-write behavior, an in-transaction duplicate race, and commit-conflict rollback.
  • - Critical-source coverage passes at 85.56% statements, 72.50% branches, 96.15% functions, and 94.52% lines; actions reach 95.17% line coverage.
  • - All 465 public smoke and accessibility cases pass across Chromium, Firefox, WebKit, Mobile Chrome, and Mobile Safari; the five credential-gated teacher cases skip as designed.
  • - The production complete transfer-request and card reads confirm every unresolved request is unique, versioned, and tied to its current live active student-owned card snapshot without classroom or Auth writes.
  • - 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 Version 0.51 draft was recorded on PI-213 before this public page entry; the canonical ledger follows exact staging proof.

Source: Linear release ledger document, PI-213

  • Conditionally updates only the exact active student-owned card version, preserving its owner and status while making the card the Appwrite transaction conflict key.
  • Snapshots the reserved card version in the request and stages that request inside the same transaction.
  • Repeats the complete indexed pending-request scan inside the transaction while retaining the fast precheck and its existing student-facing duplicate guidance.
  • Scopes both the initial card read and reservation by card, game, current student, student ownership, active status, and rendered version.

Version 0.50

July 16, 2026

Pending sends stay unique beyond 80 requests

A student can no longer open a second approval request for the same card when the first unresolved request is older than the newest 80 transfer-request records.

Why it matters

  • - David receives one pending decision per student and card instead of duplicate approval rows after a long-running class.
  • - An older unresolved request remains authoritative even after many newer transfer requests have been recorded.
  • - The duplicate is rejected before any transaction or Activity write begins.

Verification

  • - All 456 unit tests pass across 46 files, including the row-81 pending request, complete-query assertion, rejection copy, and no-transaction/no-write boundary.
  • - Critical-source coverage remains at 85.59% statements, 72.55% branches, 96.13% functions, and 94.50% lines.
  • - The production complete transfer-request read reports no duplicate unresolved class, student, and card keys without writing classroom or Auth data.
  • - 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 Version 0.50 draft was recorded on PI-213 before this public page entry; browser, visual, exact-SHA staging, and canonical-ledger proof follow the final commit.

Source: Linear release ledger document, PI-213

  • Removed the 80-row limit from the indexed class transfer-request read used before approval-required sends.
  • Kept dashboard and student Activity displays intentionally bounded; only the mutation precondition became complete.
  • Added an 81-row regression with the blocking pending request beyond the former ceiling and an assertion that the query has no limit.
  • Added a production read-only invariant check for duplicate unresolved class, student, and card request keys.

Version 0.49

July 16, 2026

Every Activity record, not only the newest 80

The Activity page now searches and filters the complete class audit history, then shows the matching results in bounded pages. Older records no longer disappear behind the compact recent feed used by dashboards.

Why it matters

  • - David can find an older use, transfer, approval, or correction even after a class has accumulated more than 80 Activity records.
  • - Student, action, reversal, date, and text filters apply to the complete history instead of only the newest desk window.
  • - Previous and Next navigation keeps long histories usable without placing hundreds of audit records in one browser page.

Verification

  • - All 456 unit tests pass across 46 files, including 181-row paging, a match beyond the former 80-row ceiling, metadata participants, reversal/date boundaries, URL context preservation, and accessible page navigation.
  • - Critical-source coverage remains at 85.59% statements, 72.55% branches, 96.13% functions, and 94.50% lines.
  • - All 465 public smoke and accessibility cases pass across Chromium, Firefox, WebKit, Mobile Chrome, and Mobile Safari; the five credential-gated teacher cases skip as designed.
  • - 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.
  • - For every live game, the production complete-history query returns the same Activity ID set as its integrity-checked exact export snapshot; schema, health, integrity, restore planning, and direct class-copy planning also pass read-only.
  • - The public Version 0.49 release card was inspected at 1280px and 390px with zero horizontal overflow; the authenticated Activity page remains covered by pure paging/filter/render tests without inventing classroom access.
  • - The Version 0.49 draft was recorded on PI-213 before this public page entry; the canonical ledger follows exact staging proof.

Source: Linear release ledger document, PI-213

  • Added a dedicated complete-history Appwrite read for /activity while preserving the intentional newest-80 feed for dashboards and live-class controls.
  • Filters the complete ordered history before slicing one bounded 80-row page, with safe page parsing and clamping.
  • Preserves every filter and the current page through pagination and restore, approval, or Undo return paths.
  • Shows an explicit fallback notice if complete history is unavailable instead of silently presenting a recent subset as the whole log.

Version 0.48

July 16, 2026

Used and archived cards stay distinct on the game shelf

Every simulation shelf card now reports Active, Used, and Archived as separate totals. The shelf no longer hides intentionally removed cards inside the Used count.

Why it matters

  • - David can tell at a glance how many cards are spent and restorable versus intentionally removed from play.
  • - The shelf now agrees with the detailed game desk and the different restore/archive correction paths.
  • - A two-column mobile layout keeps all four class metrics readable without compressing or clipping the longer Archived label.

Verification

  • - All 451 unit tests pass across 45 files, including exact state classification, unrelated-game exclusion, semantic metric rendering, distinct Used and Archived values, and no-data zero totals.
  • - Critical-source coverage is 85.59% statements, 72.55% branches, 96.13% functions, and 94.50% lines.
  • - All 465 public smoke and accessibility cases pass across Chromium, Firefox, WebKit, Mobile Chrome, and Mobile Safari; the five credential-gated teacher cases skip as designed.
  • - 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, full restore planning, and direct class-copy planning pass without classroom or Auth writes.
  • - The four-cell shelf skeleton and public Version 0.48 release card were inspected at 1280px and 390px with zero horizontal overflow; exact labeled values and description-list semantics are covered by static rendering because the live shelf requires teacher credentials.
  • - The Version 0.48 draft was recorded on PI-213 before this public page entry; the canonical ledger follows exact staging proof.

Source: Linear release ledger document, PI-213

  • Kept Active, Used, and Archived separate through the shelf summary and rendered each total without recombining states.
  • Moved the metric strip to an accessible description list labeled Class and card totals.
  • Updated the live shelf and its loading skeleton together with a two-column mobile and four-column wider layout.
  • Documented the state boundary so future shelf changes cannot silently count archived cards as Used again.
Newer releases

Page 8 of 19

Older releases

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

PrivacyTermsSupportHelpWhat's new