Step 12c: UI polish, fonts and design-skill pass #18

Open
opened 2026-09-22 16:14:41 +00:00 by kayg · 10 comments
Owner

Step 12c, from owner feedback on the dev screenshots (2026-09-22): the fonts did not look right, and every UI job must use Emil Kowalski's and Jakub Krehel's skills. The skills are now installed on the dev VM from https://github.com/emilkowalski/skills (85e8e23) and https://github.com/jakubkrehel/skills (267330e). The owner also suggested https://sveltebits.xyz/ components wherever they add finesse.

Scope:

  • Fonts render as Inter Variable and JetBrains Mono Variable, proven in the browser gate: wait for document.fonts.ready before screenshots and assert that the faces loaded.
  • A typography pass (better-typography).
  • The four findings from #8: the phone containers list, Finished on a running container, one timestamp format, and image reference vs digest.
  • A better-interface and emil-design-eng review of the existing pages, with its fixes.
  • sveltebits where it adds finesse, within the performance and motion rules.

Done when merged to dev with screenshots at 1440×900 and 390×844, light and dark.

Step 12c, from owner feedback on the `dev` screenshots (2026-09-22): the fonts did not look right, and every UI job must use Emil Kowalski's and Jakub Krehel's skills. The skills are now installed on the dev VM from https://github.com/emilkowalski/skills (`85e8e23`) and https://github.com/jakubkrehel/skills (`267330e`). The owner also suggested https://sveltebits.xyz/ components wherever they add finesse. Scope: - Fonts render as Inter Variable and JetBrains Mono Variable, proven in the browser gate: wait for `document.fonts.ready` before screenshots and assert that the faces loaded. - A typography pass (`better-typography`). - The four findings from #8: the phone containers list, Finished on a running container, one timestamp format, and image reference vs digest. - A `better-interface` and `emil-design-eng` review of the existing pages, with its fixes. - sveltebits where it adds finesse, within the performance and motion rules. Done when merged to `dev` with screenshots at 1440×900 and 390×844, light and dark.
Author
Owner

Started ui-polish on branch , base head . Scope is , , and ; no Rust crates, , or API changes. Loading the UI contracts and mandatory design/accessibility/typography/motion guidance before inspecting and editing.

Started ui-polish on branch , base head . Scope is , , and ; no Rust crates, , or API changes. Loading the UI contracts and mandatory design/accessibility/typography/motion guidance before inspecting and editing.
Author
Owner

Started ui-polish on branch ui-polish, base head bfa8af7ffc. Scope is packages/ui, packages/web, and scripts/browser-check.mjs; no Rust crates, scripts/verify, or API changes. Loading the UI contracts and mandatory design, accessibility, typography, and motion guidance before inspecting and editing.

Started ui-polish on branch ui-polish, base head bfa8af7ffcc146d0d87a14e8bdcf5ed8434eefa4. Scope is packages/ui, packages/web, and scripts/browser-check.mjs; no Rust crates, scripts/verify, or API changes. Loading the UI contracts and mandatory design, accessibility, typography, and motion guidance before inspecting and editing.
Author
Owner

Baseline evidence: the browser gate passed on bfa8af7. Screenshots are under /mnt/hdd/infraternal/artifacts/ui-polish/before. At 390x844 the container filters occupy the first screen and the row action buttons compress the name and status. The runtime font probe after the production build reported Inter Variable status loaded and document.fonts.check true, while JetBrains Mono Variable was declared but remained unloaded and document.fonts.check false until an explicit fonts.load call; the browser check therefore needs to await document.fonts.ready and load/assert both faces before every screenshot. The current detail template renders Finished and Exit code unconditionally, and timestamps use locale strings without time datetime metadata. I am proceeding with the narrow layout, shared timestamp/image primitives, opsz font face, and typography/accessibility review.

Baseline evidence: the browser gate passed on bfa8af7. Screenshots are under /mnt/hdd/infraternal/artifacts/ui-polish/before. At 390x844 the container filters occupy the first screen and the row action buttons compress the name and status. The runtime font probe after the production build reported Inter Variable status loaded and document.fonts.check true, while JetBrains Mono Variable was declared but remained unloaded and document.fonts.check false until an explicit fonts.load call; the browser check therefore needs to await document.fonts.ready and load/assert both faces before every screenshot. The current detail template renders Finished and Exit code unconditionally, and timestamps use locale strings without time datetime metadata. I am proceeding with the narrow layout, shared timestamp/image primitives, opsz font face, and typography/accessibility review.
Author
Owner

