Originally created by: kristofferR
Problem
A theme can look right in the chat it was built in and break another: a group chat, an encrypted chat, a chat with Messenger's own gradient or colour theme, an emoji-only message, a toast in dark mode. fMess shipped bare bubbles once because one chat kind was never looked at, and white-on-white toasts in dark mode in all its themes. Ten ported themes need a check that looks at all of them.
Design
Adapted from fMess's fmess-chat-check skill (https://github.com/toanbku/fmess/tree/0cc6ecf/.claude/skills/fmess-chat-check, MIT), driven through Chatpane's debug build and tauri-mcp instead of a separate probe.
- Matrix: one read chat of each kind found in the list (encrypted, not encrypted, group) × each Messenger chat theme found (default, gradient, colour or wallpaper) × each theme in
themes/ plus Default (CSS applied live, nothing saved) × light and dark.
- Per screenshot, on pixels:
- a bubble is visible (beside its text differs from just outside it);
- text contrast at least 2.5 (Messenger's own white on [#0099]FF is about 3);
- a quote's text at least 2 and its bar at least 1.25 against the bubble;
- an emoji-only message has no bubble;
- a Facebook toast's text at least 3 and its close cross at least 2.
- Scrolls back up to a few screens to find a quote and an emoji-only message; notes what it couldn't find.
- Output:
PASSED / FAILED with one line per problem, result.json, and a contact sheet per chat (themes across, light above dark).
- Privacy: screenshots show real chats. They stay in a local temp folder, are never committed or uploaded, and the report names chats only by kind.
- Restores the user's theme, mode and window afterwards, also after a failure.
- Prove each new check on a known-bad and a known-good build before trusting it.
- Run before merging a theme, and any inject change that can touch messages, bubbles, quotes or the chat background. Linux (Omarchy) and macOS.
Part of [#434].