Mario Zechner
f8352bb7d7
Rename immediate -> allowDuringStreaming for hook commands
2025-12-30 22:42:22 +01:00
Mario Zechner
6977bc73ca
Fix snake border alignment using visibleWidth for proper ANSI length calculation
2025-12-30 22:42:20 +01:00
Mario Zechner
b47151a04f
Snake: add full border frame and pause/resume with session persistence
...
- Full box border around title, game area, and instructions
- ESC pauses and saves state to session via pi.appendEntry()
- Resume shows 'PAUSED - press any key to continue'
- Q quits and clears saved state
- High score persists across games
2025-12-30 22:42:20 +01:00
Mario Zechner
5ae33defd3
Fix snake velocity: render cells as 2 chars wide for square aspect
...
Terminal cells are ~2:1 aspect ratio, so movement appeared faster
vertically. Now each game cell is 2 characters wide.
2025-12-30 22:42:19 +01:00
Mario Zechner
516c0ea8bc
Improve snake game visuals
...
- Rounded box corners (╭╮╰╯)
- Better characters: ● head, ○ body, ◆ food, · empty
- Colored title with emoji
- Dimmed borders and help text
- Bold highlights for score and controls
2025-12-30 22:42:19 +01:00
Mario Zechner
818196d2c3
Add immediate flag to hook commands for non-queued execution
...
Commands with immediate: true run right away even during streaming.
Used for UI-only commands like /snake that don't interact with LLM.
2025-12-30 22:42:19 +01:00
Mario Zechner
165fb58b39
Fix snake.ts: use key helpers from pi-tui for ESC and arrow keys
2025-12-30 22:42:19 +01:00
Mario Zechner
14ad8d6228
Add ui.custom() for custom hook components with keyboard focus
...
- Add custom() to HookUIContext: returns { close, requestRender }
- Component receives keyboard input via handleInput()
- CustomMessageComponent default rendering now limits to 5 lines when collapsed
- Add snake.ts example hook with /snake command
2025-12-30 22:42:19 +01:00