better-ux #2

Merged
patillacode merged 2 commits from better-ux into main 2026-08-29 15:33:10 +02:00
Owner

Doom detection, lethal cues, undo, run persistence, mobile tap fix

  • Detects when the current room is unwinnable (isDoomed, searched via the engine itself) and
    shows a non-blocking banner instead of silently letting you punch into a guaranteed loss — you
    can still play it out for the score, or restart with one tap since the normal controls are
    hidden in that state.
  • Punch/weapon buttons that would drop HP to 0 now get a theme-independent red warning
    (previously a barely-visible skull icon).
  • Added unlimited undo within a run; a run that used undo isn't recorded to stats, since
    replaying the same fixed deck order is a retry, not a fresh result.
  • The run now persists across a refresh (scoundrel.run in localStorage).
  • Surfaced state that already existed but was never shown: room progress pips, a FINAL ROOM
    badge, the weapon's kill stack, and the reason Avoid is disabled.
  • Fixed a mobile bug where tapping a monster card fired a fight action depending on which half
    you tapped (a phantom :hover on touch made the fight buttons live on the first tap); tap now
    always peeks first, and tapping elsewhere cancels the peek.
**Doom detection, lethal cues, undo, run persistence, mobile tap fix** - Detects when the current room is unwinnable (isDoomed, searched via the engine itself) and shows a non-blocking banner instead of silently letting you punch into a guaranteed loss — you can still play it out for the score, or restart with one tap since the normal controls are hidden in that state. - Punch/weapon buttons that would drop HP to 0 now get a theme-independent red warning (previously a barely-visible skull icon). - Added unlimited undo within a run; a run that used undo isn't recorded to stats, since replaying the same fixed deck order is a retry, not a fresh result. - The run now persists across a refresh (scoundrel.run in localStorage). - Surfaced state that already existed but was never shown: room progress pips, a FINAL ROOM badge, the weapon's kill stack, and the reason Avoid is disabled. - Fixed a mobile bug where tapping a monster card fired a fight action depending on which half you tapped (a phantom :hover on touch made the fight buttons live on the first tap); tap now always peeks first, and tapping elsewhere cancels the peek.
Detect when the current room has no surviving line of play (isDoomed,
searched via the engine itself) and show a non-blocking banner instead
of ending the run — the player can still play it out for the score, or
restart directly with no confirm step since the row of play controls
is hidden in that state. Punch/weapon buttons that would drop hp to 0
get a theme-independent red warning instead of a barely-visible skull.

Undo is unlimited within a run but a run that used it isn't recorded
to stats, since replaying the same fixed deck order is a retry rather
than a fresh result. The run now also persists across a refresh.

Also surfaces state that already existed but was never shown: room
progress pips, a FINAL ROOM badge, the weapon's kill stack, and the
reason Avoid is disabled.
Fix mobile card reveal firing on the wrong tap
All checks were successful
CI / verify (pull_request) Successful in 22s
CI / smoke (pull_request) Successful in 11s
a1f78c31f3
A tap dispatches a phantom :hover, so the fight buttons were already
live on the first touch and which half of the card you hit decided
the outcome. Gate the CSS hover-reveal to real pointers with
(hover: hover) so touch relies solely on the explicit revealed state,
and let a tap outside the card cancel a peek instead of forcing a
fight on the second tap.
patillacode deleted branch better-ux 2026-08-29 15:33:10 +02:00
Sign in to join this conversation.
No reviewers
No labels
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
patillacode/scoundrel!2
No description provided.