Context. surface customer · domain nisaba · route /nisaba/daily · auth signed-in · source apps/oshun/web/src/app/nisaba/daily/page.tsx
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
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:
- Awaits
getNisabaDaily() - Wraps the page in
LWebShell top={<LCustomerNav active="library" />} - Renders a
LMastheadwith specimen labels:- left: "Specimen · Nisaba mobile"
- right: "375 × 812"
- kicker: "The small morning page"
- title: "The daily passage."
- Renders a
<LEyebrow>How this reads</LEyebrow>explainer paragraph - 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
" - Citation block —
LCodefor citation, italicdateLine - 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.dayNumberreflects 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
PhoneFramecaption — 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" —
LCodestyled 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— returnsNisabaDailyData(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:
- Cross-domain partners: Tara (assistant-paired companion); verify the route
- Component sources:
apps/oshun/web/src/app/nisaba/daily/page.tsxapps/oshun/web/src/components/lilith/nisaba.tsx(NisabaDailyline 2301)apps/oshun/web/src/components/lilith/mobile.tsx(PhoneFrame,LPhoneShell,LStatusBar)
- Feature spec:
V1/features.md#nisaba
Open questions / known gaps#
- Confirm whether
/nisaba/dailyis the live mobile route or only a desktop specimen (the page nestsNisabaDailyinside aPhoneFramewith explicit375 × 812labels) - 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?)