Skip to content

Add opt-in message bubbles plugin and shared message grouping - #405

Closed
mahanti wants to merge 4 commits into
mainfrom
am-buzz-message-bubbles
Closed

mahanti wants to merge 4 commits into
mainfrom
am-buzz-message-bubbles

Conversation

@mahanti

@mahanti mahanti commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds an optional Message bubbles plugin so people can try left-aligned message bubbles by enabling or disabling a plugin. The host provides a scoped conversation.registerAppearance capability and owns the rendering; the example plugin selects the bubbles preset. A host release containing this capability is required before installing the plugin.

Own messages use dark bubbles in light mode and light bubbles in dark mode. The preset includes compact spacing, bottom-aligned avatars, smaller corners for long messages, inset metadata, and flat standalone media. Shared UI polish includes attachment-style timecode chips, composer-style file cards, reaction pills, and inline Retry actions; those shared changes remain when the plugin is disabled.

Timeline and thread grouping share a five-minute, same-author/same-channel/same-day rule. Reactions do not interrupt groups, and thread nesting boundaries remain intact. This includes the grouping/styling work requested from #364, which is still open; please coordinate that overlap before merging. Current main (9c0b26c6) is integrated, preserving its grouped images, video controls, and message management.

The maintained message gallery adds mixed-sender examples, light/dark and appearance toggles, and grouped thread replies.

Validation

  • Required pre-commit formatting/lint and custom secret scan passed.
  • Required pre-push checks passed at aababdf7: TypeScript, 440 tests across 39 related files, design types, and design-system guards.
  • Independent agent review completed. Fixed own-message heading/table-header and image-count contrast findings.
  • Exercised the browser gallery: light/dark Markdown, narrow thread grouping across reactions and a five-minute boundary, and disabling the appearance while replies remain open. Screenshots saved locally for manual attachment.
  • All four PR commits carry Signed-off-by; full diff whitespace check passed.
  • No browser test cases added or removed. New regression coverage lives in Vitest for appearance lifecycle, message rendering, grouping, and token contrast. Existing integration tests remain intact.

Remaining before ready for review

  • Native plugin folder installation, enable/disable, persistence across restart, and upgrade/rollback on the final host build.
  • Full narrow-thread action-toolbar geometry with long names and expanded action sets.
  • Human testing of the final merged snapshot, plus hosted CI and DCO checks.

Kept as a draft; the review-completed attestation has not been added.

Signed-off-by: Arjun Mahanti <arjun@squareup.com>
Signed-off-by: Arjun Mahanti <arjun@squareup.com>
Signed-off-by: Arjun Mahanti <arjun@squareup.com>
Signed-off-by: Arjun Mahanti <arjun@squareup.com>
@mahanti mahanti closed this Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant