Skip to content

Add persistent default values for new agent creation#1

Closed
artjen wants to merge 48 commits intomainfrom
feat/new-agent-defaults
Closed

Add persistent default values for new agent creation#1
artjen wants to merge 48 commits intomainfrom
feat/new-agent-defaults

Conversation

@artjen
Copy link
Copy Markdown
Owner

@artjen artjen commented Apr 13, 2026

Summary

  • Add a "New Agent Defaults" section to the Settings modal where users can configure default agent, CLI mode, working directory, and command args
  • Refactor New Agent modal initialization to load server-side defaults from settings-v2 with fallback to localStorage for backwards compatibility
  • Add a "Save as defaults" button in the New Agent modal footer for quick one-click saving
  • Fix pre-existing bug where Settings save used PUT but /api/settings only supports POST

Test plan

  • Open Settings > verify "New Agent Defaults" section appears with agent selector, CLI mode, directory, and args fields
  • Set defaults and save > verify values persist in ~/.openui/config.json
  • Open New Agent modal > verify form pre-fills with saved defaults
  • Create an agent with different values > re-open New Agent modal > verify it still shows saved defaults (not last-used)
  • Clear browser localStorage > verify defaults still load from server
  • Use "Save as defaults" in New Agent modal > verify green checkmark confirmation appears
  • Clear all defaults in Settings > verify New Agent modal falls back to empty/localStorage behavior

This pull request was AI-assisted by Isaac.

JJ27 and others added 30 commits January 23, 2026 22:15
Signed-off-by: Samraj Moorjani <samraj.moorjani@databricks.com>
Signed-off-by: Samraj Moorjani <samraj.moorjani@databricks.com>
Signed-off-by: Samraj Moorjani <samraj.moorjani@databricks.com>
Signed-off-by: Samraj Moorjani <samraj.moorjani@databricks.com>
Signed-off-by: Samraj Moorjani <samraj.moorjani@databricks.com>
Signed-off-by: Samraj Moorjani <samraj.moorjani@databricks.com>
Signed-off-by: Samraj Moorjani <samraj.moorjani@databricks.com>
- Revert from tmux to individual PTYs per shell (fixes blank terminals)
- Fix status-reporter.sh port from 6969 to 6968 (fixes status updates)
- Improve terminal resize handling with multiple sync attempts
- Widen sidebar resize handle from w-1 to w-2 with z-index
- Fix WorktreeModal to send customName for proper cell naming
- Add DEFAULT_PERMISSIONS array for worktree settings.local.json

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…Linear

- Arca remote: SSH-based worktree creation, PTY spawning, shell terminals
- Auto-resume: sessions automatically resume on server restart with stagger
- Status detection: use PermissionRequest hook for permission dialogs,
  PostToolUseFailure for failed tools, split Notification matchers,
  handle AskUserQuestion/ExitPlanMode server-side, fix SubagentStop
- Remove all Linear integration code, extract worktreeConfig.ts
- Add sparse checkout and remote fields to worktree repos
- Replace 'llm agent claude' with 'isaac' command everywhere
- Resume button kills stale PTY before restarting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New alternative to canvas view: a focused list layout with a left task
panel (grouped by section) and right terminal panel. Includes drag-to-
reorder, right-click context menu (rename, due date, move, delete),
collapsible sections with add/rename/delete, and compact detail footer.
Toggle between Canvas and List modes in Settings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Status is now a prominent right-aligned pill with larger text, colored
background, and dot indicator. Removed the separate session color dot
that was cluttering the row.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…e permissions

- SSH keepalive (ServerAliveInterval=15, ServerAliveCountMax=3) on all SSH spawn sites
- Auto-reconnect for remote sessions on PTY exit (3s delay, calls resumeSession)
- Fix TaskDetailPanel error banner to show Resume/New Session for error status
- Replace DEFAULT_PERMISSIONS with union of all ~/personal_repos permissions
- Deduplicated and grouped: shell, files, system, python, JS/TS, git, MCP tools

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remote sessions never capture claudeSessionId (no plugin injection)
- resumeSession() was falling back to plain "isaac" (fresh start)
- Now uses "isaac --resume" for remote to resume most recent conversation
- Also fixes categoryId/sortOrder/dueDate not restored on server restart

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… error surfacing

