Overview
Implement remaining views to reach full feature parity with the macOS app.
Home Dashboard
Match PPG CLI/PPG CLI/HomeDashboardView.swift:
- Per-project cards showing: name, branch tag, worktree count
- Agent status dots (colored circles, up to 5 per status with +N overflow)
- 91-day commit heatmap (13×7 grid, 5 color levels, cairo drawing on
gtk::DrawingArea)
- 10 most recent commits (hash, message, author, relative time)
- Data fetched via
git log subprocess on background thread
Command Palette
Match PPG CLI/PPG CLI/CommandPalettePanel.swift:
- Overlay dialog (centered, dismissible with Escape)
- Phase 1: Searchable list of agent variants (Claude/Codex/OpenCode/Terminal/Worktree)
- Phase 2: Prompt text entry (multi-line
gtk::TextView)
- Enter submits, Escape goes back/dismisses
- Triggered by Ctrl+N or sidebar "+" button
- Use
adw::Dialog or custom floating gtk::Window
Settings
Match PPG CLI/PPG CLI/SettingsViewController.swift:
- Use
adw::PreferencesWindow with groups:
- Connection: Server URL, token (masked input), test connection button
- Terminal: Font family (monospace filter), font size (8-24), shell path, history limit
- Appearance: System/Light/Dark toggle
- Shortcuts: Rebindable keyboard shortcuts table (Ctrl+D, Ctrl+Shift+D, Ctrl+W, etc.)
- Persist to
~/.config/ppg-desktop/settings.json
Prompts View
Match PPG CLI/PPG CLI/PromptsView.swift:
- Split pane: file list (left) + editor (right)
- Lists
.ppg/prompts/*.md and .ppg/templates/*.md
- Segmented filter: All / Prompts / Templates
- Editor: monospace
gtk::TextView with markdown highlighting
{{VAR}} placeholders highlighted in orange
- Create / rename / delete prompts
- Also scan global
~/.ppg/prompts/ and ~/.ppg/templates/
Swarms View
Match PPG CLI/PPG CLI/SwarmsView.swift:
- Split pane: swarm list + form editor
- Lists
.ppg/swarms/*.yaml files
- Form fields: name, description, strategy (shared/isolated), per-agent prompt + type
- YAML parsing (use
serde_yaml crate)
- Create / edit / delete
- Also scan
~/.ppg/swarms/
Schedules View
Match PPG CLI/PPG CLI/SchedulesView.swift:
- Calendar view with Day/Week/Month modes
- Parse cron expressions from
schedules.yaml files
- Show scheduled runs as colored blocks
- Implement cron parser in Rust (5-field: min/hour/DOM/month/DOW, supports *, /N, ranges, lists, name aliases)
Agent Config View
Match PPG CLI/PPG CLI/AgentConfigView.swift:
- 3 tabs: CLAUDE.md editor, Skills viewer, config.yaml editor
- CLAUDE.md: file picker per project, full text editor, save button
- Skills: list
~/.claude/skills/*/SKILL.md, show YAML frontmatter as form
- config.yaml: YAML editor with syntax highlighting
Acceptance Criteria
Overview
Implement remaining views to reach full feature parity with the macOS app.
Home Dashboard
Match
PPG CLI/PPG CLI/HomeDashboardView.swift:gtk::DrawingArea)git logsubprocess on background threadCommand Palette
Match
PPG CLI/PPG CLI/CommandPalettePanel.swift:gtk::TextView)adw::Dialogor custom floatinggtk::WindowSettings
Match
PPG CLI/PPG CLI/SettingsViewController.swift:adw::PreferencesWindowwith groups:~/.config/ppg-desktop/settings.jsonPrompts View
Match
PPG CLI/PPG CLI/PromptsView.swift:.ppg/prompts/*.mdand.ppg/templates/*.mdgtk::TextViewwith markdown highlighting{{VAR}}placeholders highlighted in orange~/.ppg/prompts/and~/.ppg/templates/Swarms View
Match
PPG CLI/PPG CLI/SwarmsView.swift:.ppg/swarms/*.yamlfilesserde_yamlcrate)~/.ppg/swarms/Schedules View
Match
PPG CLI/PPG CLI/SchedulesView.swift:schedules.yamlfilesAgent Config View
Match
PPG CLI/PPG CLI/AgentConfigView.swift:~/.claude/skills/*/SKILL.md, show YAML frontmatter as formAcceptance Criteria