Implementation evidence: commits a6fdf6a and 161072b add the shared Timestamp primitive, ImageReference digest copy affordance, Inter opsz plus JetBrains wght loading, tabular sans-serif dashboard counts, keyboard auth tabs, collapsed mobile filters, compact action menus, and strict font-aware responsive screenshots. The production browser gate passed with the compact layout, reduced-motion media, digest copy check, and no overflow or overlap failures. After screenshots are under /mnt/hdd/infraternal/artifacts/ui-polish/after; runtime detail screenshots confirm a running container shows Started but no Finished or Exit code.

Implementation evidence: commits a6fdf6a and 161072b add the shared Timestamp primitive, ImageReference digest copy affordance, Inter opsz plus JetBrains wght loading, tabular sans-serif dashboard counts, keyboard auth tabs, collapsed mobile filters, compact action menus, and strict font-aware responsive screenshots. The production browser gate passed with the compact layout, reduced-motion media, digest copy check, and no overflow or overlap failures. After screenshots are under /mnt/hdd/infraternal/artifacts/ui-polish/after; runtime detail screenshots confirm a running container shows Started but no Finished or Exit code.
Author
Owner

Finished ui-polish at head 36abab422b. No Rust crates, API contracts, or scripts/verify files changed.

Implemented:

  • Embedded Fontsource Inter opsz and JetBrains Mono wght faces with deliberate font-display: swap; all bundled subsets remain local. The browser check now awaits document.fonts.ready, explicitly loads both faces, and asserts document.fonts.check for both before every screenshot.
  • Added shared Timestamp output: localized display, exact RFC3339 datetime and title, Unix seconds conversion, and tabular timestamp figures.
  • Added reusable image reference rendering with repo:tag support, secondary digest truncation, accessible copy control, live status, and clipboard fallback.
  • Reworked 390px containers into a collapsed Filters disclosure with active count, visible state column, compact keyboard action menu, and deliberate name/status truncation.
  • Running details now hide Finished and Exit code; stopped details retain them.
  • Moved changing dashboard and host counts from mono to Inter with tabular figures.
  • Completed auth tab keyboard semantics, transient drawer reset on sign out, long heading ellipsis, primitive hover and motion cleanup, and table action-row behavior.

Rules applied:

  • emil-design-eng: dense operator hierarchy, restrained surfaces, purposeful hierarchy, no decorative sveltebits component or Tailwind dependency.
  • better-interface and its better-* guidance: one 4px spacing scale, UI type sizes 12/13/14/16/20/24, Inter optical sizing, ligatures, deliberate weights and tracking, tabular values, shared primitives, container-aware layout, full-value tooltips, AA light/dark contrast, semantic controls, focus-visible states, live status, and keyboard operation.
  • review-animations: transform/opacity-only motion, hover gated to fine pointers, no keyboard action animation, and reduced-motion behavior.
  • pick-ui-library judgment: reused the existing Menu, Surface, Badge, Table, Timestamp, and Truncate primitives; no dependency was added.
  • docs/UI.md was not changed because its type, spacing, motion, accessibility, and truncation rules were correct.

Budget:

  • Base bfa8af7 initial-route JS gzip: 73048 bytes.
  • Final initial-route JS gzip: 73979 bytes.
  • Delta: +931 bytes, +1.3%; final is 73.98 KB and below the 120 KB budget.
  • No sveltebits.xyz code was copied, so no external component license was introduced.

Gates quoted verbatim:
PASS fast: JavaScript dependencies
PASS fast: build web app
PASS fast: cargo fmt --check
PASS fast: cargo clippy
PASS fast: cargo test
PASS fast: svelte-check
PASS fast: UI package svelte-check
PASS fast: Vitest
PASS fast: UI package Vitest
PASS fast: OpenAPI and TypeScript client drift

PASS browser: JavaScript dependencies
PASS browser: install Chromium and system dependencies
PASS browser: build web app
PASS browser: build release binary
PASS browser: Playwright against release server

