feat(ui): color and acknowledge pinned log errors

Add independent AppLog message types and explicit Class 1/2 severity. Wrap and color log rows, pin Class 1 above Class 2, and let acknowledgement return entries to the current-launch timeline without changing file format or rotation.

Ref: https://logtape.org/manual/levels
This commit is contained in:
2026-11-02 18:17:18 -08:00
parent 01a3fcaaf7
commit a6aea5bf26
23 changed files with 365 additions and 100 deletions
+13 -13
View File
@@ -1,24 +1,24 @@
# HANDOFF — 2026-11-02 (Logs tab + test sweep)
# HANDOFF — 2026-11-02 (Logs severity and acknowledgment)
## State
- `main`; all work is committed locally, not pushed.
- Non-edit left panel has Live Chat and Logs tabs. Logs shows the newest 500 AppLog entries from
this process only; file format and rotation are unchanged. Feature commit: `9fa06c6`.
- The 13 failures from the prior full-suite run were resolved in separate focused commits; see
`git log` for each test-failure task.
- `./scripts/verify.sh` passes: clean app build, 0 warnings, 522/522 tests, scope check.
- `main`; previous Logs tab and 13 test-failure fixes are committed locally, not pushed.
- Logs wraps and colors by explicit message type. Class 1 (fatal/unhandled) and Class 2 (recoverable,
actionable) are independent metadata; Class 1 pins above Class 2. Acknowledging unpins but retains
the entry in the current-launch timeline. Disk format and rotation are unchanged.
- Logs integration test passes; clean app build is 0 warnings and scope-check passes. The last full
run was 521/522: only the real-mouse layer-reorder test failed while the creator was using the
desktop. It was not rerun; the focused drag test passes in isolation.
## Next action
Day 1's separate system-message strip was replaced by the Logs tab per the creator's ruling. Next
release check: Debug-only `InternalsVisibleTo`. Keep one integration test per change; do not push
absent a milestone/checkpoint request.
Commit this Logs enhancement with the interactive-mouse test exception recorded. Do not rerun that
test while the creator is playing; do not push absent a checkpoint request.
## Landmines
- Build/test with Windows `dotnet.exe`; full suite can hang in WASAPI teardown.
- Any integration test constructing `MainWindow` must use a temporary `LayoutPathOverride` and
- `LayerReorderPersistenceTests.RealMouseDrag_OnTheLayerList_PersistsTheReorder` injects physical
mouse input. It passed in isolation; do not run it while the desktop is in use.
- Any integration test constructing `MainWindow` must set a temporary `LayoutPathOverride` and
clear it in `finally`.
- Debug-only `InternalsVisibleTo` remains an outstanding release check.
- Bundled FFmpeg stays outside the single-file exe (`ExcludeFromSingleFile="true"`).