-
Notifications
You must be signed in to change notification settings - Fork 1
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