Screenshots:

  • Before: /mnt/hdd/infraternal/artifacts/ui-polish/before/
  • After: /mnt/hdd/infraternal/artifacts/ui-polish/after/
  • After inventory: 86 PNGs covering light/dark 1440x900 and 390x844 routes, setup/sign-in, host and container details, and runtime-detail views.
  • Finding pairs include before/light-390x844-containers.png to after/light-390x844-containers.png, before/dark-390x844-containers.png to after/dark-390x844-containers.png, before/light-390x844-container-detail-runtime.png to after/light-390x844-container-detail-runtime.png, before/dark-390x844-container-detail-runtime.png to after/dark-390x844-container-detail-runtime.png, and before/light-1440x900.png to after/light-1440x900.png.

Safari owner checklist:

  1. On Safari desktop and real iOS Safari at 390x844, reload sign-in and dashboard and confirm the embedded Inter face renders without fallback.
  2. On Containers, open and close Filters and the row Actions menu using touch, Tab, arrows, Enter, and Escape.
  3. Open a running detail and verify Finished and Exit code are absent; open a stopped detail and verify both return.
  4. Copy an image digest and confirm the copied value is complete; inspect a timestamp title for the exact RFC3339 value.
  5. Check light/dark themes, visible focus, sidebar edit mode, drawer focus trap, and reduced-motion behavior.
Finished ui-polish at head 36abab422bdf4733a8b14a76fe8fa9cd2065fd95. No Rust crates, API contracts, or scripts/verify files changed. Implemented: - Embedded Fontsource Inter opsz and JetBrains Mono wght faces with deliberate font-display: swap; all bundled subsets remain local. The browser check now awaits document.fonts.ready, explicitly loads both faces, and asserts document.fonts.check for both before every screenshot. - Added shared Timestamp output: localized display, exact RFC3339 datetime and title, Unix seconds conversion, and tabular timestamp figures. - Added reusable image reference rendering with repo:tag support, secondary digest truncation, accessible copy control, live status, and clipboard fallback. - Reworked 390px containers into a collapsed Filters disclosure with active count, visible state column, compact keyboard action menu, and deliberate name/status truncation. - Running details now hide Finished and Exit code; stopped details retain them. - Moved changing dashboard and host counts from mono to Inter with tabular figures. - Completed auth tab keyboard semantics, transient drawer reset on sign out, long heading ellipsis, primitive hover and motion cleanup, and table action-row behavior. Rules applied: - emil-design-eng: dense operator hierarchy, restrained surfaces, purposeful hierarchy, no decorative sveltebits component or Tailwind dependency. - better-interface and its better-* guidance: one 4px spacing scale, UI type sizes 12/13/14/16/20/24, Inter optical sizing, ligatures, deliberate weights and tracking, tabular values, shared primitives, container-aware layout, full-value tooltips, AA light/dark contrast, semantic controls, focus-visible states, live status, and keyboard operation. - review-animations: transform/opacity-only motion, hover gated to fine pointers, no keyboard action animation, and reduced-motion behavior. - pick-ui-library judgment: reused the existing Menu, Surface, Badge, Table, Timestamp, and Truncate primitives; no dependency was added. - docs/UI.md was not changed because its type, spacing, motion, accessibility, and truncation rules were correct. Budget: - Base bfa8af7 initial-route JS gzip: 73048 bytes. - Final initial-route JS gzip: 73979 bytes. - Delta: +931 bytes, +1.3%; final is 73.98 KB and below the 120 KB budget. - No sveltebits.xyz code was copied, so no external component license was introduced. Gates quoted verbatim: PASS fast: JavaScript dependencies PASS fast: build web app PASS fast: cargo fmt --check PASS fast: cargo clippy PASS fast: cargo test PASS fast: svelte-check PASS fast: UI package svelte-check PASS fast: Vitest PASS fast: UI package Vitest PASS fast: OpenAPI and TypeScript client drift PASS browser: JavaScript dependencies PASS browser: install Chromium and system dependencies PASS browser: build web app PASS browser: build release binary PASS browser: Playwright against release server Screenshots: - Before: /mnt/hdd/infraternal/artifacts/ui-polish/before/ - After: /mnt/hdd/infraternal/artifacts/ui-polish/after/ - After inventory: 86 PNGs covering light/dark 1440x900 and 390x844 routes, setup/sign-in, host and container details, and runtime-detail views. - Finding pairs include before/light-390x844-containers.png to after/light-390x844-containers.png, before/dark-390x844-containers.png to after/dark-390x844-containers.png, before/light-390x844-container-detail-runtime.png to after/light-390x844-container-detail-runtime.png, before/dark-390x844-container-detail-runtime.png to after/dark-390x844-container-detail-runtime.png, and before/light-1440x900.png to after/light-1440x900.png. Safari owner checklist: 1. On Safari desktop and real iOS Safari at 390x844, reload sign-in and dashboard and confirm the embedded Inter face renders without fallback. 2. On Containers, open and close Filters and the row Actions menu using touch, Tab, arrows, Enter, and Escape. 3. Open a running detail and verify Finished and Exit code are absent; open a stopped detail and verify both return. 4. Copy an image digest and confirm the copied value is complete; inspect a timestamp title for the exact RFC3339 value. 5. Check light/dark themes, visible focus, sidebar edit mode, drawer focus trap, and reduced-motion behavior.
Author
Owner

