From 73233852609be06d3dfb71a35b1dc3e1756a560c Mon Sep 17 00:00:00 2001 From: Roz Date: Wed, 24 Jun 2026 13:21:59 +0200 Subject: [PATCH] feat(ui): add Settings tab with API key management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New /settings route (nav: Settings) housing API key CRUD against the management API. Create flow hands off to a one-time reveal modal — the raw jack_ key is shown once with copy-to-clipboard, since it's never retrievable again. Keys are identified by name (with #id fallback for unnamed); expiration is entered via presets (never/30d/90d/1y/custom, future-only) and rendered as a tri-state signal (never / expires-soon / expired). Edit patches metadata; the destructive action is 'Revoke' with a consequence-spelling confirm. --- apps/ui/app/components/ApiKeyForm.vue | 137 +++++++++++++++ apps/ui/app/layouts/default.vue | 1 + apps/ui/app/pages/settings.vue | 241 ++++++++++++++++++++++++++ apps/ui/app/types/management.ts | 20 +++ 4 files changed, 399 insertions(+) create mode 100644 apps/ui/app/components/ApiKeyForm.vue create mode 100644 apps/ui/app/pages/settings.vue diff --git a/apps/ui/app/components/ApiKeyForm.vue b/apps/ui/app/components/ApiKeyForm.vue new file mode 100644 index 0000000..8a375b7 --- /dev/null +++ b/apps/ui/app/components/ApiKeyForm.vue @@ -0,0 +1,137 @@ + + +