# V1 Block 08 — Today Timeline State Status: Planned Purpose: Prepare domain/view-state data for the Today timeline without building full Flutter UI yet unless explicitly requested. ## Chunk 8.1 — Timeline item view model Recommended Codex level: medium Tasks: Create a UI-independent timeline item model with fields for: - display title - start/end or duration - task type - project color token - background type token - reward icon token - difficulty icon token - explicit time display flag - quick actions available Rules: - Thick border color is project class. - Translucent background is task type. - Name is text. - Icon 1 is reward. - Icon 2 is difficulty. - Flexible task cards show duration; timeline position shows start/stop. - Inflexible, critical, and locked show explicit start/end times. Acceptance criteria: - Tests or snapshots can verify field mapping from task to timeline item. ## Chunk 8.2 — Hidden locked block overlay state Recommended Codex level: medium Tasks: Create overlay state for locked blocks: - hidden by default - temporary reveal mode - named blocked-time overlay - not a normal task block Acceptance criteria: - Locked block can produce an overlay item only when reveal mode is active. - Overlay item is distinguishable from task card item. ## Chunk 8.3 — Compact mode state Recommended Codex level: low Tasks: Add domain/app state for manual compact mode: - Manual toggle only. - Show current task. - Show next required task. - Optionally show next flexible task. - Hide full timeline unless expanded. Rules: - The app must not automatically switch into compact mode after missed/pushed tasks. Acceptance criteria: - Compact mode flag controls compact output selection. - Tests cover manual toggle behavior. Commit suggestion: ```text feat(timeline): add today timeline view state models ```