feat(overview): Cross-Project Dashboard (closes #32)#47
Merged
Conversation
added 9 commits
April 23, 2026 00:39
…d resource overview (#32) - Add overview module: gather_overview, stale_projects, detect_runtime - Add ProjectOverview and OverviewSummary types with git status, runtime, activity - Add IPC command: get_project_overview - Add ProjectDashboard component: summary cards, sortable table, git status badges - Add 4 unit tests for runtime detection
Closes the feature/32 scope end-to-end: - `ProjectDetailDrawer` — per-project triage cockpit: severity/bump-tinted tabs, triage rail (tiles double as filters), selectable rows with sticky bulk bar + copy-as-script, in-drawer rescan with freshness indicator, overflow menu whose "Open in..." submenu lists detected editors and falls back to Finder/Explorer. Advisory external-link is persistently visible because reading the GHSA write-up is the primary triage action on that row. - `gather_dependency_scan` runs npm/cargo outdated + audit commands in parallel with per-command timeouts and 5-minute memoisation; fast path (git, resources, staleness, tags) stays in-memory. - Dashboard: removed the two 4-up stat grids (~200px of mostly-zero boxes duplicated by the filter bar) and restructured the filter bar into three logical chambers — Organize / Git / Attention — so each group reads as a unit instead of a flat stream of controls. - Resource heatmap, WorstOffenders band with chips that jump to the right drawer tab, floating drawer scoped to the content area so the sidebar rail stays visible, auto-hiding macOS-style scrollbars. ROADMAP: feature 1 marked Shipped with a Delivered section. Added a Deferred note capturing why auto-executing upgrade / CVE-fix commands is intentionally held off — copy-as-script already captures ~90% of the value; if revisited, the preferred shape is "run in RunHQ terminal with the command pre-filled, user hits Enter" rather than background execute-and-hope. Removed orphaned StatTile/AttentionTile components and their barrel export. Made-with: Cursor
Documents the feature/32 delivery — scope, drawer, filter-bar restructure, deferred auto-execute, and the removals (stat grids, orphan components, old modal). Closes #32. Made-with: Cursor
- Derive `Default` on `OutdatedResult` and `AuditResult` instead of hand-rolled `impl Default` (clippy::new_without_default / derivable_impls). - `split(|c: char| c == '-' || c == '+')` → `split(['-', '+'])` (clippy::manual_pattern_char_comparison). - npm audit parser: build `AuditResult` inline instead of `let mut r = Default::default(); r.critical = ...` (clippy::field_reassign_with_default). Also extracts a small `count` closure so the five lookups read as a table, and leaves the moderate→medium rename as the only commented line. Made-with: Cursor
Deploying runhq with
|
| Latest commit: |
20c2ed9
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://1704c04f.runhq.pages.dev |
| Branch Preview URL: | https://feature-32-cross-project-das.runhq.pages.dev |
`overview::gather_overview` and `gather_dependency_scan` already return `AppResult<_>` (i.e. `Result<_, AppError>`), so `.map_err(AppError::from)` was an identity conversion that clippy rightly flagged under `-D warnings` as `clippy::useless_conversion`. Made-with: Cursor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #32 — ships the Cross-Project Dashboard end-to-end and turns RunHQ from a per-service manager into a bird's-eye view across the entire project fleet.
runhq-core::overview: fast path (git, resources, staleness, tags) in ~tens of ms; opt-in slow path runsnpm outdated/cargo outdated/ audit commands in parallel with per-command timeouts and 5-minute memoisation.ProjectDetailDrawer— per-project triage cockpit: severity / bump-tinted tabs, triage rail (tiles double as filters), multi-select with sticky bulk bar that copies all selected upgrade commands as one shell script, in-drawer rescan, and an "Open in…" overflow submenu listing detected editors with a Finder/Explorer fallback.StatTile/AttentionTilecomponents, and the oldProjectDashboardmodal.Deferred (intentionally)
Scope coverage (issue #32)
Test plan
pnpm exec tsc -p tsconfig.json --noEmit— greenpnpm exec eslint src— green (only pre-existing warnings)cargo test -p runhq-core— 46 tests pass (verified locally at commit time)Made with Cursor