Phone text flow: portrait floor, list markers, in-flow banner, pretend-server notice #35

Merged
void merged 14 commits from void/text-flow-footer into dev 2026-11-09 11:07:05 +00:00
Member

Includes unmerged 636cad96 (traced silhouette wrap, status lines shrink=No) from void/text-flow-leftovers.

Measured at 390x844 DPR 2 in Chrome on Starfire (puppeteer-core, headless) against the pretend-server preview, before and after (before: https://preview.gamecult.org/void/rat-textflow-before/).

  1. Status lines vs footer: already clean on 636cad96 (3 status lines 667-721, footer 721-765, composer 765). No overprint measured; the clipping Meta saw was the pre-636cad96 shrink.
  2. Words under portraits: outside list markers landed under the art ("1." under "Measure"). Markers are now inside and wrap with the silhouette. Prose lines were already clear of the art in the screenshots.
  3. Thin text column: portrait is min(38vw,160px), was min(50vw,210px) (148px vs 195px at 390). Not measured on a real long-post thin-strip case beyond the Ratatoskr fixtures.
  4. Preview banner is in flow above the app; it covered the room header title before (0-15px over header).
  5. Jump to Latest: it was already anchored to the timeline's lower edge (y 627-651, composer 765); offset reduced 16px to 8px. It still overlays the last visible message, as any float does. Not moved below the status lines.

Training line (Heimdall acceptance): footer wraps to 2 lines at 390px, 358px wide, nothing overlapping it. The same text comes from one function (trainingNoticeText) in the train-room composer line and at registration. On the pretend server both say: "Pretend server: nothing you type here is stored or used to train anything." The real sentence is unchanged. Real-chat wording needs Meta's legal read (Heimdall consent text, still open); I did not invent final wording.

Not measured: real Android Chrome (desktop Chrome emulation only: viewport/DPR/touch), landscape, widths other than 390, light theme, registration page at 390 (text shared, layout not screenshotted), contrast of the footer over the ridge scene beyond eyeballing.
Tests: trainingNotice (3 new, red before). Full suite 250/251; soundscape.test.ts fails on origin/dev too.

🤖 Generated with Claude Code

Includes unmerged 636cad96 (traced silhouette wrap, status lines shrink=No) from void/text-flow-leftovers. Measured at 390x844 DPR 2 in Chrome on Starfire (puppeteer-core, headless) against the pretend-server preview, before and after (before: https://preview.gamecult.org/void/rat-textflow-before/). 1. Status lines vs footer: already clean on 636cad96 (3 status lines 667-721, footer 721-765, composer 765). No overprint measured; the clipping Meta saw was the pre-636cad96 shrink. 2. Words under portraits: outside list markers landed under the art ("1." under "Measure"). Markers are now inside and wrap with the silhouette. Prose lines were already clear of the art in the screenshots. 3. Thin text column: portrait is min(38vw,160px), was min(50vw,210px) (148px vs 195px at 390). Not measured on a real long-post thin-strip case beyond the Ratatoskr fixtures. 4. Preview banner is in flow above the app; it covered the room header title before (0-15px over header). 5. Jump to Latest: it was already anchored to the timeline's lower edge (y 627-651, composer 765); offset reduced 16px to 8px. It still overlays the last visible message, as any float does. Not moved below the status lines. Training line (Heimdall acceptance): footer wraps to 2 lines at 390px, 358px wide, nothing overlapping it. The same text comes from one function (trainingNoticeText) in the train-room composer line and at registration. On the pretend server both say: "Pretend server: nothing you type here is stored or used to train anything." The real sentence is unchanged. **Real-chat wording needs Meta's legal read (Heimdall consent text, still open); I did not invent final wording.** Not measured: real Android Chrome (desktop Chrome emulation only: viewport/DPR/touch), landscape, widths other than 390, light theme, registration page at 390 (text shared, layout not screenshotted), contrast of the footer over the ridge scene beyond eyeballing. Tests: trainingNotice (3 new, red before). Full suite 250/251; soundscape.test.ts fails on origin/dev too. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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>
- portrait on phones is min(38vw,160px), was min(50vw,210px): at 390px the text column beside
  it was ~85px
- outside list markers ignored the portrait silhouette and landed under the art; inside markers
  wrap with the text
- Jump to Latest sits 8px (was 16px) above the timeline's lower edge
- preview banner is in flow above the app, not fixed over the room header and connection strip
- on the pretend server the training line and the registration checkbox say nothing is trained
  (trainingNoticeText); the real sentence and its wording are unchanged and still await Meta's
  legal read

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
preview-demo test: fake document carries what the in-flow banner uses
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
a1aece7d36
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
phone: pill clears the portrait, portrait bubbles keep a text floor, status block collapses
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 3m31s
58df7b833c
- the name pill is at most bubble width minus portrait minus 30px, so it cannot reach the face
- a bubble with a portrait is at least portrait + 170px wide, so text beside a right portrait
  no longer wraps into a ~100px column
- <=480px: the pose status block shows only the newest mood plus "+N more" on one line, tap to
  expand; the read-receipt line is hidden and its slot is an 8px margin under the composer

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The pill was capped at a percentage of the bubble column and clipped with an
ellipsis; a short bubble's column is narrower than its own name, so names read
as "E..." and "V...". It is now max-content up to a viewport-based cap and wraps.
Demo fixtures gain a long display name to keep this honest.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Username carries its own nowrap + ellipsis, which still clipped long names
("Heimdall o...") inside the widened pill. On phones the name now wraps.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Pose pill: the Text inside the name button wraps too
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 3m41s
ea33ab6daa
The name button wraps a truncate Text span; overriding only the button left the
span nowrap, so the long name overflowed the pill.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The pose-label test resolves fixture senders to known Minds; "@watch" was not one,
so server.test.ts failed on the long-name fixture. Same long display name, now @heimdall.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Demo fixture: long-named Heimdall uses a pose Heimdall's art has
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 3m44s
8ca38c4980
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
At 320px the name shrank to a 37px column beside the time and broke mid-word.
The pill now wraps its children and breaks only where a single word is too long.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Pose pill: wrap the header row, not the pill
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 4m51s
14312459f2
The pill's child is the flex row holding name and time; flex-wrap on the pill itself
did nothing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Anchored by its bottom edge 13px inside the bubble instead of its top edge 15px above it,
so a wrapped name and time never cover the first line of text.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
With the background scene on, nav rows were fully clear and the ridges showed through
their text. Rows now carry the theme's own surface at 62% (80% on hover and selected).
An unjoined row (Commons) gets the same leading room icon as a joined one.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Room list: category labels get the same scene scrim as the rows
Some checks failed
Build pull request / Build pull request (pull_request) Has been cancelled
0438cbc8da
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Room list scrim: hover, selected and pressed rows are three distinct steps
Some checks failed
Build pull request / Build pull request (pull_request) Failing after 6m8s
cfb8a8641a
Soul: selected and hover shared one 80% value and the press state lost to hover on
specificity. Now hover 74%, selected 84%, pressed 92%.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
void merged commit dfc74c252a into dev 2026-11-09 11:07:05 +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!35
No description provided.