# View Inventory

Working master list of the **views/surfaces** the app needs — the companion to `task-app-feature-inventory.md` (which catalogs *features*). Features answer "what can it do"; this doc answers "where does the user stand to do it." We grow this as decisions land.

## Thesis recap (from the feature inventory)

- A genuinely good **individual** task + calendar app. The solo experience *is* the product.
- **Simple / low-noise by default, depth on demand** — built from a small set of primitives + presets so it can be rich *and* simple.
- Sold as **one cheap, admin-managed, multi-seat plan** (Spotify model: one account/bill, usage mostly solo, each person in their own space). Multi-user is a packaging layer, not a usage requirement; shared surfaces are secondary.

## Organizing principles

1. **One primitive.** An *item* is a task; give it a time and it behaves as an event; give it a repeat and it grows a streak (habit); give it subtasks and it's a checklist. Views are **lenses over one dataset**, not separate object silos.
2. **List-first.** The list is home. (Decided.) A separate calendar view matters too, but it's a destination you go to, not the center of gravity. Where a view benefits from time-scrubbing, it carries a lightweight **date strip** — a horizontal, swipeable row of dates that can drag down to expose more (à la TickTick/Todoist, not a straight copy).
3. **Depth is summoned, not shown.** Most "power" views (filters, projects, habits, review) are the *same data re-sorted*. They are depth layers, not new tabs.
4. **Lenses swap on one surface; destinations are structurally different.** Today / All / Upcoming / Untriaged are *the same list, filtered* — they live behind a switcher on one surface, never as separate tabs. Bottom-nav slots are reserved for surfaces that genuinely differ in kind (list vs. calendar vs. containers vs. settings). This keeps the nav honest and lets lenses scale infinitely at zero nav cost.
5. **Two different "lists" — keep them straight.** (a) **Smart lenses** — Today / All / Upcoming / Untriaged — are computed views over everything; they swap on the primary surface. (b) **Containers** — the user's own lists/projects (Groceries, Work, Reno) — are user-made buckets; they live in the **Lists** destination. They look alike but behave differently, so they stay separate in the nav.

## Decision buckets

Mirrors the feature-inventory buckets so views and features triage the same way:

- **V1 default** — the calm surface everyone sees.
- **V1 depth** — ships in v1 but hidden until summoned (progressive disclosure / preset).
- **On-deck** — valuable, but not needed to prove the layered model yet.

---

## View catalog

### Spine — the primary surfaces

| View | Bucket | Purpose / notes |
| --- | --- | --- |
| **Today** (the lens surface) | V1 default | Home. Defaults to Today's scheduled + due items; done collapses to a count. Carries the swipeable **date strip** and a visible **lens switcher** (title-with-chevron or light segmented control) to swap to **All / Upcoming**, or filter to **Untriaged**. Today / All / Upcoming / Untriaged are all *this one surface, filtered* — not separate tabs. |
| **Lists** (list of lists) | V1 default | The container browser — the user's own lists/projects. Distinct from the smart lenses above. |
| **Calendar** (separate destination) | V1 default (day/week) · depth (month) | The time face of the same items. Secondary to the list, but important for seeing load and scheduling. |

### Capture & landing

| View | Bucket | Purpose / notes |
| --- | --- | --- |
| **Quick-add** (overlay) | V1 default | Fast natural-language capture from anywhere. Dated captures go to their date; undated captures land in the **default list** — capture should feel *filed, not queued*. |
| **Default list** ("Tasks") | V1 default | Where undated captures land. Visible, predictable, final-feeling. This is *also* the exact bucket GTD mode re-points to as the Inbox — build one thing, reframe it. **Name is a placeholder** — final name / whether it's user-renameable is TBD (see open questions). |
| **"No date" lens (+ GTD mode)** | V1 default (lens) · V1 depth (GTD) | **"Inbox" is dropped entirely** (decided 2026-07-01) — the word tested as GTD-only jargon. Undated captures land visibly in the default **Tasks** list; **"No date / Unscheduled"** is just a *filter* to find them and assign dates (built as `nodate.html`, reached via the Today lens switcher and the Lists smart-row — never a tab). The GTD *ritual* (route captures to a triage pool to sort later) remains supported but **off by default**; even then the user never meets the word "Inbox." |

### The morphing detail

| View | Bucket | Purpose / notes |
| --- | --- | --- |
| **Item detail** | V1 default (shell) · V1 depth (fields) | One screen that reveals progressively: add time → event; add repeat → streak; add subtasks → checklist; add notes/attachments/assignee as needed. Where "rich *and* simple" is won or lost. |

### Organization — depth on demand

| View | Bucket | Purpose / notes |
| --- | --- | --- |
| **List / Project detail** | V1 default (flat list) · V1 depth (project structure, sections) | A single container opened up. |
| **Tags · Filters · Saved views** | V1 depth | The power-user surface: build a lens, save it. |

### Horizon & review

| View | Bucket | Purpose / notes |
| --- | --- | --- |
| **Upcoming / All / Someday** | V1 default | Time-forward lenses — swapped on the primary surface via the lens switcher, not separate destinations. |
| **Habits / Streaks** | V1 depth | A lens over recurring items — streak strip/grid, not a separate object. |
| **Weekly review / planning** | V1 depth | Optional ritual: pull undated items onto days for the week ahead. |

