Skip to content

feat: add Axl Lounge with five terminal games - #400

Draft
Kaushik-Kumar-CEG wants to merge 12 commits into
Observal:mainfrom
Kaushik-Kumar-CEG:feat/axl-lounge
Draft

Kaushik-Kumar-CEG wants to merge 12 commits into
Observal:mainfrom
Kaushik-Kumar-CEG:feat/axl-lounge

Conversation

@Kaushik-Kumar-CEG

@Kaushik-Kumar-CEG Kaushik-Kumar-CEG commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add Axl Lounge as a client-local terminal feature with Wordle, 2048, Minesweeper, Sudoku, and Chess Puzzles.
  • Keep the live Agent transcript and composer available beside Lounge in wide layouts.
  • Add a validated indexed-raster activity contract. The TUI owns Sixel encoding, placement, terminal-cell calibration, pointer normalization, and text fallback.

Chess Puzzles

Chess ships 1,000 reviewed offline Lichess tactics across Easy, Medium, and Hard. Daily and Practice selection is deterministic. Players must follow the exact sourced solution line. Controls support arrows or HJKL, Enter or Space, mouse selection, board flip, progressive hints, difficulty, theme, mode, restart, and in-pane help. Solved daily puzzles continue in Practice.

The square board uses original dependency-free indexed artwork authored for Axl. Windows Terminal rendering is calibrated from terminal cell metrics. Unsupported terminals, missing metrics, and text-only mode retain the semantic text board. Selection, legal moves, captures, hints, checks, mistakes, and cursor state have non-color cues. Reduced motion applies replies immediately.

Versioned bounded storage reconstructs Chess progress from canonical puzzle data and keeps completion statistics. Focus loss, pause, resize, presentation changes, and disposal cancel scheduled work safely. The Agent pane remains live while a game is open.

Architecture and provenance

Lounge uses the public extension API and bounded client-local storage. Games create no canonical session events and add no network access or production dependency. The generic raster contract validates dimensions, palettes, pixels, placement, and descriptions before the TUI emits terminal controls.

Wordle data uses the pinned ESDB release documented in the repository. Sudoku fixtures are independently generated and versioned. Chess data is a reviewed CC0 subset of the official Lichess puzzle database, revision lichess-2026-09-10-axl-chess-v1; checked-in provenance records the source archive digest, retained source IDs, quality bounds, review results, and artifact hashes. Chess artwork is original Apache-2.0 project code.

Diff size

The final PR contains 43,876 additions and 108 deletions across 99 files.

Verification

Passed:

  • Chess activity tests: 17/17
  • extension API tests: 21/21
  • focused TUI raster, media, terminal, and activity-surface tests: 26/26
  • complete Lounge tests: 176/176
  • Lounge benchmark, including Chess render, input, state-size, cleanup, and disabled-host budgets
  • pnpm build
  • pnpm typecheck
  • pnpm lint
  • formatting for all committed files and the clean tracked tree
  • pnpm check:boundaries
  • pnpm check:generated
  • reuse lint on the tracked tree
  • pnpm audit --audit-level high
  • git diff --check

The aggregate pnpm test run completed 1,142 tests with 1,127 passing, 11 skipped, 3 cancelled, and 1 failure. The known unrelated daemon test queue restore leaves queue and active work untouched when its event append fails reports Session cleanup failed and times out its daemon file. Under aggregate contention, Chess perft and release-package files also exceeded the 30-second per-file limit; both pass when run in their focused suites. The PR does not change daemon code.

AI assistance

AI-assisted with OpenAI GPT-5.6 Sol through pi. The contributor directed the work and reviewed the complete diff, provenance, generated output, and verification results under AI_POLICY.md.

Follow-ups

  1. Web UI game support
  2. Productive mode
  3. Vibe mode

@Kaushik-Kumar-CEG
Kaushik-Kumar-CEG marked this pull request as draft September 14, 2026 14:43
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
Signed-off-by: Kaushik <kaushikrjpm10@gmail.com>
@Kaushik-Kumar-CEG Kaushik-Kumar-CEG changed the title feat: add Axl Lounge with four terminal games feat: add Axl Lounge with five terminal games Sep 19, 2026
}

function parseCastlingRights(value: string): ChessCastlingRights {
if (value !== "-" && !/^(?!.*(.).*\1)[KQkq]+$/u.test(value)) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants