feat(chat): align command, shell, and subtask UX (#444)

* feat: reload interface after skills operations

- Adds configurable delay before interface reload after skills changes
- Introduces polling to wait for application health after reload
- Updates UI to show reload message when installing or modifying skills

* feat: distinguish skills from commands in UI

- Displays skill badge for commands that are registered skills
- Prevents editing skills through command management interface
- Triggers interface reload after skill operations to reflect changes

* feat(chat): align command and subtask UX with opencode parity

Route commands/shell via parity paths, render delegated subtasks cleanly, and surface child-session permission/question prompts in parent chat.

* fix(ProjectEditDialog): improve layout consistency

* fix: update task icon and session handling in ToolPart

* feat(chat): add shell-mode input and collapse shell bridge output

Switch leading ! to shell mode UX and fold synthetic shell bridge assistant messages into the user shell bubble with inline output actions.

* fix: remove AI agent icon from file mention autocomplete

* fix: remove unused icon import from file mention component
This commit is contained in:
Bohdan Triapitsyn
2026-02-18 20:08:42 +02:00
committed by GitHub
parent e4a2486312
commit 85f21cb945
23 changed files with 1557 additions and 318 deletions
@@ -54,13 +54,13 @@ export const ProjectEditDialog: React.FC<ProjectEditDialogProps> = ({
return (
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent className="max-w-md">
<DialogHeader>
<DialogHeader className="min-w-0">
<DialogTitle>Edit project</DialogTitle>
</DialogHeader>
<div className="space-y-5 py-1">
<div className="min-w-0 space-y-5 py-1">
{/* Name */}
<div className="space-y-1.5">
<div className="min-w-0 space-y-1.5">
<label className="typography-ui-label font-medium text-foreground">
Name
</label>
@@ -76,13 +76,13 @@ export const ProjectEditDialog: React.FC<ProjectEditDialogProps> = ({
}}
autoFocus
/>
<p className="typography-meta text-muted-foreground truncate">
<p className="typography-meta text-muted-foreground truncate" title={projectPath}>
{projectPath}
</p>
</div>
{/* Color */}
<div className="space-y-2">
<div className="min-w-0 space-y-2">
<label className="typography-ui-label font-medium text-foreground">
Color
</label>
@@ -120,7 +120,7 @@ export const ProjectEditDialog: React.FC<ProjectEditDialogProps> = ({
</div>
{/* Icon */}
<div className="space-y-2">
<div className="min-w-0 space-y-2">
<label className="typography-ui-label font-medium text-foreground">
Icon
</label>