robert
c41a8aa994
Merge branch 'main' into single-source
2026-07-07 11:21:12 -04:00
david raistrick
02344eb3f5
Bump Docker base images to node 22; mock firestore comment cleanup
...
Both Dockerfiles (root firebase-mode + docker/ caddy) bumped node:18-alpine
to node:22-alpine. better-sqlite3 v12 (from PR #6 ) requires node 20+; node 18
builds fail with node-gyp/python errors. openssl-legacy-provider flag kept
for react-scripts 5 compat.
.dockerignore: removed .env* exclusion so .env.local COPY works in firebase
image build.
mock firestore applyConstraints comment: offset handled by adapter (firebase.js
slices), mock never sees it — clarified dead-code reasoning.
2026-07-06 23:49:47 -04:00
david raistrick
c544bc305a
Merge branch 'pr-6' into single-source
2026-07-06 23:24:25 -04:00
david raistrick
835a4663f7
Docker build cache: .dockerignore, cache mount, layer reorder, restart script
...
- .dockerignore: exclude node_modules/.git/tmp/data/logs
- Dockerfile: BuildKit cache mount for npm, --omit=dev at install, drop
npm prune step
- Reorder layers: shared/src/frontend copy before build, server copy +
better-sqlite3 rebuild after. Server/shared changes no longer invalidate
frontend build layer unless shared (FE dep) changes
- Remove duplicate shared COPY in runtime stage (bundled in FE build)
- docker/restart.sh: stop + rebuild + start in one script
2026-07-06 23:22:19 -04:00
david raistrick
9159755846
Scope player card transitions: ring/shadow fast, fade/transform slow
...
transition-all duration-1000 on PlayerParticipantCard wrapper slowed current-
turn ring/border animation. Turn pointer visibly laggy at 400ms turn intervals.
Fix: scoped transition properties. opacity/transform/filter/border-color = 1s
for fade/death animations. box-shadow = 300ms for current-turn ring highlight,
so turn pointer snaps between participants while fades stay smooth.
2026-07-06 22:48:10 -04:00
david raistrick
dbe018825b
Merge remote-tracking branch 'upstream/main' into single-source
2026-07-06 22:39:57 -04:00
david raistrick
3b75ec9b3d
Animate player display inactive transitions and death state
...
Player display now tracks displayParticipants separately from raw encounter
participants so active->inactive can animate out before removal, and inactive->
active can animate in. This preserves 1-list order, keeps DM display behavior
unchanged, and avoids fading dying/stable participants.
PlayerParticipantCard handles transitions:
- active->inactive: scale/slide/fade out, then parent removes from display list
- inactive->active: scale/slide/fade in
- alive->dead: keep visible with dim/desaturate/red-rim death cue + skull pulse
- dying/stable: full visible, no fade/removal
DisplayView inactive characterization updated to wait for exit animation before
asserting removal. TODO item removed.
2026-07-06 22:38:33 -04:00