Tablet controls, participant action states, and Android shortcut fixes #9

Merged
robert merged 3 commits from chore/test-and-cleanup into main 2026-07-15 15:08:22 -04:00
Collaborator

Summary

Improves tablet combat operation, participant action clarity, static lint coverage, and Android home-screen shortcut behavior.

Tablet screen controls

  • Add wake-lock and browser-fullscreen controls to encounter header/popout
  • Re-acquire wake lock after browser release
  • Retry fullscreen after Android lock/unlock; keep manual fullscreen control visible
  • Use distinct panel icon for encounter full-page expansion
  • Enlarge character editor Save target with icon + text

Participant action states

  • Strong green/red active/inactive toggle states
  • Purple selected state while conditions panel is open
  • Amber selected state while participant editor is open
  • Keep controls visible on inactive participant cards
  • Add aria-pressed, aria-expanded, and explicit action labels

Android shortcuts and display graphics

  • Preserve user-renamable Android shortcuts by intentionally keeping required PWA logo assets unavailable via .png-not suffixes
  • Document Chrome root-vs-/display shortcut behavior in commit rationale
  • Add distinct player-display favicon/logo artwork
  • Swap /display browser favicon to player-favicon.ico

Test guard

  • Replace hardcoded ESLint target list with recursive scan of all production JS/JSX under src/ and shared/
  • Exclude tests, mocks, and node_modules
  • Add regression tests for screen controls, participant selected states, and display favicon

Verification

  • App: 121 tests passed
  • Shared: 219 tests passed
  • Server: 40 tests passed
  • Total: 380 tests passed
## Summary Improves tablet combat operation, participant action clarity, static lint coverage, and Android home-screen shortcut behavior. ### Tablet screen controls - Add wake-lock and browser-fullscreen controls to encounter header/popout - Re-acquire wake lock after browser release - Retry fullscreen after Android lock/unlock; keep manual fullscreen control visible - Use distinct panel icon for encounter full-page expansion - Enlarge character editor Save target with icon + text ### Participant action states - Strong green/red active/inactive toggle states - Purple selected state while conditions panel is open - Amber selected state while participant editor is open - Keep controls visible on inactive participant cards - Add `aria-pressed`, `aria-expanded`, and explicit action labels ### Android shortcuts and display graphics - Preserve user-renamable Android shortcuts by intentionally keeping required PWA logo assets unavailable via `.png-not` suffixes - Document Chrome root-vs-`/display` shortcut behavior in commit rationale - Add distinct player-display favicon/logo artwork - Swap `/display` browser favicon to `player-favicon.ico` ### Test guard - Replace hardcoded ESLint target list with recursive scan of all production JS/JSX under `src/` and `shared/` - Exclude tests, mocks, and `node_modules` - Add regression tests for screen controls, participant selected states, and display favicon ## Verification - App: 121 tests passed - Shared: 219 tests passed - Server: 40 tests passed - Total: 380 tests passed
keen added 3 commits 2026-07-15 13:52:59 -04:00
- Recursively lint all production JS/JSX under src/ and shared/
- Exclude tests, mocks, and node_modules from static guard
- Update TODO status
- Exclude TODO.md from Docker build context
- Add wake lock and browser fullscreen controls to encounter header/popout
- Re-acquire wake lock after browser release (still doesnt work on tablet)
- Retry fullscreen after Android unlock; keep manual control visible
- Add larger labeled character Save button
- Use distinct panel icon for encounter full-page expansion
- Add strong active/inactive, conditions-open, and editing button states
- Keep inactive participant controls visible
- Add regression tests and update affected characterization tests
- Update project TODO notes
Chrome Android forces the root URL into PWA installation when required
manifest icon files exist. PWA names come from the manifest and cannot be
edited, which breaks workflows using multiple tracker copies.

Keep required 192/512 icon assets intentionally unavailable by committing
generated files with .png-not suffixes. Removing the manifest link does not
restore root shortcut naming; Chrome still installs the root as a PWA.

Chrome handles /display differently: even with a working manifest it offers
Install app or Create shortcut, and Create shortcut permits renaming. Keep
both manifests intentionally non-installable for consistent user-controlled
shortcut names.

Also add separate player-display favicon/logo artwork and swap /display browser
favicon to player-favicon.ico. Keep generated standard/player logo sources
under renamed inert filenames.
Owner

so much great work... I love the full screen feature; (not browser full-screen but the other one)

So the bug (#8) about not adding a character has been fixed incorrectly. lol

image.png
so much great work... I love the full screen feature; (not browser full-screen but the other one) So the bug (https://code.draft13.com/robert/ttrpg-initiative-tracker/issues/8) about not adding a character has been fixed incorrectly. lol <img width="1014" alt="image.png" src="attachments/d7ae9296-bf2f-4f2f-beb6-703baaf048b8">
Author
Collaborator

huh, I didnt see that - wonder what fixed it. also makes me think that campaign-level npcs may or may not should be added with the add all button... which yeah I also use.

huh, I didnt see that - wonder what fixed it. also makes me think that campaign-level npcs may or may not should be added with the add all button... which yeah I also use.
Author
Collaborator

and fwiw, the full screen re-activation on unlock still doesnt work. I just couldn't convince the llm context of it. it tried hard.

maybe in some pwa scenario it will work (just not in any of the ones I tried!), but PWA is.......a mess. so having a broken pwa right now is better anyway.

and fwiw, the full screen re-activation on unlock still doesnt work. I just couldn't convince the llm context of it. it tried hard. _maybe_ in _some_ pwa scenario it will work (just not in any of the ones I tried!), but PWA is.......a mess. so having a broken pwa right now is better anyway.
Owner

I noticed an error about chrome://flags something something when I did the don't sleep; not sure if the browser has the capability built in...

I noticed an error about chrome://flags something something when I did the don't sleep; not sure if the browser has the capability built in...
Author
Collaborator

yeah, for sleep - if it's not on https, it wont work - you have to add your http://host:port to the insecure origin list...... if it's https, it should work.

yeah, for sleep - if it's not on https, it wont work - you have to add your http://host:port to the insecure origin list...... if it's https, it should work.
robert merged commit 23aa99ba0a into main 2026-07-15 15:08:22 -04:00
Author
Collaborator

So the bug (#8) about not adding a character has been fixed incorrectly. lol

and I read this wrong - maybe because I read it in the email and it truncated at "has been fixed" lol

....I can't repro, is this a firebase backend bug? I can individually add with no problems in my prod and test envs

> So the bug ([#8](https://code.draft13.com/robert/ttrpg-initiative-tracker/issues/8)) about not adding a character has been fixed incorrectly. lol and I read this wrong - maybe because I read it in the email and it truncated at "has been fixed" lol ....I can't repro, is this a firebase backend bug? I can individually add with no problems in my prod and test envs
Owner

It works, but there is a little error at the bottom that says it didn't, but it did; Works by my standards! :)

It works, but there is a little error at the bottom that says it didn't, but it did; Works by my standards! :)
Author
Collaborator

👁️

👁️
Sign in to join this conversation.