Starting independent review on branch ui-polish at 36abab4 (base dev 65ba959). I will inspect the full diff, verify the reported clipping and typography/accessibility claims, fix merge-blocking defects on this branch, and run the required fast and browser gates.

Starting independent review on branch ui-polish at 36abab4 (base dev 65ba959). I will inspect the full diff, verify the reported clipping and typography/accessibility claims, fix merge-blocking defects on this branch, and run the required fast and browser gates.
Author
Owner

Review/fix complete on ui-polish.

Findings and fixes:

  1. Containers PageIntro status cluster was intrinsically zero-width because Cluster's inline-size containment collapsed the max-content grid track; its badge and poll status overflowed the main content box at desktop. Applied the better-layout/shared-grid rule and better-interface no-clipping rule in packages/ui/src/lib/PageIntro.svelte; the action cluster now sizes to its contents and remains full-width on compact layouts.

  2. Compact virtualized table rows could exceed the initial 52px virtualizer boundary; the 40px Actions target was clipped at the phone card edge. Applied the better-layout space-aware/scroll-boundary rule and better-ui minimum hit-area rule in packages/ui/src/lib/Table.svelte: compact tables estimate 64px rows, enforce a 64px compact row minimum, and show an inset bottom boundary cue. The browser check now rejects clipped controls, unreachable rendered rows, missing boundary cues, and missing Actions columns.

  3. The new content-box invariant exposed a separate pre-existing Hosts table overflow at 1024px and 390/320px. Applied the better-layout responsive-column and better-typography deliberate-truncation rules in packages/web/src/routes/hosts/+page.svelte: compact widths/priorities fit the table and host IDs ellipsize.

Review verdict:

  • Font fix is proven in the production release build, not just by test completion: document.fonts.status was loaded; document.fonts.check('14px "Inter Variable"') and document.fonts.check('14px "JetBrains Mono Variable"') were both true. Computed evidence: body Inter Variable 14/400/20px; h1 Inter Variable 24/600/32px/-0.48px tracking; dashboard count Inter Variable 24/550/32px with tabular-nums; identifier JetBrains Mono Variable 12/400/20px.
  • The docs/UI scale, weights, tracking, leading, tabular numerals, and mono scope are consistent. Large dashboard counts and host counts are UI text with tabular numbers; mono remains on identifiers/digests/engine-adjacent values.
  • #8 findings are fixed: compact container actions use the named keyboard menu; Finished and Exit code are omitted while running; timestamps use the shared Timestamp component/format; image reference and content digest are separate, labeled, truncatable, and the digest has a named copy control with fallback and live status.
  • Accessibility review passed for Actions, Filters, and Copy image digest names; native keyboard operation, focus return, visible focus, auth tab roving focus, dialogs/menus, and live status regions were covered by the browser checks.
  • Motion review (review-animations): changed motion stays on transform/opacity, pointer feedback is not keyboard feedback, and reduced motion disables it.
  • No sveltebits usage was found, so there is no missing sveltebits license/source record.
  • Measured initial-route JS gzip is 74,007 bytes, below the PLAN.md 120 KB budget. The exact +931-byte A/B delta was not independently rerun against base in this job; Safari/iOS remains the owner's check. The unrelated base-branch divergence in scripts/verify and scripts/jobs was left untouched.

Commits:

  • 951a575 fix: keep responsive page actions inside content
  • 3444388 test: guard responsive table boundaries
  • Final head: 3444388

Final gates:

PASS fast: JavaScript dependencies
PASS fast: build web app
PASS fast: cargo fmt --check
PASS fast: cargo clippy
PASS fast: cargo test
PASS fast: svelte-check
PASS fast: UI package svelte-check
PASS fast: Vitest
PASS fast: UI package Vitest
PASS fast: OpenAPI and TypeScript client drift
PASS browser: JavaScript dependencies
PASS browser: install Chromium and system dependencies
PASS browser: build web app
PASS browser: build release binary
PASS browser: Playwright against release server

