-
Notifications
You must be signed in to change notification settings - Fork 1
[Windows] Sidebar, home dashboard, command palette, settings, and secondary views #141
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Overview
Implement all WPF views to reach full feature parity with the macOS app.
Sidebar (Views/SidebarView.xaml)
WPF TreeView with HierarchicalDataTemplate:
- Project → Worktrees → Agents/AgentGroups/Terminals
- Status dots (colored
Ellipsebound to status converter) - Navigation tabs: Dashboard, Swarms, Prompts, Schedules, Agent Config
- Context menus (right-click): Kill, Restart, Rename, Delete
- "+" button triggers SpawnDialog
Home Dashboard (Views/HomeDashboardView.xaml)
ItemsControlwith project cards- Each card: project name, branch, worktree count, agent status dots
- Commit heatmap: WPF
CanvaswithRectangleelements (13×7, 5 color levels) - Recent commits list:
ListViewwith hash, message, author, relative time - Git data via
Process.Start("git", "log ...")on background thread
Command Palette (Views/SpawnDialog.xaml)
- Modal overlay (borderless
WindoworPopup) - Phase 1:
TextBoxsearch +ListBoxof agent variants (filtered) - Phase 2: Multi-line
TextBoxfor prompt - Keyboard-driven: arrows navigate, Enter selects/submits, Escape dismisses
- Triggers spawn via REST API
Settings (Views/SettingsView.xaml)
TabControlwith tabs: Connection, Terminal, Appearance, Shortcuts- Connection: URL, token (PasswordBox), test connection button
- Terminal: font picker (monospace ComboBox), size (Slider 8-24), shell, history limit
- Appearance: System/Light/Dark radio buttons
- Shortcuts:
DataGridof bindable actions with key recorder - Persist to
%APPDATA%/PPG Desktop/settings.json
Split-Pane Grid
Same binary tree model as Linux issue #135:
PaneSplitNoderecursive enum (Leaf/Split)- WPF
GridwithGridSplitterfor resize handles - Max 6 panes, keyboard split (Ctrl+D / Ctrl+Shift+D), close (Ctrl+W)
- Focus tracking, hover overlay with split/close buttons
- Grid layout persisted in dashboard-sessions.json
Prompts View
Gridsplit:ListBox(left) +TextBoxeditor (right)- Lists
.ppg/prompts/*.mdand.ppg/templates/*.md - Segmented filter
- Markdown-aware syntax highlighting (can use basic regex-based coloring via
RichTextBoxor customTextBoxadorner)
Swarms View
- Split: swarm list + form
- YAML parsing via
YamlDotNetNuGet or manual parsing - Create/edit/delete swarm definitions
Schedules View
- Calendar with Day/Week/Month modes
- Cron parser (port the macOS
CronParser.swiftto C#) - Scheduled runs shown as colored blocks
Agent Config View
- 3 tabs: CLAUDE.md editor, Skills, config.yaml
- Full text editors with syntax highlighting
Session Persistence
- Match macOS
DashboardSession.swift - Persist entries + grid layouts to
.ppg/dashboard-sessions.json - Debounced writes, synchronous flush on exit
- Restore sessions on relaunch
Multi-Project Support
- List of
ProjectContextpersisted to app settings - Sidebar shows all projects
- Ctrl+1-9 switches projects
- Each project has own manifest watcher + session
References
- macOS sidebar:
PPG CLI/PPG CLI/SidebarViewController.swift - macOS dashboard:
PPG CLI/PPG CLI/HomeDashboardView.swift - macOS palette:
PPG CLI/PPG CLI/CommandPalettePanel.swift - macOS settings:
PPG CLI/PPG CLI/SettingsViewController.swift
Acceptance Criteria
- Sidebar shows full project/worktree/agent tree with status indicators
- Home dashboard with project cards, heatmap, commits
- Command palette spawns agents
- Settings persist and apply live
- Split-pane grid with keyboard shortcuts
- Prompts/Swarms/Schedules/AgentConfig views functional
- Session persistence and restore
- Multi-project support
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request