phone layout: text wraps the traced portrait outline; status lines clear the composer #31

Merged
void merged 1 commit from void/text-flow-leftovers into dev 2026-11-09 10:59:45 +00:00
Member

Phone layout: bubble text wraps the traced portrait outline (alpha polygon in border-box pixels, retraced on load and resize), and the pose status lines are shrink="No" so they no longer overflow under the composer. Commit 636cad96.

Test coverage. The left-float poses (the thinking/amused/happy portraits, float: left) are only unit-tested (silhouette.test.ts covers the polygon maths). Nothing in the repo drives a browser against them.

Measured in headless Chrome (Starfire, Chrome from Program Files, puppeteer-core, this branch built with VITE_PREVIEW_DEMO=1, viewport 390 px wide, DPR 3, mobile emulation), demo rooms Ratatoskr and General:

  • Status lines clear the composer. Ratatoskr, three lines: last line bottom 701 px, composer editor top 701 px (touching, no overlap; the editor box has its own padding). General: bottom 657 against 701.
  • Long-post words clear the portrait. For every portrait in both rooms, every word's client rect was tested against the portrait's alpha (>0.35, sampled every 1.5 px). 0 words on art in all 12 portraits, including all three left-float ones (thinking, 71 words; amused, 16; happy, 11) and the 163-word and 92-word long posts.
  • Caveats: I did not run the same probe against dev as a negative control, so I have not shown that it would catch the old behaviour. It tests the rendered text against the art box, not pixel screenshots; screenshots exist on Starfire but are not attached.

Pre-existing failures (identical on dev, this branch, and #32):

  • tsc --noEmit: 786 errors on dev and on this branch, same count (490 mention matrix-js-sdk, e.g. MsgType is not exported from it). A fresh npm ci gives the same 786, so it is not a stale install.
  • vitest: one failure, soundscape.test.ts "ships off, muted, with the proposed cap", ReferenceError: window is not defined (a node environment test touching window). Other 243 tests pass.
  • Env note: the workspace parent package.json is 0 bytes, so vitest/vite config loading fails in place; run from a copy.
Phone layout: bubble text wraps the traced portrait outline (alpha polygon in border-box pixels, retraced on load and resize), and the pose status lines are `shrink="No"` so they no longer overflow under the composer. Commit 636cad96. **Test coverage.** The left-float poses (the `thinking`/`amused`/`happy` portraits, `float: left`) are only unit-tested (`silhouette.test.ts` covers the polygon maths). Nothing in the repo drives a browser against them. **Measured in headless Chrome** (Starfire, Chrome from Program Files, puppeteer-core, this branch built with `VITE_PREVIEW_DEMO=1`, viewport 390 px wide, DPR 3, mobile emulation), demo rooms Ratatoskr and General: - Status lines clear the composer. Ratatoskr, three lines: last line bottom 701 px, composer editor top 701 px (touching, no overlap; the editor box has its own padding). General: bottom 657 against 701. - Long-post words clear the portrait. For every portrait in both rooms, every word's client rect was tested against the portrait's alpha (>0.35, sampled every 1.5 px). 0 words on art in all 12 portraits, including all three left-float ones (`thinking`, 71 words; `amused`, 16; `happy`, 11) and the 163-word and 92-word long posts. - Caveats: I did not run the same probe against dev as a negative control, so I have not shown that it would catch the old behaviour. It tests the rendered text against the art box, not pixel screenshots; screenshots exist on Starfire but are not attached. **Pre-existing failures** (identical on dev, this branch, and #32): - `tsc --noEmit`: 786 errors on dev and on this branch, same count (490 mention `matrix-js-sdk`, e.g. `MsgType` is not exported from it). A fresh `npm ci` gives the same 786, so it is not a stale install. - `vitest`: one failure, `soundscape.test.ts` "ships off, muted, with the proposed cap", `ReferenceError: window is not defined` (a node environment test touching `window`). Other 243 tests pass. - Env note: the workspace parent `package.json` is 0 bytes, so `vitest`/`vite` config loading fails in place; run from a copy.
phone layout: text wraps the traced portrait outline; status lines no longer sit under the composer
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 2m59s
636cad9655
shape-outside: url() sizes the image at its natural size and anchors it at the margin box, which the
phone layout's -82px top margin moves down by the overhang, so the exclusion was the wrong size and
in the wrong place and long-post words ran under the art. PoseAvatar now traces the displayed art's
alpha (0.35, as before) into a polygon in border-box pixels, retraced on load and resize.

The pose status lines sat in a shrinkable flex box (12px high, three 18px lines) and overflowed into
the composer; the box is shrink="No".

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
void merged commit 7a5fa81be7 into dev 2026-11-09 10:59:45 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Ratatoskr!31
No description provided.