Skip to content

feat(mobile): customize computers with a preset icon and colour - #2461

Merged
DoodleBears merged 3 commits into
mainfrom
claude/project-thread-2n6vb4
Oct 21, 2026
Merged

DoodleBears merged 3 commits into
mainfrom
claude/project-thread-2n6vb4

Conversation

@DoodleBears

Copy link
Copy Markdown
Contributor

Requested by Vain · project thread

Why the change

Since Chats moved to the native header (#2344, #2425), the custom header colour of Customize computer no longer shows anywhere outside the sheet's own preview, and photo/pixel avatars do little to tell computers apart in the tab strip. This replaces both with a preset icon and a preset colour that show where computers are actually told apart: the tab above Chats and the drawer.

Issue / Discussion: Refs the project thread above.

Special things to note

  • Merge risk: phone-local only (deepseekbot-host-looks.json). Saved looks migrate once on first read: a solid banner colour, or a gradient's first stop, becomes the nearest preset colour; avatars and banner pictures are dropped and the host-looks/ picture folder is deleted. Reverting the PR after migration leaves computers on the default look (names are kept). No Host API, bridge or Bot tool changes, so no CLI command is needed.
  • Coordination: fix(mobile): keep names, times and previews readable after theme switches and at large text #2443 also touches environment-pager.tsx (width ratio and remeasure key). This PR moves the source icon to the leading side of the label and colours the indicator; the two diffs touch neighbouring lines, so whichever lands second needs a small rebase.
  • Verification: mobile tsc, oxlint, oxfmt --check, source policy, CLI parity, feature map and all mobile Vitest suites (992 passed) run in the cloud session. New tests cover parsing, legacy migration and picture cleanup, colour contrast (every preset ≥ 3:1 against base in both schemes) and the sheet's symbol / emoji / colour / reset / rename flows. Native iOS and Android light/dark screenshots are pending a device run and will be added below.
  • CI test plan: affected (mobile only); no new kind of file.

Change outline

  • Model (src/ui/design/host-look.ts): HostLook = { name?, icon, color? }. icon is one of 18 native symbols ({ ios: SF Symbol, android: Material Symbol }, desktop by default) or one of 18 emoji. color is one of ten system colours with light/dark values; hostColorInk moves it toward fg until it reaches 3:1 against base.
  • Chats tabs (environment-pager.tsx): every source icon leads its label. The computer tab shows its chosen icon, tinted with its colour while selected, and the indicator uses that colour when the computer tab is selected (theme accent otherwise).
  • Drawer: the computer tile shows the icon on a soft wash of its colour.
  • Sheet (host-look-editor.tsx): shared DrawerHeader (× close), a miniature tab-strip preview, name field, Symbols / Emoji segmented picker on a raised card, colour swatches (Theme colour + 10), and Reset as a danger row in its own group.
  • Removed: banner/band rendering (host-band.tsx, gradient-fill.tsx), photo picking and image rebasing for looks.
  • DESIGN.md and a bilingual change fragment updated.

Screenshots: iOS and Android, light and dark, to follow.


Generated by Claude Code

The custom header banner stopped showing once Chats moved to the native
header, so Customize computer now picks a native symbol or emoji and one
of ten system colours. The icon leads the computer's tab above Chats and
its drawer tile; the colour tints the icon and the tab underline. The
sheet uses the shared DrawerHeader and raised cards like other sheets.
Saved banner colours migrate to the nearest preset; old avatars and
pictures are dropped and their files deleted.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014UiRXqKRSQS39KzeJJnLcA
@coderabbitai

coderabbitai Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 13 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 2 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a4d6e116-995b-43bd-a27a-cf1ead16adc5
📥 Commits

Reviewing files that changed from the base of the PR and between a507372 and 8e9c01a.

📒 Files selected for processing: 17
  • apps/mobile/DESIGN.md
  • apps/mobile/app/(tabs)/(home)/index.tsx
  • apps/mobile/app/host-look.tsx
  • apps/mobile/src/host/conversation-environments.ts
  • apps/mobile/src/host/host-look.ts
  • apps/mobile/src/host/native-host-look.ts
  • apps/mobile/src/ui/design/host-look.ts
  • apps/mobile/src/ui/shell/environment-pager.tsx
  • apps/mobile/src/ui/shell/gradient-fill.tsx
  • apps/mobile/src/ui/shell/host-band.tsx
  • apps/mobile/src/ui/shell/host-drawer.tsx
  • apps/mobile/src/ui/shell/host-look-editor.tsx
  • apps/mobile/src/ui/shell/host-tile.tsx
  • apps/mobile/src/ui/strings.ts
  • apps/mobile/test/home-search.test.tsx
  • apps/mobile/test/host-look.test.tsx
  • changes/2461-mobile-computer-icons.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014UiRXqKRSQS39KzeJJnLcA
@DoodleBears DoodleBears self-assigned this Oct 21, 2026
…-2n6vb4

# Conflicts:
#	apps/mobile/DESIGN.md
@DoodleBears
DoodleBears marked this pull request as ready for review October 21, 2026 08:24
@DoodleBears
DoodleBears merged commit f667ed4 into main Oct 21, 2026
13 checks passed

Copy link
Copy Markdown
Contributor Author

iOS 27 Simulator, combined batch on main 2cbc434: pass. This ran on a Release build. The Customize sheet offers Symbols or Emoji and 11 colours, with a live preview of the tab. After choosing the flask in green, the icon in the drawer and the Chats tab glyph follow the choice, in light and dark. The tab's selected underline follows it too.

Light Dark
Customize sheet
Selected tab

Generated by Claude Code

DoodleBears added a commit that referenced this pull request Oct 21, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014UiRXqKRSQS39KzeJJnLcA
DoodleBears added a commit that referenced this pull request Oct 21, 2026
* feat(mobile): show the computer's own icon after chat names

Chat rows used a generic computer mark after the name. They now use the
computer's chosen icon and colour from Customize computer, so chats from
different places are easy to tell apart in All. Cloud chats keep the
cloud mark.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014UiRXqKRSQS39KzeJJnLcA

* docs(changes): link the chat-row icon change to its PR

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014UiRXqKRSQS39KzeJJnLcA

* docs(pr): iOS screenshots for #2461 and #2499

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014UiRXqKRSQS39KzeJJnLcA

---------

Co-authored-by: Claude <noreply@anthropic.com>
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.

2 participants