docs: session handoff — duplicate-chess landing card and cross-repo deploy
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
# Handoff: 3rd landing card linking to duplicate-chess (deployed)
|
||||
|
||||
## Session Metadata
|
||||
- Created: 2026-05-19 18:14:48
|
||||
- Project: /home/claude/bin/blind_chess
|
||||
- Branch: main (commits pushed)
|
||||
- Session duration: ~30 minutes; the bulk of this session's substantive work
|
||||
happened in the sibling `duplicate_chess` repo — see that repo's handoff for
|
||||
the full deploy story.
|
||||
|
||||
### Recent Commits (for context)
|
||||
- `33a7cef` docs: record duplicate-chess sub-app sharing the chess.sethpc.xyz origin
|
||||
- `fef6dcf` feat(client): third landing card linking to duplicate chess
|
||||
- `d95ab2a` docs: refresh handoff — promotion fix shipped, both fixes deployed
|
||||
- `c01244c` fix: promotion dialog only fires for genuine pawn promotions
|
||||
|
||||
## Handoff Chain
|
||||
|
||||
- **Continues from**: [2026-05-18-205736-table-fidelity-features.md](./2026-05-18-205736-table-fidelity-features.md)
|
||||
— that handoff's state is otherwise still current; the manual browser test
|
||||
pass on the table-fidelity batch is still pending.
|
||||
- **Cross-repo companion**: `~/bin/duplicate_chess/.claude/handoffs/2026-05-19-181212-deployed-as-chess-sethpc-xyz-duplicate.md`
|
||||
— the full story of the deploy lives there.
|
||||
|
||||
## Current State Summary
|
||||
|
||||
The blind_chess landing now shows a 3rd card — "Duplicate Chess (under
|
||||
development)" — that links to `/duplicate/`. The page-level deploy on
|
||||
`chess.sethpc.xyz` is live and verified: the served bundle contains the new
|
||||
strings ("Duplicate Chess", "under development", "/duplicate/") and CSS classes
|
||||
(`.card-link`, `.badge`, `.open-cue`); curling `/duplicate/` returns the
|
||||
duplicate_chess static index from a separate `handle_path` block in the same
|
||||
Caddy site. blind_chess's server was restarted (1 in-memory game dropped per
|
||||
the pre-accepted MVP policy).
|
||||
|
||||
State of blind_chess proper is otherwise unchanged from the table-fidelity
|
||||
handoff — the same open items (manual browser test pass, board phantom glyph
|
||||
contrast eyeball) apply.
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
The `chess.sethpc.xyz` Caddy block on CT 600 now routes:
|
||||
|
||||
- `/duplicate/*` → static `/var/www/duplicate-chess/` (`handle_path` strips
|
||||
the prefix; Vite was built with `base: '/duplicate/'`).
|
||||
- Everything else → reverse_proxy to CT 690:3000 (blind_chess Fastify, as
|
||||
before).
|
||||
|
||||
This means duplicate_chess deploys never restart blind_chess. The blind_chess
|
||||
client just contains a link to `/duplicate/` — no SPA-level integration.
|
||||
|
||||
## Critical Files
|
||||
|
||||
| File | Purpose | Relevance |
|
||||
|------|---------|-----------|
|
||||
| `packages/client/src/lib/Landing.svelte` | 3rd card + `.card-link`, `.badge`, `.open-cue` CSS | The visible entry point |
|
||||
| `CLAUDE.md` (deploy line) | Notes the `/duplicate/*` Caddy block | Resume reference |
|
||||
| Caddy on CT 600 (`/etc/caddy/Caddyfile` lines ~1112–1124) | `handle_path /duplicate/*` sub-block | Backup at `/etc/caddy/Caddyfile.bak.duplicate-chess-1779228542` |
|
||||
|
||||
## Files Modified
|
||||
|
||||
- `packages/client/src/lib/Landing.svelte` — added a 3rd `<a class="card card-link" href="/duplicate/">` card under the existing two cards (friend/AI). New CSS for the link-shaped card, the "under development" pill badge, and the `Open →` cue.
|
||||
- `CLAUDE.md` — Deploy bullet extended with one sentence about the `/duplicate/*` handler.
|
||||
|
||||
## Decisions Made
|
||||
|
||||
| Decision | Why |
|
||||
|----------|-----|
|
||||
| 3rd card as a plain `<a href>`, not an SPA-internal route | Honest about the architecture: duplicate is a separate static app behind a Caddy `handle_path`, not a route within blind_chess. Plain anchor survives any future static-fallback rewriting. |
|
||||
| Visibly tagged "under development" | Sets Andrew's (the inventor's) expectations that duplicate isn't at parity with blind/vanilla. |
|
||||
| Drop the 1 active in-memory game on restart | Acceptable per pre-existing MVP policy in DECISIONS.md. |
|
||||
|
||||
## Immediate Next Steps
|
||||
|
||||
1. **The table-fidelity manual browser test pass is still pending** (from the
|
||||
prior handoff — Step 1 there). Now an even bigger reason to do it: Andrew
|
||||
will be looking at the landing and seeing 3 cards; if the layout breaks at
|
||||
a phone width or the card looks broken, fix it before he tests duplicate.
|
||||
2. **Visually verify the new 3rd card** in a real browser at
|
||||
https://chess.sethpc.xyz/ — colours, badge contrast, hover state, mobile
|
||||
layout. Only confirmed via curl + JS/CSS string grep so far.
|
||||
3. **Decide whether chess.local should also serve duplicate.** Currently the
|
||||
LAN-only VDJ-RIG instance is on the previous blind_chess client (no 3rd
|
||||
card) and has no `/duplicate/*` handler. If Seth wants LAN parity, redeploy
|
||||
blind_chess client there AND copy duplicate's dist to the rig with a Caddy
|
||||
block of its own.
|
||||
|
||||
## Important Context
|
||||
|
||||
- **The bulk of the work is in `duplicate_chess`**, not here. See its handoff
|
||||
for the deploy details (Vite base, Caddy `handle_path`, `tar`-pipe transfer,
|
||||
Caddyfile backup name).
|
||||
- **`fef6dcf` + `33a7cef` are the only two commits this session in blind_chess.**
|
||||
Everything else (vite.config, page title, CLAUDE.md, DECISIONS.md, handoff)
|
||||
is in `duplicate_chess`.
|
||||
- **The table-fidelity batch state in the prior handoff is unchanged.** The
|
||||
manual browser test pass is still in progress. The deploy on CT 690 is now
|
||||
at the new commit `fef6dcf` (client only — server code is byte-identical
|
||||
to `c01244c`).
|
||||
|
||||
## Potential Gotchas
|
||||
|
||||
- **The blind_chess server WAS restarted** even though server code didn't
|
||||
change (Fastify-static reads `STATIC_DIR` at startup, so the new
|
||||
`index.html` + bundle hashes only get picked up after a service restart).
|
||||
Took uptime back to 0; the 1 in-memory game at restart was dropped.
|
||||
- **The Caddyfile edit was on CT 600 only.** chess.local on VDJ-RIG was not
|
||||
touched and has no `/duplicate/*` route.
|
||||
|
||||
## Assumptions Made
|
||||
|
||||
- That "incorporate as a 3rd game mode 'under development'" meant a 3rd
|
||||
top-level landing card (the existing "mode" was a radio inside each card
|
||||
for Blind/Vanilla, but duplicate is 4-player so it can't fit that radio).
|
||||
- That a plain link out to `/duplicate/` was the right level of integration
|
||||
(vs iframe or source merge).
|
||||
|
||||
## Environment State
|
||||
|
||||
- `caddy.service` on CT 600 — reloaded.
|
||||
- `blind-chess.service` on CT 690 — restarted (1 in-memory game dropped).
|
||||
- chess.local on VDJ-RIG — not touched.
|
||||
- No dev servers running locally.
|
||||
|
||||
## Related Resources
|
||||
|
||||
- Cross-repo companion handoff: `~/bin/duplicate_chess/.claude/handoffs/2026-05-19-181212-deployed-as-chess-sethpc-xyz-duplicate.md`
|
||||
- Live URLs:
|
||||
- https://chess.sethpc.xyz/ — blind_chess landing (3rd card visible).
|
||||
- https://chess.sethpc.xyz/duplicate/ — duplicate_chess sandbox.
|
||||
- https://chess.sethpc.xyz/api/health — blind_chess API health.
|
||||
|
||||
---
|
||||
|
||||
**Security Reminder**: No credentials or secrets in this handoff.
|
||||
Reference in New Issue
Block a user