List view: decoded summaries for ATR/PPS/RST/VCC instead of raw hex

- decode.py: decode_sniff_msg builds list summaries — ATR: protocol(s),
  TA1 F/D + ratio, T=15 classes, data rate (when a CLK rate was known);
  PPS: protocol + F/D + ratio; RST: 'CLK x.xxx MHz' when the event
  carried a rate
- index.html: cmd_description returns summary || '' for these types and
  STATUS, never falling back to opaque bytes like 010100
- tests: ATR (plain/TA1/classes+rate/unparsed), PPS, RST CLK/no-CLK, VCC
- Bump 1.22.20, SW cache v51->v52
This commit is contained in:
catarrh committed 2026-09-19 00:17:47 +03:00
1 parent ccbb3f231b
commit 500e764a1b
7 files changed
+106 -8

No files matched your search

+8 -4
View File
@@ -1048,9 +1048,13 @@ function data_text(m) {
function cmd_description(m) {
if (m.type === 'gap') return t('device disconnected — messages may be missing');
const d = m.decoded;
// STATUS has no command body: without response data there is nothing
// to describe beyond the type and SW (no raw-hex fallback).
if (d && d.ins_hex === 'f2' && !d.body) return d.summary || '';
// No raw-hex fallback for these: STATUS's decoded summary is the only
// useful list text (it has no command body), and ATR/PPS/RST/VCC get a
// decoded summary (or nothing) instead of opaque bytes like "010100".
if (d && (d.ins_hex === 'f2' || d.type === 'atr' || d.type === 'pps'
|| d.type === 'rst' || d.type === 'vcc')) {
return d.summary || '';
}
if (d && d.summary) return d.summary;
return data_text(m);
}
@@ -2633,7 +2637,7 @@ function onFilterChange() {
}
// ──────────────────── Versioning ────────────────────
const PWA_VERSION = '1.22.19';
const PWA_VERSION = '1.22.20';
const MIN_SERVER_VERSION = '1.0.0';
function parseVersion(v) {