Commit Graph
1445 Commits
Author SHA1 Message Date
Evgeny @ SimpleX Chat b9d5f7b2ef fix paddings 2026-05-20 15:44:45 +00:00
Evgeny Poberezkin 70909bf560 card item paddings 2026-05-20 16:23:11 +01:00
Evgeny @ SimpleX Chat 394b195185 more paddings 2026-05-20 15:09:20 +00:00
Evgeny Poberezkin 22410b4380 paddings 2026-05-20 16:07:20 +01:00
Evgeny @ SimpleX Chat 4839e395db reduce paddings inside cards 2026-05-20 14:59:17 +00:00
Evgeny @ SimpleX Chat de4fa27a1c appearance 2026-05-20 14:21:38 +00:00
Evgeny @ SimpleX Chat 4f0933204f fix members lists, add background 2026-05-20 10:39:17 +00:00
Evgeny @ SimpleX Chat 25186ee89c fix appearance etc 2026-05-20 09:19:44 +00:00
Evgeny @ SimpleX Chat fe96096dff move footers out of cards 2026-05-20 08:51:07 +00:00
Evgeny @ SimpleX Chat 72abdb728a remove footers outside of section cards 2026-05-20 07:01:56 +00:00
Evgeny @ SimpleX Chat 43d67660c7 fix section titles 2026-05-20 06:35:05 +00:00
Evgeny @ SimpleX Chat b3c762442a background for settings pages with cards 2026-05-20 06:25:41 +00:00
Evgeny @ SimpleX Chat 40460cd463 remove dividers 2026-05-19 22:31:17 +00:00
Evgeny @ SimpleX Chat 13de33c511 refactor and simplify 2026-05-19 19:03:52 +00:00
Evgeny @ SimpleX Chat 4a3f7b7b72 fix indentation 2026-05-19 08:23:58 +00:00
Evgeny @ SimpleX Chat 23029b3bdd fix greek 2026-05-19 07:46:01 +00:00
Evgeny @ SimpleX Chat ae777f4fbd more language fixes 2026-05-19 07:40:21 +00:00
Evgeny @ SimpleX Chat b6f37f06b3 fix contact list to be lazy 2026-05-19 07:25:10 +00:00
Evgeny @ SimpleX Chat 6a72def713 fix language strings 2026-05-19 07:08:39 +00:00
Evgeny @ SimpleX Chat efe7b50055 Merge branch 'master' into ep/new-design 2026-05-19 06:22:49 +00:00
another-simple-pixel 229518a9df Card-less screens batch 2: surface bg for conditions + how-to-use + about + version
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).
2026-05-18 13:17:46 -07:00
another-simple-pixel be013ae0e0 ChatItemInfoView: white surface background + drop SectionView card wraps
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.
2026-05-18 12:54:42 -07:00
another-simple-pixel 02147cc587 ShareListView: use MaterialTheme.colors.surface background (Forward picker) 2026-05-18 12:51:31 -07:00
another-simple-pixel 1488704cc8 UserProfilesView: use Divider() between rows (SectionDivider no-op outside SectionView) 2026-05-18 12:50:13 -07:00
another-simple-pixel 3c942ff408 Strings: sentence case for 29 section-title keys across all locales
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.
2026-05-18 12:09:35 -07:00
another-simple-pixelandClaude Opus 4.7 d0f09ad5b7 WelcomeMessageView/GroupChatInfoView: unify owner button row, restore member dividers
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>
2026-05-18 11:57:26 -07:00
another-simple-pixel bf281f55cd NewChatSheet: use standard 20dp gap between cards instead of tight 10dp 2026-05-18 09:55:50 -07:00
another-simple-pixel cb4370cc3b UserProfilesView: drop SectionView wraps to remove card chrome
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.
2026-05-18 09:54:51 -07:00
another-simple-pixel 81fa76707c Revert "TagListView: wrap Add/Save list button in SectionView card"
This reverts commit c25f36a900.
2026-05-18 09:49:00 -07:00
another-simple-pixel a11d17931a Revert "GroupWelcomeView: wrap message editor/preview and buttons in SectionView cards"
This reverts commit edb3495a8f.
2026-05-18 09:48:42 -07:00
another-simple-pixel 1a9e1f5193 Revert "GroupLinkView: wrap action items below QR in SectionView card"
This reverts commit f2ef38092a.
2026-05-18 09:48:22 -07:00
another-simple-pixel 9b5a032e59 Revert "AddGroupView/AddChannelView: wrap action buttons + toggles in SectionView card"
This reverts commit 4d9319d12a.
2026-05-18 09:48:03 -07:00
another-simple-pixel 6d3b28a8e6 Revert "WelcomeView: wrap Create profile action button in SectionView card"
This reverts commit c61ea01092.
2026-05-18 09:47:44 -07:00
another-simple-pixel 244fe28cc1 Revert "CreateProfile: add vertical gap between profile fields and Create profile action card"
This reverts commit 43855ae07d.
2026-05-18 09:47:25 -07:00
another-simple-pixel 36e57a6b7d Revert "GroupLink / WelcomeMessage: use SectionDividerSpaced between adjacent cards"
This reverts commit 29be15404f.
2026-05-18 09:47:03 -07:00
another-simple-pixel aeee611031 NewServerView: add missing MaterialTheme import after previous commit 2026-05-18 09:33:42 -07:00
another-simple-pixel ba2a2a2ebd Card-less screens: paint background with Material surface
Form-only and link/QR screens have no card sections — the off-white canvas
under them just adds an extra visual layer with nothing to lift. Switch
their background to MaterialTheme.colors.surface (white on LIGHT, palette
surface on DARK/BLACK/SIMPLEX) so the screen reads as a single sheet.

