Fix session name label language switch + add frontend screenshot

- Store raw session name in STATE.currentSessionRawName
- Re-render session-name-display in toggleLang() with current translation
- Add frontend.png screenshot to README
- Bump 1.22.15, SW cache v46->v47
This commit is contained in:
catarrh committed 2026-09-06 22:05:25 +03:00
1 parent af16eb1dd8
commit ede38c985e
7 files changed
+12 -5

No files matched your search

+2
View File
@@ -7,6 +7,8 @@ that both captures APDU traffic and serves that PWA.
**Single dependency**: PyUSB (libusb wrapper). No libosmocore, no libosmosim. **Single dependency**: PyUSB (libusb wrapper). No libosmocore, no libosmosim.
![simtrace-analyser PWA](frontend.png)
## Features ## Features
**APDU decoder** (server-side, rendered by the PWA): **APDU decoder** (server-side, rendered by the PWA):
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 445 KiB

+6 -1
View File
@@ -421,6 +421,7 @@ const STATE = {
captureActive: false, captureActive: false,
currentSessionId: null, currentSessionId: null,
currentSessionName: null, currentSessionName: null,
currentSessionRawName: null,
sessionViewId: null, sessionViewId: null,
sessionStarted: null, sessionStarted: null,
livePoller: null, livePoller: null,
@@ -2364,6 +2365,7 @@ async function loadSession(id) {
STATE.sessionStarted = data.session.started; STATE.sessionStarted = data.session.started;
STATE.captureActive = false; STATE.captureActive = false;
STATE.currentSessionName = data.session.name || t('Session #') + id; STATE.currentSessionName = data.session.name || t('Session #') + id;
STATE.currentSessionRawName = data.session.name || null;
STATE.messages = data.messages; STATE.messages = data.messages;
STATE.mapExpanded.clear(); STATE.mapExpanded.clear();
switchTab('trace'); switchTab('trace');
@@ -2621,7 +2623,7 @@ function onFilterChange() {
} }
// ──────────────────── Versioning ──────────────────── // ──────────────────── Versioning ────────────────────
const PWA_VERSION = '1.22.14'; const PWA_VERSION = '1.22.15';
const MIN_SERVER_VERSION = '1.0.0'; const MIN_SERVER_VERSION = '1.0.0';
function parseVersion(v) { function parseVersion(v) {
@@ -2773,6 +2775,9 @@ function toggleLang() {
localStorage.setItem('lang', currentLang); localStorage.setItem('lang', currentLang);
applyLang(); applyLang();
translatePage(); translatePage();
if (STATE.sessionViewId) {
el('session-name-display').textContent = t('Session: ') + (STATE.currentSessionRawName || '#' + STATE.sessionViewId);
}
updateStatus(); updateStatus();
updateCaptureButton(); updateCaptureButton();
renderMessages(); renderMessages();
+1 -1
View File
@@ -1,4 +1,4 @@
const CACHE = 'simtrace-analyser-v46'; const CACHE = 'simtrace-analyser-v47';
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.14" version = "1.22.15"
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.14' __version__ = '1.22.15'
__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.14') self.assertEqual(__version__, '1.22.15')
def test_status_includes_version(self): def test_status_includes_version(self):
import os import os