- pnpm workspace: shared/server/client packages - Server: Fastify+ws, chess.js, FSM (touch-move + hierarchy), per-player view filter, zod validation, rate limiting, grace-window disconnect handling - Client: Svelte 5 + Vite, click-to-move board, moderator panel, promotion/draw dialogs - Shared: protocol types, ModeratorText enum, geometricMoves helper (provably zero opponent-info leak) - 43 tests pass (21 shared, 22 server incl. 4 real-WS integration) - Deploy: CT 690 on node-241 (192.168.0.245), systemd-managed, Caddy block for chess.sethpc.xyz - Live at https://chess.sethpc.xyz Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.6 KiB
Handoff: blind_chess Kickoff (2026-04-28)
What was done
Project scaffolded per ~/bin/CREATE_PROJECT.md:
~/bin/blind_chess/directory created.claude/handoffs/initialized (this is the first entry)GITEA_API.mdsymlinked to~/bin/GITEA_API.mdIDEA.mdcreated with empty template (Seth populates manually before next session)DECISIONS.mdcreated from local templateCLAUDE.mdcreated with minimal stub pointing at IDEA.md as source of truth
No code, no repo, no deploy target yet. Project is in pure ideation.
Current State
- Phase: ideation, pre-IDEA.md
- Repo: none
- Branch: n/a
- What's running: nothing
Next Steps (ordered)
1. Read IDEA.md first.
Seth has populated it manually with the project brief between this session and the next. It is the authoritative source for what blind_chess is and what it should do. Do not skip — CLAUDE.md's "Project Identity" section is intentionally empty and will be filled in after IDEA.md is read.
2. Update CLAUDE.md.
Distill IDEA.md into:
- A real one-line tagline (replace "Tagline TBD")
- A one-paragraph "Project Identity" section (stable, won't change session-to-session)
- Initial entries in "Current State" if any decisions emerged from IDEA.md (e.g., language choice, deploy target)
3. Capture early decisions in DECISIONS.md.
Anything Seth committed to in IDEA.md (language, framework, deployment, naming, scope boundaries) goes into DECISIONS.md under Architecture or Implementation. Format: YYYY-MM-DD: <decision> — <why>. Include rejected options under "Deferred / Rejected".
4. Brainstorm before building.
If IDEA.md leaves architecture or approach open, do not jump to implementation. Use the superpowers:brainstorming skill — explore intent and design first. Get Seth's confirmation on direction before code.
5. Decide on Gitea repo.
The scaffold's optional step 6 (git init + Gitea push) was skipped. Once direction is clear, propose creating a Gitea repo via the gitea CLI:
cd ~/bin/blind_chess
git init
gitea create blind_chess
gitea remote blind_chess
echo "GITEA_API.md" >> .gitignore
git add -A && git commit -m "init: scaffold project" && gitea push
Open Questions
- None yet — IDEA.md will surface these.
Notes for the next session
- Project name spelled
blind_chess(underscore, not hyphen). Convention in~/bin/is hyphen, but underscore was Seth's explicit choice — likely for Python module compatibility. Don't auto-rename. - Inherits all global homelab conventions from
~/bin/CLAUDE.md. No need to duplicate them here.