Commit Graph
2365 Commits
Author SHA1 Message Date
Linus Rath 248f9c261b fix: take down push for logins with no connection when signing out of everything 2026-11-04 03:13:59 +01:00
Linus Rath 9bc31b54ab fix: keep notifications generic after the browser closed when the organisation has idle limits 2026-11-04 03:13:59 +01:00
Linus Rath 6dbda4424e fix: stop a stuck push setup from holding up every tab and login 2026-11-04 03:13:58 +01:00
Linus Rath bc8653de8b fix: only replace a browser subscription on the relay's own answer, and move the other logins along 2026-11-04 03:13:58 +01:00
Linus Rath 226b9383ce fix: show a generic notification instead of guessing which login a push is for 2026-11-04 03:13:58 +01:00
Linus Rath f0617a61b1 fix: only treat a server subscription as this browser's when its device id matches 2026-11-04 03:13:58 +01:00
Linus Rath 6ffa0a3715 fix: show the real sender and subject for a push after the browser was closed 2026-11-04 03:13:57 +01:00
Linus Rath 5c62c57657 fix: replace a browser subscription the push service gave up on 2026-11-04 03:13:57 +01:00
Linus Rath a6ef818149 fix: end a login's push registration when it signs out, is removed or wiped 2026-11-04 03:13:57 +01:00
Linus Rath 8b4fb72357 fix: say in plain words why push could not be turned on or off 2026-11-04 03:13:57 +01:00
Linus Rath d520af51b2 fix: restore push when the browser replaces its subscription with no tab open 2026-11-04 03:13:56 +01:00
Linus Rath 8a69c35206 fix: open a notification in the app window, not a pop-out or a frame 2026-11-04 03:13:56 +01:00
Linus Rath 33249ca57a fix: show a notification even if building it fails 2026-11-04 03:13:56 +01:00
Linus Rath 2c462c304e fix: show the right preview when an account id is in more than one login 2026-11-04 03:13:56 +01:00
Linus Rath fc6a209727 fix: keep push notifications off screen with email notifications off or do not disturb on 2026-11-04 03:13:56 +01:00
Linus Rath 7fb0242a7b fix: open the new message from its notification however much older mail is unread 2026-11-04 03:13:56 +01:00
Linus Rath 376465ed80 fix: notify for every account a state-change push names 2026-11-04 03:13:56 +01:00
Linus Rath 6ca6448b5e fix: remove the record from the old relay when push moves to another one 2026-11-04 03:13:56 +01:00
Linus Rath 2551823006 fix: let tabs take turns setting up push so two can't race into two subscriptions 2026-11-04 03:13:55 +01:00
Linus Rath 4586f16c2e fix: remove the unverified subscription when push verification fails, and poll through a network blip 2026-11-04 03:13:55 +01:00
Linus Rath 3a805d1631 fix: restart push verification when the mail server skipped it after a quick off and on 2026-11-04 03:13:55 +01:00
Linus Rath 7f3d9c5073 fix: let npm run build pass its guard, with the build run in CI 2026-11-04 02:45:46 +01:00
Linus Rath f570277a61 chore: merge the desktop offline branch into quick compose 2026-11-04 01:45:09 +01:00
Linus Rath 71aaadef50 fix: run plugins' compose check in quick compose, keep a composer with one owner, and bring it back after a crash
The first version of quick compose skipped `onBeforeCompose`, a composer
moved back could end up open in both windows, a reply moved back under
Pro flagged the selected message, and a crashed pop-out came back blank.

- A new message in a pop-out runs `onBeforeCompose` with the same result
  as the main window: a plugin that stops it closes the window.
- The way back has two steps, so a pop-out that gave up can't leave a
  second owner. A handoff behind a plugin's gate makes it say busy.
- A Pro tab made from a composer moved back answers its own message.
- Each save writes `draft`, `account` and `owner` into the pop-out's
  address, which a reload after a crash starts from. What was typed since
  the last save, up to the 2 s autosave delay, is still lost.
- The recorder refuses keys that type a character on this keyboard, and
  what the shell refuses from a page, and says why.
