Linus Rath
6f6370c7f6
fix: show the folder name in the Files header on a phone and keep Delete in sight
2026-11-03 05:19:31 +01:00
Linus Rath
5ac2d15afb
fix: keep the new event preview in its own week on a full month day
2026-11-03 05:19:30 +01:00
Linus Rath
38b950b240
fix: stop a sliver of next Monday showing at the edge of the week view
2026-11-03 05:19:29 +01:00
Linus Rath
6c8648109f
fix: stop cutting the participant count in half on short calendar events
2026-11-03 05:19:28 +01:00
Linus Rath
ff7713878b
fix: give agenda event titles room on a phone by putting the time on its own line
2026-11-03 05:19:27 +01:00
Linus Rath
5961fe9e90
fix: keep the reading pane readable when a wide list meets a smaller window
2026-11-03 05:19:19 +01:00
Linus Rath
7394006ce1
fix: keep the marketplace search readable when the toolbar runs out of room
2026-11-03 05:16:37 +01:00
Linus Rath
a1662dfaf3
fix: keep the login page's theme button clear of the card on small and landscape phones
2026-11-03 05:15:53 +01:00
Linus Rath
5ce2a591ad
fix: show dark logos on a dark surface in branding and bring a preview back after a URL that failed
2026-11-03 05:11:29 +01:00
Linus Rath
bba5ec9901
fix: show the full name in the search suggestions of a narrow list
2026-11-03 05:10:22 +01:00
Linus Rath
4bda73d9c6
fix: keep Settings on the phone tab bar when plugin pages fill it
2026-11-03 05:09:20 +01:00
Linus Rath
308178beda
fix: open each settings page at its top and keep the place in the phone's page list
2026-11-03 05:06:26 +01:00
Linus Rath
d9b9c97b58
fix: show marketplace screenshots larger than the thumbnail on phones and whole on short screens
2026-11-03 05:05:41 +01:00
Linus Rath
e3bd9aa6c5
fix: keep marketplace dialogs on screen on phones instead of pushed off the edge
2026-11-03 05:05:38 +01:00
Linus Rath
d9316101e8
fix: stop a theme card cutting its name next to the default badge
2026-11-03 05:02:43 +01:00
Linus Rath
494f2d5fff
fix: stop the filter page footer and rule summaries overflowing on a phone
2026-11-03 05:02:39 +01:00
Linus Rath
158fe588b1
fix: show the label name above its controls on a phone
2026-11-03 05:02:37 +01:00
Linus Rath
f5ed731b51
fix: keep settings selects and option buttons inside the page on small phones
2026-11-03 05:02:35 +01:00
Linus Rath
15725561cc
fix: move plugin toolbar buttons into the more menu when the reader toolbar is out of room
2026-11-03 05:02:05 +01:00
Linus Rath
0fd77edeca
fix: keep the composer's Close, panel button and Send reachable while a plugin panel lies over it
2026-11-03 05:01:08 +01:00
Linus Rath
97e6256c0e
fix: show the inbox in the demo when a category tab filters on a header
2026-11-03 04:51:20 +01:00
Linus Rath
03e7cd86f1
fix: print only the open message on Ctrl+P, without plugin panels or the app around it
2026-11-03 03:30:33 +01:00
Linus Rath
d82f677b9b
fix: stop the admin overview offering an older version as an update
2026-11-03 03:27:33 +01:00
Linus Rath
a2adddb4b7
ci: retry a failed source map upload before failing the build
2026-11-03 03:06:13 +01:00
Linus Rath
af32c846a2
fix: let plugins read the signature auto-insert toggles they may change
1.20.0
2026-11-03 02:46:51 +01:00
Linus Rath
600bf4fcf3
fix: keep a typed extra label header when the classification page first renders
2026-11-03 02:36:00 +01:00
Linus Rath
34e016f1c0
test: stop the server-state guard counting empty as-const tuples as state
2026-11-03 02:35:42 +01:00
Linus Rath
bf19f21eaf
test: give the composing settings test the useLocale the proofreading section needs
2026-11-03 02:35:24 +01:00
Linus Rath
5c0ffd7aff
fix: let plugins switch the signature auto-insert toggles and refuse the proofreading settings
2026-11-03 02:35:01 +01:00
Linus Rath
fcf94908b4
chore: release 1.20.0
2026-11-03 02:10:36 +01:00
Linus Rath
262a2e5999
Merge the AI assistant everywhere (plugin 2.2 host side)
2026-11-03 01:57:36 +01:00
Linus Rath
e2bc222f49
fix: load the assistant's calendar and settings calls on first use so plugin views don't load the calendar store
2026-11-03 01:54:32 +01:00
Linus Rath
5b4e740ba3
Merge branch 'main' into feat/assistant-everywhere
2026-11-03 01:50:22 +01:00
Linus Rath
ddbff7aeb7
Merge the assistant's Files (package D)
...
# Conflicts:
# components/email/__tests__/composer-plugin-edit.test.tsx
# lib/__tests__/plugin-projection.test.ts
2026-11-03 01:48:30 +01:00
Linus Rath
06764d0e0a
test: give the composer plugin tests' settings mock the calendar sync bridge
2026-11-03 01:38:42 +01:00
Linus Rath
553f7ee883
fix: start a plugin's api calls at once again, not a tick later
2026-11-03 01:38:42 +01:00
Linus Rath
cad10893e3
test: wait for the send confirmation to take focus before pressing Escape
2026-11-03 01:36:12 +01:00
Linus Rath
e9e07ddb64
Merge main into feat/assistant-everywhere
2026-11-03 01:35:57 +01:00
Linus Rath
cf512f0a4e
fix: check attachments, shared folders and limits in the assistant's Files calls
...
Fixes from the review of api.files:
- `files.attach` to a new draft runs `onBeforeAttachmentUpload` for each
file and the server's total size limit before `compose.open`, which
runs neither; refused files come back in `refused`
- a write is refused when a folder above the target is missing from the
listing, instead of counting it as not shared
- `onFileMove` reports the item as it was, from where it was, like the
Files app's own move
- writes are counted against the 20-a-minute limit before the drive is
listed, so refused writes count and cost no listing
- reads stop the download past 20 MB (`fetchBlobArrayBuffer` with a
limit) and answer `too_big` when the listed size was wrong
- when the server refuses the new content of a replaced file, the old
version's copy is taken out of the trash again
The two getText assertions on `fetchBlobArrayBuffer` now expect the
account (undefined for the own drive) and the byte limit, since the
call passes both.
2026-11-03 01:31:05 +01:00
Linus Rath
64aad7943f
test: give the composer test's settings mock the calendar sync bridge the calendar store registers
2026-11-03 01:31:05 +01:00
Linus Rath
d7cb895ebf
Merge branch 'feat/assistant-everywhere' into feat/assistant-d
...
# Conflicts:
# lib/__tests__/plugin-permission-coverage.test.ts
2026-11-03 01:19:42 +01:00
Linus Rath
55d9c81210
Merge more actions for the assistant (package C)
2026-11-03 01:13:47 +01:00
Linus Rath
6c3e68ce4e
Merge branch 'feat/assistant-everywhere' into feat/assistant-d
2026-11-03 01:01:29 +01:00
Linus Rath
270615c246
Merge more context for the assistant (package B)
2026-11-03 00:58:18 +01:00
Linus Rath
989cfc64a4
fix: offer a plugin the invitation and settings calls only once it was granted their permission
2026-11-03 00:55:50 +01:00
Linus Rath
8034b005b8
fix: keep archived messages in the Archive and in search results after a plugin's batch, and update folder counts
2026-11-03 00:53:35 +01:00
Linus Rath
37aaf05d6d
fix: spend a plugin's undo token only once its undo went through, so a failed undo can be tried again
2026-11-03 00:51:30 +01:00
Linus Rath
169100eb12
fix: take the setting names app.getSettings gives, and check hidden, gated and restricted settings on undo too
2026-11-03 00:47:35 +01:00
Linus Rath
8add856aac
fix: let plugins only switch off sender favicons and avatars in Junk
...
Both make the server fetch the sender's domain. The test that every
default value is allowed now also names senderFavicons (on by default,
which a plugin may no longer set); the rest of it is as it was.
2026-11-03 00:46:08 +01:00
Linus Rath
d973e9062a
fix: give a photo's date only from when it was taken, not when the file changed
...
exif.test.ts: the case "falls back to the file date" now expects no
date, since IFD0's DateTime is the file's change date, not the date
the photo was taken.
2026-11-03 00:45:56 +01:00