* android, desktop: what's new in v7.1, get a supporter badge, Flat layout
* android, desktop: what's new image opens Wefunder, sections get icons
* android, desktop: crowdfunding image without the stripe at its left edge
* android, desktop: Support SimpleX in settings, badge benefits shown
* android, desktop: more space under the what's new crowdfunding image
* ci: desktop references of v7.1 what's new and the settings badge row
* android, desktop: crowdfunding page without contact button, badge texts
* ci: desktop references of what's new with one rocket
* ui: what's new in v7.1, badge links and benefits, investor offer in store
* ui: localized crowdfunding texts on iOS, badge button kept in place
* ci: iOS references of v7.1 what's new, badge row and store screens
* ui: badge instead of the phone picture in what's new
* ui: what's new crowdfunding section without the investor count
* ui: what's new badges section without a picture
* ci: what's new references without the picture and investor count
* ui: investor offer on badge store screens in every country
* ui: shorter subscription terms and store notes on badge screens
* ios: subscription terms without the cancellation window
* ios: subscription terms worded as on Google Play
* ui: shorter badge errors and subscription notes
* ui: translations of the shorter badge texts; shorter purchases alert on iOS
* ui: shorter link, channel signing and badge texts, with translations
* ui: Your badge for every badge except legend in settings
* android, desktop: badge button at one height on the store screens; crowdfunding texts translatable
* android, desktop: smaller crowdfunding image
* android, desktop: what's new references with the smaller crowdfunding image
* core: test that history posted before channel signing reaches later joiners as signature missing, and channel moderator delete for all
Confirms the case the owner's new alert describes: a subscriber who joins after the owner turned on "Sign messages" sees the earlier posts as "signature missing" and later ones as signed, while earlier subscribers keep them unmarked. Also covers a non-owner channel moderator deleting a contributor's signed post for everyone.
Run: 001-channel-signing-moderators, slice 1
* ios: keep "Chat with admins" off when saving group preferences
toGroupPreferences left out the support preference, so the saved profile had none and core filled in its default, on: every channel preference save from iOS silently turned on chats with admins, which have no end-to-end encryption in channels. Android and desktop already pass it.
Run: 001-channel-signing-moderators, slice 2
* ui: let channel owners turn on "Sign messages", warning that earlier messages will show signature missing
The channel preference was hidden while signing was recipient-only. Owners now see the switch; turning it on asks for confirmation, because subscribers who join later receive the earlier posts unsigned through history and see them as "signature missing". The "Signature missing" explanation now says the message may predate signing or have been forwarded by a relay without its signature, instead of only implying tampering.
Run: 001-channel-signing-moderators, slice 3
* ui: channel owners can make subscribers moderators, and moderators see the subscriber list
Core already lets a channel owner make a subscriber a moderator; the role picker offered only subscriber and contributor. It now offers moderator too (not admin, by decision). Moderators see the full member list the owner sees, so they can reach the subscribers they may block (subscribers can't post, so there was no other way to reach them), and member info is headed Moderator or Contributor instead of Subscriber for those roles.
Run: 001-channel-signing-moderators, slice 4
* ci: long-press and right-click for app tests, safer ui arguments, desktop Kotlin 4 GB, desktop session limits from claude-scope
Message menus open only on long-press (iOS) or right-click (desktop), so Claude sessions couldn't reach Moderate, Info or Delete. Ported from f/directory-search unchanged, with its hardening: the guards refuse unquoted glob, brace and tilde expansion, and desktop ui checks numbers and sends one key per call so a key argument can't run an xdotool command. The desktop app job's Kotlin compiler gets 4 GB, as f/directory-search needed after merging master. Desktop sessions take max-turns and max-budget-usd from claude-scope like iOS (60 and 3 when unset, as before), and the Claude job may run 120 minutes.
Run: 001-channel-signing-moderators, slice 5
* ci: Claude test plans for channel message signing and channel moderators
This branch's iOS device test plan and desktop prompt replace master's smoke tests: the owner creates a channel on the preset relays, turns on Sign messages through its alert, and two more profiles in the same app join by the copied link; the owner makes one a moderator, who then sees the subscriber list, moderates a contributor's message and blocks the contributor. Signatures are checked as text in message Info. One layout, no test backend.
Run: 001-channel-signing-moderators, slice 6
* fixup! ui: let channel owners turn on "Sign messages", warning that earlier messages will show signature missing
* update plans
* fixup! ui: let channel owners turn on "Sign messages", warning that earlier messages will show signature missing
* fixup! ci: Claude test plans for channel message signing and channel moderators
* fixup! ui: let channel owners turn on "Sign messages", warning that earlier messages will show signature missing
* fixup! ci: Claude test plans for channel message signing and channel moderators
* fixup! ui: let channel owners turn on "Sign messages", warning that earlier messages will show signature missing
* fixup! ci: Claude test plans for channel message signing and channel moderators
---------
Co-authored-by: spacedandy-agents-simplex <342056592+spacedandy-agents-simplex@users.noreply.github.com>
* core: test support chats in channels, CLI defaults to sending as member in support chat
* ui: enable support chats in channels
* use correct scope when sending from UI
* more readable
* remove test output
* show member support chat in channels
* preference for support chats
* ios: types for support preference
* mp: support preference types
* show support preference in UI
* fix ios
* make support preference optional in JSON parser
* update string
* change strings, pass parameters to prefs
* refactor kotlin
* take support preference into account
* refactor core
* do not show broadcast placeholder in support scope
* move role check, add pref check on update
* support preference test (failing)
* fix version
* fix tests
* warning alert when enabling chats with admins
* revert on dismiss
* update text and icons
* query plans
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
* ios: ask for confirmation of save on group preferences sheet dismiss
* fix exit without saving temporary state and also apply fix on dismiss during group creation
* ios: migration via link
* changes in UI
* UI
* UI and API changes
* UI and logic
* simplify statement
* UI, API, logic
* formatting
* animation fix
* better animation
* test
* changed directory
* changes
* migrating to device
* migrate settings
* more state updates on main thread
* texts
* continue migration after restart
* toggle for saving passphrase and footer text
* no visual arthefacts when deleting a chat after migration
* saving settings before changing passphrase
* back button is looking disabled when it's disabled
* fixed starting chat issues when migrating to device
* paste and share link elements
* proper import process and refactoring UI in SimpleXInfo
* show progress on settings while starting chat
* title bold font
* changes as in Android
* brace
* changes as in Android
* rename to prevent confusion
* fixes and adapted to Android
* unused param
* comment
* don't allow going back on Archiving step
* update core library
* changes as in Android
* correction
* correction
* change
* qr code
* update network settings view
* update progress
* changes
* navigation view and focus in text field
* texts
---------
Co-authored-by: Avently <avently@local>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* Revert "core: do not create group history item (#3586)"
This reverts commit 2834b192ce.
* ios: group history preference
* fix tests
* android
* texts
* enable in new groups ios
* enable in new groups android
* android texts
* ios texts
* remove ellipsis
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* ios: reactions UI
* remove JSON
* remove print
* align reactions, show all allowed reactions in menu
* move react to the menu top
* ios: update preference texts
* always allow removing reactions, reduce spacing
* revent allow removing (backend does not allow it anyway)