Skip to content

feat: Chat bubble colors & wallpapers (Signal-style)#455

Draft
2002Bishwajeet wants to merge 15 commits into
mainfrom
add-chat-color-wallpaper
Draft

feat: Chat bubble colors & wallpapers (Signal-style)#455
2002Bishwajeet wants to merge 15 commits into
mainfrom
add-chat-color-wallpaper

Conversation

@2002Bishwajeet

Copy link
Copy Markdown
Member

Summary

  • Add Signal-style chat bubble color customization with 22 built-in colors (12 solid + 10 gradient)
  • Add conversation wallpaper support with 21 presets (12 solid + 9 multi-stop gradient from Signal)
  • Auto mode: deterministic wallpaper-to-color mapping
  • Global defaults via UserPreferences + per-conversation overrides via localAppData.content
  • 36-color group member name palette with light/dark theme variants
  • WCAG AA compliant content color selection for bubble text
  • Dark theme wallpaper dimming toggle (20% overlay)
  • 3 new UI screens: main settings, color picker grid, wallpaper picker grid
  • Entry points from Appearance Settings (global) and Conversation Settings (per-conversation)
  • Photo wallpaper payload key reserved (chat_wlpr) — gallery picker integration is a follow-up

Test plan

  • All 10 test files (~90 tests) pass across homebase-chat, homebase-common, homebase-api
  • Architecture test (no hardcoded strings) passes
  • Serialization round-trip for all ChatColor and ChatWallpaper subtypes
  • Backward compatibility: old ConversationLocalAppDataJson without new fields deserializes correctly
  • Auto-color mapper verified for all 21 wallpaper→color mappings
  • WCAG AA 4.5:1 contrast ratio verified for all 22 built-in bubble colors
  • Group name color determinism and distribution verified
  • Repository global get/set/reset and effective resolution with fallback
  • ViewModel state transitions, reset flows, per-conversation mode
  • Visual testing on desktop app
  • Visual testing on Android

🤖 Generated with Claude Code

2002Bishwajeet and others added 10 commits May 7, 2026 18:30
…ts with tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… color, restore tangerine gradient, fix test counts to 12 solids + 10 gradients
…resets with tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…content color utility with tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…fields

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ngs and auto-color resolution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ttings screens

Adds ChatColorWallpaperViewModel with UiState pattern, 3 reusable UI
components (ColorCircleItem, WallpaperTileItem, ChatPreviewMockup), and
the main ChatColorWallpaperScreen, ChatColorPickerScreen, and
WallpaperPickerScreen. Includes ViewModel unit tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ame colors integration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…or architecture compliance

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown

JVM Test Results

987 tests  +101   985 ✅ +101   1m 10s ⏱️ +6s
108 suites + 10     2 💤 ±  0 
108 files   + 10     0 ❌ ±  0 

Results for commit 156ca65. ± Comparison against base commit 5d79011.

♻️ This comment has been updated with latest results.

2002Bishwajeet and others added 5 commits May 7, 2026 23:18
- Rewrite ChatPreviewMockup with extracted ReceivedPreviewBubble and
  SentPreviewBubble composables matching Signal's 10dp corners, 12dp/7dp
  padding, and 240dp max width
- Add PhoneFramePreview for main settings screen (mini phone mockup with
  top bar, placeholder bubbles, input bar — matching Signal's design)
- Fix gradient angles everywhere via new angledLinearGradient() utility —
  all 6 call sites now respect angleDegrees instead of default direction
- Wire ConversationContent to ChatAppearanceRepository via koinInject
  instead of hardcoded defaults; wrap reads in remember to prevent layout
  crash
- Match Signal's color picker grid: 68dp containers, 20dp vertical
  spacing, SpaceEvenly horizontal, divider between preview and grid
- Add white checkmark on selected ColorCircleItem; fix WallpaperTileItem
  overlapping Check/Close icons
- Fix PendingMessageBubble text color to use BubbleContentColor
- Add confirmation dialogs for Reset Chat Colors and Reset Wallpapers
- Use Signal's descriptive preview text in bubbles

Co-Authored-By: Claude Opus 4.6 (1M context) <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.

1 participant