Track session deaths and broken crystal costs #22

Open
opened 2026-09-22 19:47:18 +02:00 by rexlManu · 4 comments
Owner

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.

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.
Author
Owner

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.

Implemented and pushed in [70bf7ba](https://git.it-lampe.de/rexlManu/garmith-app/commit/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.
Author
Owner

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.

Pushed [9af47bf](https://git.it-lampe.de/rexlManu/garmith-app/commit/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.
Author
Owner

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.

UI polish pushed in [0ceca4d](https://git.it-lampe.de/rexlManu/garmith-app/commit/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.
Author
Owner

Emmanuel reports missed live deaths. Commit 58d38ea fixes 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.

Emmanuel reports missed live deaths. Commit 58d38ea fixes 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.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
rexlManu/garmith-app#22
No description provided.