From 0015f49c1ebfb88e5aa88e457ebf2eeb49348247 Mon Sep 17 00:00:00 2001 From: xarmian Date: Sat, 10 Oct 2026 17:34:24 -0400 Subject: [PATCH] fix(web): settings say whose they are, roles and grants explain themselves, webhooks say where they live (TASK-2255 C59/C60/C109) (#2030) C59: the user menu and the sidebar both said "Settings" and went to different pages. The workspace page is now "Workspace settings", the user menu says "Account settings", and each page names and links the other. Theme says it is saved in this browser only. C60: the invite form explains Owner, Editor and Viewer in one line each, and the share dialog says a share is not a membership. C109: plans sell a webhook quota and the web UI has no webhook screen; the Apps tab now says webhooks are managed with `pad webhook` or the API. C110 (MCP audit names) is a server-side join and lands separately. Claude-Session: https://claude.ai/code/session_01FAVXA5mJ5BNhKmv95jxQkQ --- web/src/lib/components/ShareDialog.svelte | 10 ++++++ web/src/lib/components/layout/TopBar.svelte | 3 +- .../[workspace]/settings/+page.svelte | 31 ++++++++++++++++++- web/src/routes/console/settings/+page.svelte | 13 +++++++- 4 files changed, 54 insertions(+), 3 deletions(-) diff --git a/web/src/lib/components/ShareDialog.svelte b/web/src/lib/components/ShareDialog.svelte index 8e963cfa2..563e0e637 100644 --- a/web/src/lib/components/ShareDialog.svelte +++ b/web/src/lib/components/ShareDialog.svelte @@ -266,6 +266,10 @@
+ +

+ Shares only this {type}: they can open it without joining the workspace. To give someone the whole workspace, invite them from Workspace settings. +

Workspaces + - Settings + Account settings {#if authStore.commerceAllowed} diff --git a/web/src/routes/[username]/[workspace]/settings/+page.svelte b/web/src/routes/[username]/[workspace]/settings/+page.svelte index d39e6ea3d..a15164d0f 100644 --- a/web/src/routes/[username]/[workspace]/settings/+page.svelte +++ b/web/src/routes/[username]/[workspace]/settings/+page.svelte @@ -955,8 +955,15 @@ {#if loading}
Loading settings...
{:else} +
-

Settings

+

Workspace settings

+

+ For this workspace and everyone in it. Your own profile, password and sign-in are in + Account settings. +

@@ -1046,6 +1053,7 @@

Theme

+

Saved in this browser only, for every workspace.

Appearance @@ -1290,6 +1298,13 @@ {inviting ? 'Inviting...' : 'Invite'}
+ +
    +
  • Owner: everything, including members, settings and deleting the workspace.
  • +
  • Editor: creates and edits items.
  • +
  • Viewer: reads only.
  • +
{#if inviteResult}

{inviteResult.message} @@ -1388,6 +1403,15 @@ {/key}

+ +
+

Webhooks

+

+ Webhooks are managed from the command line (pad webhook list, + create, delete, test) or the REST API, not from this page. +

+
{:else if activeTab === 'danger'}
@@ -1440,6 +1464,11 @@ ring is the browser's, shown only for keyboard focus. */ .settings-tabpanel:focus:not(:focus-visible) { outline: none; } .settings-header h1 { font-size: 1.6em; } + .section-note { font-size: 0.85em; color: var(--text-secondary); margin: var(--space-1) 0 var(--space-2); } + /* A link inside running text must not rely on colour alone (axe link-in-text-block). */ + .section-note a { text-decoration: underline; } + .role-legend { list-style: none; padding: 0; margin: var(--space-2) 0 0; font-size: 0.82em; color: var(--text-secondary); } + .role-legend li + li { margin-top: 2px; } /* ── Tab bar ──── */ /* C82 (TASK-2245): the five owner tabs are 562px intrinsic while the bar's box is viewport minus the page's 48px of padding, so below ~610px the row diff --git a/web/src/routes/console/settings/+page.svelte b/web/src/routes/console/settings/+page.svelte index eb4bbeeea..0cf2ea2fa 100644 --- a/web/src/routes/console/settings/+page.svelte +++ b/web/src/routes/console/settings/+page.svelte @@ -624,7 +624,12 @@
-

Account Settings

+

Account settings

+ +

+ Your profile, password and sign-in, in every workspace. A workspace's name, members and + collections are in its own Workspace settings (⚙ in that workspace's sidebar). +

{#if loading}
Loading...
@@ -1197,6 +1202,12 @@ max-width: 600px; } + .page-note { + font-size: 0.88em; + color: var(--text-secondary); + margin: 0 0 var(--space-4); + } + .page-title { font-size: 1.4rem; font-weight: 700;