Commit Graph

7 Commits

Author SHA1 Message Date
12cff8c03a feat(gui-v2): StatCard (PrimeVue Card KPI tile, replaces AppKpiCard) + story
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 10:41:34 +02:00
9d1fd16f0f feat(gui-v2): StatusTag (PrimeVue Tag + statusSeverity map) + story
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 10:34:21 +02:00
20af2ebd32 feat(gui-v2): statusSeverity SoT map + bidirectional §8.X consistency test
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 10:23:44 +02:00
6e5c5bbec3 fix(gui-v2): rename AppDialog test stub off reserved HTML name "Dialog"
vue/no-reserved-component-names is error-level; <dialog> is native HTML.
Matching is via the stubs key + findComponent reference, not the stub's
own name, so the rename is behaviour-neutral (14/14 tests still pass).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 21:55:14 +02:00
3685797e18 fix(gui-v2): wire AppDialog accessible name + cover close/width in tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 21:53:04 +02:00
c26b281fa7 feat(gui-v2): port AppModal -> AppDialog (PrimeVue Dialog) to TypeScript
Replaces crewli-starter's hand-rolled Teleport/scrim/keydown Escape
pattern with a typed PrimeVue Dialog wrapper. v-model:open via writable
computed; slots #tabs/#footer gated; 12 unit tests all passing.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 21:37:46 +02:00
b1d3b9f53b feat(lint): add components-v2/pages-v2 boundary zones (no back-port)
Adds three new eslint-plugin-boundaries element zones and their matrix
rows so the GUI-redesign v2 surface is structurally isolated: v1 code
cannot import from v2 (back-porting forbidden), v2 can reach the
narrow FormField/Icon bridge via the components-foundation zone, and
pages-v2 can import from components-v2. Backed by a Vitest spec
running via the ESLint Node API (node environment; happy-dom's
document object breaks the case-police resolver). Adds a placeholder
src/components-v2/shared/X.vue so the resolver can classify the
import target during the test (unresolvable imports are not boundary-
checked by the plugin).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 09:46:31 +02:00