Track session deaths and broken crystal costs #22
Labels
No labels
status:done
status:in-progress
status:ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
rexlManu/garmith-app#22
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Add automatic screen-OCR death and crystal-loss tracking with manual correction. User chose OCR detection; network capture continues to count loot. Persist death count, crystal identity/quantity and replacement-price snapshots in sessions/history. Show crystal losses and net silver without changing loot quantities. Preserve old sessions. Require repeated personal death-screen readings, deduplicate persistent screens and allow delayed crystal details. Acceptance: parser/lifecycle/accounting tests, UI checks, reference-image OCR evidence and a natural live death check. Unknown prices must stay unpriced. Track progress in WORKFLOW.md and docs/death-tracking.md.
Implemented and pushed in 70bf7ba.
OCR detects repeated personal death screens and explicit crystal-loss text. Sessions/history retain death records, quantities and replacement-price snapshots. Unknown prices stay unpriced; manual corrections take priority. Crystal costs reduce net silver without changing loot counts. Automatic Stop retains deaths after the last loot cutoff.
Dashboard/history use the existing panel and control style. The overlay shows the death count in Grind Timer and crystal loss plus net silver in Loot. The user clarified that no death-duration timer is wanted.
Checks passed: 318 workspace tests, typecheck, build, test:deaths, test:sessions, test:stop, and 20 route comparisons. The desktop fixture checks OCR-to-session flow, duplicate suppression, old-session compatibility, negative net silver, disk/history persistence, overlay snapshot transfer, and live overlay updates. Visual checks passed. The English reference screenshot was checked with local OCR; no live death was induced. Frozen source references remain unchanged.
Keep this issue in progress for a natural in-game death and crystal-loss check, crop/timing calibration, and Windows capture evidence. The running pnpm dev app, user session and installed release were left open and unchanged. Workflow and evidence: docs/death-tracking.md and WORKFLOW.md.
Pushed 9af47bf. User supplied a 2559x1439 game screenshot with a killed-by message and one Rebellious Spirit Crystal destroyed. Three smaller crops now read title, crystal notice and resurrection controls. The real Electron/Tesseract worker recognizes all required text from that screenshot in about 200 ms excluding startup; two observations confirm one death and a third does not duplicate it. Added an opt-in scripts/check-death-image.mjs check. No screenshot or crops committed. Negative crystal rows now appear in live loot, overlay and history, with negative quantities and price snapshots or Unpriced. Raw pickup counts stay unchanged; net silver deducts losses once. Passed 324 workspace tests, typecheck, build, test:deaths including negative-row/overlay assertions, and all 20 route comparisons. Design check has no findings. Keep issue open for live polling timing, other layouts and Windows capture. Running app and user data were not changed.
UI polish pushed in 0ceca4d, using Impeccable as requested. Session deaths now matches the adjacent Session conditions heading/row spacing and right-aligned values. Uses shared toggle instead of native checkbox/disclosure; Record death is a small secondary action. Zero loss reads 0 silver. Routine status remains accessible without a visible text row, capture errors stay visible, and paused status is correct. Build, test:deaths including keyboard toggle and paused state, visual review and design scan passed. No findings suppressed. User app/session and installed release unchanged. Live detection acceptance remains open.
Emmanuel reports missed live deaths. Commit
58d38eafixes one verified failure path: a missing crystal-notice OCR crop no longer discards a readable death title and resurrection controls. The supplied death screenshot passes through the real OCR worker; focused tests, workspace typecheck and tests pass. This is not a live-game validation. Polling still needs two matching reads three seconds apart, so quick resurrection or different UI placement may still miss events. Keep this issue open until a natural live death confirms the result. Installed v0.1.4 is unchanged.