Linus Rath
0b0e161e4c
fix: hide the tab bar over an open message or composer on a phone held sideways
2026-11-03 09:36:10 +01:00
Linus Rath
b086f45511
fix: give the Mountain View search field the free width and keep it clear of the bell at large text
2026-11-03 08:30:10 +01:00
Linus Rath
7061c55985
fix: keep a typed compose tab when the window crosses Pro's width, without a reload
2026-11-03 08:24:30 +01:00
Linus Rath
4c1150c7f8
fix: move a Pro tab wherever it is dropped and keep a split on the side it was dropped in RTL
2026-11-03 08:08:34 +01:00
Linus Rath
739f1f27f4
fix: draw focus rings inside list rows, tabs and menus and around the composer's text, where they were cut off
2026-11-03 07:59:05 +01:00
Linus Rath
c11f383fd7
fix: keep the Mountain View account card on screen on small phones
2026-11-03 07:41:54 +01:00
Linus Rath
3c1d179191
fix: dock the Mountain View compose window beside the side panel instead of over it
2026-11-03 07:33:22 +01:00
Linus Rath
f14fd9bbb9
fix: say when an admin page could not load instead of an endless skeleton or an empty list
2026-11-03 06:12:47 +01:00
Linus Rath
9415910977
fix: show the top of a marketplace extension after picking a version to preview from the table
2026-11-03 06:01:55 +01:00
Linus Rath
269e83690b
fix: stop true and false breaking across lines in the effective policy table
2026-11-03 05:48:08 +01:00
Linus Rath
3ce7482f1c
fix: keep long redirect addresses inside the OAuth setup dialog and space its first field from the text
2026-11-03 05:48:06 +01:00
Linus Rath
a529d09860
fix: show what an audit entry changed instead of undefined or object placeholders, and filter by plugin and theme actions
2026-11-03 05:40:31 +01:00
Linus Rath
8332793e85
fix: draw the focus ring of plugin form fields inside the frame so all four sides show
2026-11-03 05:20:47 +01:00
Linus Rath
00af75f99d
fix: wrap long addresses inside the plugin approval card
2026-11-03 05:19:52 +01:00
Linus Rath
f44bef7071
fix: stop the high-risk badge running under the switch in the plugin list on small phones
2026-11-03 05:19:51 +01:00
Linus Rath
1c4781e620
fix: give the update and manage buttons their own line in the marketplace installed list on phones
2026-11-03 05:19:50 +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
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
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
27e84b3c93
fix: show the app name and plugin name in a marketplace plugin's permissions
2026-11-02 23:33:57 +01:00
Linus Rath
6990abff45
fix: keep the proofreading forced-colours rules after the main forced-colours block #1397
2026-11-02 22:03:06 +01:00
Linus Rath
72117c8a71
Merge branch 'main' into feat/proofreading
...
# Conflicts:
# components/admin/admin-shell.tsx
2026-11-02 21:27:17 +01:00
Linus Rath
42d1143df1
fix: mark the plugin proxy's no-third-party refusal as the proxy's own error
2026-11-02 20:57:56 +01:00
Linus Rath
6055dac1cb
fix: keep proofreading text from plugins that shouldn't get it, and work it by keyboard #1397
...
A security and an accessibility review of the proofreading hook found
gaps, fixed here.
What leaves the browser:
- A checker gets a name for each composer of its own, not the composer's
id, so it can't reach the message through the other api.composer calls
after proofreading stops.
- Checking pauses while a plugin that can sign or encrypt is turned on but
still starting, and while the policy couldn't be fetched (the built-in
defaults could undo an admin's lock).
- No plugin can hold up turning proofreading off (onBeforeSettingChange).
- Suggestions can't carry zero-width, bidi or line-separator characters;
messages lose bidi overrides; a flood of annotations is cut off early.
- The notices name the plugin as installed, not a label it chose, and say
that text written before signing or encryption was turned on may
already have been checked.
- A checker registered during start-up no longer fails its first check.
Keyboard and screen readers:
- Escape in the issue panel closes the panel, not the message.
- Underlines carry aria-invalid, as the browser's own markers do.
- The focus goes somewhere sensible when a button or an issue goes away,
Tab past the popup's edges goes back to the text, and the shortcuts work
in the popup and the panel.
- Ctrl+' and Ctrl+; follow the character typed, so other layouts keep
their own keys (Ctrl+S on Dvorak), with Ä and Ö on German keyboards.
- The popup is described by its message, sits inside a modal composer,
fits narrow screens, and the panel fits a phone.
2026-11-02 20:26:21 +01:00
Linus Rath
0c8ca9ceff
fix: close the calendar column rule the merge left open
2026-11-02 20:13:27 +01:00
Linus Rath
0bacfb389e
Merge branch 'feat/boot-skeleton-mail' into feat/boot-skeleton
...
# Conflicts:
# app/boot-skeleton.css
# lib/boot-skeleton/boot-script.ts
2026-11-02 20:01:22 +01:00
Linus Rath
3db7b745d0
Merge branch 'feat/boot-skeleton-calendar' into feat/boot-skeleton
...
# Conflicts:
# app/boot-skeleton.css
# components/boot-skeleton/shell.tsx
2026-11-02 19:51:39 +01:00
Linus Rath
5fc65b47cc
feat: let admins require or turn off proofreading per group and plugin #1397
2026-11-02 19:46:01 +01:00
Linus Rath
e47eceb242
feat: draw the calendar toolbar's own words and task list in its skeleton
2026-11-02 19:42:52 +01:00
Linus Rath
90044b9d5a
perf: draw the mail skeleton's rows with less markup
2026-11-02 19:42:40 +01:00
Linus Rath
56678fd499
Merge branch 'feat/boot-skeleton-auth' into feat/boot-skeleton
...
# Conflicts:
# components/boot-skeleton/shell.tsx
2026-11-02 19:42:04 +01:00
Linus Rath
1d90e6f638
fix: keep skeleton placeholders visible on sidebars in dark mode
2026-11-02 19:40:30 +01:00
Linus Rath
a6572a9d47
test: check the sign-in callback shows the mail skeleton while it completes
2026-11-01 20:05:21 +01:00
Linus Rath
d2205b9c09
Merge branch 'feat/boot-skeleton-cfa' into feat/boot-skeleton
...
# Conflicts:
# app/boot-skeleton.css
2026-11-01 19:59:52 +01:00
Linus Rath
63e62865d6
Merge branch 'feat/boot-skeleton-settings' into feat/boot-skeleton
...
# Conflicts:
# app/boot-skeleton.css
2026-11-01 19:59:39 +01:00
Linus Rath
c06b4b5e28
feat: show the calendar's grid while the app loads
2026-11-01 19:48:20 +01:00
Linus Rath
b6ca61f8a7
feat: draw the new-contact form while the app loads on /contacts/new
2026-11-01 19:47:19 +01:00
Linus Rath
e113411300
feat: match the settings skeleton's section row to the open page
2026-11-01 19:46:59 +01:00
Linus Rath
13a5667577
fix: show the admin sign-in logo for the theme from the first paint
2026-11-01 19:42:51 +01:00
Linus Rath
1e8f64f36e
feat: show the mail skeleton while a mailto link opens
2026-11-01 19:40:21 +01:00
Linus Rath
d37624a314
feat: underline spelling and grammar issues from checker plugins #1397
2026-11-01 19:39:37 +01:00
Linus Rath
57c1d5d472
feat: show the contacts, files and plugin page shapes while the app loads
2026-11-01 19:36:09 +01:00
Linus Rath
e1cfc1d726
test: check the sign-in, admin and setup skeletons stand in for their spinners
2026-11-01 19:33:39 +01:00
Linus Rath
afe3fca08a
feat: draw the mail page's folders, list and reader while the app loads
2026-11-01 19:33:35 +01:00
Linus Rath
7efae37645
fix: mark the active Pro tab and draw the stored tab count in the skeleton
2026-11-01 19:27:43 +01:00
Linus Rath
f5bcc8d47d
feat: show the sign-in, admin and setup pages' shape while they load
2026-11-01 19:25:13 +01:00
Linus Rath
5166cd0a5a
feat: show the settings page's shape while the app loads
2026-11-01 19:24:13 +01:00