8a08f642d4
release / release (push) Waiting to run
After a card swap (or the first insertion after startup) on Windows the auto-equip looped forever: "card inserted, initializing" / "card gone during initialization", with no "retry 2/3" lines. An equip with the card still present produced no card (app.card None), and that branch reported "card gone" and returned True - a no-op success - so the three retries never ran and the watchdog re-armed every ~5 s. - The card-gone no-op is now only for a real removal (card_present False); a card-present init that produced no card raises a failure. - Any failed attempt marks the transport stale, so the next attempt rebuilds the PC/SC link (a Windows swap can leave the old link unable to connect; _ensure_transport releases the old link before building the new one, so the 2026-09-24 stale-handle bug cannot recur). - The error pySim swallowed (cmd2) is printed as "AUTO-EQUIP: init output:" with its traceback - the failure is diagnosable from the log. - Docs: the READMEs' troubleshooting bullet. - Version strings + the PWA cache bumped together (simple-v460). Tests: a card-present init without a card is a failure, a mid-init removal stays a silent no-op, any failure marks the transport, the stale-handle traceback reaches the log, and an end-to-end retry: a failed init, the old link released, a fresh one built, the retry succeeds. 1012 Python + 953 frontend green.
3.8 KiB
3.8 KiB
Changelog
All notable changes to SIMple (the PWA and pysim-simple-server).
The format follows Keep a Changelog;
versions use MAJOR.MINOR.PATCH (see the README).
History before the first packaged release (v3.31.1) lives in the git log — every change carries a descriptive commit message.
[Unreleased]
[3.32.2] — 2026-10-21
Fixed
- The auto-equip loop after a card swap on Windows. A failed initialization with
the card still present was reported as "card gone during initialization" and treated
as a no-op success — so the three retries never ran and the watchdog re-armed every
few seconds forever. It is a failure now, and every failed attempt marks the
PC/SC transport for a rebuild, so the retry starts from a fresh link (the release
of the old link happens first, so it cannot inherit a stale card handle). The error
pySim swallowed is printed as
AUTO-EQUIP: init output:with its traceback.
[3.32.1] — 2026-10-21
Added
- "Start counter value" in the outfile import: the counter every created keyset
starts from. It defaults to the store's value (
1); raise it for cards whose counters are already past it. The API takesstart_counter(1–10 hex digits; a bad value is a 400), and the preview carries the value.
[3.32.0] — 2026-10-21
Added
- Updating a packaged install —
update.sh/update.bat(andtools/update.pybeneath them): downloads the latest release package, replaces the application files in place and re-installs the app into the existing.venv. pysim and its prerequisites (the slow part: pyscard builds from source on Linux) are kept, so an update takes seconds.--checkreports the current and latest versions,--versionpicks a specific release,--zipupdates from a local package (offline),--no-piprefreshes the files only,--forcere-applies the same version. - The release workflow now takes the release notes from this file's matching version section (falling back to generated notes when it is missing).
Changed
- Installs made from the v3.31.x packages have no updater yet: copy
update.sh,update.batandtools/update.pyfrom this package once (or re-runsetupfrom it). Later updates useupdate.sh/update.bat— orgit pullfor a clone.
[3.31.2] — 2026-10-20
Changed
- The SCP81 TLS-PSK listener states its Python requirement: it needs Python 3.13+
(
ssl's PSK callbacks exist only since 3.13). Below that it raises a clear error instead ofAttributeError, and the PSK tests are skipped (they run on 3.13+). - The READMEs and the setup scripts: Windows strongly recommends Python 3.13 (pyscard has wheels up to 3.13; on 3.14 pyscard and some pysim dependency wheels are unavailable and build from source with MSVC).
[3.31.1] — 2026-10-20
The first packaged release (simple-3.31.1.zip).
Added
- EF_PBR (phonebook reference) support — the PBR is decoded in the decoded file
views (the
A8/A9/AAcontainers, theC0–CCkinds, the master EF), and the phonebook files it references (they are not in pySim's model) are added to the file tree server-side, selectable and readable. - In-app dialogs — the native alert/confirm/prompt dialogs are replaced by a shared modal (queued, keyboard-aware, focus-trapped, ARIA-labelled).
- Windows console encoding guard — the
start.batPowerShell pipe can no longer kill the server on a character the ANSI code page lacks. - GPL-2.0-or-later licensing (
LICENSE,THIRD-PARTY-NOTICES), matching pysim. - The curated release package (
tools/build_release.py) and the tag-triggered.github/workflows/release.yml.
Changed
setup.sh/setup.batand the READMEs: on Linuxpyscardbuilds from source and needs the PC/SC headers (libpcsclite-dev).