| title | User Journeys |
|---|---|
| section | User Experience |
| lastUpdated | 2026-03-06 |
User State: Developer opens ThreeDoors to decide what to work on next.
Flow:
- User launches
threedoorsin terminal - Three doors appear showing three diverse tasks from
tasks.txt - User scans the three options (< 5 seconds decision time target)
- User selects a door (A/W/D or arrow keys) or refreshes for new options (S/down arrow)
- Selected door expands to show task detail view with status actions
- User marks task status (complete, blocked, in progress, expand, fork, or procrastinate)
- Three new doors appear automatically
Supported By: TD1, TD2, TD3, TD4, TD5, TD6, TD7, TD8, TD9
Success Criteria: User completes at least one task per session; Three Doors selection takes less time than scanning a full list.
User State: Developer knows which task they want to find but it is not currently displayed in the three doors.
Flow:
- User presses
/to open search mode - Types search text; matching tasks appear bottom-up as live results
- User navigates results with arrow keys or HJKL
- Presses Enter to open task in detail view
- Takes action on task or presses Esc to return to search with text preserved
Supported By: TD1, Story 1.3a requirements
Success Criteria: User finds target task within 3 keystrokes of typing.
User State: Developer thinks of a new task while working and wants to capture it without leaving the terminal.
Flow:
- User presses
/then types:add Buy groceries - Task is appended to
tasks.txt - User returns to three doors view
- New task is available in the task pool for future door selections
Supported By: Story 1.3a :add command
Success Criteria: Task captured in under 5 seconds without leaving the TUI.
User State: Developer wants to log current emotional state to build data for future adaptive selection.
Flow:
- User presses
Mfrom door view at any time - Mood dialog shows options: Focused, Tired, Stressed, Energized, Distracted, Calm, Other
- User selects mood (or types custom text for Other)
- Mood is timestamped and recorded in session metrics
- Returns to door view immediately
Supported By: Story 1.3 mood tracking, Story 1.5 session metrics
Success Criteria: Mood captured in under 3 seconds; mood data appears in sessions.jsonl.
User State: Developer wants to see how productive the current session has been.
Flow:
- User presses
/then types:stats - Session statistics display: tasks completed, doors viewed, time in session, refreshes used
- User reviews progress and returns to door view
Supported By: Story 1.3a :stats command, Story 1.5 session metrics
Success Criteria: Stats display within 100ms; completion count matches actual completions.
User State: Developer captures tasks on iPhone via Apple Notes and wants them available in ThreeDoors on Mac.
Flow:
- User adds tasks to Apple Notes on iPhone
- User launches ThreeDoors on Mac
- ThreeDoors syncs with Apple Notes and loads new tasks into pool
- User selects and completes tasks via Three Doors interface
- Completions sync back to Apple Notes
- Health check command verifies connectivity
Supported By: FR2, FR4, FR5, FR12, FR15
Success Criteria: Sync completes within 2 seconds; bidirectional changes reflected on next app launch.
User State: Developer wants to capture not just a task but why it matters.
Flow:
- User enters extended capture mode
- Provides task description and optional context (why this matters, effort level, type)
- Task is stored with full metadata
- Context is available in detail view and feeds into learning algorithms
Supported By: FR3, FR16, FR21
Success Criteria: Extended capture completes in under 30 seconds; context retrievable in detail view.
User State: Developer has used ThreeDoors for several weeks; system has learned patterns.
Flow:
- User opens ThreeDoors and logs mood as "Tired"
- System uses historical mood-task correlation data to select doors
- Doors show lower-effort, quick-win tasks appropriate for tired state
- User completes a task; system reinforces the pattern
- System surfaces insight: "When tired, you complete 2x more quick-win tasks"
Supported By: FR20, FR21, Epic 4 (Learning & Intelligent Door Selection)
Success Criteria: Door selection patterns differ measurably based on mood state; user reports doors feel more relevant.
User State: User wants to personalize the Three Doors appearance to match their aesthetic preference.
Flow:
- During first-run onboarding, user is presented with a horizontal preview of available door themes
- User browses themes with arrow keys, seeing doors rendered in each theme style
- User selects preferred theme (e.g., Modern/Minimalist, Sci-Fi/Spaceship, Japanese Shoji, or Classic)
- Theme is applied immediately — all three doors render with the chosen theme frame
- Later, user types
:themeto open the theme selection view - User previews and switches to a different theme; change takes effect immediately without restart
- Selected theme persists in
~/.threedoors/config.yaml - When terminal is too narrow for the active theme, doors gracefully fall back to Classic rendering
Supported By: FR55, FR56, FR57, FR58, FR59, FR60, FR61, FR62
Success Criteria: Theme change applies instantly to all three doors; config.yaml reflects selection after restart; narrow terminal triggers Classic fallback without error.
User State: User has just installed ThreeDoors and launches it for the first time with no existing configuration or tasks.
Flow:
- User runs
threedoorsin terminal for the first time - ThreeDoors detects no config file and enters the onboarding flow
- Empty state view explains the Three Doors concept and prompts the user to add their first tasks
- User adds 3-5 tasks via guided inline prompts
- Adapter registry presents available task providers (local text file, Apple Reminders, Jira, etc.)
- User selects a provider and configures it; config is written to
~/.threedoors/config.yaml - Horizontal theme preview appears — user browses and selects a door theme
- First set of three doors appears with the user's tasks rendered in the chosen theme
- User selects a door and completes their first task
Supported By: FR31, FR32, FR33, FR55, FR56, FR57, FR58, FR59
Success Criteria: New user goes from install to first task completion in under 3 minutes; config.yaml is created with valid provider and theme settings; no errors or blank screens during the flow.
User State: User has been using ThreeDoors with local tasks and wants to connect an external task source (e.g., Jira, Todoist, GitHub Issues) to pull in work tasks alongside personal ones.
Flow:
- User decides to connect their Jira board and runs the setup wizard via
:connectcommand - Wizard prompts for provider type, server URL, and authentication credentials
- User enters API token; ThreeDoors validates the connection and confirms sync access
- Initial sync pulls issues from the configured JQL filter into the local task pool
- Three doors now show a mix of local tasks and Jira issues, each with source attribution
- User selects a door showing a Jira issue and marks it complete
- Completion syncs back to Jira — the issue transitions to "Done" in the remote system
- User checks sync status indicator in the TUI to confirm bidirectional sync is healthy
Supported By: FR63, FR64, FR65, FR66, FR46, FR48, FR70, FR71, FR72
Success Criteria: External tasks appear in doors within one sync cycle; source attribution is visible on each task; completing a task in ThreeDoors reflects in the remote system; sync status indicator shows healthy state.
User State: User starts their workday and wants to review yesterday's progress and set today's focus before diving into tasks.
Flow:
- User runs
threedoors planor types:planin the TUI to enter planning mode - Step 1 (Review): Yesterday's incomplete tasks are presented one by one — user triages each as continue, skip, or snooze
- Snoozed tasks open the SnoozeView for date selection and are deferred out of the active pool
- Step 2 (Select): Full task pool is displayed with energy-aware sorting — system infers energy level from time of day (morning = high) and suggests matching tasks
- User overrides energy level to "medium" and selects 3 tasks as today's focus
- Step 3 (Confirm): Summary shows focus tasks tagged with
+focus; user confirms the plan - Planning session metrics are logged (duration, tasks reviewed, focus count)
- User returns to three doors view — focus-tagged tasks appear more frequently as doors throughout the day
Supported By: FR97, FR98, FR99, FR100, FR101, FR102, FR103
Success Criteria: Planning session completes in under 5 minutes; focus tasks appear at elevated frequency in door selection; planning metrics are recorded in session log; energy override persists for the session.
User State: User encounters a task in the doors that isn't actionable right now but will be relevant next week.
Flow:
- User sees a task in the three doors view and selects it
- User presses
Zto open the snooze action - Snooze options appear: Tomorrow, Next Week, Pick Date, Someday
- User selects "Next Week" — task is deferred until next Monday 9:00 AM
- Task immediately disappears from door selection; doors refresh with a new task in its place
- Snooze event is logged in the JSONL session metrics
- On Monday morning, the deferred task automatically returns to
todostatus - Task reappears in door selection; user completes it
- User types
:deferredto review all currently snoozed tasks, un-snoozes one early
Supported By: FR104, FR105, FR106, FR107, FR108, FR109
Success Criteria: Snoozed task is removed from doors within the same session; task auto-returns on the scheduled date; :deferred view shows all snoozed tasks sorted by return date; snooze events appear in session log.
User State: Power user wants to manage tasks non-interactively from the command line or integrate ThreeDoors into shell scripts.
Flow:
- User runs
threedoors task listto see all current tasks in a formatted table - User pipes
threedoors task list --jsonintojqto filter tasks by tag - User adds a new task:
threedoors task add "Review quarterly OKRs" - User checks current doors:
threedoors doorsshows the three active doors - User picks a door without entering the TUI:
threedoors doors pick 2 - User completes the task:
threedoors task complete <id> - User reviews session stats:
threedoors statsshows completions and session metrics - User generates shell completions:
threedoors completion zsh >> ~/.zshrc
Supported By: FR81, FR82, FR83, FR84, FR85
Success Criteria: All commands return valid output in both human-readable and --json modes; shell completions work without errors; commands are composable in shell pipelines.