Skip to content

Conversation

@ggfevans
Copy link

@ggfevans ggfevans commented Jan 1, 2026

Summary

This is an MVP implementation of a macOS menu bar (system tray) feature that displays pinned pipeline status at a glance. Addresses #27.

Features

  • Pin/unpin pipelines from the main table view
  • Menu bar icon with aggregate status (running → failed → passed)
  • Quick status view showing pinned pipelines with format: owner/repo - workflow ✅
  • Real-time updates when pipeline status changes or pins are modified
  • "Open Pipedash" and "Quit" menu actions

Screenshots

Example of menubar with a few of my CICD workflows pinned: (nevermind my many other menubar items...)
image

Workflow list, showing pin buttons (red outline for emphasis only)
image

Technical Changes

Backend (Rust):

  • Add pinned field to Pipeline struct
  • Create tray_status module with status aggregation logic
  • Add SQLite and PostgreSQL migrations for pinned column
  • Implement TrayManager with Tauri 2.x tray API
  • Add event listener to sync tray with pipeline updates

Frontend (TypeScript/React):

  • Add pin/unpin button with optimistic updates
  • Add mutation hook for pinned state management

Future Enhancements (not in this MVP)

  • Click menu item to navigate directly to pipeline
  • Keyboard shortcuts for pinning
  • Native notifications for status changes
  • Customizable refresh interval for tray

Test Plan

  • Pin/unpin pipelines from table view
  • Verify pin state persists across app restarts
  • Verify pin state persists across pipeline refreshes (~30s)
  • Verify tray icon updates based on aggregate status
  • Verify tray menu shows correct pipeline info
  • Verify "Open Pipedash" focuses the app window
  • Verify "Quit" exits the application
  • Run cargo test --package pipedash-core tray_status (4/4 pass)

…(MVP)

This is an MVP implementation of a macOS menu bar feature that displays
pinned pipeline status at a glance.

Backend (Rust):
- Add `pinned` field to Pipeline struct for tracking pinned pipelines
- Create tray_status module with TrayStatus aggregation logic
- Add SQLite and PostgreSQL migrations for pinned column
- Add repository methods for set/get pinned pipelines
- Add Tauri commands for pinned pipeline operations
- Implement TrayManager with dynamic menu and status icons
- Fix pin state persistence by reading from cache after sync

Frontend (TypeScript/React):
- Add pin/unpin button to pipeline table actions
- Add optimistic mutation hook for pinned state
- Add service layer functions for Tauri IPC

Features:
- Pin pipelines to show in macOS menu bar
- Status icons reflect aggregate state (running/failed/passed)
- Menu items show: {owner/repo} - {workflow} {status icon}
- Tray menu updates when pipelines are pinned or status changes
- "Open Pipedash" and "Quit" menu actions

Future enhancements (not in this MVP):
- Click menu item to navigate to specific pipeline
- Keyboard shortcuts for pinning
- Notification support for status changes
@google-cla
Copy link

google-cla bot commented Jan 1, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@ggfevans
Copy link
Author

ggfevans commented Jan 1, 2026

@hcavarsan please, let me know what you think!

@github-actions
Copy link

github-actions bot commented Feb 5, 2026

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in two weeks if no further activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale label Feb 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant