Logbook progress map in the style of decomp.dev: "<project> is NN.NN% decompiled", a layered Code bar (exact solid, verified lighter, readable hatched, with per-segment tooltips), a Data bar (named globals of the data addresses the code touches), Previous / Next / Latest through the history reports, a Units dropdown and filter (text, <70%, >10kb), and a canvas treemap of units (original source files, else 64 KB blocks) that drills into functions

- GET /api/logbook/progress-map: one compact document, cached until an input changes (main's HEAD, the Logbook symbol table and statistics, match/emulator/library results, facts, names, source files, globals, deferral notes); ?have=<version> answers {"same": true}
- definitions follow the Logbook's progress.py (pc102.csv category game, status decompiled or later), so the headline equals game_bytes_decompiled_percent; engine, library and unsorted code are shown but not counted
- history points now record the commit and the game-code bytes
- the page lays out once per load, filter or size change, hit-tests hover on the computed rectangles, builds the 600-entry units list only when opened, and polls once a minute only while the Logbook is visible
This commit is contained in:
KeelrLeek committed 2026-10-06 15:46:42 -05:00
1 parent 315b63b571
commit d5eb82261e
5 files changed
+556 -4

No files matched your search

+5 -2
View File
@@ -4,7 +4,8 @@ executable, the trend, milestones and the ship's log. (It replaced a separately
One JSON file per collection in the project's logbook folder ([logbook] dir, default <harbor home>/logbook/<project>):
stats.json the latest statistics (functions, bytes, by_category, percentages, commit, updated_at)
map.json the chart of the executable (low, high, cells: "game,engine,platform,crt,unsorted,done" per cell)
history.json [{at, classified, decompiled, weighted, verified}] one point per statistics report
history.json [{at, classified, done, decompiled, weighted, verified, commit, game_bytes}] one point per
statistics report (commit and game_bytes since 2026-10-06)
milestones.json [{id, code, title, phase, state, order, items: [{text, done}]}]
log.json [{id, at, kind, title, detail}] the ship's log, newest last
Writes replace the file atomically. Nothing here talks to the network."""
@@ -93,7 +94,9 @@ def set_stats(project, stats, history_point=True):
"done": round(100 * handled / total, 2) if total else 0,
"decompiled": stats.get("game_bytes_decompiled_percent", 0),
"weighted": stats.get("weighted_percent", 0),
"verified": stats.get("game_bytes_verified_percent", 0)})
"verified": stats.get("game_bytes_verified_percent", 0),
**({"commit": stats["commit"]} if stats.get("commit") else {}),
**({"game_bytes": cats["game"]["bytes"]} if (cats.get("game") or {}).get("bytes") else {})})
_write(project, "history.json", history)
return stats