areibman / areibman/bottleneck

Feature: Unified dashboard for all active PRs/issues/branches across repositories

Open
#20 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
156
Forks
21
PR merge metrics
No merged PRs in 30d

Description

## Feature Request

Create a unified dashboard that provides a comprehensive view of all active work items (PRs, issues, branches) across all repositories, offering a better alternative to GitHub's notifications page.

## Description

A centralized dashboard that aggregates and displays all your open pull requests, active issues, and working branches across multiple repositories in a clean, organized interface. This solves the problem of having to navigate between multiple repos to track ongoing work.

## Core Features

### 1. Unified Work Items View

#### Display Categories
- **Pull Requests**
- Open PRs you authored
- PRs awaiting your review
- PRs where you're mentioned
- Draft PRs in progress
- PR approval status
- CI/CD check status

- **Issues**
- Issues assigned to you
- Issues you created
- Issues you're mentioned in
- Issues you're watching
- Issue labels and milestones

- **Branches**
- Your active branches
- Recently pushed branches
- Branches with uncommitted changes
- Stale branches (no activity >30 days)
- Branch protection status

### 2. Smart Organization

#### Grouping Options
```javascript
const groupingStrategies = {
byRepository: {
"org/repo-1": {
prs: [...],
issues: [...],
branches: [...]
},
"org/repo-2": {...}
},

byType: {
pullRequests: [...],
issues: [...],
branches: [...]
},

byPriority: {
urgent: [...],
high: [...],
medium: [...],
low: [...]
},

byStatus: {
needsAction: [...],
inProgress: [...],
blocked: [...],
readyToMerge: [...]
},

byDate: {
today: [...],
thisWeek: [...],
older: [...]
}
};
```

### 3. Rich Information Display

#### PR Card Information
```typescript
interface PRCard {
// Basic Info
title: string;
number: number;
repository: string;
author: User;

// Status
state: 'open' | 'draft' | 'ready';
checks: {
passed: number;
failed: number;
pending: number;
};
reviews: {
approved: number;
changesRequested: number;
pending: number;
};

// Metadata
createdAt: Date;
updatedAt: Date;
lastActivity: string; // "2 hours ago"

// Stats
additions: number;
deletions: number;
filesChanged: number;
comments: number;

// Actions
mergeable: boolean;
conflicts: boolean;
behindBase: number; // commits behind
}
```

### 4. Real-time Updates

#### Live Sync
- WebSocket connection for instant updates
- Polling fallback (configurable interval)
- Push notifications for important events
- Background sync when app regains focus
- Offline queue for actions

#### Update Indicators
- New activity badges
- Unread comment counts
- Status change animations
- Time since last update
- Auto-refresh countdown

### 5. Advanced Filtering & Search

#### Filter Options
```javascript
class WorkItemFilters {
constructor() {
this.filters = {
// Repository filters
repositories: ['specific-repos'],
organizations: ['specific-orgs'],

// Type filters
itemTypes: ['pr', 'issue', 'branch'],

// Status filters
prStatus: ['open', 'draft', 'approved'],
issueStatus: ['open', 'in-progress'],
checkStatus: ['passing', 'failing'],

// Assignment filters
assignee: ['me', 'team', 'specific-user'],
author: ['me', 'others'],
reviewer: ['pending-my-review'],

// Time filters
updatedWithin: '7d',
createdWithin: '30d',
stale: true,

// Label filters
labels: ['bug', 'feature', 'urgent'],

// Other
hasConflicts: false,
needsRebase: false,
readyToMerge: true
};
}
}
```

### 6. Quick Actions

#### Inline Actions
- Merge PR (with merge strategy selection)
- Approve/Request changes
- Close/Reopen issue
- Assign/Unassign
- Add/Remove labels
- Mark as draft/ready
- Rebase/Update branch
- View diff
- Open in browser
- Copy link

#### Bulk Operations
- Select multiple items
- Bulk close issues
- Bulk label assignment
- Mass notification management
- Archive old branches

### 7. UI/UX Design

#### Layout Modes

**Compact View**
```
┌─────────────────────────────────────────────┐
│ 🔵 PR #123 | repo-name | ✅ 3/3 checks │
│ Fix authentication bug │
│ @author | 2 approved | +45 -12 | 2h ago │
├─────────────────────────────────────────────┤
│ 🟡 PR #456 | other-repo | ⏳ 1/3 checks │
│ Add new feature │
│ @author | Changes requested | +120 -5 | 5h │
└─────────────────────────────────────────────┘
```

