Skip to content

Improve Admin SPA UI auto-fix: platform UI catalog + pre-PR visual render harness#54

Merged
Lenajava1 merged 8 commits into
mainfrom
improve/admin-spa-ui-fix-guidelines
Jun 18, 2026
Merged

Improve Admin SPA UI auto-fix: platform UI catalog + pre-PR visual render harness#54
Lenajava1 merged 8 commits into
mainfrom
improve/admin-spa-ui-fix-guidelines

Conversation

@Lenajava1

Copy link
Copy Markdown
Collaborator

Why

vc-module-export PR #101 took 5 commits + a dismissed review to fix one Admin SPA toolbar-overlap bug. The /qa-fix Admin UI path had two gaps:

  1. Knowledge/angular-admin had zero documentation of the platform's Admin SPA layout classes, so the agent invented layout with inline position:absolute + fixed pixels and discovered the real conventions (searchrow/column-half/filter-edit, blade-static auto-sizing) by trial-and-error.
  2. Verification — the Node scratch harness can't render CSS and the dev team has no browser, so layout/CSS was "trivial-skip, confirm after deploy" — nothing caught wrong styles until post-deploy.

What

New /angular-admin files

  • admin-spa-ui-conventions.md — element-by-element catalog of platform UI classes (blades & sizing, search, filters, va-filter-panel, dropdowns, form inputs, buttons, ui-grid, vc-checkbox, dialogs, lists) grounded in vc-platform source, with a mirror-a-canonical-sibling-blade discovery recipe. (No Storybook exists for the Admin SPA — this is the substitute style guide.)
  • css-layout-patterns.md — before/after fix recipes.
  • visual-render-harness.md — renders the real blade against the real platform.css and proves the fix red→green in a browser before the PR opens (qa-backend-expert + playwright-edge interactively; Bash + Playwright headlessly in CI).

Wired into the flow

  • SKILL.md / angular-patterns.md — new Layout/CSS path; replaced the trivial-skip / "human-Storybook confirmation" language.
  • quality-gates.md — G2 (render red), G3/G4 (browser green pre-PR + reject inline position/fixed-px/ng-style), G6 (final post-deploy confirmation).
  • fullstack-backend.md, backend-reviewer.md (Gate-4 anti-pattern check), qa-backend-expert.md (render-harness verification), vc-module-architecture.md, skills-commands.md.
  • CI twins: ci/agents/fix-backend-agent.md (+ Admin SPA UI section, Bash+Playwright render), ci/agents/fix-triage-agent.md (layout/CSS is GO).

Net effect

Admin SPA layout/CSS bugs are fixed in one structural pass (mirror the platform pattern) and visually proven before the PR — no more public commit thrash, no "deploy and see."

🤖 Generated with Claude Code

Lenajava1 and others added 8 commits June 17, 2026 18:07
… harness

Fix the /qa-fix Admin SPA (Angular) layout/CSS auto-fix path that thrashed on
vc-module-export PR #101 (5 commits + dismissed review). Two gaps closed:

- Knowledge: new /angular-admin platform UI class catalog (blades, search,
  filters, dropdowns, inputs, buttons, grids, checkboxes, dialogs, lists) grounded
  in vc-platform source, with a "mirror a canonical sibling blade" discovery recipe
  + before/after fix recipes. There is no Storybook for the Admin SPA.
- Verification: visual render harness renders the real blade against the real
  platform.css and proves the fix red->green in a browser BEFORE the PR opens
  (qa-backend-expert interactive; Bash+Playwright in headless CI) instead of
  trivial-skip / post-deploy-only.

Wire-up: /angular-admin SKILL + angular-patterns Layout/CSS path; gate ladder
(G2 red render, G3/G4 green pre-PR + reject inline position/fixed-px/ng-style);
fullstack-backend, backend-reviewer (Gate-4 anti-pattern check), qa-backend-expert;
vc-module-architecture, skills-commands; CI twins fix-backend-agent / fix-triage-agent.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ality-check

The frontmatter description and "Reality check" section described only the
Node scratch harness (logic path), making the new layout/CSS render-harness
path invisible to fullstack-backend. Update both to present the two proof
mechanisms (logic → Node harness; layout/CSS → visual render harness).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… (VCST-5276 validation)

Validating the new tooling against the live VCST-5276 bug surfaced a real
limitation: for blades where .blade-content hosts a ui-grid, a static render /
DOM-swap can't prove a toolbar↔grid-header overlap is fixed — ui-grid only
repositions below the toolbar on a real Angular relayout, so the static green
showed the same overlap. Document the limitation + two honest options: drive a
real $digest + handleWindowResize() in the harness, or validate the fix pattern
by reference to a canonical sibling blade (vc-module-pricing pricelist-list,
confirmed 0px overlap on live QA) and route to deploy verification (G6). Never
report a static green as proof for ui-grid blades.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…arness

Option 1 now ships runnable code: capture gridApi via onRegisterApi, flush the
digest so .blade-static auto-sizes, then requestAnimationFrame -> window resize
+ handleWindowResize() + re-digest, and gate the screenshot on a ready flag so
the grid has repositioned below the toolbar. Assert thead-top >= toolbar-bottom
rather than eyeballing. Clarifies it needs a real Angular+ui-grid bootstrap (not
a static setContent or a live-admin DOM swap). Option 2 (validate-by-reference +
deploy verification) keeps the pricing-blade evidence.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…icon renders

A remote platform.css references its FA glyph font via relative URLs that 404 when
render.html is served from localhost, so fa fa-* icons render blank (hit during the
VCST-5276 clear-icon proof). Note it in the render.html recipe + the CDN workaround.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ASUREMENT (VCST-5276 lesson)

The catalog wrongly claimed ".blade-static auto-sizes; never reserve height" — that
false guidance drove a fix that didn't fix VCST-5276. Live DevTools measurement proved
.blade-static is FIXED-height (70px, overflow:visible) and .blade-content flows in at
that fixed bottom; a note stacked above the searchrow overflows ~136px onto the grid
header. Corrections:
- §2.1: blade-static is fixed-height, not auto-sizing; multi-row toolbars reserve height
  via __expanded or move the note into content (the original 140px reservation was the
  right idea; only inline ng-style was wrong — removing it re-broke the bug).
- css-layout-patterns Recipe 2 rewritten (was the exact failed approach).
- §4 + SKILL + quality-gates G3: a layout fix is gated by a NUMERIC measurement
  (getBoundingClientRect: searchrow.bottom <= gridHeader.top), not a screenshot — a
  screenshot gave a false PASS. Adds a reusable read-only measure script run via Chrome
  DevTools / browser_evaluate. Measure failing -> fix -> measure green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…r + wire into skill

Adds bladeStaticOverflowSnippet() + classifyBladeStaticOverflow() to
scripts/lib/measure-layout.ts: a reusable, read-only (getBoundingClientRect/
getComputedStyle) check that detects when a fixed-height .blade-static's content
overflows past .blade-content's top — the VCST-5276 defect class. Generic: works
on ANY module's blade (located by header substring or auto-picked), any toolbar
shape (searchrow, multi-row filter, note), and names the offending element. The
universal assertion is bladeStaticContentBottom <= bladeContentTop (overflowPx===0),
NOT the misleading fixed-box edge. Validated live on the export blade: overflowPx 66,
offender div.form-group.searchrow, PASS false. admin-spa-ui-conventions.md §4 now
points at the shared helper instead of an inline copy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Lenajava1 Lenajava1 merged commit 82f81f6 into main Jun 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant