Guard destructive settings and radio actions
Full build / Import + headless tests (push) Successful in 36s
Full build / Full desktop build + optional release (push) Skipped

- Route reset campaign and tutorial replay through one reusable confirmation dialog; repeated presses cannot stack or emit twice.
- Keep emergency hold-to-send single-shot and cover the post-submit release.
- Add destructive-action regression checks, strings and documentation.
This commit is contained in:
Gig Line Dev committed 2026-11-02 16:29:26 +01:00
1 parent f6aa26e6ca
commit 7315166361
10 files changed
+121 -14

No files matched your search

+18 -4
View File
@@ -1,6 +1,6 @@
# UI copy and button inventory
Status: dialogue, button-state, focus, modal-close and font/layout passes complete; destructive-action and end-to-end audit in progress for 0.9.3.
Status: dialogue, button-state, focus, modal-close, font/layout and destructive-action passes complete; end-to-end audit in progress for 0.9.3.
## Screen inventory
@@ -14,7 +14,7 @@ Status: dialogue, button-state, focus, modal-close and font/layout passes comple
| Wand screening | `hud.gd` | A = admit, D = refuse | Shows alert and carried items. |
| Radio / emergency | `radio_panel.gd` | Send request / hold Send emergency, Cancel | Normal click vs emergency hold. |
| Pause | `pause_overlay.gd` | Resume, restart, Settings, quit to menu | Esc resumes. |
| Settings | `settings_panel.gd` | Apply, Cancel, Replay tutorial, Reset campaign, rebind controls | Destructive reset asks for confirmation. |
| Settings | `settings_panel.gd` | Apply, Cancel, Replay tutorial, Reset campaign, rebind controls | Both reset and tutorial replay ask for confirmation. |
| Help | `help_overlay.gd` | Filter controls, Close | Policy card and current bindings. |
| Shift review | `shift_review.gd` | Continue campaign, timeline, return to menu, quit | Campaign next step is shown here. |
| Timeline | `event_timeline.gd` | Previous, Next, Close | Review evidence stepper. |
@@ -54,8 +54,8 @@ Status: dialogue, button-state, focus, modal-close and font/layout passes comple
| Pause | Quit to menu | Return to venue menu | Standard button |
| Settings | Apply settings | Persist settings | Standard button |
| Settings | Cancel | Discard edits | Standard button |
| Settings | Replay tutorial | Clear tutorial flags and restart Hollywood | Standard button |
| Settings | Reset campaign | Confirmed campaign reset | Confirmation dialog |
| Settings | Replay tutorial | Confirm, then clear tutorial flags and restart Hollywood | Confirmation dialog |
| Settings | Reset campaign | Confirm, then reset campaign progress | Confirmation dialog |
| Help | Close | Close overlay | Standard button |
| Review | Continue campaign | Start next venue | Hidden when campaign complete |
| Review | Body camera timeline | Open event timeline | Standard button |
@@ -152,6 +152,20 @@ resumes; `_show_start_menu()` keeps the pointer visible at the menu.
The session smoke now covers menu → Settings → Cancel → menu, Help closing on
right-click, and Settings cancel from pause leaving the guard unfrozen.
## Destructive actions
Campaign reset and tutorial replay both open a `ConfirmationDialog`; pressing
the button again while it is open focuses the existing dialog instead of
stacking a second one. The confirmation is dismissed and the signal is emitted
at most once on OK; Cancel closes without emitting. The emergency radio remains
a press-and-hold action: a normal click does nothing for an emergency, a short
hold cancels, a full 1.6 s hold submits once, and the release after a completed
hold cannot submit again.
Regression coverage:
- `test_session_shell.gd` checks reset reuse/one-shot and replay confirmation/cancel.
- `test_radio_panel.gd` checks normal click, short hold, full hold and post-submit release.
## Font-scale and long-string layout
The HUD scale is tested at its **0.75×** and **1.75×** bounds. HUD top/time labels