diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4cb39d8c7d..6b319437d1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -445,6 +445,21 @@ jobs: cd gui bun run build + - name: Record dashboard preview source + if: needs.changes.outputs.gui == 'true' + run: | + git rev-parse HEAD > gui/dist/build-commit.txt + git rev-parse HEAD:gui > gui/dist/build-gui-tree.txt + + - name: Upload dashboard preview + if: needs.changes.outputs.gui == 'true' + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: dashboard-preview-${{ github.sha }} + path: gui/dist + retention-days: 7 + if-no-files-found: error + - name: CLI help smoke run: bun run src/cli/index.ts help diff --git a/devlog/_plan/260906_release_244_followups/090_dashboard.md b/devlog/_plan/260906_release_244_followups/090_dashboard.md index 6d18d6a38c..435889d5e2 100644 --- a/devlog/_plan/260906_release_244_followups/090_dashboard.md +++ b/devlog/_plan/260906_release_244_followups/090_dashboard.md @@ -1,6 +1,6 @@ # Dashboard alignment carry -Depends on integrated runtime for final presentation; independent PR, class C2. Carry #3697 head 4c7d6a5e07a29f7ef833019304c11343b94d102f, preserving Co-authored-by: Robin Bially <7304732+RobinBially@users.noreply.github.com>. #3689 authless-default change is outside this train. +Depends on integrated runtime for final presentation; independent PR, class C2. Carry #3697 head 49a9c79392babd9413831437d6ad71839737b148 (base cededd5ad1b8f8c437813c315c0705ace6c950c3), preserving Co-authored-by: Robin Bially <7304732+RobinBially@users.noreply.github.com>. #3689 authless-default change is outside this train. ## Exact change map @@ -21,3 +21,11 @@ Remote GUI lint/stylelint, GUI tests and Vite build from ci.yml; verify rendered No authless setting, quota semantics or model management expansion. Preserve current state labels and accessibility. P rechecks any intervening same-file changes before carrying. + +## Hosted artifact verification + +Main owns the eight-file attributed carry; no handler or visible-copy changes. Add one bounded preview artifact to the existing ci.yml gates job after its existing GUI build, only when changes.outputs.gui is true. Pin actions/upload-artifact v7.0.1 to043fb46d1a93c77aae656e7c1c64a875d1fc6a0a (verified official repository tag/release). Include only gui/dist, with generated build-commit.txt and build-gui-tree.txt; retention7days and missing-fileserror. No trigger, token permission, secret, checkout or release change. Workflow surface raises this unit to C4 and gets independent security review. + +The artifact identifies the actual checkout and gui tree: PR CI may build a merge ref. Compare build-gui-tree against final reviewed head:gui before claiming final UI proof. Download that artifact, serve the built frontend with an isolated fixture API in scratch (no real provider, account, or service mutation), and use the existing browser runtime for1440/1024/768/390/320px and keyboard/focus/overflow observation. No local build/typecheck/test suite. Public screenshots use synthetic data only; the source PR jpg is a reference, not final-head evidence. + +Maintain manual dependent PR publication after the owner's explicit native-stack removal. AsyncCI/admin integration of3762/3763 is delegated; no local rebase. Await artifact only for visual C, not for unrelated bookkeeping. HostedCI handles lint/typecheck/tests/build/privacy. Escalate only an actual permission or unavailable artifact boundary; no invented local fallback. No user token/cost cap; each tooling run bounded30minutes, individual waits <=60seconds; main retains complete release goal. diff --git a/docs-site/src/content/docs/guides/web-dashboard.md b/docs-site/src/content/docs/guides/web-dashboard.md index 3c46748a31..849e5f4608 100644 --- a/docs-site/src/content/docs/guides/web-dashboard.md +++ b/docs-site/src/content/docs/guides/web-dashboard.md @@ -68,6 +68,13 @@ missing credential — the proxy did not recognise the request as loopback. Open the address the proxy prints on startup (usually `http://127.0.0.1:`), and prefer that exact host and port over a LAN IP or an alias. +## Dashboard layout + +Overview uses matching status cards and full-width settings rows. On wide screens, labels share +one column and model/effort controls share another. On narrower screens, controls move below their +labels in the same reading order. Long version labels are shortened visually; hover the version +badge or the Version card to read the full value. + ## What you can do | Area | What it does | diff --git a/docs/pr-assets/dashboard-settings-aligned.jpg b/docs/pr-assets/dashboard-settings-aligned.jpg new file mode 100644 index 0000000000..8cf7c1f26f Binary files /dev/null and b/docs/pr-assets/dashboard-settings-aligned.jpg differ diff --git a/gui/src/App.tsx b/gui/src/App.tsx index c7fb89b6e2..91890ce664 100644 --- a/gui/src/App.tsx +++ b/gui/src/App.tsx @@ -265,7 +265,7 @@ export default function App() { > opencodex - v{displayedVersion} + v{displayedVersion} ); diff --git a/gui/src/pages/dashboard-overview-head.tsx b/gui/src/pages/dashboard-overview-head.tsx index 9cccc0e26c..44b3f8ac3c 100644 --- a/gui/src/pages/dashboard-overview-head.tsx +++ b/gui/src/pages/dashboard-overview-head.tsx @@ -48,16 +48,16 @@ export function DashboardOverviewHead({