The browser sweep asserts content-box right-edge safety for every listed route at 1440, 1024, 768, 390, and 320 widths. Screenshots are under /mnt/hdd/infraternal/artifacts/review-ui-polish/, including:

  • /mnt/hdd/infraternal/artifacts/review-ui-polish/light-1440x900-containers.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/dark-1440x900-containers.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/light-390x844-containers.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/dark-390x844-containers.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/light-1440x900-container-detail.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/dark-1440x900-container-detail.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/light-390x844-container-detail.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/dark-390x844-container-detail.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/light-1440x900-hosts.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/dark-1440x900-hosts.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/light-390x844-hosts.png
  • /mnt/hdd/infraternal/artifacts/review-ui-polish/dark-390x844-hosts.png
Review/fix complete on `ui-polish`. Findings and fixes: 1. Containers PageIntro status cluster was intrinsically zero-width because Cluster's inline-size containment collapsed the max-content grid track; its badge and poll status overflowed the main content box at desktop. Applied the better-layout/shared-grid rule and better-interface no-clipping rule in `packages/ui/src/lib/PageIntro.svelte`; the action cluster now sizes to its contents and remains full-width on compact layouts. 2. Compact virtualized table rows could exceed the initial 52px virtualizer boundary; the 40px Actions target was clipped at the phone card edge. Applied the better-layout space-aware/scroll-boundary rule and better-ui minimum hit-area rule in `packages/ui/src/lib/Table.svelte`: compact tables estimate 64px rows, enforce a 64px compact row minimum, and show an inset bottom boundary cue. The browser check now rejects clipped controls, unreachable rendered rows, missing boundary cues, and missing Actions columns. 3. The new content-box invariant exposed a separate pre-existing Hosts table overflow at 1024px and 390/320px. Applied the better-layout responsive-column and better-typography deliberate-truncation rules in `packages/web/src/routes/hosts/+page.svelte`: compact widths/priorities fit the table and host IDs ellipsize. Review verdict: - Font fix is proven in the production release build, not just by test completion: `document.fonts.status` was `loaded`; `document.fonts.check('14px "Inter Variable"')` and `document.fonts.check('14px "JetBrains Mono Variable"')` were both true. Computed evidence: body Inter Variable 14/400/20px; h1 Inter Variable 24/600/32px/-0.48px tracking; dashboard count Inter Variable 24/550/32px with `tabular-nums`; identifier JetBrains Mono Variable 12/400/20px. - The docs/UI scale, weights, tracking, leading, tabular numerals, and mono scope are consistent. Large dashboard counts and host counts are UI text with tabular numbers; mono remains on identifiers/digests/engine-adjacent values. - #8 findings are fixed: compact container actions use the named keyboard menu; Finished and Exit code are omitted while running; timestamps use the shared Timestamp component/format; image reference and content digest are separate, labeled, truncatable, and the digest has a named copy control with fallback and live status. - Accessibility review passed for Actions, Filters, and Copy image digest names; native keyboard operation, focus return, visible focus, auth tab roving focus, dialogs/menus, and live status regions were covered by the browser checks. - Motion review (review-animations): changed motion stays on transform/opacity, pointer feedback is not keyboard feedback, and reduced motion disables it. - No sveltebits usage was found, so there is no missing sveltebits license/source record. - Measured initial-route JS gzip is 74,007 bytes, below the PLAN.md 120 KB budget. The exact +931-byte A/B delta was not independently rerun against base in this job; Safari/iOS remains the owner's check. The unrelated base-branch divergence in `scripts/verify` and `scripts/jobs` was left untouched. Commits: - `951a575 fix: keep responsive page actions inside content` - `3444388 test: guard responsive table boundaries` - Final head: `3444388` Final gates: ``` PASS fast: JavaScript dependencies PASS fast: build web app PASS fast: cargo fmt --check PASS fast: cargo clippy PASS fast: cargo test PASS fast: svelte-check PASS fast: UI package svelte-check PASS fast: Vitest PASS fast: UI package Vitest PASS fast: OpenAPI and TypeScript client drift ``` ``` PASS browser: JavaScript dependencies PASS browser: install Chromium and system dependencies PASS browser: build web app PASS browser: build release binary PASS browser: Playwright against release server ``` The browser sweep asserts content-box right-edge safety for every listed route at 1440, 1024, 768, 390, and 320 widths. Screenshots are under `/mnt/hdd/infraternal/artifacts/review-ui-polish/`, including: - `/mnt/hdd/infraternal/artifacts/review-ui-polish/light-1440x900-containers.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/dark-1440x900-containers.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/light-390x844-containers.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/dark-390x844-containers.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/light-1440x900-container-detail.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/dark-1440x900-container-detail.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/light-390x844-container-detail.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/dark-390x844-container-detail.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/light-1440x900-hosts.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/dark-1440x900-hosts.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/light-390x844-hosts.png` - `/mnt/hdd/infraternal/artifacts/review-ui-polish/dark-390x844-hosts.png`
Author
Owner

