ProtonMail / ProtonMail/WebClients
Proton Mail - dark mode UI bug fix
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 5.6k
- Forks
- 715
- PR merge metrics
- No merged PRs in 30d
Description
Hi!
I'm Shreya, a CS student who's looking to contribute to open source projects. I'm a beginner, but I like to tinker around. I noticed the composer editor stays white in dark mode which felt like a hiccup in UX, so I decided to dig into it. My skillset also lies in design and i thought this was a UI bug that was making the UX a bit annoying.
I'll be honest - it took me a while to figure out what was going on. I started by searching for the editor styles, found the hardcoded 'background: white' in RoosterEditorIframe.raw.scss, and thought that was the fix. But changing it didn't work, which sent me down a rabbit hole.
I used Claude to help me what was going wrong and tried to fix it:
The composer loads in an iframe that's isolated from the parent page, so CSS variables from the theme don't just pass through automatically. After tracing through useInitRooster.ts and useSyncIframeStyles, I found that properties.ts only syncs two CSS variables into the iframe. Adding --background-norm to that list, along with changing the hardcoded white in the SCSS, seemed like the right fix.
I can't fully run the app locally to verify it end to end, so I'd really appreciate your review. If I've missed something or approached this wrong, I'm happy to learn and fix it!
Thank you,
Shreya
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with RoosterEditorIframe.raw.scss, useInitRooster.ts, useSyncIframeStyles, and properties.ts to trace how the composer iframe receives theme styles. Verify the composer background in both light and dark modes, and confirm the change does not alter other editor styling.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- scss, typescript
- Domain
- design, frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100