feat(mission-control): custom tiles — open any console program as a tile

Programs are configured in Settings → Custom tiles and stored in ui.config.json.
A tile with a fixed folder starts on click; without one it offers a submenu of
home, the list folders and browse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
CubeGameLP
2026-10-05 20:09:19 +02:00
co-authored by Claude Opus 5.5
parent 43b03e4837
commit f37b59d58f
12 changed files with 340 additions and 32 deletions
@@ -1,5 +1,8 @@
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Platform.Storage;
using ClaudeDo.Ui.ViewModels.Modals;
using ClaudeDo.Ui.ViewModels.Modals.Settings;
namespace ClaudeDo.Ui.Views.Modals;
@@ -8,7 +11,7 @@ public partial class SettingsModalView : Window
public SettingsModalView()
{
InitializeComponent();
}
protected override void OnDataContextChanged(EventArgs e)
@@ -17,4 +20,11 @@ public partial class SettingsModalView : Window
if (DataContext is SettingsModalViewModel vm)
vm.CloseAction = Close;
}
private async void OnPickCustomTileFolder(object? sender, RoutedEventArgs e)
{
if ((sender as Control)?.DataContext is not CustomTileRowViewModel row) return;
var folders = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions { AllowMultiple = false });
if (folders.Count > 0) row.Folder = folders[0].Path.LocalPath;
}
}