Fix ally/target bugs, OCR fire-support parsing, add debug capture #1

Merged
dodox merged 1 commits from fix/bug-backlog-2026-08-11 into master 2026-08-11 17:36:21 +02:00
Owner
  • Board.clear() now also drops allies; the "clear board?" guard checks
    allies too. New Board.clear_units() + Clear button right-click menu
    ("clear enemies, units & flights", keeps Nest/spotters/RPs).
  • An Ally with the ad-hoc TargetType.ENEMY showed "Enemy" on the map
    popover/toast instead of "Ally" (icons.target_type_label already had
    the fix for the picker, now reused everywhere else via app.py's
    _display_name).
  • Firing panel drag-reorder no longer triggers a full app refresh
    (solver + dedupe + map redraw) on every drop, just a local rebuild.
  • "Always show geo" didn't draw for Allies (missing from the overlay
    candidate list); blast radius only respected selection, not the
    show_geo_desc pin.
  • ocr.py: added a second fire-support-request grammar ("Infantry#N
    taking fire ... Requesting X Shell on our position at before
  • New debug_capture.py: saves screenshots (+ metadata) the app handled
    badly, for later tuning of map_vision/ocr against real failures:
    map-read errors, user grid corrections (paired with the auto-detected
    grid), screenshots that read as text but may have been a map, and
    marker-detection ground truth (every proposal's accept/reject verdict
    plus units added with no matching proposal) captured whenever a
    screenshot stops being the active one.
  • README: Known issues section (map screenshot reading, grid + unit
    detection, is unreliable and fails often).
  • 14 new tests (tests/test_models.py, tests/test_debug_capture.py, +
    additions to tests/test_ocr.py), 38/38 passing
- Board.clear() now also drops allies; the "clear board?" guard checks allies too. New Board.clear_units() + Clear button right-click menu ("clear enemies, units & flights", keeps Nest/spotters/RPs). - An Ally with the ad-hoc TargetType.ENEMY showed "Enemy" on the map popover/toast instead of "Ally" (icons.target_type_label already had the fix for the picker, now reused everywhere else via app.py's _display_name). - Firing panel drag-reorder no longer triggers a full app refresh (solver + dedupe + map redraw) on every drop, just a local rebuild. - "Always show geo" didn't draw for Allies (missing from the overlay candidate list); blast radius only respected selection, not the show_geo_desc pin. - ocr.py: added a second fire-support-request grammar ("Infantry#N taking fire ... Requesting X Shell on our position at <coord> before <time>", plus a bearing/distance-from-position variant), distinct from the existing Marine Garrison one. - New debug_capture.py: saves screenshots (+ metadata) the app handled badly, for later tuning of map_vision/ocr against real failures: map-read errors, user grid corrections (paired with the auto-detected grid), screenshots that read as text but may have been a map, and marker-detection ground truth (every proposal's accept/reject verdict plus units added with no matching proposal) captured whenever a screenshot stops being the active one. - README: Known issues section (map screenshot reading, grid + unit detection, is unreliable and fails often). - 14 new tests (tests/test_models.py, tests/test_debug_capture.py, + additions to tests/test_ocr.py), 38/38 passing
dodox added 1 commit 2026-08-11 17:36:17 +02:00
- Board.clear() now also drops allies; the "clear board?" guard checks
  allies too. New Board.clear_units() + Clear button right-click menu
  ("clear enemies, units & flights", keeps Nest/spotters/RPs).
- An Ally with the ad-hoc TargetType.ENEMY showed "Enemy" on the map
  popover/toast instead of "Ally" (icons.target_type_label already had
  the fix for the picker, now reused everywhere else via app.py's
  _display_name).
- Firing panel drag-reorder no longer triggers a full app refresh
  (solver + dedupe + map redraw) on every drop, just a local rebuild.
- "Always show geo" didn't draw for Allies (missing from the overlay
  candidate list); blast radius only respected selection, not the
  show_geo_desc pin.
- ocr.py: added a second fire-support-request grammar ("Infantry#N
  taking fire ... Requesting X Shell on our position at <coord> before
  <time>", plus a bearing/distance-from-position variant), distinct
  from the existing Marine Garrison one.
- New debug_capture.py: saves screenshots (+ metadata) the app handled
  badly, for later tuning of map_vision/ocr against real failures:
  map-read errors, user grid corrections (paired with the auto-detected
  grid), screenshots that read as text but may have been a map, and
  marker-detection ground truth (every proposal's accept/reject verdict
  plus units added with no matching proposal) captured whenever a
  screenshot stops being the active one.
- README: Known issues section (map screenshot reading, grid + unit
  detection, is unreliable and fails often).
- 14 new tests (tests/test_models.py, tests/test_debug_capture.py, +
  additions to tests/test_ocr.py), 38/38 passing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
dodox merged commit 49863b6045 into master 2026-08-11 17:36:21 +02:00
dodox deleted branch fix/bug-backlog-2026-08-11 2026-08-11 17:36:21 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
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: dodox/FEnigma#1
No description provided.