Skip to content

Wip#1

Draft
StachuDotNet wants to merge 14 commits intomainfrom
wip
Draft

Wip#1
StachuDotNet wants to merge 14 commits intomainfrom
wip

Conversation

@StachuDotNet
Copy link
Member

multi is currently all sorts of broken. It's gotten too big without reasonable maintenance. I'm confident that if I merged this, it would break whatever flow @OceanOak has developed with it. Tomorrow+weekend, I need to review it, consider what the good parts are, and migrate a (much tidier) version of the app to Darklang.

StachuDotNet and others added 14 commits January 18, 2026 20:19
Previously, GitStats() and IsRunning() were called synchronously
during every render cycle, running shell commands (git, docker ps)
multiple times per frame. Now these are loaded asynchronously and
cached, making arrow key navigation instant.
- task package: phase tracking (planning/ready/executing/done), prompt injection
- ralph loop: auto-restart claude until todos complete
- tmux: pipe-pane logging, StartRalphLoop function
- summary: haiku-powered summaries of claude activity, fallback to log parsing
- grid: task status display, 'p' for pre-prompt, 'r' for ralph
- git stats: fallback to local main when origin/main missing
- queue package: task queue with status workflow, priority sorting
- queue init: populates queue with 23 tasks (existing branches + next-prompt.md tasks)
- CLI commands: multi queue init/ls/status/add
- max 10 concurrent containers
- dockerExecWithEnv helper passes API key if set
- all docker exec calls updated to use this
- enables automated claude execution without manual login
- processor.go: background worker that starts ready tasks
- syncs queue status with task phase files
- CLI commands: queue start (daemon), queue process (one-shot)
- creates branches, starts containers, runs ralph loop automatically
- Add queue stats to status bar (running/ready/total tasks)
- Add filter cycling with 'f' key (running → running+ready → active → all)
- Show current filter in status bar
- Load queue tasks on init and periodic refresh
- Start queue processor automatically when TUI launches

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove 'r' key from TUI (queue auto-starts tasks)
- Update help.go with queue-focused documentation
- Update prompts.go to remove manual 'r' press references
- Terminology: "automated execution loop" instead of "Ralph loop"

The queue processor now handles all task execution automatically.
- Remove ~/.claude and ~/.claude.json mounts from containers
- Remove oauth token injection (no longer needed)
- Remove ensureClaudeSettings() function
- Auth now handled entirely via ANTHROPIC_API_KEY passed through docker exec

New containers will not have any claude config mounted. Existing containers
still have the mounts but API key takes precedence.
Adds setup command to create /home/dark/.claude/settings.json with:
- theme: dark
- hasCompletedOnboarding: true
- apiKeySource: env

This skips the theme selection and API key prompts when Claude starts.
Queue now syncs with actual Docker container state on each tick.
If a container is running but queue shows ready/needs-prompt,
update to running status (if task has a prompt).
Queue processor now starts tasks without opening terminal windows.
Use 'c' in TUI to view a running task's Claude session.
- Start all ready tasks at once up to limit (no 30s wait between)
- Max concurrent now configurable via config file or env var
- First-run prompts for max concurrent based on system resources
- Fix cursor reset bug (was checking wrong array length)
- Read API key from config file, not just env var
- Grid layout dynamically adjusts rows/cols based on screen size
- Minimum cell size ensures readability
- Navigation keys work with dynamic grid
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.

1 participant