feat(ui): add TaskHeaderBar detail component

Standalone UserControl for the task detail island redesign.
Grid layout: id badge + editable title | trash/skull toggle | gear flyout.
Skull geometry added to IslandStyles.axaml (Icon.Skull, EvenOdd fill).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mika kuns
2026-06-04 19:22:53 +02:00
parent 299867d8df
commit 9f95942dd1
4 changed files with 182 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
namespace ClaudeDo.Ui.ViewModels.Islands.Detail;
public record AgentOption(string Name);
public partial class TaskHeaderBarViewModel : ViewModelBase
{
[ObservableProperty] private string _taskIdBadge = "#T42";
[ObservableProperty] private string _editableTitle = "Refactor diff viewer";
// Change to true to preview skull icon
[ObservableProperty] private bool _isRunning = false;
[ObservableProperty] private bool _isAgentSectionEnabled = true;
[ObservableProperty] private ObservableCollection<string> _taskModelOptions =
new() { "claude-opus-4-5", "claude-sonnet-4-5", "claude-haiku-4-5" };
[ObservableProperty] private string? _taskModelSelection;
[ObservableProperty] private string? _modelBadge = "inherited · Global";
[ObservableProperty] private string? _modelInheritedHint = "claude-opus-4-5";
[ObservableProperty] private decimal? _taskMaxTurns;
[ObservableProperty] private string? _turnsBadge = "inherited · List";
[ObservableProperty] private string? _turnsInheritedHint = "40";
[ObservableProperty] private string? _taskSystemPrompt;
[ObservableProperty] private string? _effectiveSystemPromptHint = "You are a senior .NET developer…";
[ObservableProperty] private ObservableCollection<AgentOption> _taskAgentOptions =
new() { new("default"), new("code-reviewer"), new("test-writer") };
[ObservableProperty] private AgentOption? _taskSelectedAgent;
[ObservableProperty] private string? _agentBadge;
[RelayCommand] private void DeleteTask() { }
[RelayCommand] private void KillSession() { }
[RelayCommand] private void ResetTaskModel() { }
[RelayCommand] private void ResetTaskTurns() { }
[RelayCommand] private void ResetTaskAgent() { }
}