- Cap SSH auto-reconnect at 3 attempts to prevent infinite loop
- Wait for shell prompt before writing commands instead of blind 1.5s timer
- Surface SSH disconnect errors in UI banner with attempt counter
- Reset reconnect counter on manual retry and successful connection
- Add "Run on" selector (Local/Arca) to NewSessionModal for non-worktree sessions
- Add "Pinned" section above TODO in list view with merge logic for existing localStorage
- Make delete optimistic and fix PTY cleanup ordering to prevent status flicker
- Add reconnect button always visible in task detail header
- Add MLflow Website to worktree config
- Skip auto-resume for TODO and On Hold categories

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New InvestigationModal with repo selector, URL auto-detection (PD/JIRA/Slack),
  worktree toggle, and custom plugin dir (Universe only)
- Server accepts initialPrompt, writes to PTY after plugin reports waiting_input
- List view splits sections into Sprint/Oncall groups with gradient dividers
- Add experimental to Universe sparse checkout paths for plugin availability

Co-authored-by: Isaac
… and misc improvements

- Add reverse tunnel (-R 46968) so plugin status updates route from Arca back to local server
- Sync openui plugin to remote via rsync and inject --plugin-dir for remote sessions
- Export OPENUI_SESSION_ID and OPENUI_PORT through SSH for plugin hook communication
- Support multiple --plugin-dir flags (openui status plugin + user's ai-ops plugin)
- Save Claude session ID to filesystem for reliable remote resume
- Add requestAnimationFrame-based write batching in Terminal/ShellTerminal to prevent freezing
- Default UI mode to list view
- Simplify README

Co-authored-by: Isaac
cmd + backspace to delete entire line
Maintain terminal state after switching between agent cards
…toggle, and per-host recent dirs

Co-authored-by: Isaac
…broadcast

- Replace 3 header action buttons with single "+" dropdown menu
- Add orchestrator panel with terminal, session validation for stale sessions
- Add openui-ctl CLI for creating/managing agents programmatically
- Broadcast session-created events via WebSocket so new agents appear in list view
- Server-side team directory creation (~/teams/<name>/) for --team flag
- Fix scheduleInitialPrompt to only fire on plugin-reported waiting_input
- Add orchestrator skill with clear guidelines (no default --remote, auto permissions)

Co-authored-by: Isaac
AveshCSingh and others added 18 commits March 26, 2026 16:57
Hardcoded paths (/Users/samraj.moorjani, /home/samraj.moorjani) are replaced
with per-user config read from .openui/config.json (already gitignored).
New settings: defaultCwd, defaultRemoteCwd, remoteHosts, worktreeRepos.
The client fetches defaults from /api/settings on modal open. The server
resolves ~ in cwd paths before spawning PTY processes.

Co-authored-by: Isaac
…ings

Move user-specific paths into .openui/config.json settings
… and more

Ports 20+ universe commits into local fork while preserving all custom features
(orchestrator, CLI, investigations, list view, remote SSH, worktrees).

Key additions from universe:
- Light/dark theme toggle with CSS custom properties
- Canvas/tab system for organizing agents
- Terminal: WebGL rendering, image paste/drop, Unicode 11, caching
- Directory autocomplete in new session modal
- Terminal font family/size/weight settings
- Session forking, archiving, and delete confirmation
- Conversation search modal
- Auto-resume with session start queue
- Cost tracking and usage display
- Colorblind assist mode
- Website node type for canvas
- Output batching (16ms) to eliminate TUI flashing
- Model detection from PTY output

Bug fixes from universe:
- PTY race on resume
- WebGL context exhaustion
- Session resume with drifted worktree paths
- State migration to ~/.openui/ for centralized storage

Local fixes during merge:
- Fixed saveState to persist categoryId/sortOrder/dueDate/remote
- Fixed session loading to pass categoryId to client store
- Added missing exports (findGitCwd, createShellSession, etc.)
- Removed OnboardingTour and WhatsNewV2Modal
- Hidden canvas tabs in list view mode

Co-authored-by: Isaac
…rders

New "Focus" UI mode shows selected sessions as equal-width terminal panels
with status-based border colors (green glow for waiting_input, orange for
idle, red for error). Includes session picker with search, drag-and-drop
reordering, per-panel context notes, refresh button, and Ctrl+` cycling.

Co-authored-by: Isaac
Kept universe-sync versions for NewSessionModal (resume, worktree, conflict
warning) and api.ts (full imports). Removed main-only config defaults
(defaultCwd, recentDirs, team mode) that don't exist in universe-sync.

Co-authored-by: Isaac
Sync with universe: themes, canvas, terminal improvements
…context menu

- Wire up DeleteConfirmDialog in TaskItem so list view deletions show
  the same confirmation (with branch cleanup options) as canvas/sidebar
- Add "New Agent" option to section right-click context menu, allowing
  direct agent creation into a specific section
- Pass targetCategoryId through store and NewSessionModal to auto-assign
  newly created agents to the chosen section

Co-authored-by: Isaac
Add delete confirmation to list view and new-agent-in-section context menu
…ion modal

Saves the last-used cwd, agent, and CLI mode to localStorage so they are
pre-filled when creating the next agent session.

Co-authored-by: Isaac
Persist working directory, agent, and CLI mode in new session modal
When a session was created without a worktree, `originalCwd` was left
undefined because `mainRepoPath` was only set when a worktree was
detected. Later, when Isaac moved into a worktree and the status-update
hook updated `session.cwd`, the persistence fallback
`session.originalCwd || session.cwd` would save the drifted worktree
path as `originalCwd`. On next server restart, the session would load
with the worktree path as its cwd, causing it to fail to find the
Claude session in the correct project directory.

Fix: always set `mainRepoPath` to `workingDir` when no worktree is
detected, so `originalCwd` is always explicitly populated at creation
time. Also include `originalCwd` in the GET /api/sessions response so
the frontend can display the correct base repo path.

Co-authored-by: Isaac
Previously the restart endpoint returned a 400 error if the session
already had a PTY. Now it kills the existing PTY first so the session
can be cleanly restarted.

Co-authored-by: Isaac
Fix originalCwd for non-worktree sessions and allow restarting running sessions
Programs running inside the terminal (e.g. Claude Code) use mouse reporting
mode, which means xterm.js forwards mouse events to the program instead of
creating its own text selection. When the user selects text, the program
copies it via OSC 52 terminal escape sequences, but xterm.js doesn't handle
these by default — so the clipboard is never set.

Adding @xterm/addon-clipboard to all terminal instances enables OSC 52
support, allowing copy to work when text is selected in the terminal.

Co-authored-by: Isaac
Add ClipboardAddon for OSC 52 clipboard support
loadListSections() was re-adding any default section missing from
localStorage, unable to distinguish user deletions from genuinely new
defaults. Track explicitly removed default section IDs in a separate
localStorage key so they aren't merged back on load.

Co-authored-by: Isaac
Fix deleted default sections reappearing on restart
Store default agent, CLI mode, working directory, and command args
server-side in settings-v2 (~/.openui/config.json) so every new agent
launches with the same parameters regardless of browser state.

- Add "New Agent Defaults" section to Settings modal with agent selector,
  CLI mode toggle, directory autocomplete, and command args input
- Refactor NewSessionModal init to load defaults from settings-v2 with
  fallback chain: server defaults → localStorage → built-in defaults
- Add "Save as defaults" button in New Agent modal footer
- Fix pre-existing bug: Settings save used PUT but /api/settings only
  supports POST

Co-authored-by: Isaac
@artjen artjen closed this Apr 13, 2026
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.

7 participants