- Fix Attach button to launch foot terminal with tmux attach
- Add tmux file to 9P server to expose session:window target
- Replace action buttons with cleaner layout: main actions visible,
secondary actions in dropdown menu
- Add browser notifications for session state changes
- Preserve open dropdown menu across table refresh
- Remove disabled state from Prompt button (mailbox queues prompts)
Opens streaming log window that displays session chat history.
Window is named /AnviLLM/Log.{session-id-or-alias} and streams
log data continuously, marking window as clean after each write.
The Restart button was incorrectly disabled for non-stopped sessions.
Since restart performs both stop and start actions, it should work
for any session state, similar to the Kill button.
Removed the conditional disabled state from the Restart button.
- Added /api/log/{sessionId} endpoint for SSE streaming
- Backend streams log file via 9P with proper SSE formatting
- Each log line sent as separate SSE message for protocol compliance
- Frontend displays log in terminal-like pane (black bg, white text)
- Log button added to each session in the table
- Auto-scrolls to bottom as new data arrives
- Stream automatically closes when log pane is closed
- Context cancellation properly closes 9P file handle
All three interfaces (Acme, Emacs, TUI, Web) now support log viewing
with appropriate streaming/refresh strategies for their execution models.
- Press 'l' to view session log in scrollable pane
- Press 'r' within log viewer to refresh
- Press 'q' or ESC to close
- Log window scales to 80% of terminal width
- Automatically scrolls to bottom on open
- Non-blocking read prevents hang on streaming log file
- Add vertical space above search box
- Style header as colored bar with white text
- Reduce header size and spacing for cleaner look
- Remove redundant subtitle text
- Add session ID column (2nd position) with monospace styling
- Add color-coded state badges for all states (idle=green, running=blue, starting=orange, stopped=gray, error=red, exited=light gray)
- Convert New Session form to compact modal dialog
- Fix XSS vulnerability by replacing inline onclick handlers with data attributes and event delegation
- Sort sessions alphabetically by alias/name (case-insensitive)
- Move New Session form below sessions table (view then act)
- Fix dialog buttons: right-aligned, [Send/Save] [Cancel] order (desktop convention)
- All changes client-side only, no API modifications
- Minimal Go web server with REST API for session management
- Single-page UI using Pico CSS (12KB, classless framework)
- Features: create sessions, send prompts, edit context/alias, control sessions
- Security: input validation, XSS prevention, path validation
- Auto-refresh every 5 seconds
- Documented security model (no authentication, localhost/SSH tunneling recommended)
Enhancements to anvillm TUI:
- Unified backend selection: 's' key shows menu (claude/kiro-cli)
- Changed stop from 's' to 't' to avoid conflict
- Added vim navigation (j/k) and emacs navigation (C-n/C-p)
- Responsive table layout with proper column expansion
- Blue header with white bold text and column spacing
- Improved dialog styling with blue borders
- Black text on white background for input fields
- Updated help text and status bar with new keybindings
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add terminal UI as an alternative to the Acme interface. Both UIs
interact with anvilsrv via the same 9P filesystem interface.
Implementation:
- cmd/anvillm/main.go: Full-featured TUI using tview/tcell
- Session list with color-coded states
- Keyboard-driven interface (no mouse required)
- Auto-refresh every 2 seconds
- Modal dialogs for creating sessions, sending prompts, setting aliases
Features:
- Create Kiro/Claude sessions (k/c keys)
- Send prompts to selected session (p key)
- Stop/Restart/Kill sessions (s/R/K keys)
- Set session aliases (a key)
- Refresh session list (r key)
- Help dialog (? key)
- Quit (q key)
UI Components:
- Session table with columns: ID, Alias, Backend, State, PID, Cwd
- Status bar showing keyboard shortcuts
- Modal forms for user input
- Color-coded session states (green=running, aqua=idle, etc.)
Dependencies:
- github.com/rivo/tview: TUI framework
- github.com/gdamore/tcell/v2: Terminal cell library
Build:
- Updated mkfile to build anvillm binary
- Fixed .gitignore to allow cmd/anvillm/ directory
Documentation:
- Added Terminal UI section to README
- Lists all keyboard shortcuts
- Notes that TUI uses same 9P interface as Assist
This provides a lightweight alternative for users without Acme.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Assist now continues working even if anvilsrv fails to start, and
provides a Daemon management window for server control.
Changes:
- Assist no longer fails fatally if anvilsrv won't start
- Logs ERROR and continues with disconnected state
- Add Daemon command to open /AnviLLM/Daemon window
- Daemon window shows server status with Start/Stop/Restart buttons
- Add isConnected() checks to all 9P operations
- Display friendly "not connected" message in main window
- Auto-reconnect when starting daemon from Daemon window
Daemon Window Features:
- Shows current daemon status (RUNNING/NOT RUNNING)
- Displays 9P socket path and existence
- Shows connection state
- Start button: runs `anvilsrv start` and reconnects
- Stop button: runs `anvilsrv stop` and disconnects
- Restart button: stops then starts
- Get button: refreshes status display
User Experience:
- Can still use Assist UI features (Sandbox, etc.) without daemon
- Session-related features show "not connected" errors
- Daemon command provides easy server management
- No more hard failures on startup
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The Sandbox command was accidentally omitted during the architectural
split. This restores the UI convenience feature for managing sandbox
configuration.
Changes:
- Add Sandbox to main window tag and command handlers
- Port sandbox UI functions from old internal/ui/sandbox.go
- Open /AnviLLM/Sandbox window with Get/Edit/Reload/Status commands
- Edit opens config in Acme or $EDITOR
- Status shows landrun availability and version
README:
- Update Architecture section explaining daemon/client split
- Add Service Integration section (systemd/runit)
- Add anvilsrv commands (start/fgstart/stop/status)
- Update Commands table with Stop/Restart/Refresh/Sandbox
- Add path validation and security notes
- Expand troubleshooting section
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>