Commit Graph
130 Commits
Author SHA1 Message Date
Evgeny @ SimpleX Chat 4c23a830ae ci: GHC 8.10.7 build at -O0 (#7893) 2026-10-27 20:37:41 +00:00
spaced4ndyandspacedandy-agents-simplex e4d05097e2 ios, android, desktop: channel owners can require signed messages and make subscribers moderators (#7805)
* 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>
2026-10-27 20:27:31 +00:00
Evgeny @ SimpleX Chat d5827478b5 ci: reduced build skips the core for app test scripts and workflows (#7907) 2026-10-27 11:48:45 +00:00
Evgeny @ SimpleX Chat f7f42e70e5 ci: reduced build on pushes to master and stable in forks (#7882)
* ci: reduced build on pushes to master and stable in forks

* ci: test retry message only when retrying

* ci: pull request changes against the current base

* ci: deploy the website only from simplex-chat/simplex-chat
2026-10-26 19:12:01 +00:00
Evgeny @ SimpleX Chat 3de946b7d4 ci: upload app builds for manual tests (#7880) 2026-10-26 18:19:24 +00:00
Evgeny @ SimpleX Chat a0730ae8b8 ci: skip freeing disk space in reduced builds (#7884) 2026-10-26 12:42:31 +00:00
Evgeny @ SimpleX Chat 85ba221d79 ci: reduced build of changed scopes on drafts and manual runs (#7870)
* ci: reduced build of changed scopes on drafts and manual runs

* ci: tests only when selected in reduced builds

* ci: test selection and retries in scripts/ci/run-tests.sh
2026-10-26 11:19:50 +00:00
sh 236893e1ac ci: add kotlin and ios build workflow (#7710)
* ci: add kotlin and ios build workflow

* ci: compile desktop kotlin without native lib

* ci: build apps kotlin targets sequentially

* ci: use node 24 actions in apps workflow

* ci: build kotlin and ios apps in build workflow

* ci: skip core jobs for app-only pull requests

* ci: choose builds to run from changed paths
2026-10-23 09:15:01 +01:00
spaced4ndy 9a1d3e4969 ci: test the Android app in an emulator on GitHub's runners (#7786) 2026-10-20 16:55:54 +00:00
spaced4ndy 5834179be6 ci: start app tests only by hand (#7777) 2026-10-20 16:48:47 +00:00
EvgenyandEvgeny @ SimpleX Chat 16618c26cc ci: reduce runners (#7778)
* ci: reduce runners

* ram disk in mac tests

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-19 22:36:12 +01:00
spaced4ndy d04510f66f ci: add a placeholder for the Android app test workflow, so it can be started by hand on its branch (#7772) 2026-10-19 11:26:22 +00:00
EvgenyandEvgeny @ SimpleX Chat 1cbbe82517 ci: fix mac library build to sign and notarize library (#7765)
* ci: fix mac library build to sign and notarize library

* script

* sign and notarize to test

* remove test build

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-19 11:59:43 +01:00
spaced4ndy 7ac7d00025 ci: start the app tests from run tags only on f/ branches (#7768) 2026-10-19 10:25:26 +00:00
spaced4ndy 35bc0b66d9 ci: app test workflows save no caches, reuse their builds as artifacts, and run Claude in its own job (#7767) 2026-10-19 09:31:38 +00:00
EvgenyandEvgeny @ SimpleX Chat a766d0af0f ci: package releases with drafts in simplex-chat-libs (#7754)
* ci: package releases with drafts in simplex-chat-libs

* test release

* core: 7.1.0.12

* packages: release nodejs and python libraries

* fixes

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-19 07:50:09 +01:00
EvgenyandEvgeny @ SimpleX Chat 5a5a927821 ci: reduce the number of runners (#7750)
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-18 11:40:08 +01:00
EvgenyandEvgeny @ SimpleX Chat 9a90d8e230 ci: cache build artifacts for faster builds (#7730)
* ci: cache build artifacts for faster builds

* test build

* compression

* fix macos-latest

* debug build

* better caching

* test cache

* update build

* test cache

* ci: check toolchain restore

* ci: remove Windows toolchain cache

* ci: skip tests on macOS Intel

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-17 17:12:08 +01:00
spaced4ndy 5a80713699 ci: test the desktop app on Linux runners on request, with an optional Claude session (#7736) 2026-10-16 17:34:43 +00:00
spaced4ndy 7c5b6bb3d7 ci: test the iOS app in the simulator on request, with an optional Claude session (#7737) 2026-10-16 17:33:50 +00:00
sh 489b07ff4f ci: record package releases in simplex-chat-libs (#7719)
* ci: use default registries for empty variables

* ci: drop package publish tags

* ci: record releases in simplex-chat-libs

* ci: skip recorded versions in publish plan

* nodejs: raise default test timeout for migrations

* nodejs: print download progress without console.error

* nodejs: use the default timeout in migrating core tests
2026-10-14 15:10:31 +00:00
sh f65c2da587 nodejs: lazy per-backend libsimplex download (#7543)
* ci: drop dlltool from nodejs libs release

* nodejs: download libsimplex into the user cache

* nodejs: load libsimplex at runtime per backend

* support bot: select db backend with --db

* python: match backend switch error text

* nodejs: download prebuilt add-on at runtime

* ci: build nodejs add-on for libs release

* calculator bot: load libs and add-on in image

* support bot: document add-on override

* nodejs: keep worker test output free of colors

* nodejs: verify sha-256 of downloaded assets

* python: pin core libs release with sha-256

* ci: add packages release script

* ci: release nodejs add-on and open release PR

* ci: publish packages after release PR

* nodejs: keep npm from building the add-on

* calculator bot: build the add-on in the image

* ci: merge package release workflows

* ci: open release PR when publishing fails

* ci: build the add-on with node-addon-api only

* ci: skip publishing in a called packages workflow

* ci: update package release actions to Node 24

* nodejs: fix receive test timeout

* ci: test packages on pull requests

* nodejs: reuse the database in the close stress test

* ci: keep failed package tests from hanging

* ci: skip preset server tests

* ci: plan package builds from the changes

* ci: test packages with a given libsimplex

* ci: test packages with libsimplex of core changes
2026-10-14 09:53:53 +01:00
EvgenyandEvgeny @ SimpleX Chat 64aa2825d5 core: release core library to simplex-chat-libs every time cabal version changes (#7687)
* core: release core library to simplex-chat-libs every time cabal version changes

* implement

* test build

* update libs release

* test library release

* create release commit, so the date is correct

* rework to create release in advance in maybe-release job

* remove test build

* move postgresql job back

* test build

* remove test build

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-11 22:01:22 +01:00
EvgenyandEvgeny @ SimpleX Chat df95de8a2c tests, fix: execute in parallel, send connected events after creating chat items, fix race when merging multiple members to one contact (#7500)
* tests: execute in parallel

* remove race in terminal

* fix some tests

* stop chat controller on exit

* fix more tests

* fix tests

* query plans

* update simplexmq

* update direct-sqlcipher

* fix tests

* query plans

* ios: update core

* fix tests

* update simplexmq and direct-sqlcipher, fixes

* simplexmq

* update simplexmq

* parallel channel tests

* update tests

* fix tests

* fix tests

* query plans

* fix test

* more tests in CI

* use ram drive in CI

* fix tests, fix directory deleting voice file before it is uploaded

* fix query

* fix query to use index

* link contact and channel owner profile when connecting via a signed link

* update simplexmq, fix ghc 8.10.7

* fix tests

* avoid double stop

* query plans

* fix more test races

* more test fixes

* fix queries

* fixes

* more fixes

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-07 08:12:02 +01:00
19e70faeec badges: webapp feature branch (#7548)
* badges: webapp (#7433)

* badges: service migrations, store and catalog

* badges: BTCPay provider and settlement poller

* badges: web listener and /api endpoints

* web: checkout single-page app

* badges: tests and BTCPay fixtures

* badges: README and ini reference

* badges: fix hex16 build on GHC 8.10.7

* badges: Stripe card lane

* badges: fix Stripe card checkout, add theming

* badges: add a discount row to the order summary

* badges: site navbar, embedding, theme, Forget move

* badges: use SB code prefix in web checkout

* badges: rename sxb app namespace to sb

* badges: embed checkout nav via site; keep original app navbar

* badges: post iframe height, apply site background when embedded

* badges: embed dark surfaces, steadier iframe height

* badges: hide app footer when embedded

* badges: size embedded body to content, not viewport

* badges: declare color-scheme to stop reload flash

* badges: fade shell in on load, no reload blank

* badges: prerender app shell into index.html

* badges: pre-paint theme, hide shell on deep reload

* badges: logo returns to landing client-side

* badges: embedded wizard back, buy-a-code, resume

* badges: signal app-managed screens, resume across reload

* badges: rebuild wizard history on deep load so Back walks it

* badges: carry welcome-page height as the iframe floor

* badges: keep selection on Buy a code; rename to Your codes

* badges: read web shell as UTF-8, not locale

* badges: resume the exact paid order after Stripe card redirect

* badges: move docker deploy under scripts

* badges: add serve_webapp toggle and webapp export

* badges: wire split webapp deploy in docker config

* badges: quiet agent logs by default

* badges: resume card redirect in the embedded frame

* badges: migrate Stripe adapter to PaymentIntents

* badges: correct Stripe restricted key scopes in ini example

* badges: card via Payment Element and PaymentIntents

* badges: fix stale Checkout Session wording in Stripe adapter

* badges: fix stale CheckoutActions reference in card comment

* badges: order shell stylesheet before bootstrap script

* badges: remove development card stand-in

* badges: theme the Stripe card form with the site palette

* badges: exclude web from the Haskell build stage

* badges: unify invoice cancel and mark canceled

* badges: default log level to info

* badges: unify closed-invoice buy-again button

* badges: mute agent connection logs at info level

* badges: show purchase time in local timezone in Your codes

* badges: log service events on own channel, quiet agent

* badges: fold service migrations into one baseline

* badges: run compose on postgres over host network

* badges: use high-res hero art

* badges: add web CI to catch stale builds

* badges: rebuild web shell from committed source

* badges: normalize invoice-code link and columns

* badges: drop unused columns, rename index

* badges: note deferred receipt_hash in migrations

* badges: apply code-review fixes

* badges: reduce comments across service and web

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>

* badges: improve web page (#7546)

* badges: improve web page

* improve layout

* improve layout

* fix

* small changes

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>

* badges: read one issuer key from the ini

* badges: move and group the service tests

* badges: service fixes (#7567)

* badges: match the redeem error wording in tests

* badges: drop unused imports in the bot tests

* badges: cancel Stripe orders when they expire

* badges: correct the Stripe config and docs

* badges: refuse to revoke a redeemed code

* badges: make the fake Stripe cancel like Stripe

* badges: limit replayed webhook deliveries

---------

Co-authored-by: sh <37271604+shumvgolove@users.noreply.github.com>
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
Co-authored-by: shum <github.shum@liber.li>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2026-09-25 09:01:51 +00:00
Evgeny Poberezkin 78332d0c73 Merge branch 'master' into badges 2026-08-27 07:59:57 +01:00
sh ca8a7eda69 desktop: build nanohttpd from a submodule (#7396) 2026-08-20 13:43:09 +01:00
spaced4ndyandEvgeny Poberezkin 7ce2e6583e core: simplex-badge-service scaffolding (#7353)
* core: simplex-badge-service scaffolding

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* clean-up

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2026-08-08 21:00:23 +01:00
sh 602f17ecfa ci: fix windows build (#7095)
* ci: clean simplexmq submodule source dir on windows build

* core: pin simplexmq 7.0.0.1
2026-06-18 14:45:07 +01:00
08c69e3dfa ui: add asset image on create channel view; allow to choose image on create profile (#6891)
* ui: create channel picture

* more centered

* better symmetry

* less diff

* choose image on create profile

* fix padding

* fix padding, fit into screen

* fix button layout

* placeholders

* fix padding

* channel pictures

* adjust asset_dir in scripts

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: shum <github.shum@liber.li>
2026-04-27 14:00:14 +01:00
3d85480944 ui: new onboarding (#6888)
* ui: onboarding assets

* android: fix gradle version check, pass assets dir to builds

* desktop: pass assets dir to gradle builds

* ui: new onboarding (#6872)

* ios: improve onboarding

* ios version condition

* android strings

* merge keys

* refactor network conditions to old location

* ios scroll headline

* remove nav view

* kotlin: refactor network commitments page to use existing view

* remove unused keys

* update why page

* configure -> setup

* padding for app bar in why page

* fix why page

* padding

* copy translations from the website

* export localizations

* export again

* kotlin: fix why page

* fix

* import localizations

* custom layout

* padding for system bars

* paddings

* more paddings

* more padding 2

* update fonts

* fonts

* line height, padding

* paddings

* refactor notifications

* refactor ios

* notification icons in cards

* restore profile field

* padding

* desktop layout create profile

* fix

* more layout

* create profile layout

* mobile padding

* split mobile and desktop

* layout

* layout

* background

* refactor onboarding images

* use DARK theme by default

* page 3 and 4 layouts

* restructure desktop onboarding to two panes

* improve layout

* improve

* fonts, padding

* link mobile on full page

* fix, reduce noise

* change to animation

* fix animation

* refactor

* colors, animation

* import

* details

* fix padding

* fix icon

* fix

* button paddings

* accept button on terms page

* fix conditions button

* close modal

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Co-authored-by: shum <github.shum@liber.li>
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-04-27 11:46:08 +01:00
sh a3fde4daa1 simplex-chat-nodejs: add PostgreSQL backend build support (#6845)
* simplex-chat-nodejs: add PostgreSQL backend build support

* simplex-chat-nodejs: fix postgres install command in README
2026-04-23 09:00:13 +01:00
sh 858e955afd ci: cancel stale runs, filter PR paths (#6857) 2026-04-22 09:03:15 +01:00
BarbossHack 2475a2163a scripts: pin ubuntu manifest digest hash for reproducibility (#6651) 2026-03-09 09:19:54 +00:00
sh d3a72473e9 nodejs: add and fix windows (#6581)
* simplex-chat-nodejs: adjust binding.gyp for windows

* simplex-chat-nodejs: different library linkage for windows

* simplex-chat-nodejs: remove non-moving GC in Windows

"non-moving GC is broken on windows with GHC 9.4-9.6.3" from:

https://github.com/simplex-chat/simplex-chat/blob/master/apps/multiplatform/common/src/commonMain/cpp/desktop/simplex-api.c#L11-L17

* ci: add windows to release-nodejs-libs

* simplex-chat-nodejs: same curl flags for dll.def download
2026-01-15 16:36:35 +00:00
sh 324aefef86 ci: add nodejs action (#6568)
* ci: add nodejs action

* ci: better curl flags

* ci: fix naming
2026-01-12 17:30:35 +00:00
sh e432f7a060 scripts/simplex-chat-reproduce-builds-android: add script (#6497)
* script/simplex-chat-reproduce-builds-android: initial structure

* Dockerfile.build: add dependencies

* scripts/build-android: allow setting custom vercode

* scripts/simplex-chat-reproduce-builds-android: populate functions

* Dockerfile.build: setup regular user

* Dockerfile.build: fix env

* Dockerfile.build: switch user to ubuntu

* Dockerfile.build: set USER variable

* Dockerfile.build: create ubuntu user (aarch64 doesn't have it)

* ci/build: remove permissions workaround

* Dockerfile.build: fix groupadd

* ci/build: adjust permissions before build

* Dockerfile.build: allow to dynamically set user/group

* ci/build: set uid and gid in Docker

* ci/build: remove unneeded step

* Dockerfile.build: also create /out

* sync changes, add debugging

* add verification function, fixes

* Dockerfile: add android scripts

* fixes, remove debugging

* more fixes

* fix download apk and add message at the end

* scripts/simplex-chat-reproduce-builds.sh: add user uid and gid

* fix vercode

* add logging

* refactor and make vars saner

* fixes
2025-12-20 17:19:00 +00:00
Evgeny Poberezkin 99d655f5d3 Merge branch 'stable' 2025-12-10 21:03:56 +00:00
sh 2ed76fd386 ci: execute reproducible script from tag (#6485)
* ci: execute reproducible script from tag

* ci: target our repository tags
2025-12-03 11:16:37 +00:00
sh 8ff0ccf392 ci: build simplex-chat CLI deb package (#6474)
* ci: build simplex-chat CLI deb package

* scripts/build-cli-deb: reproducible size (also actual file size)

* scripts/build-cli-deb: fix epoch

* scripts/build-cli-deb: set epoch to 1764547200
2025-12-01 10:13:18 +00:00
Evgeny Poberezkin baa5d63ca6 Merge branch 'stable' 2025-11-21 16:23:35 +00:00
BarbossHackandsh f853f84d03 ci: free up disk space before executing reproducible script (#6441)
* ci: free up disk space before executing reproducible script

* ci: use cleanup script template instead

Co-authored-by: sh <37271604+shumvgolove@users.noreply.github.com>

---------

Co-authored-by: sh <37271604+shumvgolove@users.noreply.github.com>
2025-11-17 09:06:07 +00:00
sh ff1054dab7 github/workflows: macos-13 -> macos-15-intel (#6362) 2025-10-14 09:14:52 +01:00
sh 2175db9345 github/workflows/build: disable aarch64 tests (#6192) 2025-08-16 13:14:01 +01:00
Evgeny Poberezkin d102b8a871 Merge branch 'master' into stable 2025-08-02 18:27:14 +01:00
shandEvgeny Poberezkin 06902fe678 desktop: prepare linux aarch64 (#6107)
* scripts/*: adjust to be arch independent

* github/workflows: build aarch64

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-08-01 20:07:52 +01:00
sh 9b3c2e6b9d github/workflows: fix reproduce-schedule (#6127) 2025-07-29 13:02:24 +01:00
Evgeny d7261e9d96 ci: upgrade cabal (#6123)
* ci: upgrade cabal

* update cabal in docker
2025-07-28 19:38:26 +01:00
sh 88538c7b07 github/workflows: fix reproduce schedule (#6075) 2025-07-16 11:41:53 +01:00
sh 4da8133faf ci: add reproducible Linux desktop builds (#5960)
* ci: add reproducible Linux desktop builds

* ci: move commands from ci to script

* scripts: switch appimage tools to simplex-chat forks (stable release)
2025-06-05 08:26:40 +01:00