From 7bc8719e4795d72cda98979d04629e8218e672d6 Mon Sep 17 00:00:00 2001 From: 1Pro-L4R8 Date: Fri, 23 Oct 2026 10:49:47 +0700 Subject: [PATCH] docs: U1 page structure (KI-214 to KI-224, KI-267 onwards) Close KI-214, KI-215, KI-216, KI-222, KI-223 and KI-224 (fixed in platform #734) and add KI-267 to KI-270. Update pages whose text no longer matches: status words in sentence case, the back links of the chart editor and the app editor, the user header without an avatar, and the visible SQL Lab title. Co-Authored-By: Claude Opus 5.5 --- .../access-control/access-explorer.md | 4 ++-- platform/control-plane/access-control/users.md | 6 +++--- platform/control-plane/audit-log.md | 4 ++-- .../control-plane/catalogs/catalog-detail.md | 2 +- .../query-engines/engine-detail.md | 10 +++++----- platform/control-plane/query-engines/index.md | 2 +- .../control-plane/query-engines/provision.md | 4 ++-- platform/control-plane/workspaces/index.md | 4 ++-- .../workspaces/workspace-detail.md | 2 +- platform/explore/apps/authoring.md | 2 +- platform/explore/charts/the-chart-editor.md | 2 +- platform/explore/sql-lab/index.md | 2 +- platform/known-issues.md | 18 +++++++++++------- platform/workspace-settings/databases.md | 2 +- 14 files changed, 34 insertions(+), 30 deletions(-) diff --git a/platform/control-plane/access-control/access-explorer.md b/platform/control-plane/access-control/access-explorer.md index bee8e5a..b8e7ba6 100644 --- a/platform/control-plane/access-control/access-explorer.md +++ b/platform/control-plane/access-control/access-explorer.md @@ -21,7 +21,7 @@ The result has two sections: | Section | What it lists | |---|---| | **Workspaces** | Each workspace the principal belongs to, with the workspace role and where it comes from. | -| **Shared objects** | Each object shared with the principal: the kind (**dashboard**, **folder**, and so on), the name, the workspace, the role, the **allow** or deny effect and the source. | +| **Shared objects** | Each object shared with the principal: the kind (**dashboard**, **folder**, and so on), the name, the workspace, the role, the **Allow** or **Deny** effect and the source. | The source reads **direct** for access given to the person, or **via \** when it comes through a group. For example, alice.nguyen@egret.local holds `ws_admin` on *Docs sandbox* and *Finance analytics* directly, `ws_editor` on *Finance analytics* and `finance_reporter` on *Docs sandbox* via `finance-analysts`, and sees an app shared with that group. @@ -39,7 +39,7 @@ The result lists every principal that can reach the object. The header shows the |---|---| | **Principal** | A **User** or **Group**. | | **Access** | The role: `platform_admin`, `ws_editor`, `ws_viewer`. | -| **Effect** | **allow** (or deny for a blocked principal). | +| **Effect** | **Allow** (or **Deny** for a blocked principal). | | **Source** | **platform admin**, **direct grant**, or **via workspace \**. | The same person can appear several times when they reach the object by more than one route, for example a group that has both a direct grant and a workspace role. diff --git a/platform/control-plane/access-control/users.md b/platform/control-plane/access-control/users.md index efeaec6..a689695 100644 --- a/platform/control-plane/access-control/users.md +++ b/platform/control-plane/access-control/users.md @@ -23,7 +23,7 @@ A summary strip counts **users**, **active** and **disabled**. Two filters narro |---|---| | **User** | Avatar, display name and email. | | **Provider** | `local` for accounts created in egret, `oidc` for people who sign in through SSO. | -| **Status** | **active** or **disabled**. A disabled user cannot sign in. | +| **Status** | **Active** or **Disabled**. A disabled user cannot sign in. | | **Roles** | Platform roles granted to the user directly, or a dash. A role the user holds through a group is not shown (KI-260). | | **Groups** | How many groups the user belongs to. | @@ -51,7 +51,7 @@ Prefer SSO for people. A local account has its own password and does not follow ## The user page -Select a user to open their page. The header shows the avatar, name, status, provider and email, with **Disable** (or **Enable**) and **Delete**. A local account also has **Reset password**: *Set a new password for this local account. Their existing sessions are signed out immediately.* +Select a user to open their page. The header shows the name, status, provider and email, with **Disable** (or **Enable**) and **Delete**. A local account also has **Reset password**: *Set a new password for this local account. Their existing sessions are signed out immediately.* ![The page of Farid Haddad: details, his directly granted platform role and one group](/img/platform/admin/cp-user-detail.png) @@ -75,7 +75,7 @@ The table lists **Role** and **Scope** with a remove button. With none it reads ## Disable and delete -**Disable** blocks sign-in without removing anything and signs the user out. It asks first: *Disable \?* (*They are signed out at once and cannot sign in until the account is enabled again. Their memberships and role grants are kept.*), with **Cancel** and **Disable user**. The status becomes **disabled**. **Enable** reverses it at once, without a confirmation. **Delete** asks *Delete "\"?* (*This user, their sessions, group memberships, and role grants will be permanently removed. This cannot be undone.*) and needs you to type `delete`. Prefer disabling: grants and shares that name a deleted user become unmatched names (see [People & groups](../../data-governance/people-and-groups/index.md)). +**Disable** blocks sign-in without removing anything and signs the user out. It asks first: *Disable \?* (*They are signed out at once and cannot sign in until the account is enabled again. Their memberships and role grants are kept.*), with **Cancel** and **Disable user**. The status becomes **Disabled**. **Enable** reverses it at once, without a confirmation. **Delete** asks *Delete "\"?* (*This user, their sessions, group memberships, and role grants will be permanently removed. This cannot be undone.*) and needs you to type `delete`. Prefer disabling: grants and shares that name a deleted user become unmatched names (see [People & groups](../../data-governance/people-and-groups/index.md)). ## Limits and known issues diff --git a/platform/control-plane/audit-log.md b/platform/control-plane/audit-log.md index 7ccaf57..0f5c81d 100644 --- a/platform/control-plane/audit-log.md +++ b/platform/control-plane/audit-log.md @@ -20,7 +20,7 @@ The page shows a table with six columns: | **Actor** | The user's email, or a short id for an actor that is not a user who still exists (for example a deleted account or a service account). | | **Action** | What was attempted, in the form `thing:action`, for example `secret:read`, `member:add`, `perm_rule:create`. | | **Resource** | What it was about: the resource type and id, for example `workspace (e76a8865-…)` or `platform`. | -| **Decision** | **allow** or **deny** for an authorization decision, a dash for a recorded change. | +| **Decision** | **Allow** or **Deny** for an authorization decision, a dash for a recorded change. | | **Detail** | The reason, or the JSON detail of a change, for example the grants that allowed a decision (`grant-0`) or the fields of an update. | Every page loads 100 rows. **Load more** fetches the next 100 using a keyset cursor. Changing any filter starts again from the newest row. @@ -29,7 +29,7 @@ Every page loads 100 rows. **Load more** fetches the next 100 using a keyset cur | Kind | What it records | Decision | Example | |---|---|---|---| -| **Decision** | An authorization check: the actor asked to do something and the policy engine answered. | **allow** or **deny**, with the grants that decided. | `secret:read` on `platform`, **allow**, `grant-0` | +| **Decision** | An authorization check: the actor asked to do something and the policy engine answered. | **Allow** or **Deny**, with the grants that decided. | `secret:read` on `platform`, **Allow**, `grant-0` | | **Mutation** | A change that was made. | A dash. | `member:add`, `object_grant:put`, `perm_rule:create`, `tag:assign` | Decisions are recorded for the platform's role-based checks. Impersonation is recorded as the mutations `impersonation.start` (with the reason) and `impersonation.end`, with the admin as the actor; the decisions made while impersonating are recorded under the impersonated user, with nothing that names the admin. Governance changes also appear on the Governance overview's **Recent changes**; the audit log keeps the raw entries. A workspace pre-registration is recorded as `member:invite` and `member:uninvite`, and its redemption at the person's first sign-in as `member:add` with the inviting admin as the actor and `"via": "pre-registration"` in the detail. diff --git a/platform/control-plane/catalogs/catalog-detail.md b/platform/control-plane/catalogs/catalog-detail.md index ea1ec7c..b782dcf 100644 --- a/platform/control-plane/catalogs/catalog-detail.md +++ b/platform/control-plane/catalogs/catalog-detail.md @@ -31,7 +31,7 @@ For an egret warehouse the tab says *egret manages this catalog's configuration 2. Optionally press **Test** to check the catalog first. For a catalog with a host, egret only checks that it can open a TCP connection, for example *Reachability check — egret could not open a TCP connection to finance-db.internal:5432. Even a connection that had succeeded would not verify credentials, TLS or permissions.* Once the catalog is attached to a provisioned Trino engine, **Test** runs a query there instead. 3. Press **Attach**. -The table lists the engine with its status badge, its type, whether it is **Primary**, and the **Apply** and **Applied** states, with **Retry** and **Detach**. An external engine shows the state *declared*: egret recorded that the engine serves the catalog and applied nothing. A provisioned engine shows whether the apply succeeded (*applied*). +The table lists the engine with its status badge, its type, whether it is **Primary**, and the **Apply** and **Applied** states, with **Retry** and **Detach**. An external engine shows the state *declared*: egret recorded that the engine serves the catalog and applied nothing. A provisioned engine shows whether the apply succeeded (*Applied*). :::note **Apply** is this catalog's state on that engine, not the engine's own health. An engine that has since failed still reads applied here, because the catalog did apply before it broke. diff --git a/platform/control-plane/query-engines/engine-detail.md b/platform/control-plane/query-engines/engine-detail.md index 5329e1a..16e0be3 100644 --- a/platform/control-plane/query-engines/engine-detail.md +++ b/platform/control-plane/query-engines/engine-detail.md @@ -28,7 +28,7 @@ If the engine cannot start the page shows *The engine failed to start.* with the To attach another, choose it in **Catalog to attach** and press **Attach**. With nothing left the form says *Every catalog egret can show you is already on this engine.* -*Apply is this catalog's state on this engine, not a check that it still works*: a catalog that reached the engine before the engine broke is still recorded as **applied**. +*Apply is this catalog's state on this engine, not a check that it still works*: a catalog that reached the engine before the engine broke is still recorded as **Applied**. ### Workspaces @@ -51,7 +51,7 @@ The engine then appears in that workspace's SQL Lab as a database named after th 2. Press **Save changes**. The **Review changes** dialog lists only what changes, for example *1 field will change.* with the old and new value, and says *Saving re-provisions (rolls) the engine pods; running queries are interrupted.* (on Docker: *Saving recreates the engine's containers; running queries are interrupted.*). 3. Press **Save changes** in the dialog to apply, or **Cancel** to save nothing. -On the demo stack the save recreated the coordinator container within a minute while the header kept showing **running**, and the new value was in effect: `SHOW SESSION LIKE 'query_max_run_time'` reported the default `2.00h`. +On the demo stack the save recreated the coordinator container within a minute while the header kept showing **Running**, and the new value was in effect: `SHOW SESSION LIKE 'query_max_run_time'` reported the default `2.00h`. With **Expose via ingress** on and no **Host**, the field says *Enter the host the ingress serves, or turn off Expose via ingress.* and **Save changes** stays disabled. The Docker provisioner refuses an ingress whatever the host (see [Provision an engine](./provision.md#kubernetes-and-docker)), although the section is still offered there (KI-264). @@ -73,9 +73,9 @@ The node list comes from Trino's `GET /v1/node` where the coordinator serves it. ### Restart -**Restart** asks *Restart engine?* (*This rolls the coordinator and worker pods; running queries are interrupted.* On the Docker provisioner: *This restarts the coordinator and worker containers; running queries are interrupted.*). For a Trino engine it adds *If the pods (containers) are gone, they are created again.* On the demo stack the status went to **provisioning** and back to **running** in 38 seconds, and the container was recreated. +**Restart** asks *Restart engine?* (*This rolls the coordinator and worker pods; running queries are interrupted.* On the Docker provisioner: *This restarts the coordinator and worker containers; running queries are interrupted.*). For a Trino engine it adds *If the pods (containers) are gone, they are created again.* On the demo stack the status went to **Provisioning** and back to **Running** in 38 seconds, and the container was recreated. -A Trino engine that has run before and now has no pod or container at all, for example after `just demo-down` and `just demo-up` on the demo stack, is created again from its stored settings when you press **Restart**. An engine that is still being created (status **provisioning**) is left to finish. +A Trino engine that has run before and now has no pod or container at all, for example after `just demo-down` and `just demo-up` on the demo stack, is created again from its stored settings when you press **Restart**. An engine that is still being created (status **Provisioning**) is left to finish. ### Delete @@ -164,7 +164,7 @@ A Trino apply rebuilds the engine's entire catalog configuration. When one catal ## Limits and known issues - An external engine's page has no health status or restart. Egret cannot see the cluster. -- On the Docker provisioner, a save interrupted by the browser disconnecting (a closed tab, a dropped connection) can stop the old containers without creating new ones; the engine shows **failed** until the next save (KI-263). +- On the Docker provisioner, a save interrupted by the browser disconnecting (a closed tab, a dropped connection) can stop the old containers without creating new ones; the engine shows **Failed** until the next save (KI-263). - The Ingress section is offered on Docker engines, which refuse any ingress (KI-264). - On an engine with impersonation and a Ranger policy, the monitor's `egret-monitor` account probably sees only its own queries (KI-265, not verified). - Delete is permanent. After a delete the Engines list can keep the row until you reload. diff --git a/platform/control-plane/query-engines/index.md b/platform/control-plane/query-engines/index.md index 0499c35..678e46d 100644 --- a/platform/control-plane/query-engines/index.md +++ b/platform/control-plane/query-engines/index.md @@ -19,7 +19,7 @@ A summary strip counts **engines**, how many are **running** and **not running** | **Name** | The engine name. It links to the engine page. | | **Type** | `trino` or `starrocks`. | | **Endpoint** | The `host:port` a workspace connection to the engine dials: for example `docs-trino-trino.egret-engines.svc:8443` for a provisioned Trino engine with JWT delegation, the host and port you entered (for example `trino-demo:8080`) for an external one. | -| **Status** | The lifecycle status of a provisioned engine (**provisioning**, **running**, **failed**). **External** for a registered one: egret does not monitor it. | +| **Status** | The lifecycle status of a provisioned engine (**Provisioning**, **Running**, **Failed**). **External** for a registered one: egret does not monitor it. | | Actions | **Details** opens the engine. | ## Add an engine diff --git a/platform/control-plane/query-engines/provision.md b/platform/control-plane/query-engines/provision.md index 59161c4..73de828 100644 --- a/platform/control-plane/query-engines/provision.md +++ b/platform/control-plane/query-engines/provision.md @@ -18,7 +18,7 @@ You need **engine:create** and **engine:provision**. Egret runs the engine where 4. Under **Configuration**, adjust what you need. Leave a field blank to use the default. 5. Press **Create engine**. -The engine page opens with the status **provisioning**. It turns **running** when the coordinator answers. Measured on the demo stack: 72 seconds for the first engine on a Docker host that already had the image, and 38 seconds for a restart. +The engine page opens with the status **Provisioning**. It turns **Running** when the coordinator answers. Measured on the demo stack: 72 seconds for the first engine on a Docker host that already had the image, and 38 seconds for a restart. :::tip Single-node engine For a small engine, open **Worker** and set **Replicas** to `0`: the coordinator then schedules the work itself, and the Overview strip shows *Worker 0*. Left blank, the engine gets one worker: on the demo stack a blank value started one worker container next to the coordinator. @@ -70,7 +70,7 @@ A StarRocks engine has its own configuration screen with sections such as **Repl ## What happens next 1. Egret starts the cluster, creates a **policy profile** with the engine's name (for example `docs-trino`, with the tag service `docs-trino_tag`) and binds it. -2. The attached catalogs are applied to the engine (state **applied** on the **Catalogs** tab). +2. The attached catalogs are applied to the engine (state **Applied** on the **Catalogs** tab). 3. Assign the engine to a workspace on its **Workspaces** tab. It then appears in the workspace's SQL Lab as a database with the engine's name, and in **Workspace settings → Engines** under **Provisioned by egret**. 4. The Governance area lists the engine under **Engine & policy**, and grants on its catalogs reach it. diff --git a/platform/control-plane/workspaces/index.md b/platform/control-plane/workspaces/index.md index 84021a0..b41de75 100644 --- a/platform/control-plane/workspaces/index.md +++ b/platform/control-plane/workspaces/index.md @@ -19,7 +19,7 @@ The strip counts **total**, **active** and **archived** workspaces. **Status** f | **Workspace** | The display name above its slug, for example `default`. Select it to open the workspace. | | **Owner** | The user who owns the workspace. | | **Created** | When it was created, relative. | -| **Status** | **active** or **archived**. | +| **Status** | **Active** or **Archived**. | ## Create a workspace @@ -58,7 +58,7 @@ The dialog says *Reassign this workspace to another user. They will be added as 1. Open the workspace and press **Archive**. 2. Confirm *Archive workspace?* The dialog says *\ will be archived and hidden from active lookups. You can restore it later.* -An archived workspace shows **archived** in the list and the button on its page becomes **Restore**. Nothing is deleted: the archived workspace keeps its members, resources and content. Press **Restore** to bring it back. **Rename** and **Transfer owner** stay available while archived. +An archived workspace shows **Archived** in the list and the button on its page becomes **Restore**. Nothing is deleted: the archived workspace keeps its members, resources and content. Press **Restore** to bring it back. **Rename** and **Transfer owner** stay available while archived. :::tip Archive a workspace instead of deleting data. There is no delete button here. diff --git a/platform/control-plane/workspaces/workspace-detail.md b/platform/control-plane/workspaces/workspace-detail.md index 9471450..f72c4b4 100644 --- a/platform/control-plane/workspaces/workspace-detail.md +++ b/platform/control-plane/workspaces/workspace-detail.md @@ -63,7 +63,7 @@ Pending requests to join this workspace, with the same **Approve** and **Deny** ## Activity -The audit entries recorded for this workspace: **Time**, **Action**, **Resource**, **Actor** and **Decision**. It is the workspace-scoped slice of the [Audit log](../audit-log.md), newest first. Most rows are authorization decisions such as `workspace:manage_members` (**allow** or **deny**), `query:run` or `dashboard:read`; changes such as `member:add` show a dash. A member who opens a page they may not use shows up as a **deny**. Actions done while a platform admin impersonated someone are listed under the impersonated person. +The audit entries recorded for this workspace: **Time**, **Action**, **Resource**, **Actor** and **Decision**. It is the workspace-scoped slice of the [Audit log](../audit-log.md), newest first. Most rows are authorization decisions such as `workspace:manage_members` (**Allow** or **Deny**), `query:run` or `dashboard:read`; changes such as `member:add` show a dash. A member who opens a page they may not use shows up as a **Deny**. Actions done while a platform admin impersonated someone are listed under the impersonated person. ## Limits and known issues diff --git a/platform/explore/apps/authoring.md b/platform/explore/apps/authoring.md index 1a283d7..710be9b 100644 --- a/platform/explore/apps/authoring.md +++ b/platform/explore/apps/authoring.md @@ -16,7 +16,7 @@ The page has an Egret header and the marimo notebook in an iframe below it. | Header element | What it shows or does | |---|---| -| Back arrow | Returns to the Apps list. | +| **Apps** (back link, with an arrow) | Returns to the Apps list. | | App name and badge | **Draft only** until the first publish, then **Published vN**. | | **Draft revision N** | The draft's revision number. It increases every time the draft is saved. The header re-reads it every 5 seconds. | | *Save in the editor (Ctrl/⌘+S) before publishing.* | A reminder: publishing freezes the **saved** draft. | diff --git a/platform/explore/charts/the-chart-editor.md b/platform/explore/charts/the-chart-editor.md index 753ef16..0c3a7cb 100644 --- a/platform/explore/charts/the-chart-editor.md +++ b/platform/explore/charts/the-chart-editor.md @@ -17,7 +17,7 @@ The editor is where you build and change a chart. Settings are on the left, a li The left panel is 400 px wide and scrolls on its own. From top to bottom it has: -1. **← Charts**: back to the list. +1. **Charts**, with an arrow: the back link to the list. 2. The current chart type with a **Change** button. **Change** opens **Change visualization**, the same gallery you see when you create a chart. Between bar, row, line, area, combo and scatter, which share one set of settings, the change keeps the fields, the display settings and the sort. A change to any other type keeps the dataset but clears the fields and the sort, so pick the type first. 3. The tabs. **Data** and **Display** are always there. **Axes** appears for the types that have axis settings (bar, row, line, area, scatter, combo, waterfall and box plot). **Conditional formatting** appears for [Table](./table) and [Pivot Table](./pivot-table) only. If you switch to a type that does not have the open tab, the editor falls back to **Display**. diff --git a/platform/explore/sql-lab/index.md b/platform/explore/sql-lab/index.md index 7182674..a64d02e 100644 --- a/platform/explore/sql-lab/index.md +++ b/platform/explore/sql-lab/index.md @@ -20,7 +20,7 @@ The page is one resizable workspace. Drag the grey bars between the panels to ch | Area | What it does | Details | |---|---|---| -| **Tab strip** (top) | One editor per tab, plus the **+** button and the **⌘ K for commands** hint. | [The query editor](./editor.md) | +| **Tab strip** (top) | The page title **SQL Lab**, then one editor per tab, plus the **+** button and the **⌘ K for commands** hint. | [The query editor](./editor.md) | | **Explorer** (left) | Database picker, a search box and a tree of catalogs, schemas, tables and columns. | [The schema browser](./schema-browser.md) | | **Toolbar** (above the editor) | **Run**, **Cancel**, **Format**, **Limit**, the database badge, a status badge, **Save**, **Save as dataset**, the command palette button and a **…** menu. | [The query editor](./editor.md) | | **Editor** | The SQL text, with syntax colouring and autocomplete. A **Parameters** bar appears when the SQL contains `{{name}}`. | [Query parameters](./parameters.md) | diff --git a/platform/known-issues.md b/platform/known-issues.md index e6089ba..3f46324 100644 --- a/platform/known-issues.md +++ b/platform/known-issues.md @@ -37,7 +37,7 @@ and missing pieces. Entries are **recorded, not fixed**; they feed the product r ## Findings from the detailed pages -Collected while writing the detailed pages for each area (October 2026), checked against the running demo instance and the product source. KI-154 to KI-213 come from re-verifying every area on the Docker demo stack (`just demo-up`, October 2026), which also closed or updated older rows (marked *Status* or *Docker demo stack*). KI-214 to KI-235 come from a whole-app UI consistency sweep of 78 screens (admin, light theme, 1440×900, same stack), then the dark theme, 768 and 390 px widths, the editors and a non-admin member. KI-236 to KI-246 come from the Wave 1 fixes of the Known-issues fix programme (October 2026), which also closed the rows marked *fixed in platform #…*. KI-247 to KI-259 come from the Wave 2 fixes (SQL Lab, charts, datasets and the Data API: platform #720, #721, #724 and #725), which closed or partly closed the rows they name. KI-260 to KI-266 come from the Wave 2b fixes (alerts and reports delivery, authentication and roles, engines and monitor: platform #726, #727 and #728), which closed the rows they name; KI-021 was closed as by design and KI-148 as no longer applying. Same legend as above. **Open S1 items:** none (KI-013, KI-040, KI-059, KI-060, KI-112, KI-136, KI-159, KI-175 and KI-187 are closed). +Collected while writing the detailed pages for each area (October 2026), checked against the running demo instance and the product source. KI-154 to KI-213 come from re-verifying every area on the Docker demo stack (`just demo-up`, October 2026), which also closed or updated older rows (marked *Status* or *Docker demo stack*). KI-214 to KI-235 come from a whole-app UI consistency sweep of 78 screens (admin, light theme, 1440×900, same stack), then the dark theme, 768 and 390 px widths, the editors and a non-admin member. KI-236 to KI-246 come from the Wave 1 fixes of the Known-issues fix programme (October 2026), which also closed the rows marked *fixed in platform #…*. KI-247 to KI-259 come from the Wave 2 fixes (SQL Lab, charts, datasets and the Data API: platform #720, #721, #724 and #725), which closed or partly closed the rows they name. KI-260 to KI-266 come from the Wave 2b fixes (alerts and reports delivery, authentication and roles, engines and monitor: platform #726, #727 and #728), which closed the rows they name; KI-021 was closed as by design and KI-148 as no longer applying. KI-267 to KI-269 come from the Wave 3 page-structure fix (titles, page width, tabs, status badges, list links and detail headers: platform #734), which closed KI-214, KI-215, KI-216, KI-222, KI-223 and KI-224; KI-270 was seen during the docs screenshot re-shoot (docs #31). Same legend as above. **Open S1 items:** none (KI-013, KI-040, KI-059, KI-060, KI-112, KI-136, KI-159, KI-175 and KI-187 are closed). ### Data API, Alerts and Apps @@ -264,17 +264,17 @@ Collected while writing the detailed pages for each area (October 2026), checked | KI-153 | OpenAPI | Gap | S2 | Only the Data API bearer scheme is declared; session cookie and CSRF are not, so generated clients cannot authenticate. Most operations have no summary (only an `operationId`), and many descriptions are internal doc comments (long, referencing internal types and task numbers). *Steps:* `openapi.json`; `scripts/gen-api-reference.mjs` has to truncate descriptions. | | KI-155 | Demo stack | Docs | S3 | The demo edge does not route `/readyz` and `/healthz` to Egret: `curl http://egret.localtest.me:18080/readyz` answers 200 with the web app's HTML, which looks healthy whatever the backend state, so the generic first checks of the troubleshooting index do not work on the demo stack. | | KI-185 | Authentication | UX | S2 | An SSO user lands on *No workspaces yet* after the first sign-in and can do nothing until a workspace admin adds them; Egret only knows the user after that first sign-in, so the admin cannot add them beforehand. The demo guide documents this. *Workaround:* sign in once, then have an admin add the user. Seen by the demo-stack guide author, not re-observed. *Status:* fixed in platform #727 (October 2026): with SSO on, a workspace admin can add an email nobody has signed in with; it is listed under *Waiting for first sign-in* (with **Withdraw**) and becomes a membership at that person's first sign-in, only if the IdP says the email is verified and only with a workspace role. Someone with no workspace lands on a *No workspaces yet* card with their email, **Check again** and **Sign out**. | -| KI-214 | UI consistency | Consistency | S3 | Page titles come in five sizes: 13 px (SQL Lab, the chart editor, an endpoint's detail page), 16 px (an app's viewer), 18 px (every Explore and Governance list), 20 px (a dashboard and a flow) and 24 px (the alert and report editor, Workspace settings, every Control Plane page, Governance → Data). Measured on the `h1` of 78 screens at 1440×900. Pick one title size per page type (list, detail, editor, settings) and put it in `ListPageShell` and a shared detail header. | -| KI-215 | UI consistency | Consistency | S3 | There is no shared page width. Lists and Control Plane pages run edge to edge (content from x=248 to x=1416); Workspace settings starts at x=256; the alert and report editor is a centred 896 px column (x=384…1280); **Choose a visualization** is a centred 768 px column (x=448…1216). Moving between pages shifts the left edge of the content by up to 200 px. The source has no page container: `max-w-3xl` appears 29 times, `max-w-5xl` 9, `max-w-2xl` 9, `max-w-4xl` and `max-w-6xl` twice each. | -| KI-216 | UI consistency | Consistency | S3 | Five tab styles for the same job. Dataset detail and People & groups use a grey pill strip (40 px high, 6 px radius); the chart editor's **Data / Display** and an endpoint's **Query / Config / …** use an underline; the flow editor (**Edit / Revisions / Executions / Triggers**) uses a small pill strip, the alert editor and the catalog detail (8 tabs) use a pill strip with an icon touching its label, with no gap; Control Plane → Engines (**Trino / StarRocks / RisingWave**) and Access Explorer use a smaller pill; Storage and Secrets use a pill strip with tiny icons. FE-PAGE-2 says detail sections use `ui/tabs`; 24 files do, and four hand-roll a tab list (`DashboardTabBar`, `PanelTabStrip`, `NamespaceFiles`, the Data API `Query.tsx`). | +| KI-214 | UI consistency | Consistency | S3 | Page titles come in five sizes: 13 px (SQL Lab, the chart editor, an endpoint's detail page), 16 px (an app's viewer), 18 px (every Explore and Governance list), 20 px (a dashboard and a flow) and 24 px (the alert and report editor, Workspace settings, every Control Plane page, Governance → Data). Measured on the `h1` of 78 screens at 1440×900. Pick one title size per page type (list, detail, editor, settings) and put it in `ListPageShell` and a shared detail header. *Status:* fixed in platform #734 (October 2026): every page title is 20 px; full-height tools (SQL Lab, an endpoint's detail, an app's viewer and editor) use a compact 16 px title. SQL Lab now shows **SQL Lab** in its tab strip, and an endpoint's name is the page's visible `h1`. | +| KI-215 | UI consistency | Consistency | S3 | There is no shared page width. Lists and Control Plane pages run edge to edge (content from x=248 to x=1416); Workspace settings starts at x=256; the alert and report editor is a centred 896 px column (x=384…1280); **Choose a visualization** is a centred 768 px column (x=448…1216). Moving between pages shifts the left edge of the content by up to 200 px. The source has no page container: `max-w-3xl` appears 29 times, `max-w-5xl` 9, `max-w-2xl` 9, `max-w-4xl` and `max-w-6xl` twice each. *Status:* fixed in platform #734 (October 2026): every page starts at the same left edge (x=264 at 1440 px). Forms (the alert and report editor, create and register pages, **Choose a visualization**) are a 960 px column on that edge, not centred; the Workspace settings pane is capped at 960 px. | +| KI-216 | UI consistency | Consistency | S3 | Five tab styles for the same job. Dataset detail and People & groups use a grey pill strip (40 px high, 6 px radius); the chart editor's **Data / Display** and an endpoint's **Query / Config / …** use an underline; the flow editor (**Edit / Revisions / Executions / Triggers**) uses a small pill strip, the alert editor and the catalog detail (8 tabs) use a pill strip with an icon touching its label, with no gap; Control Plane → Engines (**Trino / StarRocks / RisingWave**) and Access Explorer use a smaller pill; Storage and Secrets use a pill strip with tiny icons. FE-PAGE-2 says detail sections use `ui/tabs`; 24 files do, and four hand-roll a tab list (`DashboardTabBar`, `PanelTabStrip`, `NamespaceFiles`, the Data API `Query.tsx`). *Status:* fixed in platform #734 (October 2026): two tab styles remain. Page sections use a pill strip; panels inside an editor or tool (the chart editor, SQL Lab results, an endpoint's sections, the dashboard info sidebar, catalog **Browse** / **Connect**, the Data API statement switcher) use an underline. Icons sit apart from their labels. The dashboard tab bar, the panel tab strip and the namespace files strip stay as they are, by design. | | KI-217 | UI consistency | UX | S3 | 15 files render a bare browser ``. | | KI-218 | UI consistency | UX | S3 | Audit log → **From** and **To** are the browser's own `datetime-local` inputs. The format follows the browser locale (here `dd/mm/yyyy, --:--`), the picker looks different in every browser, and the rest of Egret uses its own date pickers (the dashboard date filter, the Data API activity range). | | KI-219 | UI consistency | UX | S3 | Settings tables in the alert and report editor put paragraphs in the **Details** column: the Data API alert's **Endpoint**, **Metric** and **Window (seconds)** rows run 9 to 12 lines in a column about 200 px wide, and the first line is sometimes an internal instruction (*choose it deliberately, not by leaving this blank; every save sends this field either way*). The **Value** column beside them is mostly empty, and its controls have four different widths (about 195 px for a select, 305 px for a text box, a split row for **Condition**). FE-PAGE-5 asks for the `Setting | Details | Value` shape, which assumes a short *Details*. Keep it to one line and move the rest to the docs or an info tooltip. | | KI-220 | Alerts | UX | S3 | One tab, two idioms. The **Notification** tab of an alert starts with a card list (**Deliver to** → *Email*, *Addresses*, **Add delivery method**) and then, below, a `Setting | Details | Value` table (**Email subject**, **Opening note**, **Closing note**, **Attachment**). Other tabs are tables only. The form's primary button is **Save** or **Create** at the bottom right of the page, after the table; see KI-183 for the other two placements. | | KI-221 | Alerts | Defect | S3 | Deep links to an editor section depend on the type. `/alerts/new?type=dataapi_alert§ion=what` opens the **Condition** tab (the key is `what`, the label is *Condition*), while `?section=condition` on the same page is ignored and the **General** tab opens, silently. An unknown `section` should fall back with a message, or the key should match the label. | -| KI-222 | UI consistency | Consistency | S3 | Status badges use three styles. Control Plane lists use a solid dark-green pill (*active* for workspaces and users, *allow* in the audit log); the Explore lists use a light outline or tint (*Active*, *Success*, *Healthy*, *Live*, *Draft*); settings and some details use plain text with a dot (*Active* in the catalog settings). The same state reads *active* in Control Plane and *Active* in Explore, in lower and upper case. | -| KI-223 | UI consistency | Consistency | S3 | Names in Control Plane and Governance lists (workspaces, catalogs, users, groups, roles, profiles) are teal links; names in Explore lists (datasets, charts, dashboards, apps, endpoints, flows) are black text that is also a link. | -| KI-224 | UI consistency | Consistency | S3 | Detail headers have four forms: back link + coloured icon tile + title + chips (alert, catalog, storage, secret); back link + title, no tile (dataset, endpoint, new engine); an arrow button inside the title bar (an app's viewer); and no back link at all (Workspace settings, whose own sidebar takes its place). The back link is small grey text and easy to miss. | +| KI-222 | UI consistency | Consistency | S3 | Status badges use three styles. Control Plane lists use a solid dark-green pill (*active* for workspaces and users, *allow* in the audit log); the Explore lists use a light outline or tint (*Active*, *Success*, *Healthy*, *Live*, *Draft*); settings and some details use plain text with a dot (*Active* in the catalog settings). The same state reads *active* in Control Plane and *Active* in Explore, in lower and upper case. *Status:* fixed in platform #734 (October 2026): status badges are one light tint with dark text, in sentence case everywhere (*Active*, *Archived*, *Allow*, *Deny*, *Running*). Type and count badges stay plain. | +| KI-223 | UI consistency | Consistency | S3 | Names in Control Plane and Governance lists (workspaces, catalogs, users, groups, roles, profiles) are teal links; names in Explore lists (datasets, charts, dashboards, apps, endpoints, flows) are black text that is also a link. *Status:* fixed in platform #734 (October 2026): names in every list (Explore, Governance and Control Plane) are text-coloured links, underlined on hover. User, group, role and workspace names that were buttons are now links. Links inside prose and notes stay teal. | +| KI-224 | UI consistency | Consistency | S3 | Detail headers have four forms: back link + coloured icon tile + title + chips (alert, catalog, storage, secret); back link + title, no tile (dataset, endpoint, new engine); an arrow button inside the title bar (an app's viewer); and no back link at all (Workspace settings, whose own sidebar takes its place). The back link is small grey text and easy to miss. *Status:* fixed in platform #734 (October 2026): one header shape everywhere: back link, title, status, actions, description and facts. Icon tiles and avatar circles are gone, the back link is an arrow icon and the list's name in medium weight, and an app's viewer and editor have a back link has a back link instead of an arrow button. | | KI-225 | Governance | UX | S3 | The Governance sidebar is a group per page: **Data**, **People & groups**, **Classification**, **Lineage** and **Engine & policy** each hold exactly one item with the same name, and each carries a collapse chevron. The first group label, *Governance overview*, wraps to two lines in the 224 px sidebar. The grouping adds a row and a click target per page and says nothing. | | KI-226 | Workflows | UX | S3 | The Triggers table header wraps (**Last evaluated**, **Last execution**, **Next run** break onto two lines), row heights vary from one to three lines because the *Last execution* cell stacks a badge, an id and a time, The **Enable**, **Disable**, **Pause backfills** … toolbar is always shown, with one hint per button under it (*Enable: Select triggers first …*) even when nothing can be selected. | | KI-227 | Control Plane | UX | S3 | Two pages show unfinished surfaces as if they were features. Engines has a **RisingWave** tab next to **Trino** and **StarRocks** and says in its description *RisingWave arrives in a later phase*. **Access & governance** gives the *Needs attention* card the height of the *Recent changes* card, so most of it is empty, and its **How access works** panel starts below the fold. | @@ -317,6 +317,10 @@ Collected while writing the detailed pages for each area (October 2026), checked | KI-264 | Engines / Docker | UX | S3 | The **Ingress exposure** section of Add engine and Settings is offered on the Docker provisioner, which refuses any ingress (*not supported by the Docker engine provisioner: ingress*). Since KI-200 a host is required, so the refusal now comes only after you fill one in. (Found while fixing KI-200.) | | KI-265 | Engines / Monitor | Bug | S3 | verify: on an engine with impersonation (not JWT delegation) bound to a Ranger policy, the monitor signs in as `egret-monitor`, which holds no `impersonate` grant in the engine's policy, so it probably sees only its own queries, not other users'. Not reproduced: no such engine ran on the demo stack. (Found while fixing KI-194.) | | KI-266 | Reports | Limitation | S3 | CSV and Text reports format numbers with the chart table's defaults (at most three decimals; digit grouping in Text only), not with a column's own format settings (decimals, currency, prefix, suffix). *Workaround:* round or format the value in the chart's SQL. (Decision in platform #726, KI-169.) | +| KI-267 | Governance / Policies | UX | S3 | The policy editor (**Engine & policy** → an engine or profile → **Advanced** → a policy, or a new one) has no `h1`. Its title is the **Policy name** input, so the page has no heading for screen-reader navigation and is the one editor outside the page-title rule of KI-214. The chart editor solves the same case with a hidden `h1`. (Found while fixing KI-214.) | +| KI-268 | Data API | Consistency | S3 | On an endpoint's page each section opens with an 18 px heading (**Query**, **Config**, **Response**, **Access**, **Try it**, **Versions**) under the endpoint's 16 px compact title, so a section heading is larger than the page title. This follows from the compact title of full-height tools (KI-214). (Found while fixing KI-214.) | +| KI-269 | UI consistency | UX | S3 | In an underline tab strip (the chart editor, SQL Lab results, an endpoint's section links and the other editor panels of KI-216) the active tab's 2 px underline is partly cut off. The tab overlaps the strip's bottom border by 1 px, but the strip scrolls sideways (`overflow-x-auto`), which also clips at its lower edge. The endpoint section links did the same before #734. (Found while fixing KI-216.) | +| KI-270 | Alerts | UX | S3 | The **Owners** picker of an alert or report shows an owner who is not a user member of the workspace (for example someone who belongs only through a group, or who has left) as a raw user id instead of an email. The picker names owners from the workspace's user members only, although the alert itself carries each owner's email, which the Alerts list shows. (Seen during the docs re-shoot, docs #31.) | ## Not verified diff --git a/platform/workspace-settings/databases.md b/platform/workspace-settings/databases.md index 14798ab..4d2009b 100644 --- a/platform/workspace-settings/databases.md +++ b/platform/workspace-settings/databases.md @@ -21,7 +21,7 @@ A summary strip counts the **connections**, how many are **ok** and how many are | **Name** | The connection name, for example `trino-sandbox`. | | **Engine** | `trino` or `starrocks`. | | **Host:Port** | Where it listens. | -| **Status** | The last known state: **Unknown** for a new connection, then **ok** or an error after a test. | +| **Status** | The last known state: **Unknown** for a new connection, then **Healthy** or **Error** after a test. | | **Secret** | **Configured** when a password is stored, **Not set** otherwise. | | **Actions** | **Test**, **Edit** and **Delete** (each icon is labelled with the connection name). |