AGENTS.md@packages/client/src/lib/state · git:20260721.9991676 · 2026-07-21 · sha256 53ab5d23bed7ca0b

AGENTS.md@packages/client/src/lib/state git:20260721.9991676A

Immutable. This exact content is served forever at /api/v1/blob/53ab5d23bed7ca0b.

# DOX — packages/client/src/lib/state

Files in this directory. One row per source file. See change: fold-oversized-agents-directories.

| File | Purpose |
|------|---------|
| `DisplayPrefsContext.tsx` | React context exposing `{ global: DisplayPrefs|undefined, getSessionOverride(id):… → see `DisplayPrefsContext.tsx.AGENTS.md` |
| `PopoverBoundaryContext.tsx` | React context providing the nearest clipping-pane ref to descendant popovers. `PopoverBoundaryProvider` (value = `RefObject<HTMLElement\|null>`), `usePopoverBoundary()` → ref or `undefined` (viewport root). Consumers pass it to `usePopoverFlip({ boundaryRef })` so flip/clamp measures the pane edge, not the viewport. Provided at the split chat pane (`SplitWorkspace`); read by ChatViewMenu / ModelSelector / ThinkingLevelSelector / WorktreeActionsMenu / PackageRow. See change: fix-popover-container-clip. |
| `draft-storage.ts` | Per-session chat-input draft persistence in `localStorage` under `chat-draft:<sessionId>`. → see `draft-storage.ts.AGENTS.md` |
| `recovery-offer-bus.ts` | App-level channel for the cold-start recovery offer: server broadcasts/replays one `recovery_offer` (≥1 unclean-shutdown session, setting `ask`); `setRecoveryOffer(candidates)`, `RecoveryOffer`. Consumed by `<RecoveryOfferHost>`. |
| `spawn-error-toast-bus.ts` | Module-singleton bus for off-screen `spawn_error` toasts. → see `spawn-error-toast-bus.ts.AGENTS.md` |