### Focus

| View | Bucket | Purpose / notes |
| --- | --- | --- |
| **Now / Focus** (single item, optional timer) | Exploring | The "one task at a time" surface. Mock and feel it before committing; signals how focus-first vs. list-first the product wants to be. |

### Multi-seat layer (thin — packaging, not a family dashboard)

| View | Bucket | Purpose / notes |
| --- | --- | --- |
| **Per-person space** | V1 default | The default *is* solo; each seat is its own space. |
| **Shared list / space + assignment** | V1 depth | Secondary collaboration surface; promote a private list to shared without recreating it (F-176). |
| **Account / admin / seats** | V1 default | The packaging layer that makes it one cheap plan (invite, seats, billing). |

### Alt-contexts

| View | Bucket | Purpose / notes |
| --- | --- | --- |
| **Kid mode** | On-deck | Simplified, big-tap surface (F-244). |
| **Ambient / e-ink display** | On-deck | Read-mostly household/status display. |
| **Watch / widget** | On-deck | Glanceable next-thing capture. |

---

## Navigation

**Fixed bottom nav — not customizable.** (Decided.) User-rearrangeable nav (TickTick-style) tested as confusing and taxes the calm default; the bar stays the same for everyone.

**No Inbox tab.** (Decided.) Time/state cuts — Today, All, Upcoming, Untriaged — are *lenses on one surface*, not destinations. This frees the slot, removes the cramped-label problem (a lens can be named in plain words), and keeps GTD dormant by default. Nav slots go only to structurally different surfaces.

**Candidate fixed bar:**

| Slot | Destination | Note |
| --- | --- | --- |
| 1 | **Today** | The lens surface; defaults to Today, swaps to All / Upcoming, filters to Untriaged. Carries the date strip. |
| 2 | **Calendar** | The time face; a real destination (separate calendar view). |
| 3 | **Lists** | The container browser — user-made lists/projects (distinct from the smart lenses in slot 1). |
| 4 | **Search** | Find across items/lists/people once data grows. **Kept as a slot** (decided 2026-07-01); built as `search.html`. |
| 5 | **More / Me** | Settings, account/seats (the packaging layer). |

- **Quick-add** stays a persistent FAB, not a tab.
- **Untriaged / Inbox** is a *lens + opt-in GTD mode*, never a tab; the everyday user never meets it.
- **Upcoming** folds into the slot-1 lens switcher, not its own tab.
- **Habit / Focus** are lenses/summoned surfaces, never default tabs (a habit is a repeating item, not an object).
- Google Tasks' swipe-between-lists is worth borrowing as a *secondary* motion (swipe between adjacent lenses/lists) on top of the fixed bar, not instead of it.
- The v7 prototype's tab bar (Today/Calendar/Lists/Family/More) was a *theme* mock; "Family" is dropped — this is solo-first, not a family OS.

**Risk to manage:** the lens switcher (Today → All) must be a *visible* affordance at the top of slot 1, not buried in a menu — otherwise an undated capture that lands off-Today feels *lost*.

## Build status — decisions landed 2026-07-01

All V1 views are now prototyped in `Proto/` and linked from `Proto/index.html`; the bottom nav, FAB, and row taps are wired so flows are walkable. Decisions locked this pass:

- **"Inbox" dropped.** Replaced by the **"No date" lens** over a visible default **Tasks** list (`nodate.html`). GTD triage stays an off-by-default opt-in. See the row above.
- **Lens switcher = tappable title + chevron** (`today.html`). Both variants were built to compare; the segmented-control variant was **dumped 2026-07-01** (`today-segmented.html` deleted). The **All** lens has its own state (`all.html`).
- **Search is its own surface** (`search.html`, nav slot 4) — resolved in favor of keeping the slot.
- **Sample data is solo-first with a light mixed group** (roommate Jordan, teammates Priya/Sam, one light family touch) — *not* a family OS. Applied across all views.
- **Shared list + assignment** built as `shared-list.html` (V1 depth).
- **"More" is a hub, not a jump to Account** (`more.html`). It's the in-app path to the summoned surfaces — **Habits, Weekly review, Filters/Tags/Saved views** — plus Account and Settings. Those three views now show **More** as their active tab (reached via the hub), resolving "how do I get to Habits from inside the app." Lens surfaces (All/Upcoming/No date) are still reached via the Today lens switcher.
- **Scheduling supports relative horizons, not just date+time.** A shared **schedule sheet** (in item-detail, the No-date pill, and quick-add NL parse) offers Today / Tomorrow / This weekend / Next week / In 7 days, the fuzzy horizons **This week / This month / Someday** (no concrete day), a specific date+time, and No date. A task can carry a horizon like "This week" instead of a hard date — which is what the All lens's This-week/Later buckets sort on.

## Open questions

- Does the **date strip** live only on Today, or on any list that has dated items?
- **Now/Focus:** in v1 at all, and if so is it a mode over Today or its own surface?
- How much **project structure** (sections, nesting) is V1 depth vs. On-deck?
- Can the user **rename/replace** the default **Tasks** list? (Name is settled as "Tasks"; renameability TBD.)
