Files view: change details with before/after images (v2.4.0)
- the timeline's Δ glyph became a **Details** button, and it now appears on Update rows too (not just card-side changes); EN "Changed (card)" -> "Changed on card", RU "Изменено (картой)" -> "Изменено картой" - the details modal shows the affected unit — the whole file, or the single record that changed — **before and after** the change as hex views (16 bytes per row, ASCII column, never-observed bytes as `--`), with the bytes that changed and the bytes the operation *first observed* highlighted in two different colours, plus the changed/new byte counts and the APDU reference; the old before/after byte table is gone - `GET /api/sessions/<id>/files/image?key=…&change=…` returns those two views (segments with offsets) plus the change's metadata; the images are reconstructed from the current image by undoing the later changes (`FileTracker.change_images`), so nothing is duplicated per event — every value change is an event, hence the values are exact (a byte only first observed later can appear as known in both views) - tracker: change events carry `observed_ranges` (bytes that were unknown before the operation) next to `ranges`; an update that only observes new bytes now records an event (so it can be inspected); record-file ranges are in-record byte offsets (the record number stays in its own field), which the previous "record number as position" could not express for a hex highlight - tests: change-images reconstruction (before/after per event, later changes undone, records isolated, observation-only events, unknown gaps), the image endpoint (200/404/400), and Node tests for the hex-image helper (highlight classes, unknown gaps, ASCII, row limit) and the modal rendering - v2.4.0; SW cache simtrace-analyser-v65
This commit is contained in:
1 parent
87b6811adf
commit
cad3999307
12 files changed
+617
-120
No files matched your search
@@ -191,9 +191,20 @@ in the stored wire shape and are skipped with a note in the import report.
|
||||
The Trace tab's side panel has a view selector (*Map* / *Stats* / **Files**;
|
||||
a drop-down, since three tab captions no longer fit). The Files view is a
|
||||
trace-wide timeline of file operations — every **Read**, **Update** and
|
||||
**Changed (card)** row shows the same file name as the Map view, and clicking
|
||||
a row jumps to the APDU in the trace. A *Changed (card)* row carries a Δ
|
||||
button that opens the changed ranges with the previous and the new bytes.
|
||||
**Changed on card** row shows the same file name as the Map view, and clicking
|
||||
a row jumps to the APDU in the trace. Rows that carry a recorded change (a
|
||||
card-side change, or an update that wrote or first observed bytes) also offer
|
||||
**Details**: a modal showing the affected unit — the whole file, or the single
|
||||
record that changed — **before and after** the change, as hex views (16 bytes
|
||||
per row with an ASCII column, never-observed bytes drawn as `--`) with the
|
||||
bytes that changed highlighted in one colour and the bytes the operation first
|
||||
observed in another, plus the changed/new byte counts and the APDU reference.
|
||||
|
||||
The images come from `GET /api/sessions/<id>/files/image?key=…&change=…` and
|
||||
are reconstructed from the current image by undoing the later changes
|
||||
(`filetrack.FileTracker.change_images`) — nothing is duplicated per event.
|
||||
Every value change is recorded, so the values are exact; a byte that was only
|
||||
*first observed* after the selected change can appear as known in both views.
|
||||
|
||||
The data comes from `simtrace_analyser/filetrack.py`
|
||||
(`GET /api/sessions/<id>/files`), a single-pass tracker over the decoded
|
||||
|
||||
Reference in new issue
Block a user