From 1836e673e7b4fc0c1daa84a61bf27b53f5a41e35 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 11 Aug 2026 17:20:54 +0200 Subject: [PATCH] fix(a11y): name account controls per account, stop hardcoding white on accent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A-04: every account rendered a folder toggle labelled "Toggle account folders", so three accounts gave three controls a screen reader reads identically. The address is in the label now, and the account link is named explicitly rather than by a `truncate` span that CSS can cut mid-address. A-07 (second half): computing --rgb-accent-ink by luminance achieves nothing while 63 call sites paint `text-white` on `bg-accent` directly. They now use text-accent-ink and inherit the measured choice. The two left behind are white over a black gradient and over a danger fill, which are not the accent. H-05: the search box kept a stale query when a folder was clicked — the input survives the Turbo visit and a folder page has no `q` to overwrite it with, so the box claimed a filter the list below it had not applied. It now tracks `?q=` in the address bar, which is also right on the way back in. Co-Authored-By: Claude Fable 5 --- assets/controllers/mail/search_controller.js | 44 +++++++++++++++++++ .../rules/rule_builder_controller.js | 2 +- templates/_partials/_account_list.html.twig | 17 +++++-- templates/_partials/_list_toolbar.html.twig | 4 +- templates/_partials/_modal_form.html.twig | 2 +- templates/_partials/_sidebar.html.twig | 4 +- templates/_partials/_thread_row.html.twig | 2 +- templates/_partials/_topbar.html.twig | 2 +- templates/account/_edit_modal.html.twig | 2 +- templates/account/_form_modal.html.twig | 2 +- templates/admin/_db_frame.html.twig | 2 +- templates/admin/_live_frame.html.twig | 4 +- templates/admin/backup/_frame.html.twig | 4 +- templates/admin/push/_frame.html.twig | 2 +- templates/admin/reset_done.html.twig | 2 +- templates/calendar/_agenda_shell.html.twig | 2 +- templates/calendar/_event_modal.html.twig | 2 +- templates/calendar/_ics_import.html.twig | 2 +- templates/calendar/_ics_subscribe.html.twig | 2 +- templates/calendar/_invite_card.html.twig | 2 +- templates/calendar/_month_shell.html.twig | 2 +- templates/calendar/_proposal_card.html.twig | 2 +- templates/calendar/_subscribe.html.twig | 2 +- templates/calendar/_time_grid_shell.html.twig | 2 +- templates/calendar/_toolbar.html.twig | 2 +- templates/calendar/_toolbar_shell.html.twig | 2 +- templates/compose/_no_account.html.twig | 2 +- .../device_pair/_pairing.stream.html.twig | 2 +- templates/integration/_picker.html.twig | 2 +- templates/integration/_row.html.twig | 2 +- templates/integration/_tile.html.twig | 2 +- templates/mail/_reply_zone.html.twig | 2 +- templates/onboarding/_done.html.twig | 2 +- templates/onboarding/_wizard.html.twig | 2 +- templates/onboarding/steps/_account.html.twig | 2 +- .../onboarding/steps/_integrations.html.twig | 2 +- .../onboarding/steps/_security.html.twig | 6 +-- templates/security/2fa_login.html.twig | 2 +- templates/security/login.html.twig | 2 +- templates/settings/_aliases.html.twig | 2 +- templates/settings/_app_passwords.html.twig | 4 +- templates/settings/_calendars.html.twig | 2 +- templates/settings/_filters.html.twig | 2 +- templates/settings/_labels.html.twig | 2 +- templates/settings/_notifications.html.twig | 2 +- templates/settings/_profile.html.twig | 2 +- templates/settings/_security.html.twig | 6 +-- templates/settings/filters/_editor.html.twig | 2 +- templates/settings/index.html.twig | 2 +- .../settings/sharing/_booking_form.html.twig | 4 +- .../settings/sharing/_link_form.html.twig | 2 +- templates/settings/sharing/_lists.html.twig | 4 +- templates/setup/install.html.twig | 2 +- templates/setup/restore.html.twig | 6 +-- translations/messages.de.yaml | 3 +- translations/messages.en.yaml | 3 +- translations/messages.en_PI.yaml | 3 +- worktree-agent-aeee376464efa3888/login.sh | 9 ++++ 58 files changed, 138 insertions(+), 71 deletions(-) create mode 100644 worktree-agent-aeee376464efa3888/login.sh diff --git a/assets/controllers/mail/search_controller.js b/assets/controllers/mail/search_controller.js index 6aca00d1..71f6d3fd 100644 --- a/assets/controllers/mail/search_controller.js +++ b/assets/controllers/mail/search_controller.js @@ -64,11 +64,55 @@ export default class extends Controller { connect() { this._boundOutside = this._handleOutsideClick.bind(this); document.addEventListener("click", this._boundOutside, { capture: true }); + + // The box must always say what the results below it were filtered by. + // Clicking a folder after a search used to leave the query sitting in + // the box above an unfiltered list — the search input survives the + // visit, and the folder page has no `q` to overwrite it with, so the + // box claimed a filter that was not applied. + // + // Synced from the URL rather than cleared on navigation, because the + // rule is not "clear it when leaving search" — it is "the box shows the + // query in the address bar". That is also true going the other way: a + // link straight to /mail/search?q=x, a reload, or back into a search + // from a folder all fill the box in, and none of them are a case + // clearing logic would have covered. + this._boundSync = this.#syncToUrl.bind(this); + this.#syncToUrl(); + + // connect() alone is not enough: the element can survive a Turbo visit, + // in which case the controller is never re-connected and only the URL + // changed. + document.addEventListener("turbo:load", this._boundSync); + document.addEventListener("turbo:frame-load", this._boundSync); } disconnect() { clearTimeout(this.#debounce); document.removeEventListener("click", this._boundOutside, { capture: true }); + document.removeEventListener("turbo:load", this._boundSync); + document.removeEventListener("turbo:frame-load", this._boundSync); + } + + /** Make the box agree with `?q=` in the address bar. */ + #syncToUrl() { + if (false === this.hasInputTarget) { + return; + } + + // Never yank the text out from under someone mid-type. A frame load can + // land while the box has focus — the list refreshing underneath is the + // ordinary case — and the address bar is not the authority on a query + // that has not been submitted yet. + if (document.activeElement === this.inputTarget) { + return; + } + + const query = new URLSearchParams(window.location.search).get("q") ?? ""; + + if (this.inputTarget.value !== query) { + this.inputTarget.value = query; + } } // ── Input events ────────────────────────────────────────────────────── diff --git a/assets/controllers/rules/rule_builder_controller.js b/assets/controllers/rules/rule_builder_controller.js index 41f42614..ca79b278 100644 --- a/assets/controllers/rules/rule_builder_controller.js +++ b/assets/controllers/rules/rule_builder_controller.js @@ -98,7 +98,7 @@ export default class extends Controller { b.className = "px-2.5 h-7 text-xs font-medium transition-colors cursor-pointer " + (node.operator === op.value - ? "bg-accent text-white" + ? "bg-accent text-accent-ink" : "text-ink-soft hover:bg-hover") b.addEventListener("click", () => { this._at(path).operator = op.value diff --git a/templates/_partials/_account_list.html.twig b/templates/_partials/_account_list.html.twig index f60da8e8..e6e9a4eb 100644 --- a/templates/_partials/_account_list.html.twig +++ b/templates/_partials/_account_list.html.twig @@ -20,10 +20,15 @@ not the anchor: on the anchor the pill stops before the chevron and cuts the row in half. #} diff --git a/templates/account/_form_modal.html.twig b/templates/account/_form_modal.html.twig index 03aab112..aa86e2c3 100644 --- a/templates/account/_form_modal.html.twig +++ b/templates/account/_form_modal.html.twig @@ -90,7 +90,7 @@ diff --git a/templates/admin/_db_frame.html.twig b/templates/admin/_db_frame.html.twig index 8468b4b3..ad51c4d5 100644 --- a/templates/admin/_db_frame.html.twig +++ b/templates/admin/_db_frame.html.twig @@ -77,7 +77,7 @@ diff --git a/templates/admin/_live_frame.html.twig b/templates/admin/_live_frame.html.twig index 8502d9a2..eb4eb5bf 100644 --- a/templates/admin/_live_frame.html.twig +++ b/templates/admin/_live_frame.html.twig @@ -79,7 +79,7 @@ data-turbo-confirm="{{ 'admin.maintenance.restart_confirm'|trans }}" class="mt-2"> @@ -489,7 +489,7 @@
diff --git a/templates/admin/backup/_frame.html.twig b/templates/admin/backup/_frame.html.twig index 280bdb49..afd33eff 100644 --- a/templates/admin/backup/_frame.html.twig +++ b/templates/admin/backup/_frame.html.twig @@ -66,7 +66,7 @@ is half-typed. @@ -139,7 +139,7 @@ is half-typed.
diff --git a/templates/admin/push/_frame.html.twig b/templates/admin/push/_frame.html.twig index d81c261b..c3f9a9bc 100644 --- a/templates/admin/push/_frame.html.twig +++ b/templates/admin/push/_frame.html.twig @@ -98,7 +98,7 @@ poll would empty a field mid-paste.
diff --git a/templates/admin/reset_done.html.twig b/templates/admin/reset_done.html.twig index 41b9463e..d9031130 100644 --- a/templates/admin/reset_done.html.twig +++ b/templates/admin/reset_done.html.twig @@ -62,7 +62,7 @@ they make lands on /install with no memory of what happened here. {% endif %} + class="mt-7 block w-full text-center bg-accent hover:bg-accent-strong text-accent-ink text-sm font-medium py-2 rounded-lg transition-colors"> {{ 'admin.reset.done.continue'|trans }}
diff --git a/templates/calendar/_agenda_shell.html.twig b/templates/calendar/_agenda_shell.html.twig index 1d4fec24..573a458f 100644 --- a/templates/calendar/_agenda_shell.html.twig +++ b/templates/calendar/_agenda_shell.html.twig @@ -83,7 +83,7 @@ Blocks, rendered inside the day loop and able to read `dayKey` and `dayEntries`:
{% if isToday %}
+ bg-accent text-accent-ink text-sm font-semibold tabular-nums"> {{ dayKey|date('j') }}
{% else %} diff --git a/templates/calendar/_event_modal.html.twig b/templates/calendar/_event_modal.html.twig index 638874d9..dc5da499 100644 --- a/templates/calendar/_event_modal.html.twig +++ b/templates/calendar/_event_modal.html.twig @@ -437,7 +437,7 @@ behaviour. diff --git a/templates/calendar/_ics_import.html.twig b/templates/calendar/_ics_import.html.twig index 81355493..5a47e3fe 100644 --- a/templates/calendar/_ics_import.html.twig +++ b/templates/calendar/_ics_import.html.twig @@ -106,7 +106,7 @@ Variables: {% if calendars is not empty %} diff --git a/templates/calendar/_ics_subscribe.html.twig b/templates/calendar/_ics_subscribe.html.twig index 97a4f695..fbf0e24c 100644 --- a/templates/calendar/_ics_subscribe.html.twig +++ b/templates/calendar/_ics_subscribe.html.twig @@ -106,7 +106,7 @@ Variables: transition-colors duration-100">{{ 'form.cancel'|trans }} diff --git a/templates/calendar/_invite_card.html.twig b/templates/calendar/_invite_card.html.twig index 6e3ab9f1..852a9c74 100644 --- a/templates/calendar/_invite_card.html.twig +++ b/templates/calendar/_invite_card.html.twig @@ -94,7 +94,7 @@ Variables: diff --git a/templates/calendar/_subscribe.html.twig b/templates/calendar/_subscribe.html.twig index eef50742..ed6c3472 100644 --- a/templates/calendar/_subscribe.html.twig +++ b/templates/calendar/_subscribe.html.twig @@ -143,7 +143,7 @@ Variables: {% if error is null %} diff --git a/templates/calendar/_time_grid_shell.html.twig b/templates/calendar/_time_grid_shell.html.twig index b476246b..8f578d84 100644 --- a/templates/calendar/_time_grid_shell.html.twig +++ b/templates/calendar/_time_grid_shell.html.twig @@ -164,7 +164,7 @@ one) `placed`: {% if isToday %} + bg-accent text-accent-ink text-xs font-semibold tabular-nums"> {{ dayKey|date('j') }} {% else %} diff --git a/templates/calendar/_toolbar.html.twig b/templates/calendar/_toolbar.html.twig index e66fcef6..9a5cb2ef 100644 --- a/templates/calendar/_toolbar.html.twig +++ b/templates/calendar/_toolbar.html.twig @@ -55,7 +55,7 @@ calendar has no ends, so it never does. data-ui--modal-src-value="{{ path('app_calendar_event_new') }}" data-ui--modal-title-value="{{ 'calendar.event.new'|trans }}" class="w-7 h-7 flex items-center justify-center rounded-lg shrink-0 - bg-accent text-white hover:opacity-90 transition-opacity" + bg-accent text-accent-ink hover:opacity-90 transition-opacity" aria-label="{{ 'calendar.event.new'|trans }}" > {% endblock %} diff --git a/templates/calendar/_toolbar_shell.html.twig b/templates/calendar/_toolbar_shell.html.twig index 9a9f6f53..93fea3bc 100644 --- a/templates/calendar/_toolbar_shell.html.twig +++ b/templates/calendar/_toolbar_shell.html.twig @@ -144,7 +144,7 @@ Blocks: {% if compact %}aria-label="{{ label }}" title="{{ label }}"{% endif %} class="flex items-center justify-center text-xs transition-colors {{ compact ? 'w-7 h-7' : 'px-2.5 py-1' }} - {{ candidate == view ? 'bg-accent text-white' : 'text-ink-muted hover:bg-hover hover:text-ink' }}" + {{ candidate == view ? 'bg-accent text-accent-ink' : 'text-ink-muted hover:bg-hover hover:text-ink' }}" > {%- if compact -%} diff --git a/templates/compose/_no_account.html.twig b/templates/compose/_no_account.html.twig index 0af4a1df..6d4576c1 100644 --- a/templates/compose/_no_account.html.twig +++ b/templates/compose/_no_account.html.twig @@ -14,7 +14,7 @@ to give it. A dead end with a way out beats a stack trace.

{{ 'compose.no_account.body'|trans }}

{{ 'compose.no_account.cta'|trans }} diff --git a/templates/device_pair/_pairing.stream.html.twig b/templates/device_pair/_pairing.stream.html.twig index 392bd22a..9c2d2008 100644 --- a/templates/device_pair/_pairing.stream.html.twig +++ b/templates/device_pair/_pairing.stream.html.twig @@ -29,7 +29,7 @@ opens directly. #} + bg-accent hover:bg-accent-strong text-accent-ink transition-colors"> {{ 'settings.device_pairing.open_in_app'|trans }} diff --git a/templates/integration/_picker.html.twig b/templates/integration/_picker.html.twig index 2ebb2fe0..3d7c4e29 100644 --- a/templates/integration/_picker.html.twig +++ b/templates/integration/_picker.html.twig @@ -229,7 +229,7 @@ gap under the shortcuts row. diff --git a/templates/integration/_row.html.twig b/templates/integration/_row.html.twig index e9548474..af9b055c 100644 --- a/templates/integration/_row.html.twig +++ b/templates/integration/_row.html.twig @@ -117,7 +117,7 @@ like it needed a decision. data-integration--integration-picker-target="mode"> diff --git a/templates/integration/_tile.html.twig b/templates/integration/_tile.html.twig index a8ce0908..cf0e8cda 100644 --- a/templates/integration/_tile.html.twig +++ b/templates/integration/_tile.html.twig @@ -41,7 +41,7 @@ selection, which pulled its corners away from the ring. {% endif %} diff --git a/templates/mail/_reply_zone.html.twig b/templates/mail/_reply_zone.html.twig index bec60f73..cce48fe6 100644 --- a/templates/mail/_reply_zone.html.twig +++ b/templates/mail/_reply_zone.html.twig @@ -71,7 +71,7 @@ The action buttons hide themselves while a compose card is open; see the data-action="click->compose--inline-send#cancel" class="inline-flex items-center gap-2 px-4 py-2 rounded-full text-sm font-medium text-accent bg-accent-soft border border-accent/30 - hover:bg-accent hover:text-white transition-colors cursor-pointer" + hover:bg-accent hover:text-accent-ink transition-colors cursor-pointer" > {{ 'compose.sending'|trans }} diff --git a/templates/onboarding/_done.html.twig b/templates/onboarding/_done.html.twig index 2473b917..86b03193 100644 --- a/templates/onboarding/_done.html.twig +++ b/templates/onboarding/_done.html.twig @@ -30,7 +30,7 @@ that does. + bg-accent hover:bg-accent-strong text-accent-ink transition-colors cursor-pointer"> {{ 'settings.security.codes.copy'|trans }} @@ -106,7 +106,7 @@ full navigation to a step URL renders it unstyled. value="1" id="onboarding-2fa-confirm" class="shrink-0 inline-flex items-center gap-2 px-3 h-9 rounded-lg text-sm font-medium - bg-accent hover:bg-accent-strong text-white transition-colors cursor-pointer"> + bg-accent hover:bg-accent-strong text-accent-ink transition-colors cursor-pointer"> {{ 'settings.security.enrol.submit'|trans }} @@ -128,7 +128,7 @@ full navigation to a step URL renders it unstyled. + bg-accent hover:bg-accent-strong text-accent-ink transition-colors"> {{ 'settings.security.enable'|trans }} diff --git a/templates/security/2fa_login.html.twig b/templates/security/2fa_login.html.twig index 9b67d38f..3ca4ccc0 100644 --- a/templates/security/2fa_login.html.twig +++ b/templates/security/2fa_login.html.twig @@ -94,7 +94,7 @@ diff --git a/templates/security/login.html.twig b/templates/security/login.html.twig index 5943a7fd..b0d026b7 100644 --- a/templates/security/login.html.twig +++ b/templates/security/login.html.twig @@ -95,7 +95,7 @@ diff --git a/templates/settings/_aliases.html.twig b/templates/settings/_aliases.html.twig index 22dc4e72..9734b7f6 100644 --- a/templates/settings/_aliases.html.twig +++ b/templates/settings/_aliases.html.twig @@ -45,7 +45,7 @@ {{ form_widget(aliasForm.address) }} diff --git a/templates/settings/_app_passwords.html.twig b/templates/settings/_app_passwords.html.twig index dbeb2cc2..1729e8fb 100644 --- a/templates/settings/_app_passwords.html.twig +++ b/templates/settings/_app_passwords.html.twig @@ -29,7 +29,7 @@ @@ -90,7 +90,7 @@ single field is, and a label would push this inline row onto two lines. diff --git a/templates/settings/_calendars.html.twig b/templates/settings/_calendars.html.twig index 10e60bd4..37e7bb98 100644 --- a/templates/settings/_calendars.html.twig +++ b/templates/settings/_calendars.html.twig @@ -64,7 +64,7 @@ Variables: data-action="click->ui--modal#open" data-ui--modal-title-value="{{ 'calendar.form.add'|trans }}" data-ui--modal-src-value="{{ path('app_settings_calendar_new') }}" - class="inline-flex items-center gap-1.5 px-2.5 h-8 rounded-lg text-xs font-medium bg-accent hover:bg-accent-strong text-white transition-colors cursor-pointer" + class="inline-flex items-center gap-1.5 px-2.5 h-8 rounded-lg text-xs font-medium bg-accent hover:bg-accent-strong text-accent-ink transition-colors cursor-pointer" > {{ 'calendar.form.add'|trans }} diff --git a/templates/settings/_filters.html.twig b/templates/settings/_filters.html.twig index 4fa98d68..61cd05f7 100644 --- a/templates/settings/_filters.html.twig +++ b/templates/settings/_filters.html.twig @@ -34,7 +34,7 @@ Variables: + class="inline-flex items-center gap-1.5 px-2.5 h-8 rounded-lg text-xs font-medium bg-accent hover:bg-accent-strong text-accent-ink transition-colors cursor-pointer"> {{ 'settings.filters.add'|trans }} diff --git a/templates/settings/_labels.html.twig b/templates/settings/_labels.html.twig index 62658e49..924b11b3 100644 --- a/templates/settings/_labels.html.twig +++ b/templates/settings/_labels.html.twig @@ -23,7 +23,7 @@ Variables: data-action="click->ui--modal#open" data-ui--modal-title-value="{{ 'sidebar.labels.add'|trans }}" data-ui--modal-src-value="{{ path('app_label_new') }}" - class="inline-flex items-center gap-1.5 px-2.5 h-8 rounded-lg text-xs font-medium bg-accent hover:bg-accent-strong text-white transition-colors cursor-pointer" + class="inline-flex items-center gap-1.5 px-2.5 h-8 rounded-lg text-xs font-medium bg-accent hover:bg-accent-strong text-accent-ink transition-colors cursor-pointer" > {{ 'sidebar.labels.add'|trans }} diff --git a/templates/settings/_notifications.html.twig b/templates/settings/_notifications.html.twig index 188bf94a..6ceeaf25 100644 --- a/templates/settings/_notifications.html.twig +++ b/templates/settings/_notifications.html.twig @@ -32,7 +32,7 @@ data-settings--web-push-target="toggle" data-action="click->settings--web-push#toggle" class="shrink-0 inline-flex items-center gap-2 px-3 h-9 rounded-lg text-sm font-medium - bg-accent hover:bg-accent-strong text-white transition-colors cursor-pointer + bg-accent hover:bg-accent-strong text-accent-ink transition-colors cursor-pointer disabled:cursor-not-allowed disabled:opacity-40"> {{ 'settings.notifications.toggle'|trans }} diff --git a/templates/settings/_profile.html.twig b/templates/settings/_profile.html.twig index 5c629148..48ef5340 100644 --- a/templates/settings/_profile.html.twig +++ b/templates/settings/_profile.html.twig @@ -25,7 +25,7 @@ find. @@ -238,7 +238,7 @@ @@ -268,7 +268,7 @@ + bg-accent hover:bg-accent-strong text-accent-ink transition-colors"> {{ 'settings.security.enable'|trans }} diff --git a/templates/settings/filters/_editor.html.twig b/templates/settings/filters/_editor.html.twig index daa9e4eb..1b7c9ba4 100644 --- a/templates/settings/filters/_editor.html.twig +++ b/templates/settings/filters/_editor.html.twig @@ -205,7 +205,7 @@ Variables: {{ 'form.cancel'|trans }} diff --git a/templates/settings/index.html.twig b/templates/settings/index.html.twig index 513797a3..da2513ec 100644 --- a/templates/settings/index.html.twig +++ b/templates/settings/index.html.twig @@ -387,7 +387,7 @@ data-ui--modal-title-value="{{ 'sidebar.accounts.add'|trans }}" data-ui--modal-src-value="{{ path('app_account_new') }}" class="inline-flex items-center gap-2 px-3 h-9 rounded-lg text-sm font-medium - bg-accent hover:bg-accent-strong text-white transition-colors cursor-pointer" + bg-accent hover:bg-accent-strong text-accent-ink transition-colors cursor-pointer" > {{ 'sidebar.accounts.add'|trans }} diff --git a/templates/settings/sharing/_booking_form.html.twig b/templates/settings/sharing/_booking_form.html.twig index eae6a4b1..56518137 100644 --- a/templates/settings/sharing/_booking_form.html.twig +++ b/templates/settings/sharing/_booking_form.html.twig @@ -130,7 +130,7 @@ Variables:
{% for weekday in 1..7 %}
diff --git a/templates/settings/sharing/_link_form.html.twig b/templates/settings/sharing/_link_form.html.twig index 65b3a8e5..a9093326 100644 --- a/templates/settings/sharing/_link_form.html.twig +++ b/templates/settings/sharing/_link_form.html.twig @@ -159,7 +159,7 @@ Variables: text-ink-soft bg-field border border-field hover:bg-hover transition-colors">{{ 'form.cancel'|trans }} diff --git a/templates/settings/sharing/_lists.html.twig b/templates/settings/sharing/_lists.html.twig index b4eaaeb4..fb854652 100644 --- a/templates/settings/sharing/_lists.html.twig +++ b/templates/settings/sharing/_lists.html.twig @@ -67,7 +67,7 @@ Variables: data-action="click->ui--modal#open" data-ui--modal-title-value="{{ 'calendar.share.form.add'|trans }}" data-ui--modal-src-value="{{ path('app_settings_sharing_link_new') }}" - class="inline-flex items-center gap-1.5 px-2.5 h-8 rounded-lg text-xs font-medium bg-accent hover:bg-accent-strong text-white transition-colors cursor-pointer" + class="inline-flex items-center gap-1.5 px-2.5 h-8 rounded-lg text-xs font-medium bg-accent hover:bg-accent-strong text-accent-ink transition-colors cursor-pointer" > {{ 'calendar.share.form.add'|trans }} @@ -160,7 +160,7 @@ Variables: data-action="click->ui--modal#open" data-ui--modal-title-value="{{ 'calendar.booking.form.add'|trans }}" data-ui--modal-src-value="{{ path('app_settings_sharing_booking_new') }}" - class="inline-flex items-center gap-1.5 px-2.5 h-8 rounded-lg text-xs font-medium bg-accent hover:bg-accent-strong text-white transition-colors cursor-pointer" + class="inline-flex items-center gap-1.5 px-2.5 h-8 rounded-lg text-xs font-medium bg-accent hover:bg-accent-strong text-accent-ink transition-colors cursor-pointer" > {{ 'calendar.booking.form.add'|trans }} diff --git a/templates/setup/install.html.twig b/templates/setup/install.html.twig index b7aea900..b5769f2b 100644 --- a/templates/setup/install.html.twig +++ b/templates/setup/install.html.twig @@ -55,7 +55,7 @@ password in a max-w-sm card reads as a wall. diff --git a/templates/setup/restore.html.twig b/templates/setup/restore.html.twig index 1b9632ba..9388c69b 100644 --- a/templates/setup/restore.html.twig +++ b/templates/setup/restore.html.twig @@ -89,7 +89,7 @@ action and is never hidden. + class="mt-4 block w-full text-center bg-accent hover:bg-accent-strong text-accent-ink text-sm font-medium py-2 rounded-lg transition-colors"> {{ (hasUsers ? 'setup.restore.sign_in' : 'setup.restore.continue')|trans }} {% endset %} @@ -127,7 +127,7 @@ action and is never hidden. @@ -156,7 +156,7 @@ action and is never hidden. diff --git a/translations/messages.de.yaml b/translations/messages.de.yaml index 2cda2c0c..971fe0c0 100644 --- a/translations/messages.de.yaml +++ b/translations/messages.de.yaml @@ -2094,7 +2094,8 @@ sidebar: heading: Konten loading: Wird geladen… none: Noch keine Konten - toggle: Kontoordner ein-/ausklappen + open: '%account% öffnen' + toggle: 'Ordner in %account% ein-/ausklappen' compose: Schreiben labels: add: Label erstellen diff --git a/translations/messages.en.yaml b/translations/messages.en.yaml index 486f107c..4519c1ca 100644 --- a/translations/messages.en.yaml +++ b/translations/messages.en.yaml @@ -2054,7 +2054,8 @@ sidebar: heading: Accounts loading: Loading… none: No accounts yet - toggle: Toggle account folders + open: 'Open %account%' + toggle: 'Show or hide folders in %account%' compose: Compose labels: add: Create label diff --git a/translations/messages.en_PI.yaml b/translations/messages.en_PI.yaml index a4524f2a..224425fe 100644 --- a/translations/messages.en_PI.yaml +++ b/translations/messages.en_PI.yaml @@ -1731,7 +1731,8 @@ sidebar: heading: Th' crew loading: Haulin' aboard… none: No crew yet - toggle: Open or close the crew's lockers + open: 'Board %account%' + toggle: 'Open or close the lockers in %account%' compose: Scribble labels: add: Hoist a new flag diff --git a/worktree-agent-aeee376464efa3888/login.sh b/worktree-agent-aeee376464efa3888/login.sh new file mode 100644 index 00000000..c6b2dbf4 --- /dev/null +++ b/worktree-agent-aeee376464efa3888/login.sh @@ -0,0 +1,9 @@ +#!/bin/sh +J=/tmp/claude-1000/-home-karatektus-plmailstuff/b28e1914-8509-423e-8a57-1bb9498e8e5c/scratchpad/c2.txt +rm -f "$J" +curl -s -c "$J" -o /dev/null http://127.0.0.1:8013/login +curl -s -b "$J" -c "$J" -X POST \ + -H 'Sec-Fetch-Site: same-origin' \ + -d 'email=e2e@plmail.test' -d 'password=testpass123' -d '_csrf_token=csrf-token' \ + -o /dev/null -w 'login: %{http_code} -> %{redirect_url}\n' \ + http://127.0.0.1:8013/login