21. Theme and appearance
Three themes — system / light / dark. Toggle in Settings → General or at the foot of the current-workspace panel; the quick menu at the top-right of the header gathers four sliders in one place — theme, Layout (sidebar / top tabs, see §4.8), "Density" (message density, see §5.5.0) and "Language" (the three segments read 简 / 繁 / EN — Simplified Chinese, Traditional Chinese, English; hover for the full name) — so the high-frequency appearance switches don't require opening Settings. A language switch takes effect immediately and is saved; it shares its source with Settings → General → Language, which lists the same three under their own names.
- Light: pure greys for clarity.
- Dark: high-contrast.
- Transition: direction-aware circular ripple from the click position.
- Adaptive resources: icons and chrome adapt to the theme.
To force a single theme (team rule), lock it in Settings → General.
No more first-frame theme flash: the theme-bootstrap script used to be blocked by the Content Security Policy (CSP), so the app would flash the default theme for one frame before switching to yours. The bootstrap is now an external file with CSP allow-listed, so the first frame renders in your chosen theme — no flicker.
Linux theme switch no longer freezes to a white screen: on some Linux environments (e.g. Fedora 44's WebKitGTK), switching light/dark themes could freeze to a white screen; this release disables the theme-switch transition animation on those environments, restoring normal switching.
