chore(ui): remove dead AgentStripView fragment
AgentStripView was superseded by WorkConsole during the task-detail redesign but never wired into any view and never deleted. Drops the unused Border.agent-strip / diff-meter styles and the 14 agent.* locale keys that only it referenced, and marks A4 in the feature-unification spec as resolved by deletion.
This commit is contained in:
@@ -35,7 +35,7 @@ the engine.
|
|||||||
| A1 | Diff viewing | `DiffModalViewModel` (worktree + commit-range), `WorktreeModalViewModel` (file-tree + per-file), `PlanningDiffViewModel` (per-subtask + integration) | `UnifiedDiffParser`, `DiffLinesView` (good) |
|
| A1 | Diff viewing | `DiffModalViewModel` (worktree + commit-range), `WorktreeModalViewModel` (file-tree + per-file), `PlanningDiffViewModel` (per-subtask + integration) | `UnifiedDiffParser`, `DiffLinesView` (good) |
|
||||||
| A2 | Agent-config editing | `ListSettingsModalViewModel` (list scope), `AgentSettingsSectionViewModel` (task scope); global lives in `SettingsModalViewModel` | `InheritanceResolver`, `InheritedBadge` (good) |
|
| A2 | Agent-config editing | `ListSettingsModalViewModel` (list scope), `AgentSettingsSectionViewModel` (task scope); global lives in `SettingsModalViewModel` | `InheritanceResolver`, `InheritedBadge` (good) |
|
||||||
| A3 | Worktree actions | `WorktreesOverviewModalViewModel` per-row cmds (Merge/Discard/Keep/ForceRemove/ShowDiff/Jump) vs `MergeSectionViewModel` (Merge/OpenDiff) | same `IWorkerClient` calls |
|
| A3 | Worktree actions | `WorktreesOverviewModalViewModel` per-row cmds (Merge/Discard/Keep/ForceRemove/ShowDiff/Jump) vs `MergeSectionViewModel` (Merge/OpenDiff) | same `IWorkerClient` calls |
|
||||||
| A4 | Merge display | `AgentStripView` re-displays `MergeSectionViewModel` state | — |
|
| A4 | Merge display | ~~`AgentStripView` re-displays `MergeSectionViewModel` state~~ — resolved 2026-08-06: `AgentStripView` was dead (never bound after the task-detail redesign); deleted instead of unified | — |
|
||||||
|
|
||||||
### Bucket B — entry-point sprawl (one backend, many hand-wired doors)
|
### Bucket B — entry-point sprawl (one backend, many hand-wired doors)
|
||||||
|
|
||||||
|
|||||||
@@ -250,21 +250,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"agent": {
|
"agent": {
|
||||||
"stopTip": "Agent stoppen",
|
"openWorktreeTip": "Worktree im Datei-Explorer öffnen"
|
||||||
"sendToQueue": "In Warteschlange einreihen",
|
|
||||||
"sendToQueueTip": "Diese Aufgabe einreihen, damit der Worker sie übernimmt",
|
|
||||||
"removeFromQueue": "Aus Warteschlange entfernen",
|
|
||||||
"removeFromQueueTip": "Diese Aufgabe wieder aus der Warteschlange nehmen",
|
|
||||||
"worktreeLabel": "WORKTREE",
|
|
||||||
"copyPathTip": "Pfad kopieren",
|
|
||||||
"diffLabel": "DIFF",
|
|
||||||
"openDiff": "Diff öffnen",
|
|
||||||
"worktreeBtn": "Worktree",
|
|
||||||
"openWorktreeTip": "Worktree im Datei-Explorer öffnen",
|
|
||||||
"continue": "Fortsetzen",
|
|
||||||
"continueTip": "Die letzte Sitzung fortsetzen und weitermachen",
|
|
||||||
"resetAndRetry": "Zurücksetzen & erneut versuchen",
|
|
||||||
"resetAndRetryTip": "Den Worktree verwerfen und die Aufgabe erneut einreihen, um von vorn zu beginnen"
|
|
||||||
},
|
},
|
||||||
"notes": {
|
"notes": {
|
||||||
"today": "Heute",
|
"today": "Heute",
|
||||||
|
|||||||
@@ -250,21 +250,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"agent": {
|
"agent": {
|
||||||
"stopTip": "Stop agent",
|
"openWorktreeTip": "Open worktree in file explorer"
|
||||||
"sendToQueue": "Send to queue",
|
|
||||||
"sendToQueueTip": "Queue this task for the worker to pick up",
|
|
||||||
"removeFromQueue": "Remove from queue",
|
|
||||||
"removeFromQueueTip": "Take this task back out of the queue",
|
|
||||||
"worktreeLabel": "WORKTREE",
|
|
||||||
"copyPathTip": "Copy path",
|
|
||||||
"diffLabel": "DIFF",
|
|
||||||
"openDiff": "Open diff",
|
|
||||||
"worktreeBtn": "Worktree",
|
|
||||||
"openWorktreeTip": "Open worktree in file explorer",
|
|
||||||
"continue": "Continue",
|
|
||||||
"continueTip": "Resume the last session and keep going",
|
|
||||||
"resetAndRetry": "Reset & retry",
|
|
||||||
"resetAndRetryTip": "Discard the worktree and re-queue the task to run from scratch"
|
|
||||||
},
|
},
|
||||||
"notes": {
|
"notes": {
|
||||||
"today": "Today",
|
"today": "Today",
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ ViewModels/
|
|||||||
WorkerConnection, WorktreesOverview, UnifiedDiffParser
|
WorkerConnection, WorktreesOverview, UnifiedDiffParser
|
||||||
Conflicts/ — ConflictResolverViewModel + ConflictModels
|
Conflicts/ — ConflictResolverViewModel + ConflictModels
|
||||||
Views/ — mirrors the VM layout; Islands/Detail/ holds TaskHeaderBar,
|
Views/ — mirrors the VM layout; Islands/Detail/ holds TaskHeaderBar,
|
||||||
DescriptionStepsCard, WorkConsole; plus AgentStripView, SessionTerminalView
|
DescriptionStepsCard, WorkConsole; plus SessionTerminalView
|
||||||
Views/Controls/ — MarkdownView, ModalShell, ThemedDatePicker, DiffLinesView, InheritedBadge,
|
Views/Controls/ — MarkdownView, ModalShell, ThemedDatePicker, DiffLinesView, InheritedBadge,
|
||||||
AgentConfigEditor
|
AgentConfigEditor
|
||||||
Design/ — Tokens.axaml (design tokens; merged before styles)
|
Design/ — Tokens.axaml (design tokens; merged before styles)
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
<Button Classes="icon-btn"> — 24×24 icon button
|
<Button Classes="icon-btn"> — 24×24 icon button
|
||||||
<Button Classes="btn primary"> — rounded-rect button
|
<Button Classes="btn primary"> — rounded-rect button
|
||||||
<TextBlock Classes="eyebrow"> — uppercase mono label
|
<TextBlock Classes="eyebrow"> — uppercase mono label
|
||||||
<Border Classes="agent-strip running"> — agent status strip
|
|
||||||
<Border Classes="terminal"> — terminal/log window
|
<Border Classes="terminal"> — terminal/log window
|
||||||
-->
|
-->
|
||||||
<Styles xmlns="https://github.com/avaloniaui"
|
<Styles xmlns="https://github.com/avaloniaui"
|
||||||
@@ -489,45 +488,6 @@
|
|||||||
<Setter Property="Stroke" Value="{StaticResource TextDimBrush}" />
|
<Setter Property="Stroke" Value="{StaticResource TextDimBrush}" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<!-- ============================================================ -->
|
|
||||||
<!-- AGENT STRIP -->
|
|
||||||
<!-- ============================================================ -->
|
|
||||||
<Style Selector="Border.agent-strip">
|
|
||||||
<Setter Property="Padding" Value="12,10" />
|
|
||||||
<Setter Property="CornerRadius" Value="10" />
|
|
||||||
<Setter Property="Background" Value="{StaticResource Surface2Brush}" />
|
|
||||||
<Setter Property="BorderThickness" Value="1" />
|
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource LineBrush}" />
|
|
||||||
</Style>
|
|
||||||
<Style Selector="Border.agent-strip.running">
|
|
||||||
<Setter Property="Background" Value="{StaticResource RunningTintBrush}" />
|
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource RunningTintBorderBrush}" />
|
|
||||||
</Style>
|
|
||||||
<Style Selector="Border.agent-strip.review">
|
|
||||||
<Setter Property="Background" Value="{StaticResource ReviewTintBrush}" />
|
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource ReviewTintBorderBrush}" />
|
|
||||||
</Style>
|
|
||||||
<Style Selector="Border.agent-strip.children">
|
|
||||||
<Setter Property="Background" Value="#332A1A" />
|
|
||||||
<Setter Property="BorderBrush" Value="#4D3A1A" />
|
|
||||||
</Style>
|
|
||||||
<Style Selector="Border.agent-strip.error">
|
|
||||||
<Setter Property="Background" Value="{StaticResource ErrorTintBrush}" />
|
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource ErrorTintBorderBrush}" />
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<!-- queued → Sage tint -->
|
|
||||||
<Style Selector="Border.agent-strip.queued">
|
|
||||||
<Setter Property="Background" Value="{StaticResource QueuedTintBrush}" />
|
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource QueuedTintBorderBrush}" />
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<!-- idle → neutral (same as base, explicit for clarity) -->
|
|
||||||
<Style Selector="Border.agent-strip.idle">
|
|
||||||
<Setter Property="Background" Value="{StaticResource Surface2Brush}" />
|
|
||||||
<Setter Property="BorderBrush" Value="{StaticResource LineBrush}" />
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<!-- ============================================================ -->
|
<!-- ============================================================ -->
|
||||||
<!-- TERMINAL / LOG -->
|
<!-- TERMINAL / LOG -->
|
||||||
<!-- ============================================================ -->
|
<!-- ============================================================ -->
|
||||||
@@ -959,23 +919,6 @@
|
|||||||
<Setter Property="Foreground" Value="{StaticResource TextDimBrush}" />
|
<Setter Property="Foreground" Value="{StaticResource TextDimBrush}" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<!-- ============================================================ -->
|
|
||||||
<!-- DIFF METER -->
|
|
||||||
<!-- ============================================================ -->
|
|
||||||
<!-- Outer track (full width, line-bright bg) -->
|
|
||||||
<Style Selector="Border.diff-meter-track">
|
|
||||||
<Setter Property="Height" Value="4" />
|
|
||||||
<Setter Property="CornerRadius" Value="2" />
|
|
||||||
<Setter Property="Background" Value="{StaticResource LineBrightBrush}" />
|
|
||||||
<Setter Property="ClipToBounds" Value="True" />
|
|
||||||
</Style>
|
|
||||||
<!-- Filled portion (moss; width set via ScaleTransform or Width binding in view) -->
|
|
||||||
<Style Selector="Rectangle.diff-meter-fill">
|
|
||||||
<Setter Property="Height" Value="4" />
|
|
||||||
<Setter Property="Fill" Value="{StaticResource MossBrightBrush}" />
|
|
||||||
<Setter Property="HorizontalAlignment" Value="Left" />
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<!-- ============================================================ -->
|
<!-- ============================================================ -->
|
||||||
<!-- SUBTASK ROW -->
|
<!-- SUBTASK ROW -->
|
||||||
<!-- ============================================================ -->
|
<!-- ============================================================ -->
|
||||||
|
|||||||
@@ -1,167 +0,0 @@
|
|||||||
<UserControl xmlns="https://github.com/avaloniaui"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:vm="using:ClaudeDo.Ui.ViewModels.Islands"
|
|
||||||
xmlns:loc="using:ClaudeDo.Ui.Localization"
|
|
||||||
x:Class="ClaudeDo.Ui.Views.Islands.AgentStripView"
|
|
||||||
x:DataType="vm:DetailsIslandViewModel">
|
|
||||||
<Border Classes="agent-strip"
|
|
||||||
Classes.running="{Binding IsRunning}"
|
|
||||||
Classes.children="{Binding IsWaitingForChildren}"
|
|
||||||
Margin="18,8,18,0">
|
|
||||||
<StackPanel Margin="12,10" Spacing="6">
|
|
||||||
|
|
||||||
<!-- Row 1: pulsing dot · status label · model · stop button -->
|
|
||||||
<Grid ColumnDefinitions="Auto,Auto,*,Auto">
|
|
||||||
<Ellipse Grid.Column="0"
|
|
||||||
Width="8" Height="8"
|
|
||||||
Fill="{DynamicResource MossBrush}"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Classes.status-pulse="{Binding IsRunning}"
|
|
||||||
Margin="0,0,6,0"/>
|
|
||||||
<TextBlock Grid.Column="1"
|
|
||||||
Classes="meta"
|
|
||||||
Text="{Binding AgentStatusLabel}"
|
|
||||||
LetterSpacing="1.2"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Margin="0,0,8,0"/>
|
|
||||||
<TextBlock Grid.Column="2"
|
|
||||||
Classes="meta"
|
|
||||||
Text="{Binding Model}"
|
|
||||||
Foreground="{DynamicResource TextFaintBrush}"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
TextTrimming="CharacterEllipsis"
|
|
||||||
IsVisible="{Binding Model, Converter={x:Static ObjectConverters.IsNotNull}}"/>
|
|
||||||
<!-- Stop button — only when running -->
|
|
||||||
<Button Grid.Column="3"
|
|
||||||
Classes="icon-btn"
|
|
||||||
Command="{Binding StopCommand}"
|
|
||||||
IsVisible="{Binding IsRunning}"
|
|
||||||
ToolTip.Tip="{loc:Tr agent.stopTip}"
|
|
||||||
VerticalAlignment="Center">
|
|
||||||
<PathIcon Data="{StaticResource Icon.X}" Width="12" Height="12"
|
|
||||||
Foreground="{DynamicResource BloodBrush}"/>
|
|
||||||
</Button>
|
|
||||||
<!-- Send to queue — only when idle -->
|
|
||||||
<Button Grid.Column="3"
|
|
||||||
Classes="btn accent"
|
|
||||||
Content="{loc:Tr agent.sendToQueue}"
|
|
||||||
Command="{Binding EnqueueCommand}"
|
|
||||||
IsVisible="{Binding IsIdle}"
|
|
||||||
ToolTip.Tip="{loc:Tr agent.sendToQueueTip}"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Padding="10,4"/>
|
|
||||||
<!-- Remove from queue — only when queued -->
|
|
||||||
<Button Grid.Column="3"
|
|
||||||
Classes="btn"
|
|
||||||
Content="{loc:Tr agent.removeFromQueue}"
|
|
||||||
Command="{Binding DequeueCommand}"
|
|
||||||
IsVisible="{Binding IsQueued}"
|
|
||||||
ToolTip.Tip="{loc:Tr agent.removeFromQueueTip}"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Padding="10,4"/>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<!-- Row 2: WORKTREE label + path + copy button -->
|
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto"
|
|
||||||
IsVisible="{Binding WorktreePath, Converter={x:Static ObjectConverters.IsNotNull}}">
|
|
||||||
<TextBlock Grid.Column="0"
|
|
||||||
Classes="eyebrow"
|
|
||||||
Text="{loc:Tr agent.worktreeLabel}"
|
|
||||||
Foreground="{DynamicResource TextFaintBrush}"
|
|
||||||
LetterSpacing="1.2"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Margin="0,0,8,0"/>
|
|
||||||
<TextBlock Grid.Column="1"
|
|
||||||
Classes="meta"
|
|
||||||
Text="{Binding WorktreePath}"
|
|
||||||
TextTrimming="CharacterEllipsis"
|
|
||||||
VerticalAlignment="Center"/>
|
|
||||||
<Button Grid.Column="2"
|
|
||||||
Classes="icon-btn"
|
|
||||||
ToolTip.Tip="{loc:Tr agent.copyPathTip}"
|
|
||||||
Click="OnCopyWorktreePathClick"
|
|
||||||
VerticalAlignment="Center">
|
|
||||||
<PathIcon Data="{StaticResource Icon.Copy}" Width="11" Height="11"/>
|
|
||||||
</Button>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<!-- Row 3: Branch line — icon + branch ← main + commits chip -->
|
|
||||||
<StackPanel Orientation="Horizontal" Spacing="6"
|
|
||||||
IsVisible="{Binding BranchLine, Converter={x:Static ObjectConverters.IsNotNull}}">
|
|
||||||
<PathIcon Data="{StaticResource Icon.GitBranch}" Width="11" Height="11"
|
|
||||||
Foreground="{DynamicResource AccentBrush}"
|
|
||||||
VerticalAlignment="Center"/>
|
|
||||||
<TextBlock Classes="meta"
|
|
||||||
Text="{Binding BranchLine}"
|
|
||||||
VerticalAlignment="Center"/>
|
|
||||||
<Border Classes="chip"
|
|
||||||
IsVisible="{Binding CommitsOnBranch}"
|
|
||||||
Padding="5,1" CornerRadius="6">
|
|
||||||
<TextBlock Classes="meta"
|
|
||||||
Text="{Binding CommitsOnBranch, StringFormat='{}{0}c'}"
|
|
||||||
Foreground="{DynamicResource TextFaintBrush}"/>
|
|
||||||
</Border>
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<!-- Row 4: DIFF label + +add −del + meter bar -->
|
|
||||||
<Grid ColumnDefinitions="Auto,Auto,Auto,*">
|
|
||||||
<TextBlock Grid.Column="0"
|
|
||||||
Classes="eyebrow"
|
|
||||||
Text="{loc:Tr agent.diffLabel}"
|
|
||||||
Foreground="{DynamicResource TextFaintBrush}"
|
|
||||||
LetterSpacing="1.2"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Margin="0,0,8,0"/>
|
|
||||||
<TextBlock Grid.Column="1"
|
|
||||||
Text="{Binding DiffAdditions, StringFormat='+{0}'}"
|
|
||||||
Classes="diff-add"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Margin="0,0,4,0"/>
|
|
||||||
<TextBlock Grid.Column="2"
|
|
||||||
Text="{Binding DiffDeletions, StringFormat='−{0}'}"
|
|
||||||
Classes="diff-del"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Margin="0,0,8,0"/>
|
|
||||||
<!-- Slim 4px meter: track + fill using a Grid overlay -->
|
|
||||||
<Grid Grid.Column="3" VerticalAlignment="Center">
|
|
||||||
<Border Classes="diff-meter-track"/>
|
|
||||||
<Rectangle Classes="diff-meter-fill"
|
|
||||||
Width="{Binding DiffMeterRatio}"
|
|
||||||
HorizontalAlignment="Left"
|
|
||||||
RenderTransformOrigin="0,0.5">
|
|
||||||
<Rectangle.RenderTransform>
|
|
||||||
<ScaleTransform ScaleX="{Binding $parent[Grid].Bounds.Width}"/>
|
|
||||||
</Rectangle.RenderTransform>
|
|
||||||
</Rectangle>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<!-- Action buttons -->
|
|
||||||
<StackPanel Orientation="Horizontal" Spacing="6" Margin="0,4,0,0">
|
|
||||||
<Button Classes="btn" Content="{loc:Tr agent.openDiff}" Command="{Binding Merge.OpenDiffCommand}"/>
|
|
||||||
<Button Classes="btn" Command="{Binding Merge.OpenWorktreeCommand}"
|
|
||||||
ToolTip.Tip="{loc:Tr agent.openWorktreeTip}">
|
|
||||||
<StackPanel Orientation="Horizontal" Spacing="6" VerticalAlignment="Center">
|
|
||||||
<PathIcon Data="{StaticResource Icon.ArrowOut}"
|
|
||||||
Width="11" Height="11"
|
|
||||||
Foreground="{DynamicResource TextDimBrush}"/>
|
|
||||||
<TextBlock Text="{loc:Tr agent.worktreeBtn}" VerticalAlignment="Center"/>
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
<Button Classes="btn accent"
|
|
||||||
Content="{loc:Tr agent.continue}"
|
|
||||||
Command="{Binding ContinueCommand}"
|
|
||||||
IsVisible="{Binding ShowContinue}"
|
|
||||||
ToolTip.Tip="{loc:Tr agent.continueTip}"
|
|
||||||
Padding="10,4"/>
|
|
||||||
<Button Classes="btn"
|
|
||||||
Content="{loc:Tr agent.resetAndRetry}"
|
|
||||||
Command="{Binding ResetAndRetryCommand}"
|
|
||||||
IsVisible="{Binding ShowResetAndRetry}"
|
|
||||||
ToolTip.Tip="{loc:Tr agent.resetAndRetryTip}"
|
|
||||||
Padding="10,4"/>
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
</StackPanel>
|
|
||||||
</Border>
|
|
||||||
</UserControl>
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
using Avalonia.Controls;
|
|
||||||
using Avalonia.Input.Platform;
|
|
||||||
using Avalonia.Interactivity;
|
|
||||||
using ClaudeDo.Ui.ViewModels.Islands;
|
|
||||||
|
|
||||||
namespace ClaudeDo.Ui.Views.Islands;
|
|
||||||
|
|
||||||
public partial class AgentStripView : UserControl
|
|
||||||
{
|
|
||||||
public AgentStripView() { InitializeComponent(); }
|
|
||||||
|
|
||||||
private async void OnCopyWorktreePathClick(object? sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
if (DataContext is not DetailsIslandViewModel vm) return;
|
|
||||||
var clipboard = TopLevel.GetTopLevel(this)?.Clipboard;
|
|
||||||
if (clipboard is null || string.IsNullOrEmpty(vm.WorktreePath)) return;
|
|
||||||
await clipboard.SetTextAsync(vm.WorktreePath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user