UX review: handoff notes for the next session
Records what shipped and is live, what was closed without code (items 1 and 5), what's untouched, and the suggested next step — item 3b, with a warning to read grammarLite.test.ts and the unmerged feat/mechanics-deterministic-pass and feat/calm-suggestions branches before writing a new rules engine. Also writes down how to instrument a production build, since item 1 looked airtight in source and was wrong: fiber-walk from .ProseMirror to the Tiptap editor, then read the prosemirror-history state directly. Claude-Session: https://claude.ai/code/session_016y6gyuHkQXPiEuW8RGQyua
This commit is contained in:
@@ -270,3 +270,49 @@ vice versa.
|
|||||||
place.
|
place.
|
||||||
- The doc-type dropdown's translucent look during open was **animation
|
- The doc-type dropdown's translucent look during open was **animation
|
||||||
mid-fade, not a bug** — leave it.
|
mid-fade, not a bug** — leave it.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Handoff — state as of 2026-07-27, second session
|
||||||
|
|
||||||
|
**Shipped and live.** `main` is at the merge
|
||||||
|
`Merge fix/companion-yields-to-cards`, pushed to gitea, and the VPS is
|
||||||
|
rebuilt on it (`git pull && docker compose up -d --build`, all five
|
||||||
|
containers healthy). Working tree clean.
|
||||||
|
|
||||||
|
Note that deploy carried **two** commits: the item 0 fade (written in the
|
||||||
|
first session, never deployed) and this session's panel follow-up. So the
|
||||||
|
kitten only started yielding to rail cards in production with this push —
|
||||||
|
if you're comparing against memory of the live site, that's why.
|
||||||
|
|
||||||
|
**Done:** item 0 and its follow-up. **Closed without code:** item 1 (not
|
||||||
|
reproducible) and item 5's original premise (re-scoped, much cheaper now).
|
||||||
|
**Untouched:** items 2, 3, 4, 6, 7, 8.
|
||||||
|
|
||||||
|
**Suggested next:** item 3b, the instant local rules layer — best
|
||||||
|
value-for-effort left, no server work, and it's the item that most matches
|
||||||
|
the "LLM is garnish" ethos. **Check `web/src/components/Companion/
|
||||||
|
grammarLite.test.ts` first** — a rules engine may already be half-built,
|
||||||
|
and there are sibling branches that look relevant and were never merged:
|
||||||
|
`feat/mechanics-deterministic-pass` ("deterministic mechanics suggestion
|
||||||
|
family, rule-based, no LLM") and `feat/calm-suggestions` ("suppress fickle
|
||||||
|
re-edits of sentences the user already settled", which reads like a
|
||||||
|
partial item 2). Read those before writing anything new.
|
||||||
|
|
||||||
|
**Verification technique, for whoever picks up items 2/3/7.** Claims about
|
||||||
|
editor behaviour in this doc should be checked against the running build,
|
||||||
|
not reasoned about from source — item 1 looked airtight on paper and was
|
||||||
|
wrong. Against a production bundle there's no exposed editor handle, so:
|
||||||
|
walk up from `.ProseMirror` to the nearest `__reactFiber$` key, breadth-
|
||||||
|
first through the fiber tree for an object with `.view`/`.state`/
|
||||||
|
`.commands`/`.schema` — that's the Tiptap editor. From there
|
||||||
|
`editor.can().redo()`, the prosemirror-history plugin state
|
||||||
|
(`done.eventCount` / `undone.eventCount`), and a wrapper around
|
||||||
|
`view.dispatch` logging `tr.docChanged` are enough to settle most
|
||||||
|
"does the editor really do X" questions in a couple of minutes.
|
||||||
|
|
||||||
|
**Housekeeping:** `fix/companion-yields-to-cards` is merged and can be
|
||||||
|
deleted. Testing item 1 meant accepting suggestions on her live document;
|
||||||
|
the one residual edit was reverted ("on foot" → "by foots") and the doc
|
||||||
|
text is as it was found, but the History panel now shows several extra
|
||||||
|
auto-snapshots from that session.
|
||||||
|
|||||||
Reference in New Issue
Block a user