2026-11-04 01:31:43 +01:00
Linus Rath 889f6ffbd1 fix: fail requests under way when the desktop app closes its connections, and forget client certificates per account 2026-11-04 00:56:09 +01:00
Linus Rath d0a636416d docs: say where quick compose opens its window in the pop-out notes 2026-11-03 23:35:23 +01:00
Linus Rath 3da18cc2c0 feat: set the quick compose keys in the desktop settings and move a composer back into the main window 2026-11-03 23:25:10 +01:00
Linus Rath 8549e3c4c6 feat: translate the desktop app's client certificate picker and forget chosen certificates at sign-out and account switch 2026-11-03 23:21:56 +01:00
Linus Rath 54bda3ef3d Merge branch 'feat/do-packaging' into feat/desktop-offline
# Conflicts:
#	components/desktop/desktop-host.tsx
#	lib/desktop/languages.ts
2026-11-03 22:02:10 +01:00
Linus Rath 43ba229c7d Merge branch 'feat/do-perf-guard-2' into feat/desktop-offline 2026-11-03 21:50:37 +01:00
Linus Rath 2b4a1171ab fix: show the spelling and unsent-mail labels in the desktop app instead of their raw keys 2026-11-03 21:50:09 +01:00
Linus Rath 7509bd9f53 Merge branch 'main' into feat/desktop-offline 2026-11-03 21:37:32 +01:00
Linus Rath d651ae857c Merge remote-tracking branch 'origin/main' into feat/do-perf-guard 2026-11-03 21:34:59 +01:00
Linus Rath a89cae5f28 fix: show the page skeleton from the first frame again, with or without an app lock 2026-11-03 21:33:51 +01:00
Linus Rath b4bcce2b01 Merge branch 'main' into feat/desktop-offline 2026-11-03 19:53:36 +01:00
Linus Rath 423fe28b0b Merge branch 'main' into feat/do-ci-fix 2026-11-03 19:50:46 +01:00
Linus Rath 1efe9bc8b4 test: tell reminders of two accounts apart by uid, since one meeting in both rings once 2026-11-03 19:49:57 +01:00
Linus Rath d890addbf4 test: register devices a second apart in the cap test, since rows of one millisecond have no oldest 2026-11-03 19:49:56 +01:00
Linus Rath ac2f7cba2b test: allow keystore as the one bare plugin permission, since it has no actions and the S/MIME manifest uses the name 2026-11-03 19:49:56 +01:00
Linus Rath fe3c213cb9 test: spell out the device policy defaults, since the offline caps are numbers where 0 means no cap 2026-11-03 19:49:55 +01:00
Linus Rath 984e6fa8d9 fix: label device and pop-out requests in metrics and error reports 2026-11-03 19:49:55 +01:00
Linus Rath 3f59af9c31 fix: delete offline mail right away when the local store doesn't answer 2026-11-03 19:49:55 +01:00
Linus Rath 26c009c302 feat: send the updater's translated text with the desktop menu labels 2026-11-03 19:45:23 +01:00
Linus Rath 529d334496 Merge branch 'fix/ui-bug-hunt' 2026-11-03 19:44:46 +01:00
Linus Rath b8560579a4 Merge branch 'feat/do-import' into feat/desktop-offline
# Conflicts:
#	lib/desktop/types.ts
2026-11-03 19:44:43 +01:00
Linus Rath a96c66fa5e Merge branch 'main' into feat/do-packaging
# Conflicts:
#	components/settings/general-settings.tsx
#	lib/desktop/types.ts
2026-11-03 19:37:41 +01:00
Linus Rath 1e9afb733a fix: let the Docker image build see the script its Next config imports 2026-11-03 19:19:35 +01:00
Linus Rath b92b488e39 fix: stop a local import losing messages on a held file and name what a resume leaves out
Fixes from the review of the desktop import.

- A message another program holds is no longer recorded as deleted. Only a
  real absence moves the import past it; anything else is tried again and
  then reported as a failure, and the next run reads it.
- A resume that can't read some folders names them in a toast with a choice
  to stop trying, keeps the job open and retries only those at the next start.
  Files chosen by hand in the same dialog are named, since they can't come
  back by themselves.
- A wipe or sign-out releases the job in the shell before the record goes.
  Leaving the dialog without starting releases the confirmed files. Job
  records are per account, and a start is refused while another window holds
  that account's job.
- Dedupe goes by the bytes without state headers: a reused Message-ID of the
  same length dropped a real message. Older records still count, so nothing
  goes in twice.
- A lost connection on a folder or Email/import pauses instead of counting
  towards the failures that stop an import.
- The taskbar goes through `lib/desktop/taskbar-progress.ts`.

Test changes: the taskbar test now renders the host, because its helper in
`local-import-job.ts` is gone, and the dedupe tests use `check`, which replaced
`keyFor` and `has`.
2026-11-03 19:17:38 +01:00
Linus Rath 5849f9dc42 Merge branch 'main' into feat/desktop-offline 2026-11-03 19:07:04 +01:00
Linus Rath 151cedf992 Merge branch 'feat/do-app-lock' into feat/desktop-offline 2026-11-03 18:46:05 +01:00