feat(ui): derive the activity-bar avatar initial through one owner (RIG-3737) - #1199
Merged
trunk-io[bot] merged 1 commit intoSep 13, 2026
Conversation
rigel-mintaka
added this pull request to stack #1200
September 13, 2026 00:36
rigel-mintaka
marked this pull request as ready for review
September 13, 2026 00:37
|
Compass engineering docs preview: https://compass-ux-3737-avatar-initi.compass-eng-docs.pages.dev Deployed from |
This was referenced Sep 13, 2026
mattwilkinsonn
approved these changes
Sep 13, 2026
…IG-3737) `fleetItemForAgent` and `unreachableFleetItem` each computed the fleet tab's letter with `(handle.at(0) ?? "?").toUpperCase()`. Both now call `avatarInitial`, which implements D1 of the glyph-primitives record. `.at(0)` reads a UTF-16 code unit, so an astral first character came back as half a surrogate pair. The helper takes the first grapheme instead, then NFKD-normalizes it and strips combining marks so an accented handle keeps its letter (`Émile` -> `E`) rather than degrading. The result is clamped to one printable ASCII character. That clamp is the condition on which the e2e Unifont pin can retire: the avatar arm is the only activity-bar text whose glyph is not drawn by us, so bounding it to ASCII removes the last reason to ship a fallback face for this surface. `?` remains only for scripts no Latin letter represents. Those handles do collapse to one tab letter, which the tab's `title` and `aria-label` already compensate for — both carry the full handle, and the icon span is `aria-hidden`. An uppercase that expands (`ß` -> `SS`) keeps its first letter for the same reason: the initial exists to tell agents apart. `icon` keeps its name here; splitting the field into the glyph and avatar arms is the next commit in this stack. Ref: RIG-3737, RIG-3603. Design: docs/designs/ui/compass-glyph-primitives/design.md (DL-367). Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigel-mintaka
force-pushed
the
compass-ux/3737-avatar-initial
branch
from
September 13, 2026 22:06
a37f467 to
b66fc7c
Compare
|
This pull request was merged into |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR is part of a stack containing 5 PRs:
mainfleetItemForAgentandunreachableFleetItemeach computed the fleet tab'sletter with
(handle.at(0) ?? "?").toUpperCase(). Both now callavatarInitial, which implements D1 of the glyph-primitives record..at(0)reads a UTF-16 code unit, so an astral first character came back ashalf a surrogate pair. The helper takes the first grapheme instead, then
NFKD-normalizes it and strips combining marks so an accented handle keeps its
letter (
Émile->E) rather than degrading.The result is clamped to one printable ASCII character. That clamp is the
condition on which the e2e Unifont pin can retire: the avatar arm is the only
activity-bar text whose glyph is not drawn by us, so bounding it to ASCII
removes the last reason to ship a fallback face for this surface.
?remains only for scripts no Latin letter represents. Those handles docollapse to one tab letter, which the tab's
titleandaria-labelalreadycompensate for — both carry the full handle, and the icon span is
aria-hidden. An uppercase that expands (ß->SS) keeps its first letterfor the same reason: the initial exists to tell agents apart.
iconkeeps its name here; splitting the field into the glyph and avatar armsis the next commit in this stack.
Ref: RIG-3737, RIG-3603. Design: docs/designs/ui/compass-glyph-primitives/design.md (DL-367).
Co-authored-by: Matt Wilkinson matt@rigel.build