---
path: /nisaba/daily
surface: customer
domain: nisaba
auth: signed-in
source: apps/oshun/web/src/app/nisaba/daily/page.tsx
status: walked
last_walked:
  '2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data
  (2xx), console/page-errors, expected content, screenshot verified; live
  screen-reader, touch, offline, and telemetry-delivery checks pending a manual
  AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; content
  re-verified 2026-06-03 against current source'
---

# Nisaba · daily passage

## Purpose

The small morning page: a single passage, a word study from the lexicon, a Tara
companion paired by the assistant, and one reflection prompt. Hosted in a
desktop frame around a phone shell so the specimen reads "375 × 812" on the
desktop web preview.

## Entry points

- **Nisaba sub-nav** — verify whether the desk's sub-nav exposes "daily"
- **Push / email** — morning passage push deep-links here
- **Direct URL / bookmark** — yes

## Layout regions

`page.tsx` is a server component that:

1. Awaits `getNisabaDaily()`
2. Wraps the page in `LWebShell top={<LCustomerNav active="library" />}`
3. Renders a `LMasthead` with specimen labels:
   - left: "Specimen · Nisaba mobile"
   - right: "375 × 812"
   - kicker: "The small morning page"
   - title: "The daily passage."
4. Renders a `<LEyebrow>How this reads</LEyebrow>` explainer paragraph
5. Centers a
   `<PhoneFrame label="Nisaba · daily" caption="Aurelius IV.viii on the morning page.">`
   containing `<NisabaDaily data={data} />`

Inside `NisabaDaily` (`nisaba.tsx`, line 2301), an `LPhoneShell` composition:

- **Status bar** — `LStatusBar`
- **Top eyebrow row** — "Nisaba · daily passage" / "day <N>"
- **Citation block** — `LCode` for citation, italic `dateLine`
- **Passage card** — vertical accent rule + serif passage with
  `lead / emphasized / rest`, followed by an italic passage reference
- **The word card** — lexicon excerpt with "↗ lexicon" affordance
- **Companion / reflection prompt cards** — verify in `nisaba.tsx` (Tara
  companion + reflection prompt are part of the daily flow)

## States

- [ ] **Loaded** — `getNisabaDaily()` resolves before render
- [ ] **Day number** — `data.dayNumber` reflects the running day count
- [ ] **Citation / passage** — render from `data.passage.lead`,
      `data.passage.emphasized`, `data.passage.rest`
- [ ] **Word study present** — "The word" card with link to the lexicon
- [ ] **Tara companion present** — verify the assistant-paired Tara card
- [ ] **Reflection prompt present** — verify the single reflection prompt
- [ ] **Standalone PWA** — this is the marketing-style specimen frame, not a
      true mobile-only route; relies on the parent shell

## Interactions

### Specimen frame

- [ ] **Masthead labels and `PhoneFrame` caption** — non-interactive copy

### Inside the phone shell

- [ ] **Citation `LCode`** — non-interactive eyebrow
- [ ] **Passage card** — verify if "Save the line" / "Carry it to the notebook"
      actions are wired (the explainer copy promises this)
- [ ] **The word card · "↗ lexicon"** — `LCode` styled as a link; opens
      `/nisaba/lexicon` (verify)
- [ ] **Tara companion card** — opens the assistant-paired Tara ritual (verify
      cross-domain route)
- [ ] **Reflection prompt** — opens reflection capture (verify route)

## Data & contracts

- **Reads**: `getNisabaDaily()` from `@/lib/lilith-data/nisaba-depth` — returns
  `NisabaDailyData` (verify shape: dayNumber, citation, dateLine, passage{lead,
  emphasized, rest}, passageRef, word study, companion, reflection prompt)
- **Writes**: _None observed in this view._
- **Realtime**: _None._
- **Caching**: server fetch
- **Auth/role check**: shell middleware

## Cross-references

- Sibling Nisaba routes:
  - [`nisaba.md`](./nisaba.md), [`nisaba-compare.md`](./nisaba-compare.md),
    [`nisaba-graph.md`](./nisaba-graph.md),
    [`nisaba-lexicon.md`](./nisaba-lexicon.md),
    [`nisaba-manuscript.md`](./nisaba-manuscript.md),
    [`nisaba-notebook.md`](./nisaba-notebook.md),
    [`nisaba-plan.md`](./nisaba-plan.md),
    [`nisaba-scholar.md`](./nisaba-scholar.md)
- Cross-domain partners: Tara (assistant-paired companion); verify the route
- Component sources:
  - `apps/oshun/web/src/app/nisaba/daily/page.tsx`
  - `apps/oshun/web/src/components/lilith/nisaba.tsx` (`NisabaDaily` line 2301)
  - `apps/oshun/web/src/components/lilith/mobile.tsx` (`PhoneFrame`,
    `LPhoneShell`, `LStatusBar`)
- Feature spec: [`V1/features.md#nisaba`](../../../V1/features.md#nisaba)

## Open questions / known gaps

- [ ] Confirm whether `/nisaba/daily` is the live mobile route or only a desktop
      specimen (the page nests `NisabaDaily` inside a `PhoneFrame` with explicit
      `375 × 812` labels)
- [ ] Document the "Save the line / Carry it to the notebook" affordances
      promised in the explainer copy — verify they exist in `NisabaDaily`
- [ ] Confirm the Tara companion pairing source — assistant runtime or
      pre-computed pairing
- [ ] Verify the reflection prompt capture destination (notebook? Arete?)
