Warn on data length mismatch in APDU list; rename SIM-ME to UICC

- error_names(m) now includes 'Data length mismatch' when
  decoded.length_mismatch is set, showing a ⚠ badge + tooltip
  in the APDU list row (alongside existing errors like bad FCS)
- Header title: SIM-ME -> UICC
- Bump 1.22.5, SW cache v36->v37
This commit is contained in:
catarrh committed 2026-09-06 11:04:38 +03:00
1 parent 0ec7db8d34
commit 7e537abc55
5 files changed
+11 -7

No files matched your search

+7 -3
View File
@@ -271,7 +271,7 @@ body { font: 14px/1.5 system-ui, sans-serif; background: var(--bg); color: var(-
<div class="header-tab" data-tab="sessions" data-l10n="Sessions">Sessions</div> <div class="header-tab" data-tab="sessions" data-l10n="Sessions">Sessions</div>
<div class="header-tab" data-tab="settings" data-l10n="Settings">Settings</div> <div class="header-tab" data-tab="settings" data-l10n="Settings">Settings</div>
</div> </div>
<div class="header-title">SIM-ME <a href="https://osmocom.org/projects/baseband/wiki/GSMTAP" target="_blank" rel="noopener">GSMTAP</a> <span data-l10n="trace analyser">trace analyser</span> <span class="pwa-version" id="pwa-version"></span></div> <div class="header-title">UICC <a href="https://osmocom.org/projects/baseband/wiki/GSMTAP" target="_blank" rel="noopener">GSMTAP</a> <span data-l10n="trace analyser">trace analyser</span> <span class="pwa-version" id="pwa-version"></span></div>
<div class="header-right"> <div class="header-right">
<span class="capture-chip" id="capture-chip" style="display:none"></span> <span class="capture-chip" id="capture-chip" style="display:none"></span>
<button id="install-btn" data-l10n="Install PWA">Install PWA</button> <button id="install-btn" data-l10n="Install PWA">Install PWA</button>
@@ -1010,7 +1010,11 @@ function cmd_description(m) {
function error_names(m) { function error_names(m) {
const d = m.decoded; const d = m.decoded;
return (d && Array.isArray(d.errors) && d.errors.length) ? d.errors : null; if (!d) return null;
const errs = [];
if (Array.isArray(d.errors)) errs.push(...d.errors);
if (d.length_mismatch) errs.push('Data length mismatch');
return errs.length ? errs : null;
} }
function sw_text(m) { function sw_text(m) {
@@ -2522,7 +2526,7 @@ function onFilterChange() {
} }
// ──────────────────── Versioning ──────────────────── // ──────────────────── Versioning ────────────────────
const PWA_VERSION = '1.22.4'; const PWA_VERSION = '1.22.5';
const MIN_SERVER_VERSION = '1.0.0'; const MIN_SERVER_VERSION = '1.0.0';
function parseVersion(v) { function parseVersion(v) {
+1 -1
View File
@@ -1,4 +1,4 @@
const CACHE = 'simtrace-analyser-v36'; const CACHE = 'simtrace-analyser-v37';
const PRECACHE = [ const PRECACHE = [
'index.html', 'index.html',
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.backends._legacy:_Backend"
[project] [project]
name = "simtrace2-pysniff" name = "simtrace2-pysniff"
version = "1.22.4" version = "1.22.5"
description = "Python-based sniffing tool for SIMtrace2 hardware (SIM card communication sniffer)" description = "Python-based sniffing tool for SIMtrace2 hardware (SIM card communication sniffer)"
readme = {file = "README.md", content-type = "text/markdown"} readme = {file = "README.md", content-type = "text/markdown"}
license = {text = "GPL-2.0-or-later"} license = {text = "GPL-2.0-or-later"}
+1 -1
View File
@@ -6,7 +6,7 @@ from .gsmtap import GsmtapSender, GsmtapReceiver
from .pcap import PcapWriter from .pcap import PcapWriter
from .dump import FileDumper, format_message from .dump import FileDumper, format_message
__version__ = '1.22.4' __version__ = '1.22.5'
__all__ = [ __all__ = [
'SniffSession', 'SniffSession',
'DeviceDisconnected', 'DeviceDisconnected',
+1 -1
View File
@@ -224,7 +224,7 @@ class TestImportEndpoint(unittest.TestCase):
class TestVersion(unittest.TestCase): class TestVersion(unittest.TestCase):
def test_package_version(self): def test_package_version(self):
from simtrace2_pysniff import __version__ from simtrace2_pysniff import __version__
self.assertEqual(__version__, '1.22.4') self.assertEqual(__version__, '1.22.5')
def test_status_includes_version(self): def test_status_includes_version(self):
import os import os