feat: add session name input to tool starter

ToolStarter (used by FAB and workspace detail):
- Add Session Name text input, defaulting to workspace.name
- Pass user-provided name to createInstance display_name parameter
- If left empty or only whitespace, falls back to auto-generated name

Quality gates: tsc --noEmit pass, npm run build pass, 82/82 tests pass
This commit is contained in:
Developer
2026-06-10 20:26:34 +00:00
parent 1d10283fc9
commit 3c222d4f0f
6 changed files with 419 additions and 390 deletions
@@ -33,6 +33,7 @@ export function ToolStarter({
const [sshKeysLoading, setSshKeysLoading] = useState(true);
const [selectedSshKeyIds, setSelectedSshKeyIds] = useState<string[]>([]);
const [displayName, setDisplayName] = useState(workspace.name);
const [starting, setStarting] = useState(false);
const [error, setError] = useState<string | null>(null);
@@ -119,7 +120,7 @@ export function ToolStarter({
workspace.project_id,
workspace.repo_id,
selectedToolTypeId,
workspace.name,
displayName.trim() || undefined,
undefined,
undefined,
undefined,
@@ -140,7 +141,7 @@ export function ToolStarter({
} finally {
setStarting(false);
}
}, [selectedToolTypeId, selectedProfileId, workspace, onStarted]);
}, [selectedToolTypeId, selectedProfileId, displayName, workspace, onStarted]);
return (
<div className="tool-starter">
@@ -187,6 +188,19 @@ export function ToolStarter({
{toolTypesError && <span className="error-text">{toolTypesError}</span>}
</div>
{/* Session Name */}
<div className="form-group">
<label htmlFor="session-name">Session Name</label>
<input
id="session-name"
type="text"
value={displayName}
onChange={(e) => setDisplayName(e.target.value)}
placeholder="My dev environment"
disabled={starting}
/>
</div>
{/* Config Profile */}
{selectedToolTypeId && (
<div className="form-group">