**Card View**
```
┌──────────────────┐ ┌──────────────────┐
│ PR #123 │ │ Issue #789 │
│ ✅ Ready │ │ 🐛 Bug │
│ │ │ │
│ 3 approvals │ │ High Priority │
│ All checks ✓ │ │ 2 comments │
│ │ │ │
│ [Merge] [View] │ │ [View] [Close] │
└──────────────────┘ └──────────────────┘
```

**List View**
- Traditional table format
- Sortable columns
- Inline expansion
- Keyboard navigation

### 8. Customization

#### User Preferences
```json
{
"dashboard": {
"defaultView": "compact",
"groupBy": "repository",
"sortBy": "updated",
"showClosed": false,
"autoRefresh": 30,
"theme": "auto",

"columns": [
"status",
"title",
"repository",
"checks",
"reviews",
"updated"
],

"quickFilters": [
"needs-my-review",
"my-prs",
"failing-checks"
],

"notifications": {
"desktop": true,
"sound": false,
"mentions": true,
"statusChanges": true
}
}
}
```

### 9. Analytics & Insights

#### Personal Metrics
- PR velocity (PRs merged/week)
- Average review time
- Issue resolution rate
- Code contribution trends
- Review participation
- Most active repositories

#### Team Metrics
- Team PR throughput
- Review bottlenecks
- Issue backlog trends
- Collaboration patterns

### 10. Integration Features

#### IDE Integration
- VS Code extension
- JetBrains plugin
- Vim/Neovim plugin
- Sublime Text package

#### Communication Tools
- Slack notifications
- Discord webhooks
- Email digests
- Microsoft Teams

#### Project Management
- Jira sync
- Linear integration
- Notion updates
- Trello cards

## Implementation Architecture

```javascript
class UnifiedDashboard {
constructor() {
this.dataSource = new GitHubDataAggregator();
this.cache = new WorkItemCache();
this.realtime = new WebSocketManager();
}

async loadDashboard() {
const items = await this.aggregateWorkItems();
const grouped = this.groupItems(items);
const filtered = this.applyFilters(grouped);
return this.enrichWithMetadata(filtered);
}

async aggregateWorkItems() {
const [prs, issues, branches] = await Promise.all([
this.fetchAllPRs(),
this.fetchAllIssues(),
this.fetchAllBranches()
]);

return this.mergeAndDeduplicate(prs, issues, branches);
}
}
```

## Benefits

- **Single Source of Truth**: All active work in one place
- **Time Saving**: No need to check multiple repos
- **Better Organization**: Smart grouping and filtering
- **Improved Workflow**: Quick actions without context switching
- **Team Visibility**: See what everyone is working on
- **Reduced Noise**: Better than GitHub notifications
- **Productivity Insights**: Track your work patterns

## Acceptance Criteria

- [ ] Dashboard loads all PRs across repositories
- [ ] Dashboard loads all assigned issues
- [ ] Dashboard shows active branches
- [ ] Real-time updates work
- [ ] Filtering system is functional
- [ ] Grouping options work correctly
- [ ] Quick actions execute properly
- [ ] Search functionality works
- [ ] Performance with 100+ items
- [ ] Responsive design for all screen sizes
- [ ] Keyboard navigation support
- [ ] Customization preferences persist
- [ ] Export functionality works
- [ ] Offline mode handles gracefully
- [ ] Integration with GitHub API is robust

## Mockup Reference

Similar to GitHub notifications but better:
- Cleaner interface
- More information density
- Better grouping
- Inline actions
- Custom filters
- Multiple view modes
- Cross-repository visibility

## Future Enhancements

- AI-powered prioritization
- Predictive issue/PR categorization
- Automated PR description generation
- Code review summaries
- Sprint/milestone tracking
- Time tracking integration
- Custom workflows
- Mobile app

🤖 Generated with [Claude Code](https://claude.ai/code)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the UnifiedDashboard entry point and its aggregateWorkItems flow, including GitHubDataAggregator, WorkItemCache, and WebSocketManager. Define a smaller implementation boundary from the listed acceptance criteria, then verify the selected dashboard behavior against the relevant loading, filtering, and update requirements.

Written by the indexing model from the issue text.

Assessment

Tech stack
electron, github, typescript
Domain
api, desktop, frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
18/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.