Starting verify-ui-polish on branch ui-polish at 3444388ba5eb6ac35b1e6771fcfe23eb36477fe6. Fetched origin/dev; merge target is 3acac247fb3e91113d6666ef8e1814ad08b6a7e6. I’ll merge that head, run the requested UI evidence and gates, and report any merge-caused fix separately.

Starting verify-ui-polish on branch `ui-polish` at `3444388ba5eb6ac35b1e6771fcfe23eb36477fe6`. Fetched `origin/dev`; merge target is `3acac247fb3e91113d6666ef8e1814ad08b6a7e6`. I’ll merge that head, run the requested UI evidence and gates, and report any merge-caused fix separately.
Author
Owner

Orchestrator: merged to dev at badd796 and pushed; the preview on :7010 now runs this head.

Verify, re-run by the orchestrator on the merge head in .worktrees/dev-check:

PASS fast: JavaScript dependencies
PASS fast: build web app
PASS fast: cargo fmt --check
PASS fast: cargo clippy
PASS fast: cargo test
PASS fast: svelte-check
PASS fast: UI package svelte-check
PASS fast: Vitest
PASS fast: UI package Vitest
PASS fast: OpenAPI and TypeScript client drift
PASS browser: JavaScript dependencies
PASS browser: install Chromium and system dependencies
PASS browser: build web app
PASS browser: build release binary
PASS browser: Playwright against release server

Step 12c is done: one build, one review (which also fixed the two clipping defects the orchestrator found, plus a Hosts table overflow it found itself), and this verify. Remaining later items, recorded and not looped: the owner's Safari and iOS checklist, and an independent A/B of the +931-byte gzip delta.

Orchestrator: **merged to `dev` at `badd796`** and pushed; the preview on :7010 now runs this head. Verify, re-run by the orchestrator on the merge head in `.worktrees/dev-check`: ``` PASS fast: JavaScript dependencies PASS fast: build web app PASS fast: cargo fmt --check PASS fast: cargo clippy PASS fast: cargo test PASS fast: svelte-check PASS fast: UI package svelte-check PASS fast: Vitest PASS fast: UI package Vitest PASS fast: OpenAPI and TypeScript client drift PASS browser: JavaScript dependencies PASS browser: install Chromium and system dependencies PASS browser: build web app PASS browser: build release binary PASS browser: Playwright against release server ``` Step 12c is done: one build, one review (which also fixed the two clipping defects the orchestrator found, plus a Hosts table overflow it found itself), and this verify. Remaining later items, recorded and not looped: the owner's Safari and iOS checklist, and an independent A/B of the +931-byte gzip delta.
Author
Owner

Orchestrator note: a second orchestrator session (d95eac) merged 12c and verified it on badd796 (comment above), while my own verify-ui-polish job was running. That job was stopped when .worktrees/ui-polish was removed, and its checks are superseded by the recorded verify. Also later, from my review of the screenshots: on desktop a container row's second line touches the table's bottom border (the row needs bottom padding); "ACTIONS" is uppercase while the other headers are not; and Docker's status text "Up Less than a second" has a stray capital L. These are folded into step 12b.

Orchestrator note: a second orchestrator session (`d95eac`) merged 12c and verified it on `badd796` (comment above), while my own `verify-ui-polish` job was running. That job was stopped when `.worktrees/ui-polish` was removed, and its checks are superseded by the recorded verify. Also later, from my review of the screenshots: on desktop a container row's second line touches the table's bottom border (the row needs bottom padding); "ACTIONS" is uppercase while the other headers are not; and Docker's status text "Up Less than a second" has a stray capital L. These are folded into step 12b.
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal-v0#18
No description provided.