@tekyzinc/gsd-t 2.60.10 → 2.62.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to GSD-T are documented here. Updated with each release.
|
|
4
4
|
|
|
5
|
+
## [2.62.10] - 2026-04-05
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **Widget-contract Test Fixture section (MANDATORY)** — `templates/widget-contract.md` now requires a `## Test Fixture` section at widget scope, with the same `__fixture_source__` / `__figma_template__` requirements as element contracts. Widget fixtures reference element sub-fixtures via `$ref:{element-name}#/fixture` rather than re-inlining element values — enforces the widget↔element boundary in the fixture layer. Closes gap W4 from widget-tier convergence run 1. Also adds a widget-level Verification Harness subsection.
|
|
9
|
+
- **Widget fixture boundary rule**: widget fixture fields MUST NOT duplicate element visual-spec fields (colors, font sizes, padding, radii) — those live in the element contract. A field name matching an element slot (segments, centerValue, xLabels) belongs in the element fixture.
|
|
10
|
+
|
|
11
|
+
## [2.61.10] - 2026-04-05
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- **Circular charts `-percentage` clarification** — `design-chart-taxonomy.md` now explicitly states that `chart-pie` and `chart-donut` do NOT take a `-percentage` suffix, because circular charts are inherently part-to-whole (circle = 100%). Whether segment labels show percentages or absolute values is a labelling choice recorded in the Test Fixture, not a distinct element. Prevents agents from inventing `chart-donut-percentage` when it doesn't exist in the closed set. Closes gap A from convergence run 2.
|
|
15
|
+
- **Figma MCP size guard** in `gsd-t-design-decompose.md` Step 1: call `get_metadata` first to map the tree, then `get_design_context` only on leaf nodes (< 100KB). Avoids the 250KB+ tool-results file dump when called on full-page frames. Closes gap #3 from convergence runs 1 and 2.
|
|
16
|
+
|
|
5
17
|
## [2.60.10] - 2026-04-05
|
|
6
18
|
|
|
7
19
|
### Added
|
|
@@ -41,6 +41,8 @@ Run these checks, log results to user inline:
|
|
|
41
41
|
|
|
42
42
|
Enumerate every visual element on every page/screen in the design. Use Figma MCP `get_metadata` or `get_design_context` if available; otherwise use visual analysis on the image.
|
|
43
43
|
|
|
44
|
+
> **⚠ Figma MCP size guard**: `get_design_context` on a full-page frame (e.g., a 390×3372px mobile screen) can return 250KB+ and be auto-saved to a tool-results file, forcing you to grep through it. **Always call `get_metadata` FIRST** to map the tree, then call `get_design_context` **only on leaf card/component nodes** (typically < 100KB). If you must call it on a frame, use `excludeScreenshot: true` to halve the payload.
|
|
45
|
+
|
|
44
46
|
Produce an initial flat inventory table:
|
|
45
47
|
|
|
46
48
|
| # | Element on Design | Appears On Pages | Visual Variant |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekyzinc/gsd-t",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.62.10",
|
|
4
4
|
"description": "GSD-T: Contract-Driven Development for Claude Code — 51 slash commands with headless CI/CD mode, graph-powered code analysis, real-time agent dashboard, execution intelligence, task telemetry, doc-ripple enforcement, backlog management, impact analysis, test sync, milestone archival, and PRD generation",
|
|
5
5
|
"author": "Tekyz, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -54,6 +54,8 @@ The catastrophic failure mode is: agent sees "bars" in Figma, picks `chart-bar-g
|
|
|
54
54
|
| `chart-radial-bar` | Concentric arcs, one per category |
|
|
55
55
|
| `chart-polar` | Radial grid with data plotted by angle |
|
|
56
56
|
|
|
57
|
+
> **Note on `-percentage` suffix**: Circular charts (`chart-pie`, `chart-donut`) are inherently part-to-whole — the circle is 100% by definition — so they do **NOT** take a `-percentage` suffix. Whether segment labels show percentages (`30%`) or absolute values (`$485`) is a labelling choice recorded in the element contract's Test Fixture, not a distinct element name. Do not invent `chart-donut-percentage` or `chart-pie-percentage`.
|
|
58
|
+
|
|
57
59
|
### Distribution / comparison
|
|
58
60
|
|
|
59
61
|
| Element name | Visual distinguisher |
|
|
@@ -85,6 +85,36 @@ Every widget is a card with consistent chrome. Missing chrome is the #1 cause of
|
|
|
85
85
|
| legend | `data.map(d => ({label: d.category, value: d.value, color: d.color}))` |
|
|
86
86
|
| filter | `{ value: timeRange, options: ['7d','30d','90d','1y'], onChange: onFilterChange }` |
|
|
87
87
|
|
|
88
|
+
## Test Fixture (MANDATORY)
|
|
89
|
+
|
|
90
|
+
Widget-scope fixture used by the Verification Harness. MUST include:
|
|
91
|
+
- Top-level widget chrome fields (title, subtitle, filter value, etc.)
|
|
92
|
+
- Body data for each composed element
|
|
93
|
+
|
|
94
|
+
Prefer referencing the element's own fixture rather than re-inlining its values:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"__fixture_source__": "extracted-from-figma | flat-contract | requirements | engineered-stub",
|
|
99
|
+
"__figma_template__": "{Figma node URL or null}",
|
|
100
|
+
"title": "Most Popular Tools",
|
|
101
|
+
"subtitle": "Which tools members interact with most.",
|
|
102
|
+
"filterValue": "Members",
|
|
103
|
+
"chart_fixture": "$ref:chart-donut#/fixture",
|
|
104
|
+
"legend_fixture": "$ref:legend-vertical-right#/fixture"
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Rules:**
|
|
109
|
+
- `__fixture_source__` and `__figma_template__` are REQUIRED (same Fixture Resolution Order as element contracts).
|
|
110
|
+
- Element sub-fixtures should be referenced by `$ref:{element-name}#/fixture` when the widget uses the element's canonical fixture unchanged. Inline only when the widget supplies widget-specific data (e.g., a story-specific dataset).
|
|
111
|
+
- Widget fixture MUST NOT contain visual spec fields that belong to an element (colors, font sizes, padding, radii). Those live in the element contract.
|
|
112
|
+
- **Boundary check**: if a field name matches a slot in the element's fixture (segments, centerValue, xLabels, etc.), it belongs in the element fixture, not the widget fixture.
|
|
113
|
+
|
|
114
|
+
## Verification Harness
|
|
115
|
+
|
|
116
|
+
The widget harness page (`/design-system/{widget-name}`) renders ONE widget instance on a blank page — no app chrome, no navigation. The widget IS the harness. Render the widget with the Test Fixture above; do not wrap it in a page-level layout.
|
|
117
|
+
|
|
88
118
|
## States
|
|
89
119
|
|
|
90
120
|
| State | Widget Behavior |
|