โ ๏ธ Session Cancellation Flow
Complete guide for users, developers, and app agents
๐ค User Experience Flow
๐ฏ Current Behavior (What Users See)
-
User clicks "Cancel Session"During an active 25-minute timer session
-
Timer immediately endsSession stops counting, no more timing
-
Cancellation Log ScreenShows session summary + reason collection
-
Optional Details EntryReason dropdown + optional detailed notes
-
API Call to DatabaseRecords cancellation + sends Slack notification
-
Cancellation ReceiptShows partial POF points earned + summary
โ What Users Get
- Partial POF Points: Based on completion percentage
- Team Notification: Slack alert about cancellation
- Analytics Tracking: Cancellation patterns recorded
- Profile Activity: Shows in activity timeline
- Self-Reflection: Understanding interruption patterns
๐ง Technical Implementation
๐ก API Endpoint
POST /api/session/cancel
Requires JWT authentication
Required Fields:
session_id
- UUID of original sessionplanned_duration
- Original minutes plannedelapsed_minutes
- Actual time completed
Optional Fields:
reason
- Cancellation categorycancel_reason_note
- User's detailed explanationcategory
- Original work categoryproject_id
/team_project_id
- Project links
๐พ Database Storage
Table:
session_cancellation
Key Data Points:
- ๐ Partial POF Score: Calculated completion percentage
- โฑ๏ธ Duration Data: Planned vs actual minutes
- ๐ท๏ธ Categorization: Reason + detailed notes
- ๐ฑ Source Tracking: App version, browser, endpoint
- ๐ฅ Project Links: Personal or team project associations
- โฐ Timestamp: Exact cancellation time (UTC)
๐ ๏ธ Developer Instructions
๐ Implementation Checklist for Mac/Windows Agents
๐ฏ Cancel Button Handler
- User clicks "Cancel Session" โ Confirmation dialog appears
- Point of No Return: User confirms โ Session 100% cancelled via API immediately
- Timer stops, Slack notification sent, partial POF awarded
- Optional details screen shown (cancellation already recorded)
- User can add reason + detailed notes OR skip to receipt
- Receipt shows partial POF points and cancellation summary
๐ซ Remove Confirmation Popups
- โ No "Are you sure?" dialogs
- โ No "Skip adding execution notes?" popups
- โ No confirmation after 4 minutes
- โ Auto-submit when timer completes
- โ Direct to API endpoint after 4 minutes
๐ฅ Critical Implementation Notes
- Wrong Behavior: Cancel โ Back to session planning form
- Correct Behavior: Cancel โ Confirm Dialog โ Immediate API call โ Optional details โ Receipt
- Point of No Return: Once user confirms cancellation, session is 100% cancelled (no going back)
- Optional Details: User can add notes OR skip - cancellation already recorded either way
- Timer Complete: Auto-submit to
/api/pomodoro/submit
(no confirmation popups)
๐ Analytics & Insights
๐ฏ Individual Insights
- Cancellation patterns by time of day
- Common interruption sources
- Project types with higher cancel rates
- Completion percentage trends
- Partial POF score progression
๐ฅ Team Analytics
- Team-wide cancellation rates
- Project-specific interruption data
- Cross-platform completion patterns
- Peak interruption time analysis
- Focus improvement recommendations
๐ Business Intelligence
- Mac vs Windows vs Web cancellation rates
- App version performance metrics
- Feature adoption tracking
- User engagement optimization
- Platform reliability insights
๐ง Troubleshooting
Common Issues & Solutions
Cause: App is not calling
Solution: Verify the cancellation API call is implemented in cancel button handler
Test: Check
/api/session/cancel
endpointSolution: Verify the cancellation API call is implemented in cancel button handler
Test: Check
session_cancellation
table for new records
Cause: Wrong navigation flow implemented
Solution: Cancel โ Cancellation log screen โ API call โ Receipt
Reference: Web implementation at
Solution: Cancel โ Cancellation log screen โ API call โ Receipt
Reference: Web implementation at
/timer/cancel/[session_id]
Cause: Legacy confirmation dialogs still enabled
Solution: Remove all timer completion confirmations
Flow: Timer ends โ Auto-submit to
Solution: Remove all timer completion confirmations
Flow: Timer ends โ Auto-submit to
/api/pomodoro/submit