* core: round down time of sent messages to prevent replies showing above if they are within one second
* fix item timestamps
* query plans
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
* 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>
Switching chats clears the group members, and the preload skips storing
them when another chat is open when they arrive. Clicking info on group A,
then another chat and back to A before the preload finished, opened A's
info with the preloaded values marked as A's, so nothing was reloaded and
the members list showed only the user.
Reload the group info also when its members are not loaded.
A link created, changed or deleted on the "Group link" page finishes in
the background. If the user switched chats meanwhile and the pane already
loaded the next group, the update replaced that group's stored link, and
the next time the pane was composed for it, it showed the previous group's
link, or no link after a delete.
Store the update only while the stored values belong to the group the
update came from.
When the info pane showed a chat other than the one its values were
loaded for, it reloaded them, but until the reload returned it showed the
previous chat's values: "Verify security code" opened the previous
contact's code, and a group showed the previous group's link, so "Group
link" opened and shared another group's link.
Start the contact info, security code and group link empty when they
belong to another chat. Hide the "Create group link" / "Group link" row
and disable the channel "Link" button until the link is loaded: with no
link yet, both open the link page, which creates a link when it gets
none, and for a group that already has one the core creates a server
queue before failing with a duplicate link error.
The info pane keeps the values it last loaded. When the pane is composed
again for another chat - after clicking another chat with a page such as
"Verify security code" open over it, or when switching between a contact
and a group - KeyChangeEffect takes the new chat id as its starting key, so
nothing is reloaded: "Verify security code" opened from the new contact's
info showed the previous contact's code, and a group's info missed its
members.
Remember which chat the loaded values belong to and reload whenever the
shown chat differs from it.
Fixes#5135
* 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
* 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
* badge-service: accept a list of Apple roots
* badge-service: document root_certificates
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* 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