@terreno/mcp 57.8.0 → 57.9.0
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/dist/docs/upgrades/57.9.0.md +28 -0
- package/dist/docs/versioned/next/explanation/charts.md +12 -0
- package/dist/docs/versioned/next/explanation/example-coverage.md +1 -1
- package/dist/docs/versioned/next/explanation/roadmap-seed-issues.md +20 -0
- package/dist/docs/versioned/next/how-to/README.md +1 -1
- package/dist/docs/versioned/next/how-to/admin-import-prebuilt.md +1 -1
- package/dist/docs/versioned/next/how-to/charts-and-dashboards.md +5 -0
- package/dist/docs/versioned/next/how-to/circleci.md +4 -3
- package/dist/docs/versioned/next/how-to/compare-chart-rendered-snapshots.md +8 -0
- package/dist/docs/versioned/next/how-to/install-agent-skills.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/ai-observability.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/b2b-platform-program.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/charts-and-dashboards.md +3 -2
- package/dist/docs/versioned/next/implementationPlans/dashboard-chart-parity.md +275 -0
- package/dist/docs/versioned/next/reference/ai.md +39 -10
- package/dist/docs/versioned/next/reference/environment-variables.md +1 -1
- package/dist/docs/versioned/next/reference/feature-flags.md +1 -1
- package/dist/docs/versioned/next/reference/ui.md +94 -11
- package/dist/docs/versioned/next/tasks/dashboard-chart-parity.md +145 -0
- package/package.json +2 -2
- package/src/docs/upgrades/57.9.0.md +28 -0
- package/src/docs/versioned/next/explanation/charts.md +12 -0
- package/src/docs/versioned/next/explanation/example-coverage.md +1 -1
- package/src/docs/versioned/next/explanation/roadmap-seed-issues.md +20 -0
- package/src/docs/versioned/next/how-to/README.md +1 -1
- package/src/docs/versioned/next/how-to/admin-import-prebuilt.md +1 -1
- package/src/docs/versioned/next/how-to/charts-and-dashboards.md +5 -0
- package/src/docs/versioned/next/how-to/circleci.md +4 -3
- package/src/docs/versioned/next/how-to/compare-chart-rendered-snapshots.md +8 -0
- package/src/docs/versioned/next/how-to/install-agent-skills.md +1 -1
- package/src/docs/versioned/next/implementationPlans/ai-observability.md +1 -1
- package/src/docs/versioned/next/implementationPlans/b2b-platform-program.md +1 -1
- package/src/docs/versioned/next/implementationPlans/charts-and-dashboards.md +3 -2
- package/src/docs/versioned/next/implementationPlans/dashboard-chart-parity.md +275 -0
- package/src/docs/versioned/next/reference/ai.md +39 -10
- package/src/docs/versioned/next/reference/environment-variables.md +1 -1
- package/src/docs/versioned/next/reference/feature-flags.md +1 -1
- package/src/docs/versioned/next/reference/ui.md +94 -11
- package/src/docs/versioned/next/tasks/dashboard-chart-parity.md +145 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Tasks: Dashboard chart parity
|
|
2
|
+
|
|
3
|
+
IP: [dashboard-chart-parity.md](../implementationPlans/dashboard-chart-parity.md)
|
|
4
|
+
**Follows:** https://github.com/TerrenoLabs/terreno/issues/1175
|
|
5
|
+
**Roadmap issue:** set after IP approval
|
|
6
|
+
|
|
7
|
+
**Feature profile:** false (full IP)
|
|
8
|
+
|
|
9
|
+
## Phase 1 — Tracer (scorecard)
|
|
10
|
+
|
|
11
|
+
- [x] **Task 1.1**: `SparklineChart` + dotted `comparisonData`
|
|
12
|
+
- Delivers: public plot-only sparkline; solid current series; dotted comparison aligned on `label`; no axes/grid/legend/tooltip row; empty input does not throw
|
|
13
|
+
- Files: `ui/src/SparklineChart.tsx`, `ui/src/SparklineChart.test.tsx`, `ui/src/charts/paths.ts` (reuse line path), `ui/src/Common.ts` (TypeDoc props), `ui/src/index.tsx` / `heavyOptionalExports.tsx`
|
|
14
|
+
- Blocked by: none
|
|
15
|
+
- Skills: `terreno-ui`, `update-docs`
|
|
16
|
+
- Docs: stub `SparklineChart` on `docs/reference/ui.md` Display list
|
|
17
|
+
- Acceptance: bun tests — N points → path present; comparison path present when `comparisonData` set; empty data shows nothing / emptyText if provided; `ui` compile green
|
|
18
|
+
|
|
19
|
+
- [x] **Task 1.2**: `Scorecard` + `ChartCard`
|
|
20
|
+
- Delivers: KPI tile with title, formatted value, optional sparkline; `ChartCard` with title, period badge, optional `onPeriodPress`, optional `filterSummary`
|
|
21
|
+
- Files: `ui/src/Scorecard.tsx`, `ui/src/Scorecard.test.tsx`, `ui/src/ChartCard.tsx`, `ui/src/ChartCard.test.tsx`, lazy exports
|
|
22
|
+
- Blocked by: 1.1
|
|
23
|
+
- Skills: `terreno-ui`, `verify-ui-changes`, `update-docs`
|
|
24
|
+
- Docs: stub both on `docs/reference/ui.md`
|
|
25
|
+
- Acceptance: bun tests — value + title render; sparkline mounts when `sparklineData` set; badge press fires; period badge has no press handler when `onPeriodPress` omitted
|
|
26
|
+
|
|
27
|
+
- [x] **Task 1.3**: Scorecard demo + first golden
|
|
28
|
+
- Delivers: demo story; gallery fixture `scorecard-sparkline-comparison` (five KPI tiles, static data); PNG golden
|
|
29
|
+
- Files: `demo/stories/Scorecard.stories.tsx`, `demo/stories/ChartCard.stories.tsx`, `demo/demoConfig.tsx`, `demo/chartVisual/fixtureCatalog.ts`, `demo/chartVisual/fixtures.tsx`, `demo/rendered-snapshots/scorecard-sparkline-comparison.png`
|
|
30
|
+
- Blocked by: 1.2
|
|
31
|
+
- Skills: `terreno-ui`, `review-chart-visuals`, `verify-ui-changes`
|
|
32
|
+
- Docs: `docs/how-to/compare-chart-rendered-snapshots.md` lists the new id
|
|
33
|
+
- Acceptance: fixture catalog test includes the id; `bun run ui:charts:compare` green for it; story registered
|
|
34
|
+
|
|
35
|
+
## Phase 2 — Cartesian additive facades
|
|
36
|
+
|
|
37
|
+
- [x] **Task 2.1**: `series` + `comparisonData` on `LineChart` / `AreaChart`
|
|
38
|
+
- Delivers: multi-series lines from `series`; single `data` still works; dotted comparison overlay; per-series legend; markers stay
|
|
39
|
+
- Files: `ui/src/LineChart.tsx`, `ui/src/AreaChart.tsx`, matching tests, `ui/src/charts/scales.ts` (shared x domain across series)
|
|
40
|
+
- Blocked by: 1.2
|
|
41
|
+
- Skills: `terreno-ui`, `update-docs`
|
|
42
|
+
- Docs: `docs/reference/ui.md` Line/Area props
|
|
43
|
+
- Acceptance: bun tests — three `series` → three paths + three legend labels; `{label,value}[]` only still draws one series; comparison path exists when set
|
|
44
|
+
|
|
45
|
+
- [x] **Task 2.2**: `xTickPolicy` + bar comparison + header shortcuts
|
|
46
|
+
- Delivers: `"auto"` rotates when labels would truncate, stays horizontal for ≤7 categories; `BarChart` accepts `series` (grouped later if >1 — this slice: first series only unless a second is comparison) and `comparisonData`; `title` / `periodLabel` / `onPeriodPress` on cartesian facades
|
|
47
|
+
- Files: `ui/src/BarChart.tsx`, `ui/src/LineChart.tsx`, `ui/src/charts/layout.ts`, `ui/src/BarChart.test.tsx`, `ui/src/LineChart.test.tsx`
|
|
48
|
+
- Blocked by: 2.1
|
|
49
|
+
- Skills: `terreno-ui`
|
|
50
|
+
- Docs: tick policy in `docs/explanation/charts.md`
|
|
51
|
+
- Acceptance: bun tests — 14 long date labels with `auto` → rotated tick style; 7 weekday labels stay horizontal; facade title renders when set and `ChartCard` is not wrapping (documented exclusive use)
|
|
52
|
+
|
|
53
|
+
- [x] **Task 2.3**: Cartesian goldens
|
|
54
|
+
- Delivers: fixtures `bar-time-rotated-ticks`, `line-three-series`, `bar-day-of-week`
|
|
55
|
+
- Files: `demo/chartVisual/**`, `demo/rendered-snapshots/*.png`
|
|
56
|
+
- Blocked by: 2.2
|
|
57
|
+
- Skills: `review-chart-visuals`, `verify-ui-changes`
|
|
58
|
+
- Docs: compare-how-to fixture table
|
|
59
|
+
- Acceptance: `bun run ui:charts:compare` green for the three ids
|
|
60
|
+
|
|
61
|
+
## Phase 3 — Donut center and share legend
|
|
62
|
+
|
|
63
|
+
- [x] **Task 3.1**: Donut hole + percent legend
|
|
64
|
+
- Delivers: `centerTitle`, `centerValue`; legend `swatch + label + formatShare` (default percent of total); 100% single-slice still draws a ring + center
|
|
65
|
+
- Files: `ui/src/DonutChart.tsx`, `ui/src/DonutChart.test.tsx`
|
|
66
|
+
- Blocked by: 1.2
|
|
67
|
+
- Skills: `terreno-ui`, `update-docs`
|
|
68
|
+
- Docs: `docs/reference/ui.md` Donut props
|
|
69
|
+
- Acceptance: bun tests — center copy present; legend includes `%`; one-slice data still has one path; existing slice color override still works
|
|
70
|
+
|
|
71
|
+
- [x] **Task 3.2**: Donut goldens
|
|
72
|
+
- Delivers: `donut-center-and-share`, `donut-single-slice`
|
|
73
|
+
- Files: `demo/chartVisual/**`, goldens
|
|
74
|
+
- Blocked by: 3.1
|
|
75
|
+
- Skills: `review-chart-visuals`
|
|
76
|
+
- Docs: compare-how-to
|
|
77
|
+
- Acceptance: compare green for both ids
|
|
78
|
+
|
|
79
|
+
## Phase 4 — Spanning grid
|
|
80
|
+
|
|
81
|
+
- [x] **Task 4.1**: `DashboardGridItem` spans
|
|
82
|
+
- Delivers: eager `DashboardGridItem` with `span` per breakpoint; default span 1; children without a wrapper keep current equal-column behavior
|
|
83
|
+
- Files: `ui/src/DashboardGrid.tsx` and/or `ui/src/DashboardGridItem.tsx`, `ui/src/DashboardGrid.test.tsx`, `ui/src/index.tsx` (eager)
|
|
84
|
+
- Blocked by: 1.2
|
|
85
|
+
- Skills: `terreno-ui`, `update-docs`
|
|
86
|
+
- Docs: `docs/reference/ui.md` Layout
|
|
87
|
+
- Acceptance: bun tests — span 2 in a 4-column row yields ~2× cell width minus gap; unwrapped children still fill 1 column
|
|
88
|
+
|
|
89
|
+
- [ ] **Task 4.2**: `hows-it-going-dashboard` chart composition
|
|
90
|
+
- Delivers: hard fixture matching the reference layout (5 scorecards, cost/conv bar, 3-line imp share, DOW bar, two donuts). Table slot may be a `ChartCard` placeholder until 5.2
|
|
91
|
+
- Files: `demo/chartVisual/fixtures.tsx`, `fixtureCatalog.ts`, golden
|
|
92
|
+
- Blocked by: 2.3, 3.2, 4.1
|
|
93
|
+
- Skills: `review-chart-visuals`, `verify-ui-changes`
|
|
94
|
+
- Docs: how-to example rewritten to this composition
|
|
95
|
+
- Acceptance: compare green; fixture uses `Scorecard` / `ChartCard` / `DashboardGridItem`, not ad-hoc `Box` widths only
|
|
96
|
+
|
|
97
|
+
## Phase 5 — Table chrome
|
|
98
|
+
|
|
99
|
+
- [ ] **Task 5.1**: Header groups, footer rows, range status, wrapLines
|
|
100
|
+
- Delivers: `headerGroups` second header row; `footerRows` sticky totals; range copy `start–end of total` with existing pagination; `wrapLines={2}` wraps cell text inside `rowHeight` (virtualization unchanged)
|
|
101
|
+
- Files: `ui/src/DataTable.tsx`, `ui/src/DataTable.test.tsx`, `ui/src/Pagination.tsx` (if range lives there), `ui/src/Common.ts`
|
|
102
|
+
- Blocked by: 4.1
|
|
103
|
+
- Skills: `terreno-ui`, `update-docs`
|
|
104
|
+
- Docs: `docs/reference/ui.md` DataTable; pointer from charts how-to
|
|
105
|
+
- Acceptance: bun tests — grouped header text visible; footer row present; range text `1–50 of 452` with page 1 size 50 total 452; pinned column scroll still syncs with groups/footer; wrapLines 2 does not change `rowHeight`
|
|
106
|
+
|
|
107
|
+
- [ ] **Task 5.2**: Table card in the hard fixture
|
|
108
|
+
- Delivers: one `ChartCard` + `DataTable` in `hows-it-going-dashboard` (Search Terms or Ad Group Check-in static rows, totals, period headers)
|
|
109
|
+
- Files: `demo/chartVisual/fixtures.tsx`, update golden
|
|
110
|
+
- Blocked by: 5.1, 4.2
|
|
111
|
+
- Skills: `review-chart-visuals`, `verify-ui-changes`
|
|
112
|
+
- Docs: how-to shows table in the same grid
|
|
113
|
+
- Acceptance: compare green after intentional golden update; wrapped first-column names visible in the PNG
|
|
114
|
+
|
|
115
|
+
## Phase 6 — Packaging and docs
|
|
116
|
+
|
|
117
|
+
- [ ] **Task 6.1**: Lazy root + import regression
|
|
118
|
+
- Delivers: `Scorecard`, `SparklineChart`, `ChartCard`, chart facades stay on `heavyOptionalExports`; `DashboardGrid` / `DashboardGridItem` eager; root import does not evaluate chart files
|
|
119
|
+
- Files: `ui/src/lazyBoundaries/heavyOptionalExports.tsx`, `ui/src/index.tsx`, `ui/src/RootImportRegression.test.tsx`, `docs/reference/ui-performance.md`
|
|
120
|
+
- Blocked by: 4.1, 5.1, 2.1, 3.1
|
|
121
|
+
- Skills: `terreno-ui`, `update-docs`
|
|
122
|
+
- Docs: performance page lists new lazy exports
|
|
123
|
+
- Acceptance: `RootImportRegression` fails if new chart files load with the root import; subpath imports work
|
|
124
|
+
|
|
125
|
+
- [ ] **Task 6.2**: Diátaxis + changelog + rules
|
|
126
|
+
- Delivers: how-to rewritten for easy-build composition; explanation covers scorecard, comparison stroke, additive facades vs grammar; reference complete; changelog fragment; ui rule export list; TypeDoc
|
|
127
|
+
- Files: `docs/how-to/charts-and-dashboards.md`, `docs/explanation/charts.md`, `docs/reference/ui.md`, `docs/how-to/README.md`, `.rulesync/rules/ui/00-ui.mdc`, `changelog/unreleased/dashboard-chart-parity.md`; `bun run website:generate` if needed
|
|
128
|
+
- Blocked by: 6.1, 5.2
|
|
129
|
+
- Skills: `update-docs`, `docs-audit`, `terreno-ui`
|
|
130
|
+
- Docs: the files listed above
|
|
131
|
+
- Acceptance: a stranger can copy the how-to into a screen that resembles the reference; explanation states grammar is not required; changelog `category: Added`; existing single-series how-to steps still valid as a subset
|
|
132
|
+
|
|
133
|
+
## Verification mapping
|
|
134
|
+
|
|
135
|
+
| Criterion | Method |
|
|
136
|
+
|-----------|--------|
|
|
137
|
+
| Scorecard + sparkline + comparison | bun tests + `scorecard-sparkline-comparison` PNG |
|
|
138
|
+
| Multi-series line | bun tests + `line-three-series` PNG |
|
|
139
|
+
| Rotated vs horizontal ticks | bun tests + `bar-time-rotated-ticks` / `bar-day-of-week` |
|
|
140
|
+
| Donut center + share | bun tests + donut goldens |
|
|
141
|
+
| Grid spans + reference layout | `hows-it-going-dashboard` PNG + grid unit tests |
|
|
142
|
+
| Table chrome | bun tests + table region of hard golden |
|
|
143
|
+
| Facade compatibility | existing `*Chart.test.tsx` stay green |
|
|
144
|
+
| Lazy charts | `RootImportRegression` |
|
|
145
|
+
| Frontend proof | `verify-ui-changes` on demo gallery; artifacts on the implementation PR |
|