Skip to content

fix(mobile): render assigned project icons in chat list - #7

Closed
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1789945788-mobile-project-icon
Closed

devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1789945788-mobile-project-icon

Conversation

@devin-ai-integration

Copy link
Copy Markdown

Fixes pingdotgg#12801

What Changed

Mobile ProjectFavicon now takes the project's projectIcon override and renders it before falling back to the favicon image or folder glyph:

  • emoji overrides render the emoji.
  • monogram overrides render the assigned text in a colored tile.
  • lucide overrides render a colored monogram derived from the project name (same derivation as web's automatic fallback), using the assigned color.

projectIcon is passed through every mobile call site: thread-list headers and rows (v1 and v2), archived threads, the settings project overview, and the new-task project picker. Projects without an override keep the existing favicon/folder behavior. A small lib/projectIcon.ts helper resolves the override to a glyph, with unit tests.

Why

Web and desktop persist projectIcon on the project record, but the mobile component only accepted faviconPath, so every assigned icon showed as the folder glyph on Android and iOS.

Lucide trade-off. Rendering the exact Lucide icon needs lucide-react-native, which is a new dependency that registers the full icon set (roughly 1 MB of JS before Hermes bytecode). AppSymbol.tsx explicitly avoids eagerly registering whole icon sets. This PR takes the no-dependency route: a Lucide override becomes a colored monogram so the project is still distinguishable and keeps its chosen color. It is not pixel-identical to web, and exact Lucide rendering can be a follow-up if the dependency is acceptable.

Reproduction

  1. Run the dev server and pair the Android dev client with it.
  2. Create three projects and assign icons from web: a Lucide icon (rocket, violet), an emoji (🍎), and a monogram (M7, orange).
  3. Open the mobile chat list.

Expected: the assigned icons appear next to each project name. Actual: every project shows the folder glyph.

UI Changes

Android emulator, chat list:

Before After
before after

New-task project picker (larger size) after the fix:

project picker

Verification

From apps/mobile:

  • vp test run src/lib/projectIcon.test.ts — 8 tests pass
  • npx tsc --noEmit — clean
  • vp lint on changed files — clean
  • Android debug build installed on emulator-5554, chat list, project picker, and settings overview checked manually (screenshots above). iOS not verified (no macOS host).

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes (n/a)

Written with Devin.

Link to Devin session: https://app.devin.ai/sessions/cdc0cb5425d24898becc0a7a5ecba969
Open in Devin Desktop: https://app.devin.ai/desktop/session/cdc0cb5425d24898becc0a7a5ecba969?variant=devin
Requested by: @SunkenInTime

@devin-ai-integration

Copy link
Copy Markdown
Author

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 20, 2026
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration
devin-ai-integration Bot force-pushed the devin/1789945788-mobile-project-icon branch from 28c07d2 to 17fe9ff Compare September 21, 2026 00:01
@devin-ai-integration

Copy link
Copy Markdown
Author

Superseded by upstream PR pingdotgg#12810

@devin-ai-integration

Copy link
Copy Markdown
Author

Image hosting for pingdotgg#12810.

before
after
picker
home-light
picker-dark

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Android mobile icons

1 participant