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 the improvements, mirrored from the SimDeck release ledger in Linear.

Source of truth

Linear release ledger

Public notes summarize the canonical Linear source in teacher-facing language. The first entry below is the latest verified SimDeck delivery.

Open Linear source

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.

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.
Newer releases

Page 6 of 16

Older releases

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

PrivacyTermsSupportHelpWhat's new