Two patterns by container:
- 11 ModalView callsites get background = MaterialTheme.colors.surface.
- 4 screens rendered inside someone else's ModalView (GroupLinkView,
  HiddenProfileView, TagListView, UserProfilesView) wrap their root
  ColumnWithScrollBar in Box(Modifier.fillMaxSize().background(...))
  so they own their background regardless of caller.
- 1 BottomSheet root (CreateProfile in WelcomeView) gets background on
  the fillMaxSize Box.

Touched screens: Create profile, Create first profile (mobile/desktop),
Create group, Create channel (3 wizard steps), Edit group profile,
Group link, Add welcome message / Welcome message, Edit own profile,
Hide profile, Tag list editor, Your chat profiles, Add server,
Add chat relay (new variant only — Edit relay stays settings-style).
2026-05-18 09:29:20 -07:00
another-simple-pixel 0bccc32728 Theme: darken LightColorPalette.secondaryVariant from #F1F2F6 (LightGray) to #E0E0E0
Old value (LightGray = #F1F2F6) was nearly invisible against the ~#F0F0F0
canvas — slightly bluish hue, ~1-2 units of contrast. The new #E0E0E0 sits
~16 units below canvas and ~31 below white card, visible on both. Affects
all LIGHT-theme avatar placeholders, UserPicker icons, DevicePill borders
and a handful of subtle UI surfaces using secondaryVariant.
2026-05-18 08:10:46 -07:00
another-simple-pixel cc26dcfe4c Revert "ChatInfoImage: LIGHT default avatar at midpoint of white card and gray canvas"
This reverts commit 05fbd6e0b1.
2026-05-18 07:51:15 -07:00
another-simple-pixel f1d80307f6 Revert "MemberProfileImage: use defaultProfileIconColor instead of secondaryVariant"
This reverts commit bea3f24664.
2026-05-18 07:50:57 -07:00
another-simple-pixel 1923b87240 Revert "ProfileImage colors: split into card vs canvas variants"
This reverts commit 379f84a4ae.
2026-05-18 07:50:39 -07:00
another-simple-pixel 13d6bca1b3 GroupChatInfoView: move owner row out of the members card into the lazy list
Per review #1: card holds only Invite + (optional) search; the user-as-owner
row joins the same lazy column as the rest of the members, picking up the
canvas-variant avatar color through MemberProfileImage's updated default.
2026-05-18 07:47:11 -07:00
another-simple-pixel 379f84a4ae ProfileImage colors: split into card vs canvas variants
Revert defaultProfileIconColor back to 0.91 mix (~#E8) — that's the right
amount of contrast against a white SectionView card. Add a sibling helper
defaultProfileIconColorOnCanvas() at 0.85 mix (~#D9), which sits 23 units
below the ~#F0 canvas — same absolute contrast as the card variant achieves
on white.

Switch MemberProfileImage default from defaultProfileIconColor to the canvas
variant. Member avatars almost always render on canvas (chat list rows,
chat-bubble author avatar, group members list outside the card, channel
members, channel relays). Callers that need the card variant pass an
explicit color.
2026-05-18 07:46:12 -07:00
another-simple-pixel bea3f24664 MemberProfileImage: use defaultProfileIconColor instead of secondaryVariant
MemberProfileImage hard-coded color = MaterialTheme.colors.secondaryVariant
as default, which is LightGray (#F1F2F6) on LIGHT — slightly bluish and
nearly invisible against the ~#F0F0F0 canvas. Reuse the defaultProfileIconColor()
helper so the LIGHT default matches the rest of the app (midpoint between
canvas and white card), and DARK themes keep their palette secondaryVariant.

defaultProfileIconColor() in ChatInfoImage.kt promoted from private to file-
level visibility so it can be referenced from GroupMemberInfoView.
2026-05-18 07:42:07 -07:00
another-simple-pixel 05fbd6e0b1 ChatInfoImage: LIGHT default avatar at midpoint of white card and gray canvas
Was at 0.91 mix (~#E8) — designed to sit 'below' the white card, but on the
~#F0 canvas it nearly blended (delta ~8). Switch to 0.97 mix (~#F7), which
is the geometric midpoint between #FF (white card) and ~#F0 (canvas) and so
sits at equal absolute contrast against either background.
2026-05-18 06:53:50 -07:00
another-simple-pixel afa57462a1 GroupChatInfoView: keep Invite + owner in card, render members as lazy items
fa29bb7a7 put filteredMembers.value.forEach inside the same SectionView as
the Invite button and the owner row to get a unified card visual. That
sacrificed lazy rendering — all members composed at once, hurting big-group
scroll perf. Founder asked to bring lazy back.

Compromise: keep Invite + (search row) + owner row inside the SectionView
card (the 'hero' rows). Move the rest of the members out to a sibling
items(filteredMembers.value, key = { it.groupMemberId }) call in the
parent LazyColumn — bare SectionItemViewLongClickable rows below the card,
lazy-composed by LazyColumn.
2026-05-18 04:24:04 -07:00
another-simple-pixel f7cdcac576 NewChatSheet: render filtered contacts in search mode (regression fix)
Commit 3a9ece8d1 moved contacts forEach inside the if-branch and made the
else-branch fall back to NoFilteredContactsItem. That broke search: when
the user typed text and the filter returned non-empty results, the
if-condition (filtered.isNotEmpty() && searchText.isEmpty()) was false,
the else ran NoFilteredContactsItem, NoFilteredContactsItem's internal
guard saw a non-empty filter and rendered nothing — search results disappeared.

Restore three-way branching with when{}: header + contacts in card when
no search; contacts in plain card when search has matches; NoFilteredContactsItem
when filter is empty. Applied at both OneHandLazyColumn and the regular layout.
2026-05-18 04:21:08 -07:00
another-simple-pixel 9f794f549c Sections: normalize redundant SectionDividerSpaced flag combinations
After founder simplified SectionDividerSpaced to one Spacer height (any flag
true -> DEFAULT_PADDING; both false -> DEFAULT_PADDING_HALF), many call sites
still pass combinations like (maxTopPadding = true) or
(maxTopPadding = true, maxBottomPadding = false) that all produce the same
20dp gap as the default. The flag names no longer match what they do —
reviewer flagged this as misleading.

Collapse all call sites to two canonical forms: SectionDividerSpaced() for
the 20dp gap, SectionDividerSpaced(maxBottomPadding = false) for the 10dp
tight gap. Behavior identical. Function signature kept (founder's API).
2026-05-18 04:18:00 -07:00
another-simple-pixel 2f76445e66 ConnectMobileView: collapse double blank line left over from move-footer edit 2026-05-18 04:14:30 -07:00
another-simple-pixel c924c13297 Theme: document why canvasColorForCurrentTheme reads CurrentColors.value directly
Reviewer asked why this helper uses CurrentColors.value.base instead of the
Compose MaterialTheme/CompositionLocal route. Reason is that the helper is
intentionally callable from both @Composable bodies and DrawScope (inside
sectionItemDivider's drawWithContent), and DrawScope can't invoke @Composable
getters. Add a paragraph to the doc-comment so future readers don't try to
'fix' it back to MaterialTheme.colors and break the divider draw path.
2026-05-18 04:13:14 -07:00