Skip to content

feat(fuselage): quieter message header metadata - #2138

Merged
juliajforesti merged 5 commits into
RocketChat:mainfrom
ivans-netto:feat/quieter-message-header-metadata
Aug 10, 2026
Merged

juliajforesti merged 5 commits into
RocketChat:mainfrom
ivans-netto:feat/quieter-message-header-metadata

Conversation

@ivans-netto

@ivans-netto ivans-netto commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Task

Part of the user information redesign in RocketChat/Rocket.Chat#41650 (Figma spec), where these styles are currently applied as .rcx-* overrides inside the app — this PR moves them into the design system so the app can drop the overrides and consume them from fuselage.

  • Author names (rcx-message-header__name, rcx-message-system__name and their shared name container) use the titles-labels font color token. When the name container acts as a button ([role='button']) it shows a pointer cursor and underlines on hover — in the app it is the hover/click trigger for the user card and full profile. Non-interactive name containers are unaffected.
  • Timestamps (rcx-message-header__time, rcx-message-system__time) are quieter through color alone: they stay on the c1 scale they already declared and use the secondary-info font color token. No explicit font sizes — the type ramp has no 10px regular step (micro is bold), so the size stays on the scale and the color does the work.
  • Contrast on hover: secondary-info meets WCAG AA on the room surface (4.80:1) but not on the hover surface (4.33:1), so the regular-message timestamp steps up to the default token while the message is hovered (11.26:1). System messages don't change surface on hover, so no rule is needed there.

Impact

This intentionally changes the header metadata of every Message/MessageSystem consumer — it is the design-system side of the approved redesign, and the app PR above stops overriding these styles once this ships.

Screenshots

Message header — before / after (timestamp in secondary-info; name uses titles-labels):

Before After
before after

Hover underline on a clickable author name (new WithClickableAuthorName story):

Testing

  • WithClickableAuthorName story added — hover the author name to see the pointer cursor and underline (only when role='button' is set).
  • 28 visual-regression goldens regenerated; 506 tests passing.
  • Jest specs and DOM snapshots unaffected (style-only change); lint/stylelint green.

🤖 Generated with Claude Code

@changeset-bot

changeset-bot Bot commented Jul 31, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 374e583

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@rocket.chat/fuselage Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@CLAassistant

CLAassistant commented Jul 31, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

ggazzo
ggazzo previously requested changes Aug 3, 2026
Comment thread packages/fuselage/src/components/Message/Messages.styles.scss Outdated
@ggazzo

ggazzo commented Aug 3, 2026

Copy link
Copy Markdown
Member

@juliajforesti 🆘 not 100% sure about my reviews

Comment thread .changeset/quieter-message-header-metadata.md Outdated
Comment thread packages/fuselage/src/components/Message/Messages.styles.scss
Comment thread packages/fuselage/src/components/Message/Messages.styles.scss Outdated

@juliajforesti juliajforesti left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

keep comments brief, and only when strictly necessary - it should not be a history of a debate

Comment thread packages/fuselage/src/components/Message/Messages.styles.scss Outdated
Comment thread packages/fuselage/src/components/Message/Messages.styles.scss Outdated
Comment thread packages/fuselage/src/components/Message/Messages.styles.scss Outdated
Comment thread packages/fuselage/src/components/Message/Messages.styles.scss Outdated
Timestamps rest on the secondary-info color and step back up to
font-default when the message is hovered, so the quieter treatment
never fails AA contrast against the hover surface. The size stays
on the c1 scale the ramp already provides.
Author names use the titles-labels color — declared on the container
too, because CSS paints text-decoration with the color of the box that
declares it, and system messages share the container with a different
name child. When the name is actionable ([role='button']) it shows a
pointer cursor and underlines on hover.
Stories for the hovered clickable author name on regular and system
messages, plus the DOM snapshot the story composition adds.
@ivans-netto
ivans-netto force-pushed the feat/quieter-message-header-metadata branch from 588833b to 6fa57fc Compare August 6, 2026 15:43
@ivans-netto
ivans-netto marked this pull request as ready for review August 6, 2026 17:25
@ivans-netto
ivans-netto dismissed ggazzo’s stale review August 10, 2026 15:06

julia is reviewing

@mergify

mergify Bot commented Aug 10, 2026

Copy link
Copy Markdown

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@ivans-netto

Copy link
Copy Markdown
Contributor Author

@Mergifyio queue

@mergify

mergify Bot commented Aug 10, 2026

Copy link
Copy Markdown

queue

⚠️ Configuration not compatible with a branch protection setting

Details

The branch protection setting Require branches to be up to date before merging is not compatible with draft PR checks. To keep this branch protection enabled, update your Mergify configuration to enable in-place checks: set merge_queue.max_parallel_checks: 1, set every queue rule batch_size: 1, and avoid two-step CI (make merge_conditions identical to queue_conditions). Otherwise, disable this branch protection.

@mergify

mergify Bot commented Aug 10, 2026

Copy link
Copy Markdown

queue

⚠️ Configuration not compatible with a branch protection setting

Details

The branch protection setting Require branches to be up to date before merging is not compatible with draft PR checks. To keep this branch protection enabled, update your Mergify configuration to enable in-place checks: set merge_queue.max_parallel_checks: 1, set every queue rule batch_size: 1, and avoid two-step CI (make merge_conditions identical to queue_conditions). Otherwise, disable this branch protection.

@ivans-netto

Copy link
Copy Markdown
Contributor Author

@Mergifyio queue

@mergify

mergify Bot commented Aug 10, 2026

Copy link
Copy Markdown

queue

⚠️ Configuration not compatible with a branch protection setting

Details

The branch protection setting Require branches to be up to date before merging is not compatible with draft PR checks. To keep this branch protection enabled, update your Mergify configuration to enable in-place checks: set merge_queue.max_parallel_checks: 1, set every queue rule batch_size: 1, and avoid two-step CI (make merge_conditions identical to queue_conditions). Otherwise, disable this branch protection.

@juliajforesti
juliajforesti merged commit 064b02a into RocketChat:main Aug 10, 2026
7 checks passed
@github-actions github-actions Bot mentioned this pull request Aug 10, 2026
ivans-netto added a commit to RocketChat/Rocket.Chat that referenced this pull request Aug 30, 2026
Brings in the quieter message header metadata styles
(RocketChat/fuselage#2138) so the local overrides can go.
ivans-netto added a commit to RocketChat/Rocket.Chat that referenced this pull request Aug 30, 2026
The author name emphasis (titles-labels + pointer/underline under
role=button) and the quieter timestamp with its hover contrast
step-up live in the design system since fuselage 0.86
(RocketChat/fuselage#2138), so the local css blocks, the Box
wrappers applying them and the inline cursor go away.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants