Skip to content

[Linux] Home dashboard, command palette, settings, and secondary views #136

@2witstudios

Description

@2witstudios

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

  • Home dashboard shows project cards with stats, heatmap, commits
  • Command palette spawns agents via REST API
  • Settings persist and apply live (font, theme, shortcuts)
  • Prompts view with create/edit/delete and markdown highlighting
  • Swarms view with YAML form editor
  • Schedules view with calendar and cron parsing
  • Agent config view with CLAUDE.md + Skills + config editors

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions