The project's only runtime dependency is PyUSB (BSD-3-Clause) and it bundles
no third-party code (the PWA's DES/3DES is written from the FIPS 46-3 tables,
AES uses WebCrypto, the decoders come from the ISO 7816/ETSI/3GPP specs), so
nothing forced GPL; the GPL-2.0-or-later declaration is replaced with MIT.
- LICENSE: the MIT text, Copyright (c) 2026 Anton Troshin.
- pyproject: license = "MIT" + license-files = ["LICENSE"] (PEP 639), and the
build requirement moves to setuptools>=77 for the SPDX form. The wheel now
carries dist-info/licenses/LICENSE and License-Expression: MIT, the sdist
and the runtime zip carry LICENSE at the top.
- READMEs (EN/RU): a License section (original decoders/DES implementation,
PyUSB as the only runtime dependency).
- tests: the packaging test pins the MIT declaration and the LICENSE text;
the release-zip test requires LICENSE in the archive.
- version 2.7.13; SW cache v95.
Copies published before this tag (v2.7.10-v2.7.12) remain under the license
they were released with.
The releases carried the wheel and the sdist; the only zip was GitHub's source
archive of the whole repository (tests, CI, tools). A Windows user just wants
to extract a folder and double-click start.bat.
- scripts/build_release_zip.py builds simtrace-analyser-<version>.zip with a
single top-level directory: the two Python packages, the PWA runtime files
(frontend/tests and package.json stay out), the four launchers, the udev
rule, the READMEs and the screenshot. The .bat entries are written with
CRLF line endings (cmd.exe mishandles bare-LF labels/goto), the .sh files
keep their executable bit; LICENSE is included automatically once the repo
has one.
- tests/test_release_zip.py pins the archive shape, the exclusions, the sw.js
PRECACHE drift (every precached asset must travel), the CRLF/LF line endings
and start.sh's mode.
- the release workflow builds the zip, checks it carries start.bat and the
PWA, uploads it with the run and attaches it to the release.
- READMEs (EN/RU) and the release-notes template offer the zip as the
Windows-friendly option; version 2.7.12, PWA cache v94.
Verified: the built zip (34 entries, 658 KB compressed) extracted and started
on Linux serves the same index.html; 553 Python + 80 Node tests.
The artifacts and the GitHub release were made by hand (`python -m build` plus
`gh release create`). `.github/workflows/release.yml` now does it from the
pushed tag: Python and PWA tests, the sdist/wheel build, a check that the
wheel carries the PWA, an install-and-serve smoke test of that wheel, and
`gh release create` with the generated notes (prepended by
`.github/release-notes.md`) and the three assets (wheel, sdist, udev rule).
A `workflow_dispatch` run does everything except publish, so the pipeline can
be exercised without minting a release; the artifacts land in the run. A tag
that does not match version.py/PWA_VERSION fails before anything is published.