Pebble Deployment and Verification
Artifact split
Pebble is not bundled into the SvelteKit frontend build.
shell:
source: frontend/src/routes/play/[id]/+page.svelte
artifact: frontend/build/
service: funday-frontend.service
iframe:
source: games/pebble/
artifact: games/pebble/build/
public_path: /games/assets/pebble/build/Changing only frontend/build/ can leave the old Pebble game visible. Changing only games/pebble/build/ can leave the old shell visible. Visual changes that cross the boundary require both artifacts to be verified.
Production rules
- Follow the Funday frontend production deploy manifest in
/home/usr/AGENTS.md. - Never run raw
vite build,npm run build:vite, ornpm run build --no-restartagainst the active production frontend service. - Use the atomic frontend deployment command for shell changes:
cd funday/frontend && npm run deploy. - Before a frontend deploy, verify at least 5 GB
MemAvailableand no orphanvite devprocess on port 5173. - Rebuild the static Pebble artifact using the repository’s Pebble/static-game build path, not a manual copy.
- Do not leave timestamped build backups or ad hoc
frontend-deploy/directories.
Verification sequence
-
Confirm the intended source revision and Pebble plugin version.
-
Build Pebble and verify
games/pebble/build/contains its entry HTML, JS, and CSS assets. -
Deploy the frontend shell through the atomic production process when shell files changed.
-
Confirm the public iframe URL:
https://funday.gg/games/assets/pebble/build/?embed=1&theme=themeable -
Open the exact public route:
https://funday.gg/play/pebble -
Verify with browser/network evidence:
- iframe response is successful;
- iframe asset URLs are current rather than stale;
- shell and iframe resolve the same theme;
- no visible theme flash occurs;
- desktop and mobile layouts have intentional board surfaces;
- gameplay HUD, multiball, free-ball, game-over, and level-clear states render coherently.
Visual proof matrix
| State | Desktop | Mobile | Required evidence |
|---|---|---|---|
| Initial board | yes | yes | screenshot + iframe URL |
| Aim/trajectory | yes | yes | screenshot during aim |
| Multiball/bonus | yes | yes | screenshot + readable notification |
| Game over | yes | yes | screenshot of semantic result card |
| Level clear | yes | yes | genuine gameplay transition, not debug-loaded state |
| Theme light/dark | yes | yes | no-flash comparison |
Stale-artifact diagnosis
If source and public visuals disagree, compare both build identities before changing styling:
frontend/build/ shell artifact
games/pebble/build/ iframe artifact
/play/pebble combined public surfaceDo not call a source-level visual fix deployed until the exact public route and iframe asset identity confirm it.