Commit Graph
6734 Commits
Author SHA1 Message Date
Narasimha-sc 77c2cb15cb plans: what's new "create your address" stacks pages and loses address state 2026-10-18 10:42:11 +00:00
Narasimha-sc 4fe865e18f desktop: open the What's New address page in the left pane, once
What's New shown in the center after an update opened the address page
in the center too, while the address page opens its own pages in the
left pane, so every click on one of its rows stacked another page there.
Its "Create your address" link also stayed clickable next to an open
address page and created the address from a second page.

The address page now opens in the left pane, as from the user menu, and
the link does nothing on desktop while an address page is open there.
On Android the panes are one stack, so only the state fix applies.
2026-10-18 09:52:05 +00:00
Narasimha-sc 04f156dbad ui: address page keeps auto-create and share state when covered
A page covered by another one is removed from composition and composed
again on Back, so the address page re-ran its auto-create effect and
reset "Share with contacts" to its parameter: after Delete address,
opening one of its pages and going back created the address again, and
after turning sharing on in Address settings the page showed it off.

The page now keeps both in its ModalData, and auto-creates only once.
This applies on both platforms, to every caller.
2026-10-18 09:52:04 +00:00
Narasimha-sc 813f914d3a plans: a page opens again on every click of its button (#6270) 2026-10-18 01:54:07 +00:00
Narasimha-sc b1d5f65bc9 desktop: replace a page of the same kind on top instead of stacking another
These buttons stay clickable on desktop while their page is shown in another pane, so each click pushed another copy:
- the chat banner's bio "Read more" (right pane);
- a markdown file clicked in a support chat (viewer in the center);
- message "Info" in the main chat while a support or reports chat is open on the right.
Their content depends on what was clicked and the pane can hold other pages (a support chat), so a page of the same kind on top is replaced. The new page is drawn where the old one was, so its content is keyed by its ModalData to start fresh. The markdown file and Info load on a background thread; their close and show now run on the main thread. The markdown check is desktop only, as on Android the viewer covers its file once it has loaded.
2026-10-18 01:34:20 +00:00
Narasimha-sc e07a5a283f desktop: don't open a second badges page or profile form
These buttons stay clickable on desktop while their page is shown in another pane, so each click opened another copy:
- "Support SimpleX" in the chat's large-file and badge alerts (Badges on the right): the alerts skip while Badges is open, on desktop only, as on Android the page covers the button;
- "+ Add profile" in Your chat profiles and "Create chat profile" in the picker (form in the center): skip while the form is on top, keeping what was typed, before asking for authentication; the picker row still hides the picker.
2026-10-18 01:34:19 +00:00
Narasimha-sc abb06e9f10 ui: add isTopModalOpen, which ignores modals that are sliding out
A modal closed with animation stays in modalViews until it has slid out, and isLastModalOpen counts it. A check-then-closeModal() on it would close the modal under it. Uses the same index as isLastModal; isLastModalOpen and its callers are unchanged.
2026-10-17 23:29:23 +00:00
Narasimha-sc d52e52bdd6 ui: open a modal once when its button is double-clicked
A modal slides in over 250 ms, and until it covers the button that opened it the button still takes clicks, so a double click opened two copies (left-pane pages and most stacked center and right-pane pages on desktop, animated modals on Android). When a modal opens, the page it covers draws an empty pointerInput box over itself while it slides out; when a pane's first modal slides in, the empty page sliding out covers the view under the pane. The page sliding in already takes clicks, and nothing is blocked when a page closes.
2026-10-17 23:29:23 +00:00
Narasimha-sc 89ad9be7cb desktop: open a pending connection's "Learn more" and "Incognito" pages once
On desktop the connection view stays clickable in the center pane, so each
click on these rows pushed another modal onto the right pane. Close the
right-pane modals first, as ChatView does when the connection opens. The page
is closed and shown again in one event, so its content is keyed by its
ModalData to start fresh.

Desktop only: on Android the view can itself be the open modal of the shared
manager ("Set contact name"), and the new page already covers the row.

Fixes #6270
2026-10-17 21:14:17 +00:00
EvgenyandEvgeny @ SimpleX Chat 139ce5f8cc core: fix profile creation and update in channels (#7740)
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-17 19:49:30 +01:00
EvgenyandEvgeny @ SimpleX Chat 77f9f4a464 core: add peer type "agent" (#7738)
* add agent peer type

* bot types

* agent app icons

* refactor

* smaller image

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-17 19:23:53 +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 a932c8298a buying a badge in the app (#7587) 2026-10-16 18:10:25 +00:00
spaced4ndy a356512645 Merge branch 'master' into badge-in-app-checkout 2026-10-16 22:07:28 +04:00
spaced4ndy a1529cd33f core: update postgres schema 2026-10-16 21:40:13 +04: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
spaced4ndy c998eb1fee ios, android, desktop: use the production badge page 2026-10-16 21:30:55 +04:00
spaced4ndy 898c6f1266 ios, android, desktop: choose a badge on the website 2026-10-16 21:07:45 +04:00
sh aaa388e570 desktop: add emoji picker (#7708)
* desktop: add emoji picker data and generator

* desktop: emoji picker in compose field

* desktop: document compose emoji picker
2026-10-16 14:34:04 +01:00
spacedandy-agents-simplex e3324c6828 Merge branch 'master' into badge-in-app-checkout
# Conflicts:
#	simplex-chat.cabal
#	src/Simplex/Chat/Store/Postgres/Migrations.hs
#	src/Simplex/Chat/Store/SQLite/Migrations.hs
#	src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt
#	src/Simplex/Chat/Store/SQLite/Migrations/chat_schema.sql
2026-10-16 09:40:53 +00:00
sh fba65d98ee nodejs: ignore local libs directory (#7731) 2026-10-16 09:01:13 +00:00
EvgenyandEvgeny @ SimpleX Chat 5dfe7c1f0e website: downloads page (#7728)
* website: downloads page

* bigger headings

* translations

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-15 22:10:59 +01:00
EvgenyandEvgeny @ SimpleX Chat 41f0c429b3 website: update home page (#7724)
* website: update home page

* update

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-15 12:50:38 +01:00
EvgenyandEvgeny @ SimpleX Chat e8c98e8231 core, ios: fix notifications for forwarded and channel messages (#7706)
* plan: add notification flag for forwarded messages

* core, ui: fix notifications for forwarded and relay messages

* improvements

* only send duplicate message event in NSE

* query plans

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-15 08:41:57 +01:00
Simplex Operations f5b13f608f packages: release nodejs 7.1.0-beta.6.3 (#7720) 2026-10-15 06:18:30 +00:00
Narasimha-sc 23ca3ea42f desktop: hide SimpleX address and chat preferences rows with no profile and no mobile in use (#7717) 2026-10-15 05:37:37 +01:00
Narasimha-sc 000258224c desktop: fix crash in SimpleX address screen when there is no profile (#7679)
* desktop: fix crash in SimpleX address screen when there is no profile

* desktop: close SimpleX address screen when there is no profile

* desktop: rerun address screen self-close when its modal is reused or the stack changes

* desktop: close SimpleX address screen only when it is the top modal

* plans: correct address no-profile crash triggers and fix description

* plans: correct address no-profile crash fix description and verification

* plans: tighten address no-profile crash wording

* plans: add self-destruct trigger to address no-profile crash

* plans: qualify self-destruct trigger on desktop

* plans: drop desktop-only title from address no-profile crash

* plans: no connected mobile, not no mobile

* spec, product: document isLastModal and address screen without profile

* plans, spec, product: plan sections, address row spec, GAP-08 and GAP-09

* spec, product, plans: fix GAP-08/09 wording, table placement, ModalManager line

* spec, product: GAP-08/09 accuracy, gap count, clickable ModalManager location

* product, plans: GAP-09 at the level the code supports; qualify picker auto-open

* spec, product, plans: fix GAP-09 locations, stale line links, wording

* spec, product, plans: update plain-text line numbers; GAP-09 read wording

* plans: name the picker auto-open condition

* spec, plans: wording; security note

* plans: self-destruct did not crash on Android master; not a trigger

* plans: self-destruct path possible but unconfirmed; Android recovers silently

* spec, product, plans: drop GAP-09 and unrelated line refreshes

* plan: Android self-destruct path confirmed in logcat

* desktop: close Chat preferences screen when there is no profile, as the address screen does
2026-10-14 22:14:55 +01:00
EvgenyandEvgeny @ SimpleX Chat c07d28681f website: update cf links and page (#7722)
* website: update cf links and page

* noopener

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-14 21:42:51 +01:00
EvgenyandEvgeny @ SimpleX Chat 1b980de198 website: page events (#7721)
* website: page events

* rename

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-14 20:59:56 +01:00
Evgeny Poberezkin 4c09af0619 tests: fix tests compilation for postgres 2026-10-14 20:08:33 +01: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 7c3e516998 badge-service: mount config folder, ignore .env (#7715) 2026-10-14 11:13:22 +00:00
shandspaced4ndy daa7c4f3d8 badge-service: accept a list of Apple roots (#7707)
* badge-service: accept a list of Apple roots

* badge-service: document root_certificates

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2026-10-14 10:43:53 +00:00
spaced4ndy 5db181c10e badge-service: answer Play purchases on a lane of their own (#7712) 2026-10-14 10:40:34 +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
sh 4278eb254e badge-service: fail on missing bind mount sources (#7705) 2026-10-14 06:38:10 +00:00
spaced4ndy 263ac949f3 docs: plan for badge top-ups and store subscriptions (#7692) 2026-10-13 15:25:54 +00:00
spaced4ndy 59c588932e badge-service: verify App Store and Google Play purchases (#7654) 2026-10-13 15:24:07 +00:00
EvgenyandEvgeny @ SimpleX Chat 2f4a443dda ui: markdown viewer (#7702)
* ui: markdown viewer

* simplify

* fixes

* plan

* ios sheet, center modal on desktop

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-13 14:38:37 +01:00
EvgenyandEvgeny @ SimpleX Chat 7d870c6ff5 ui: open file after tap when it is received (#7700)
* ui: open file after tap when it is received

* fix ios

* simplify

* simplify

* better

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-13 11:24:14 +01:00
EvgenyandEvgeny @ SimpleX Chat 1bd7c95006 ui: additional check for plain domains (#7699)
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-13 08:53:04 +01:00
Evgeny d673a6b021 ui: show unicode characters in address as unicode markers (#7698)
* ui: show unicode characters in address as unicode markers

* defence in depth for links in messages (they are non-clickable from parser)

---------

Current code does not have this problem, as markdown parser rejects such links, and they are not clickable - it is needed for new markdown file viewer - this way unicode links in markdown show with unicode sequences instead of look-alike letters.
2026-10-13 08:42:59 +01:00
Evgeny Poberezkin 4b6ac88c6e ios: update core library 2026-10-13 08:40:32 +01:00
EvgenyandEvgeny @ SimpleX Chat eadebccb4f nodejs: send error events to bot (#7691)
* nodejs: send error events to bot

* version

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-12 22:59:42 +01:00
EvgenyandEvgeny @ SimpleX Chat eda94a505d nodejs: send error events to bot (#7691)
* nodejs: send error events to bot

* version

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-12 13:26:48 +01:00
EvgenyandEvgeny @ SimpleX Chat 599076d7a2 packages: update nodejs libraries (#7690)
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-12 09:14:37 +01:00
Evgeny Poberezkin 9711dcfc9c core: 7.1.0.11 (simplexmq 7.1.0.11) 2026-10-11 23:01:35 +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
nahuhh 8ec8c451db core: fix slow group membership lookup (#7688) 2026-10-11 13:06:06 +01:00