Skip to content

Phase 5 GitHub notifications#2

Merged
jeremyeder merged 12 commits intomainfrom
phase-5-github-notifications
Nov 27, 2025
Merged

Phase 5 GitHub notifications#2
jeremyeder merged 12 commits intomainfrom
phase-5-github-notifications

Conversation

@jeremyeder
Copy link
Copy Markdown
Contributor

No description provided.

jeremyeder and others added 12 commits November 27, 2025 01:27
Implemented all 10 tasks for User Story 3 - Respond to GitHub Notifications:

**Data Layer:**
- T046: NotificationsAPI service with fetchNotifications, markAsRead, muteThread
- T047: useNotifications hook with 30s polling and optimistic updates

**UI Components:**
- T048: NotificationCard with type icons, unread indicators, metadata
- T049: NotificationActions hook-based action sheet (iOS/Android)
- T050: Workflow suggestion mapping (PR→Review, Issue→Bugfix, etc.)

**Screens & Integration:**
- T051: GitHub Notifications screen with filter tabs, unread badges
- T052: Notification tap handler with action sheet
- T053: Mark as Read action with optimistic UI updates
- T054: Open in Browser action using Linking API
- T055: Quick action on Dashboard with unread count badge

**Key Features:**
- Filter notifications by All/Unread
- Mark individual or all notifications as read
- Open notifications in browser
- Mute notification threads
- Real-time polling every 30s
- Optimistic UI updates for instant feedback
- Cross-platform action sheets (iOS native, Android Alert)

All acceptance criteria met. Phase 5 complete.

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

Co-Authored-By: Claude <noreply@anthropic.com>
**Mock Data & Real-time Updates:**
- Added MOCK_NOTIFICATIONS with 7 default GitHub notifications
- Added NotificationNewEvent and NotificationReadEvent to realtime types
- Updated MockSSEService to generate notification events (15% new, 5% read)
- Implemented generateRandomNotification() with realistic data for 8 notification types

**Quick Actions Panel Redesign:**
- Changed from horizontal scrolling FlatList to 2-row grid layout (2 rows × 3 columns)
- Removed horizontal scroll, uses flexWrap for responsive grid
- Each action button now takes 31% width for proper 3-column spacing
- Improved visual density and eliminates need for horizontal scrolling

**Create FAB Implementation:**
- Replaced circular performance monitor button with Create FAB
- Added modal with 5 creation options sorted alphabetically:
  - Agent
  - Scheduled Task
  - Session (functional, routes to /sessions/new)
  - Skill
  - Workflow (marked "Soon")
- FAB positioned bottom-right with proper iOS/Android spacing
- Modal shows icons, labels, and "Soon" badges for upcoming features

All features implemented and ready for testing.

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

Co-Authored-By: Claude <noreply@anthropic.com>
- Added notifications/index screen config to Stack
- Set headerTitle to empty string (no 'notifications/index' text)
- Set headerBackTitle to empty string (shows arrow instead of '(tabs)')
- Header now shows just a clean back arrow

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

Co-Authored-By: Claude <noreply@anthropic.com>
**Issues Fixed:**
- [Realtime] Unknown event type: notification.new warning
- [API] GET /notifications/github returning undefined

**Changes:**
1. Updated useRealtimeSession to handle notification events:
   - Added NotificationNewEvent and NotificationReadEvent handling
   - Invalidates notifications query cache on notification events
   - Logs notification events for debugging

2. Updated NotificationsAPI to return mock data in dev:
   - Uses MOCK_NOTIFICATIONS in __DEV__ mode
   - Filters by unread status when requested
   - Calculates unread count from mock data
   - Falls back to API call in production

Now notifications display properly and update in real-time!

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

Co-Authored-By: Claude <noreply@anthropic.com>
Changed quick action button text from 'Notifications' to 'GitHub Notifications'
for clarity about the notification source.

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

Co-Authored-By: Claude <noreply@anthropic.com>
- Added minHeight: 100 to ensure all buttons have consistent height
- Added justifyContent: 'center' to vertically center content
- Reduced fontSize from 13 to 12 for better fit
- Added lineHeight: 16 for consistent text spacing
- Reduced paddingVertical from 16 to 12 for better proportions

All quick action buttons now have uniform size regardless of text length.

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

Co-Authored-By: Claude <noreply@anthropic.com>
Changed from minHeight to height: 100 to prevent buttons from growing
when text wraps. Added numberOfLines={2} and ellipsizeMode='tail' to
Text component to truncate long text with ellipsis after 2 lines.

All buttons now stay exactly the same size.

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

Co-Authored-By: Claude <noreply@anthropic.com>
**Fixed:**
- Removed sessions headerShown: false override from root layout
- Sessions pages now show back button (controlled by sessions/_layout.tsx)
- Removed header titles from sessions pages for clean, consistent look
- All pages now have proper back navigation

**Changes:**
- app/_layout.tsx: Removed sessions screen override
- app/sessions/_layout.tsx: Set headerTitle: '' for all sessions screens

All pages now have back buttons with no titles, just clean back arrows.

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

Co-Authored-By: Claude <noreply@anthropic.com>
Added headerBackTitle: '' to root Stack screenOptions to globally
remove back button text on all screens. Now shows just a clean
back arrow everywhere.

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

Co-Authored-By: Claude <noreply@anthropic.com>
Added comprehensive app telemetry item to MEDIUM priority backlog:
- Analytics provider options (Expo, Segment, Mixpanel, PostHog)
- Key events to track (sessions, features, performance, errors)
- Implementation example with Expo Analytics
- Privacy considerations (GDPR, opt-out, data anonymization)

Effort: 2-3 days
Confidence: 90%

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

Co-Authored-By: Claude <noreply@anthropic.com>
Removed unused why-did-you-render initialization that was causing warning:
'Could not initialize why-did-you-render: Cannot find module'

The tool was never installed and isn't needed for the app. The
renderTracker.ts utility remains for other performance monitoring features.

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

Co-Authored-By: Claude <noreply@anthropic.com>
Changed slowFrameThreshold from 50 FPS to 30 FPS to reduce noise
in development. 50 FPS was too aggressive for mobile devices and
caused frequent warnings for minor frame drops that don't affect UX.

30 FPS is more reasonable - only warns when truly sluggish.

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

Co-Authored-By: Claude <noreply@anthropic.com>
@jeremyeder jeremyeder merged commit 399ef19 into main Nov 27, 2025
@jeremyeder jeremyeder deleted the phase-5-github-notifications branch November 27, 2025 07:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant