Skip to content

One colour per person, a clearer reply bar, and replies in groups - #167

Merged
fireplacechat-com merged 2 commits into
mainfrom
claude/reply-panel-and-polish
Nov 14, 2026
Merged

fireplacechat-com merged 2 commits into
mainfrom
claude/reply-panel-and-polish

Conversation

@xss3cut10n3r

Copy link
Copy Markdown
Member

Why

Until now each person picked two colours on their own phone: one for their messages and one for everyone else's, and nobody else saw either. Group chats introduced a simpler idea, one colour per person that everyone sees. The owner decided to use that rule everywhere, and asked for a clearer reply bar and a few shape changes.

What changed

Light Dark
One colour per person. Settings has one choice. The preview shows your messages as you see them, and as other people see them (the soft version of the same colour).
Replying, 1:1. The bar above the message box has a coloured tab from the screen's edge, the name in the same colour, one line of the message and a cancel button. The colour is that of the person you are replying to (here their colour has not arrived yet, so the default); replying to yourself uses yours.
Replying, in a group. Groups gain replies, with the same bar in that member's colour.
New group. The tick boxes are circles.
Invite friends. The tickets have the slight rounding of the theme boxes in Settings.

The message box is also a little more pill-shaped (visible in the reply previews). All previews are in docs/reviews/one-colour-and-reply/.

How one colour works

  • You choose one colour. Your messages use it. Other people's messages use the soft version of their colour, in 1:1 chats as in groups.
  • This changes what a 1:1 message contains, so there is a decision note: 0052. A text message may now carry "color": "plum", the name of the sender's colour, inside the encrypted payload.
    • It adds no message, no Firestore read or write and no function call. The server never sees it.
    • Older versions of the app ignore the field.
    • A name that is not plain lower-case letters is dropped and the message is shown as usual.
  • The receiving phone remembers the latest colour for each person, on the device only, and forgets it when the account is erased from the phone.
  • Someone who has not sent you a message since choosing a colour shows in the default colour until they do.
  • Privacy: your colour used to be known to nobody. Now everyone you send a text to learns it (one of five names, end-to-end encrypted). No account or profile field holds it.
  • The second colour choice is removed. A saved second colour is ignored.

How it was checked

  • scripts/check.sh passes: 1,498 tests and 19 timing tests.
  • CLA.
  • New behaviour has tests that fail without it:
    • test/model/chat/own_color_test.dart: two accounts and a linked device over the real encryption; the colour reaches the other person, not the sender's own second device; nothing the server stores contains it; malformed colours are dropped.
    • test/view/chat/reply_panel_test.dart, peer_color_test.dart: the reply bar and other people's bubbles use the right colour.
    • test/view/settings/color_preview_test.dart and the updated settings tests: one choice, the wording, "They see" and "You see".
    • Group tests: replying in a group sends the quote and names the person quoted; round tick boxes.
  • UI change: previews above.
  • Not tested on a real device. These are widget renders, not screenshots.

AI assistance

Claude Code wrote this change, directed by the owner, who chose the behaviour and the wording in Settings.

Privacy and safety

  • No new data leaves the device or is stored on the server — left unticked on purpose: your colour's name now travels to the people you message, inside the encrypted message. Nothing new is stored on the server.
  • No secrets, keys or real user data in the diff.

🤖 Generated with Claude Code

… shape changes.

The bar above the composer while replying is a coloured tab from the screen's
edge, the name in the same colour, one line of the message and a cancel
button. Groups gain replies. Invite tickets are only slightly rounded, like the
theme boxes; the tick boxes for a new group are circles; the message box is a
pill.
You choose one colour. Your messages use it, and other people's phones show
your messages in its soft version; theirs show in the colour they chose. In a
1:1 chat the colour travels inside each text message, encrypted, at no extra
cost. Settings has one choice, with a preview of what you see and what they
see. The second colour choice is gone.

Also previews of the reply bar, the invite tickets and the new-group tick
boxes.
@xss3cut10n3r
xss3cut10n3r requested a review from a team as a code owner November 14, 2026 11:27
@xss3cut10n3r xss3cut10n3r added enhancement New feature or request ui Screens, layout and wording labels Nov 14, 2026

@fireplacechat-com fireplacechat-com left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Very nice.

@fireplacechat-com
fireplacechat-com enabled auto-merge (squash) November 14, 2026 11:31
@fireplacechat-com
fireplacechat-com merged commit 448865e into main Nov 14, 2026
9 checks passed
@fireplacechat-com
fireplacechat-com deleted the claude/reply-panel-and-polish branch November 14, 2026 11:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request ui Screens, layout and wording

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants