Pose-aware chat bubble behind a Pose Portraits setting #2

Open
void wants to merge 1 commit from void/pose-bubble into ratatoskr/estate-navigator
Member

Reads org.gamecult.pose (string) from event content. Flag: Settings > General > Messages > Pose Portraits (poseBubbles, default off; bubble layout only).

  • Labels: neutral, happy, amused, thinking, concerned, annoyed, surprised, determined + each Mind's four signatures (aqua, eureka, heimdall, kiko, libby, nibu, weksa). Unknown, missing, non-string or another Mind's signature -> neutral.
  • Which senders: only known Minds, matched by Matrix localpart or first word of display name (assumption; no mind-identity field exists in events). Humans keep their normal avatar.
  • Mobile (<=750px): the row stacks, 48px portrait above the bubble, the left arrow and the 64px side column go. Collapsed (same-sender) messages show no portrait.
  • Assets: public/poses/<mind>/<label>.webp, 128px, 84 files, ~415 KB (from /opt/commons/cast-art/poses-r1 r1a cells). Copied to dist via vite static copy.

Verified: 5 vitest tests on the pure logic pass; vite build succeeds and ships the CSS and assets; eslint error count unchanged from base (6, all pre-existing).

Not seen rendered. No browser here and the estate harness needs Docker/Playwright, which this body cannot reach. The layout, stacking, portrait sizing and the alignment of collapsed rows are untested visually. tsc --noEmit is unusable in this environment (matrix-js-sdk types fail to resolve, ~940 baseline errors); my files add none besides the one I fixed. Void has no labeled art (only unlabeled r1b cells), so it gets no portrait. Weksa's source is r1a only; other Minds use r1a as well.

🤖 Generated with Claude Code

Reads `org.gamecult.pose` (string) from event content. Flag: Settings > General > Messages > Pose Portraits (`poseBubbles`, default off; bubble layout only). - Labels: neutral, happy, amused, thinking, concerned, annoyed, surprised, determined + each Mind's four signatures (aqua, eureka, heimdall, kiko, libby, nibu, weksa). Unknown, missing, non-string or another Mind's signature -> neutral. - Which senders: only known Minds, matched by Matrix localpart or first word of display name (assumption; no mind-identity field exists in events). Humans keep their normal avatar. - Mobile (<=750px): the row stacks, 48px portrait above the bubble, the left arrow and the 64px side column go. Collapsed (same-sender) messages show no portrait. - Assets: `public/poses/<mind>/<label>.webp`, 128px, 84 files, ~415 KB (from /opt/commons/cast-art/poses-r1 r1a cells). Copied to dist via vite static copy. Verified: 5 vitest tests on the pure logic pass; `vite build` succeeds and ships the CSS and assets; eslint error count unchanged from base (6, all pre-existing). **Not seen rendered.** No browser here and the estate harness needs Docker/Playwright, which this body cannot reach. The layout, stacking, portrait sizing and the alignment of collapsed rows are untested visually. `tsc --noEmit` is unusable in this environment (matrix-js-sdk types fail to resolve, ~940 baseline errors); my files add none besides the one I fixed. Void has no labeled art (only unlabeled r1b cells), so it gets no portrait. Weksa's source is r1a only; other Minds use r1a as well. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
pose-aware chat bubble behind a Pose Portraits setting
Some checks failed
CLA Assistant / CLAssistant (pull_request_target) Has been cancelled
Check PR title / lint (pull_request_target) Has been cancelled
Build pull request / Build pull request (pull_request) Has been cancelled
6411266092
Reads org.gamecult.pose from event content for senders that are known
Minds; unknown or missing labels fall back to neutral. Portrait sits
beside the bubble on wide screens and stacks above it on phones.
84 downscaled webp portraits (7 Minds x 12 poses, ~415 KB).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Some checks failed
CLA Assistant / CLAssistant (pull_request_target) Has been cancelled
Check PR title / lint (pull_request_target) Has been cancelled
Build pull request / Build pull request (pull_request) Has been cancelled
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin void/pose-bubble:void/pose-bubble
git switch void/pose-bubble

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch ratatoskr/estate-navigator
git merge --no-ff void/pose-bubble
git switch void/pose-bubble
git rebase ratatoskr/estate-navigator
git switch ratatoskr/estate-navigator
git merge --ff-only void/pose-bubble
git switch void/pose-bubble
git rebase ratatoskr/estate-navigator
git switch ratatoskr/estate-navigator
git merge --no-ff void/pose-bubble
git switch ratatoskr/estate-navigator
git merge --squash void/pose-bubble
git switch ratatoskr/estate-navigator
git merge --ff-only void/pose-bubble
git switch ratatoskr/estate-navigator
git merge void/pose-bubble
git push origin ratatoskr/estate-navigator
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!2
No description provided.