Six more screens get white surface background to match the form-screen visual:
- UsageConditionsView (Network & servers → Review conditions): root
ColumnWithScrollBar gets .background(surface).
- SingleOperatorUsageConditionsView (operator-conditions modal opened from
enabling an operator): same.
- HowItWorks (Settings → How to use it): root Column gets .background(surface).
- WhatsNewView (Settings → What's new): ModalView gets background = surface.
- SimpleXInfoLayout (Settings → About SimpleX Chat): conditional on
onboardingStage == null so the onboarding entry keeps its themedBackground
while the settings entry switches to surface.
- VersionInfoView (Settings → App version): root ColumnWithScrollBar gets
.background(surface).
Message info screen (right-click → Info on desktop) had off-white themedBackground
canvas with white SectionView cards inside. Switch to MaterialTheme.colors.surface
background and replace 7 SectionView wraps with plain Column (preserving the
contentPadding the SectionViews had) — content reads as a single sheet, no
ghost card edges on white-on-white.
Base file was converted in 8292a815f / de36f1f40 / 314384b69 but other
locales still rendered titles like SETTINGS, НАСТРОЙКИ, EINSTELLUNGEN,
PARAMÈTRES, USTAWIENIA, ÎMPOSTAZIONI in ALL CAPS. Bring every locale to
sentence case with a single sweep.
Implementation: Python script (/tmp/fix_uppercase_locales.py) walks every
non-base locale dir, finds the 29 key strings, and rewrites them when the
value is entirely uppercase (no lowercase letter). Placeholders like %1$s
are preserved as-is; SimpleX and SOCKS are kept as proper nouns after the
lowercase pass. Values already in sentence case, empty, or in scripts with
no case distinction are left alone.
540 string changes across 33 locales (ar, bg, ca, cs, da, de, el, es, fa,
fi, fr, hr, hu, in, it, iw, ja, ko, ku, lt, nb-rNO, nl, pl, pt, pt-rBR,
ro, ru, th, tr, uk, vi, zh-rCN, zh-rTW). Locales bn, hi, ml, sv, lv had
nothing to change.
WelcomeMessageView: drop SectionView wrap on SaveButton so all three
owner-mode action rows (Edit/Preview, Copy, Save) render uniformly as
loose rows on canvas, matching the post-revert direction of the
card-chrome cleanup.
GroupChatInfoView: restore per-item Divider() in the members lazy list
(lost during card-chrome experimentation). Owner row stays attached
to the "N members" card by design; divider appears between owner and
first lazy member, and between each subsequent member.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Your-chat-profiles screen is now on white surface bg; the SectionView
cards (founder's original from PR #6777) painted white-on-white and only
contributed padding. Unwrap the two SectionViews (hidden-profile reveal
button + main profiles list) so the rows render directly inside the
ColumnWithScrollBar without card chrome.