From 1850bc443182d4ed31b823fdbd00c7217587e850 Mon Sep 17 00:00:00 2001 From: Keysat Date: Sat, 6 Jun 2026 12:10:09 -0500 Subject: [PATCH] =?UTF-8?q?email:=20single-mailbox=20enroll=20field=20on?= =?UTF-8?q?=20Email=20Capture=20panel=20=E2=80=94=20v0.1.0:60?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a "Test with a single mailbox first" input (pre-filled with the admin's own address) + Enroll this mailbox button calling the enroll-one endpoint, so capture can be tried on one mailbox before enrolling the whole domain. runAction now sends an optional JSON body. Enroll-all stays. Co-Authored-By: Claude Opus 4.8 --- frontend/index.html | 36 ++++++++++++++++++++---- start9/0.4/startos/utils.ts | 5 ++-- start9/0.4/startos/versions/index.ts | 5 ++-- start9/0.4/startos/versions/v0.1.0.60.ts | 16 +++++++++++ 4 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 start9/0.4/startos/versions/v0.1.0.60.ts diff --git a/frontend/index.html b/frontend/index.html index b2ed1d0..d18c9b4 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -9955,6 +9955,7 @@ const [loading, setLoading] = useState(true); const [error, setError] = useState(''); const [busy, setBusy] = useState(''); + const [oneEmail, setOneEmail] = useState(() => user?.email || ''); const load = useCallback(async () => { let s; @@ -9991,12 +9992,14 @@ return () => { cancelled = true; }; }, [load]); - const runAction = async (key, endpoint, successMsg, confirmMsg) => { + const runAction = async (key, endpoint, successMsg, confirmMsg, body) => { if (busy) return; if (confirmMsg && !window.confirm(confirmMsg)) return; try { setBusy(key); - const res = await api(endpoint, { method: 'POST' }, token); + const opts = { method: 'POST' }; + if (body) opts.body = JSON.stringify(body); + const res = await api(endpoint, opts, token); onShowToast(typeof successMsg === 'function' ? successMsg(res) : successMsg, 'success'); } catch (err) { onShowToast(getErrorMessage(err, 'Action failed'), 'error'); @@ -10060,12 +10063,35 @@ {isAdmin && (
Actions
-
+
+ Test with a single mailbox first: +
+
+ setOneEmail(e.target.value)} + style={{ maxWidth: '260px' }} + /> +
+
+