From b1ff8f516e60fc787014feb6c49cf6ee27410865 Mon Sep 17 00:00:00 2001
From: arc53-machine <232052973+arc53-machine@users.noreply.github.com>
Date: Sun, 20 Sep 2026 13:32:46 +0100
Subject: [PATCH] fix(frontend): access tokens dates and names render
unescaped, align the scopes block
i18next HTML-escaped interpolated values, so expiry dates showed as
26/09/2026 and token names containing & or quotes were mangled in
the created and revoke dialogs; React already escapes on render, so those
strings opt out like utils/streamingStatusUtils does. The scopes fieldset
drops the browser's default padding so it lines up with the other fields, and
the native checkboxes follow the dark colour scheme.
---
frontend/src/modals/AccessTokenCreatedModal.tsx | 6 +++++-
frontend/src/modals/CreateAccessTokenModal.tsx | 6 ++++--
frontend/src/settings/PersonalAccessTokens.tsx | 11 ++++++++---
frontend/src/settings/accessTokenUtils.test.ts | 7 +++++++
frontend/src/settings/accessTokenUtils.ts | 8 ++++++++
5 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/frontend/src/modals/AccessTokenCreatedModal.tsx b/frontend/src/modals/AccessTokenCreatedModal.tsx
index 66026edc..2b627f93 100644
--- a/frontend/src/modals/AccessTokenCreatedModal.tsx
+++ b/frontend/src/modals/AccessTokenCreatedModal.tsx
@@ -5,6 +5,7 @@ import { baseURL } from '../api/client';
import CopyButton from '../components/CopyButton';
import { Button } from '../components/ui/button';
import { Modal } from '../components/ui/modal';
+import { NO_ESCAPE } from '../settings/accessTokenUtils';
interface AccessTokenCreatedModalProps {
/** Plaintext secret; `null` keeps the modal closed. Held only in the parent's component state. */
@@ -49,7 +50,10 @@ export default function AccessTokenCreatedModal({
{t('settings.accessTokens.created.title')}