From fa15027f4d0750eef264632fe55e73ce10cab2cd Mon Sep 17 00:00:00 2001 From: Thomas Joise Date: Sun, 19 Jul 2026 01:31:53 +0530 Subject: [PATCH] =?UTF-8?q?feat(d28):=20clickable=20'Open=20=E2=86=97'=20l?= =?UTF-8?q?ink=20on=20module=20URL=20fields?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Any module service field holding an http(s) value now shows a direct 'Open ↗' link beside it on Client 360 — the RecoverX/CloudBackup/MobileApp portal + AWS-console shortcuts the founder asked for, working for any URL-valued field (no new type). Also (DB config, via PATCH /modules — audited, not code): extended the RecoverX, CloudBackup and MobileApp field-specs with the operational fields requested (workspace, portal URL, admin login, install date, payment status; S3 bucket / IAM user / folder / server for cloud; corp id / server / config for the mobile app). Co-Authored-By: Claude Fable 5 --- apps/hq-web/src/pages/ClientDetail.tsx | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/apps/hq-web/src/pages/ClientDetail.tsx b/apps/hq-web/src/pages/ClientDetail.tsx index 08e5fa9..35f96ff 100644 --- a/apps/hq-web/src/pages/ClientDetail.tsx +++ b/apps/hq-web/src/pages/ClientDetail.tsx @@ -1153,11 +1153,22 @@ function ModuleFieldsForm(props: { cm: ClientModule; fieldSpec: FieldDef[]; onCh {nonSecret.length > 0 && ( <>
- {nonSecret.map((f) => ( - - {control(f)} - - ))} + {nonSecret.map((f) => { + // A field holding an http(s) value gets a direct "Open ↗" link (portal/console shortcut). + const val = draft[f.key] ?? '' + const isUrl = /^https?:\/\//i.test(val.trim()) + return ( + + + {control(f)} + {isUrl && ( + Open ↗ + )} + + + ) + })}