0 people focusing right now

โš ๏ธ Session Cancellation Flow

Complete guide for users, developers, and app agents

๐Ÿ‘ค User Experience Flow

๐ŸŽฏ Current Behavior (What Users See)
  1. User clicks "Cancel Session"
    During an active 25-minute timer session
    โŒ Stop
  2. Timer immediately ends
    Session stops counting, no more timing
    โน๏ธ End
  3. Cancellation Log Screen
    Shows session summary + reason collection
    ๐Ÿ“ Log
  4. Optional Details Entry
    Reason dropdown + optional detailed notes
    ๐Ÿ’ญ Note
  5. API Call to Database
    Records cancellation + sends Slack notification
    ๐Ÿ’พ Save
  6. Cancellation Receipt
    Shows partial POF points earned + summary
    ๐Ÿงพ Done
โœ… 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 session
  • planned_duration - Original minutes planned
  • elapsed_minutes - Actual time completed
Optional Fields:
  • reason - Cancellation category
  • cancel_reason_note - User's detailed explanation
  • category - Original work category
  • project_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
  1. User clicks "Cancel Session" โ†’ Confirmation dialog appears
  2. Point of No Return: User confirms โ†’ Session 100% cancelled via API immediately
  3. Timer stops, Slack notification sent, partial POF awarded
  4. Optional details screen shown (cancellation already recorded)
  5. User can add reason + detailed notes OR skip to receipt
  6. 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 /api/session/cancel endpoint
Solution: 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 /timer/cancel/[session_id]

Cause: Legacy confirmation dialogs still enabled
Solution: Remove all timer completion confirmations
Flow: Timer ends โ†’ Auto-submit to /api/pomodoro/submit