Compact C-APDU detail rows; drop duplicated Data hex

- Pair CLA+INS and P1+P2 into single rows (halves the header rows
  per C-APDU): "· CLA, INS  00 — UICC, A4 — SELECT".
- Skip the " — desc" suffix when the parser's desc merely repeats
  the hex (generic Data fields showed "6F46 — 6F46").
- Restore the implied-CLA annotation on the C-APDU title row (was
  dead code behind an operator-precedence bug).

Version 1.20.2, SW cache simtrace-analyser-v30.
This commit is contained in:
catarrh committed 2026-08-24 23:05:58 +03:00
1 parent acbd2bda4a
commit 3e21d093d9
5 files changed
+30 -11

No files matched your search

+26 -7
View File
@@ -1277,14 +1277,33 @@ function cmdRows(cmd) {
const kids = apdu.children || [];
const insKid = kids.find(k => k.label === 'INS');
const name = insKid ? (insKid.desc || '') : apdu.label;
rows.push(['C-APDU #' + n + ' — ' + (name || apdu.label),
apdu.hex || '' + (apdu.label === 'APDU (implied CLA)' ? ' (implied CLA)' : '')]);
rows.push(['C-APDU #' + n + ' — ' + (name || apdu.label) +
(apdu.label.includes('implied CLA') ? ' (implied CLA)' : ''),
apdu.hex || '']);
// Compact layout: pair CLA+INS and P1+P2; skip a
// desc that merely repeats the hex value.
const fmtKid = k => {
let v = k.hex || '';
if (k.desc && k.desc !== k.hex) v += ' — ' + k.desc;
return v;
};
const byLabel = {};
for (const k of kids) byLabel[k.label] = k;
const pairs = [['CLA', 'INS'], ['P1', 'P2']];
const done = new Set();
for (const [a, b] of pairs) {
if (byLabel[a] && byLabel[b]) {
rows.push(['· ' + a + ', ' + b,
fmtKid(byLabel[a]) + ', ' + fmtKid(byLabel[b])]);
done.add(a);
done.add(b);
}
}
for (const k of kids) {
rows.push(['· ' + k.label,
(k.hex || '') + (k.desc ? ' — ' + k.desc : '')]);
if (done.has(k.label)) continue;
rows.push(['· ' + k.label, fmtKid(k)]);
if (k.children) for (const c of k.children) {
rows.push(['· · ' + c.label,
(c.hex || '') + (c.desc ? ' — ' + c.desc : '')]);
rows.push(['· · ' + c.label, fmtKid(c)]);
}
}
}
@@ -2465,7 +2484,7 @@ function onFilterChange() {
}
// ──────────────────── Versioning ────────────────────
const PWA_VERSION = '1.20.1';
const PWA_VERSION = '1.20.2';
const MIN_SERVER_VERSION = '1.0.0';
function parseVersion(v) {