docs: refresh Current state after P4/P5 commit (handoff)
This commit is contained in:
@@ -107,11 +107,10 @@ Subsystem rules live in `docs/guides/` and lazy-load in Claude Code via `.claude
|
||||
|
||||
## Current state
|
||||
|
||||
_**Box live at v0.1.0:94**; `main` ahead by mobile Phases 0–2 + P3a + P4 + P5 + drag-reorder views — **P4+P5 uncommitted in the working tree, rest committed, all deploy-pending** (no s9pk built yet). **The fundraising grid + email capture is the canonical system of record.** Active thread: **mobile-first redesign** — **all 4 mobile surfaces done (P0–P5)**, **P6 light theme next** (then P3b name/pill edit + deploy). Per-phase detail + backlog: `ROADMAP.md` / `EVALUATION.md`; history: git log + `start9/0.4/startos/versions/`._
|
||||
_**Box live at v0.1.0:94**; `main` (pushed through `ee9db64`) ahead by mobile Phases 0–5 + drag-reorder views — **all deploy-pending** (no s9pk built yet). **The fundraising grid + email capture is the canonical system of record.** Active thread: **mobile-first redesign** — **all 4 mobile surfaces done (P0–P5)**, **P6 light theme next** (then P3b name/pill edit + deploy). Per-phase detail + backlog: `ROADMAP.md` / `EVALUATION.md`; history: git log + `start9/0.4/startos/versions/`._
|
||||
|
||||
- **Mobile redesign — all 4 core surfaces built (Grid + Contacts + Pipeline + Reminders).** Foundation shipped: bottom-tab bar + `:root` mobile vars (P1 `634fc42`); 4-stage enum + read-only derived grid signals `existing_investor`/`last_activity_at`/`staleness`/`opportunity_id` injected on GET, **stripped on write at both points** (P0 `e46dd36`, P3a `e34a6fc`). React primitives `<BottomSheet>`/`useIsMobile()`/`StageChip`; each surface is a rules-of-hooks-safe `useIsMobile()` wrapper → `Mobile*`/`Desktop*` pair (**desktop untouched**), re-authored against the real API (comps aren't drop-in). **Mobile writes use one-row endpoints only — never whole-grid PUT** (BRIEF §3a).
|
||||
- **Built this session (both uncommitted; no backend change):** **P4 Pipeline** (`MobilePipeline` = swipe-between-stages via CSS scroll-snap + count-forward segmented control + dots, per-card ‹/› stage move + tap→detail w/ stage-picker sheet; opp-centric, shares `PATCH /api/opportunities/{id}/stage`; **view+advance-stage only**, removal stays on the Grid/desktop board) + **P5 Reminders** (`MobileReminders` = urgency-grouped list over `/api/reminders` w/ Active/Done/All filter; `ReminderRow` pointer-drag **swipe-left=done / swipe-right=snooze +7d**; tap → create/edit `BottomSheet`; `formatDueShort` fixes the future-date formatter). Each verified by render-smoke + a throwaway jsdom 375px harness (12/12 each); `reviewer` passes applied (P4: reset stage-sheet open-state on back, `moveStage` awaits; **P5: `pointercancel` no longer fires a spurious mark-done**, cancelled gets its own bucket).
|
||||
- **Prior sessions:** **P2 Contacts** (`984b950`; read-only A–Z list→detail→sort-sheet) + **P3a Grid** (`e34a6fc`; card list→detail→edit sheets: log-note / stage / reminder / `+`create with dedup; name+pill edit = **P3b, deferred**, needs a narrow per-row PATCH + pill editor). Both verified by render-smoke + throwaway jsdom 375px interaction harnesses; a `reviewer` pass was applied (stage already-linked→PATCH enforce; earliest-opp determinism; search parity).
|
||||
- **Mobile redesign — all 4 core surfaces built + committed (Grid · Contacts · Pipeline · Reminders).** Each is a rules-of-hooks-safe `useIsMobile()` wrapper → `Mobile*`/`Desktop*` pair (**desktop untouched**), re-authored against the real API on shared primitives `<BottomSheet>`/`useIsMobile()`/`StageChip`/`MobileDetailRow`. Foundation: bottom-tab bar + `:root` mobile vars (P1); 4-stage enum + read-only derived grid signals (`existing_investor`/`last_activity_at`/`staleness`/`opportunity_id`) injected on GET, **stripped on write at both points** (P0/P3a `_computed_row_values` + `stripComputedRows`). **Mobile writes use one-row endpoints only — never whole-grid PUT** (BRIEF §3a). Per-phase detail in `ROADMAP.md`.
|
||||
- **This session (`ee9db64`, no backend change):** **P4 Pipeline** (`MobilePipeline` = CSS scroll-snap swipe-between-stages + segmented control + dots, per-card ‹/› move + tap→detail w/ stage sheet; shares `PATCH /api/opportunities/{id}/stage`; view+advance-only) + **P5 Reminders** (`MobileReminders` = urgency-grouped list over `/api/reminders` + Active/Done/All filter; `ReminderRow` pointer-drag **swipe-left=done / swipe-right=snooze +7d**; tap→create/edit sheet). Verified: render-smoke + jsdom-375px harness (12/12 each); reviewer-passed (notably **P5 `pointercancel` no longer fires a spurious mark-done**). Reusable swipe-test technique noted in memory.
|
||||
- **Live (deployed):** W2 NL query (v94; remaining: in-room smoke + web "Ask" box); W1 reminders (v93); grid Pipeline (v88); Matrix intake + Gmail capture (DWD) + daily digest; Thesis/Architect (dual-approval); outreach — all draft-only.
|
||||
- **Tests:** **36/36 backend green** (`python3 backend/run_tests.py`), `py_compile` clean, render-smoke green, fresh-DB migrate clean.
|
||||
- **Next:** 1) **P6 light theme** (inline-hex→`var()` axis, 183 literals + ship `color.light` behind a `[data-theme]` toggle; dark stays default); 2) **P3b** name/pill edit (narrow per-row PATCH + pill editor); 3) **deploy** P0–P5 + view-reorder in one s9pk (**authorize first**) — verify on a real phone; 4) W2 web Ask box + smoke; 5) W3 bot grid-mutations; 6) W1b nurture-gap.
|
||||
|
||||
Reference in New Issue
Block a user