Repository navigation
Expand file tree
/
Copy pathpubspec.yaml
More file actions
332 lines (295 loc) · 13.4 KB
/
Copy pathpubspec.yaml
File metadata and controls
332 lines (295 loc) · 13.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
name: remix_workspace
environment:
sdk: ">=3.12.0 <4.0.0"
flutter: ">=3.44.0"
dev_dependencies:
melos: ^8.5.0
flutter_lints: ^6.0.0
# Read by tool/check_registry_icons.dart; keep within registry/icons.yaml.
lucide_flutter: ^1.47.0
build_runner: ^2.10.1
pub_semver: ^2.2.0
test: ^1.31.0
yaml: ^3.1.3
workspace:
- apps/dashboard
- apps/demo
- apps/naked_ui_example
- apps/playground
- apps/widgetbook_vanilla
- packages/naked_ui
- packages/remix
- packages/remix_cli
- packages/remix_ui_fonts
- packages/remix_ui_icons
- registry_source
melos:
packages:
- apps/*
- packages/*
- registry_source
# No `command.bootstrap.environment` here on purpose. It rewrites one
# `environment:` into every package it manages, and this workspace has two
# legitimate floors: published libraries and application-owned Fortal source
# run on Mix's Flutter 3.41, while the dev toolchain (analyzer, via
# build_runner) needs meta 1.18 and therefore Flutter 3.44. Melos offers no
# per-package exemption, so a single managed value could only be wrong for
# one group.
# tool/check_toolchain.dart owns both floors and enforces them instead.
command:
version:
# The aggregate workspace changelog is not published and duplicates the
# per-package ones, so a `melos version` run should not create it.
workspaceChangelog: false
bootstrap:
# Every dependency that more than one workspace pubspec declares takes
# its constraint from here, so one edit plus `dart run melos bootstrap`
# moves it everywhere; that keeps the Fortal authoring source analyzed
# against the same Mix as Remix. Unlike `environment` above, this is safe
# to manage centrally: melos skips any package that does not already
# declare the dependency (see `_updateDependencies` in melos), so the
# apps keep resolving Mix transitively and never gain a direct dependency.
# A dependency that only one pubspec declares stays local to it.
#
# Bootstrap never rewrites the root pubspec, which is not a melos
# package. tool/check_dependency_constraints.dart holds the root and
# every member to these values, and fails on a shared dependency missing
# from this list.
#
# Workspace packages are listed too. Workspace resolution always uses the
# local source, but these hosted constraints keep each manifest
# deployable outside the workspace. Release versioning runs with
# `--no-dependent-constraints`, so a floor moves only when edited here.
#
# Keep these at the versions actually exercised by CI. Declaring an older
# floor than we test would claim support for a Mix we never build against.
# tool/check_consumer_mix.dart verifies the hosted Remix consumer
# contract; Fortal registry generation copies its floors from the default
# registry rather than publishing this internal manifest.
dependencies:
# 2.3.1 is the floor, not a preference: Remix uses FocusVisibility and
# FocusVisibilityScope (first shipped in mix 2.3.0) and relies on
# 2.3.1's Prop fallback, where the latest source wins.
mix: ^2.3.1
mix_annotations: ^2.2.0-beta.1
mix_chart: ^0.0.1-beta.3
pub_semver: ^2.2.0
yaml: ^3.1.3
naked_ui: ^1.2.3
remix: ^1.0.0-beta.13
remix_ui_icons: ^0.1.0
remix_ui_fonts: ^0.1.0
widgetbook: ^3.25.0
widgetbook_annotation: ^3.11.0
dev_dependencies:
widgetbook_generator: ^3.24.0
build_runner: ^2.10.1
meta: ^1.18.0
mix_generator: ^2.2.0-beta.3
remix_cli: ^1.0.0-beta.0
test: ^1.31.0
scripts:
# No `release:*` versioning scripts here on purpose. The version workflow
# is the supported path for the published Remix package; registry_source is
# the internal authoring and parity package whose source derives the remote
# presets, so release automation must not version it.
generate:
description: Regenerate Remix sources
# registry_source's generator resolves package:remix, so it must not build
# while remix is rewriting its own lib/.
exec:
command: dart run build_runner build
concurrency: 1
orderDependents: true
packageFilters:
scope: [remix, registry_source]
generate:check:
description: Regenerate Remix sources and fail only on generated drift
exec:
command: dart run $MELOS_ROOT_PATH/tool/check_generated.dart
concurrency: 1
orderDependents: true
# Installed-source applications regenerate their own adapters. This also
# checks dashboard's explicit chat closure, not the full Fortal catalog.
packageFilters:
scope:
[remix, registry_source, playground, dashboard]
test:flutter:
exec: flutter test --reporter=failures-only
description: Run flutter test
packageFilters:
dirExists: test
flutter: true
test:cli:
description: Run the pure-Dart remix_cli test suite
exec:
command: dart test
concurrency: 1
packageFilters:
scope: remix_cli
version:align:check:
run: dart run tool/check_version_alignment.dart
description: Verify the registry's remix and remix_ui_fonts floors match the packages
mix:consumer:check:
run: dart run tool/check_consumer_mix.dart
description: Verify consumer tests resolve the declared hosted Mix release
toolchain:check:
run: dart run tool/check_toolchain.dart
description: Verify every package declares the melos-managed toolchain floor
material:check:
steps:
- dart test test/tool/check_material_independence_test.dart
- dart run tool/check_material_independence.dart
description: Verify published Flutter libraries and preset sources contain no direct Material usage
open-code:check:
steps:
- dart test test/tool/check_open_code_test.dart
- dart run tool/check_open_code.dart --source checkout --item dashboard_shell
- dart run tool/check_open_code.dart --source checkout --item dashboard_demo
- dart run tool/check_open_code.dart --preset fortal --source checkout --item dashboard_shell
- dart run tool/check_open_code.dart --preset fortal --source checkout --item dashboard_demo
- dart run tool/check_open_code.dart --source checkout
- dart run tool/check_open_code.dart --preset fortal --source checkout
description: Install every item from both presets against the Remix checkout
open-code:release:check:
steps:
- dart run tool/check_open_code.dart --source hosted
- dart run tool/check_open_code.dart --preset fortal --source hosted
description: Verify both presets against the required published Remix release
open-code:registry:build:
run: dart run tool/build_registry.dart
description: Derive every remote preset from analyzer-checked package source
open-code:registry:check:
steps:
- dart test test/tool/build_registry_test.dart test/tool/build_registry_agent_test.dart
- dart run tool/build_registry.dart --check
- dart run tool/check_registry_icons.dart
description: Test preset derivation and fail on committed registry drift
open-code:apps:check:
run: dart run tool/check_consumer_apps.dart
description: Verify the workspace consumers' installed source still mirrors the registry
vanilla:scale:check:
steps:
- dart test test/tool/check_vanilla_scale_test.dart
- dart run tool/check_vanilla_scale.dart
description: Fail on numeric literals off Vanilla's spacing and type scale
icons:generate:
steps:
- uv run --frozen --project packages/remix_ui_icons/tool/radix_icons glyphpact --config packages/remix_ui_icons/tool/radix_icons/glyphpact.json
- uv run --frozen --project packages/remix_ui_icons/tool/radix_icons python packages/remix_ui_icons/tool/radix_icons/generate_icons_index.py
description: Regenerate the locked RemixIcons font, Dart provider, and opt-in index
icons:check:
steps:
- uv run --frozen --project packages/remix_ui_icons/tool/radix_icons glyphpact --config packages/remix_ui_icons/tool/radix_icons/glyphpact.json --check
- uv run --frozen --project packages/remix_ui_icons/tool/radix_icons python -m unittest discover -s packages/remix_ui_icons/tool/radix_icons -p 'test_*.py'
- uv run --frozen --project packages/remix_ui_icons/tool/radix_icons python packages/remix_ui_icons/tool/radix_icons/verify.py
description: Verify the pinned Radix snapshot, generated icon artifacts, and opt-in index
constraints:check:
run: dart run tool/check_dependency_constraints.dart
description: Verify shared dependency constraints match the melos bootstrap config
analyze:
run: dart analyze
description: Analyze every workspace package
format:check:
# The analyzer does not check formatting, so nothing else here would.
# Generated sources are covered too, which is why this runs after
# `generate:check` rather than before it.
run: dart format --output=none --set-exit-if-changed .
description: Verify every Dart source matches the formatter
# `ci` runs the scripts below in sequence. CI runs those scripts as
# parallel jobs. The `icons` and `cli-windows` jobs are CI-only.
#
# tool/check_ci_coverage.dart fails when a `ci` step and the workflow's
# `melos run` list drift, and runs inside `ci:checks`.
#
# Group by cost, not by theme. The two open-code presets are separate steps
# purely because they are ~5 minutes each and independent, and together
# they were half the old wall clock.
ci:
steps:
- ci:checks
- ci:codegen
- ci:cli
- ci:flutter
- ci:open-code:vanilla
- ci:open-code:fortal
- ci:open-code:icons
description: >-
Verify generated sources, docs, Fortal parity, tests, and the
open-code consumer boundary
ci:checks:
steps:
- ci:coverage:check
- toolchain:check
- constraints:check
- analyze
- version:align:check
- mix:consumer:check
- material:check
- docs:check
- fortal:parity:check
- open-code:registry:check
- vanilla:scale:check
description: >-
Every cheap contract checker; seconds in total, so they share one job
ci:codegen:
steps:
- generate:check
- format:check
description: >-
Regenerate Remix sources, then fail on generated or formatting drift
ci:cli:
steps:
- test:cli
- open-code:apps:check
description: The pure-Dart CLI suite and the workspace consumer mirrors
ci:flutter:
steps:
- test:flutter
description: Every Flutter package test suite
# Fresh consumers use checkout Remix (and remix_ui_fonts for Vanilla) with
# hosted supporting packages.
# The release check separately requires the published Remix version.
ci:open-code:vanilla:
steps:
- dart test test/tool/check_open_code_test.dart
- dart run tool/check_open_code.dart --source checkout --item dashboard_shell
- dart run tool/check_open_code.dart --source checkout --item dashboard_demo
- dart run tool/check_open_code.dart --source checkout
description: Install every Vanilla-preset item against the Remix checkout
ci:open-code:fortal:
steps:
- dart run tool/check_open_code.dart --preset fortal --source checkout --item dashboard_shell
- dart run tool/check_open_code.dart --preset fortal --source checkout --item dashboard_demo
- dart run tool/check_open_code.dart --preset fortal --source checkout
description: Install every Fortal-preset item against the Remix checkout
ci:open-code:icons:
steps:
- dart run tool/check_open_code.dart --source checkout --item icons --icon-library lucide
- dart run tool/check_open_code.dart --source checkout --item dashboard_demo --icon-library lucide
- dart run tool/check_open_code.dart --preset fortal --source checkout --item dashboard_demo --icon-library lucide
description: >-
Install the icon alias and both presets' dashboards under lucide; the
full preset runs already cover the default library
ci:coverage:check:
run: dart run tool/check_ci_coverage.dart
description: Fail when `melos run ci` and the CI workflow disagree
fortal:parity:check:
exec: dart run tool/fortal_parity/check.dart
description: Verify the pinned Radix Themes 3.3.0 parity contract and coverage
packageFilters:
scope: registry_source
docs:catalog:
run: dart run tool/generate_fortal_catalog.dart
description: Regenerate the Fortal widget catalog from the parity manifest
docs:check:
# The catalog is rendered from the same manifest `fortal:parity:check`
# holds against the recipes, so a stale page is drift, not a doc edit.
steps:
- dart run tool/validate_docs.dart
- dart run tool/generate_fortal_catalog.dart --check
- python3 tool/check_example_hosts.py
- python3 -m unittest discover -s tool -p 'test_example_hosts.py'
- python3 tool/check_tutorial_assets.py
- python3 -m unittest discover -s tool -p 'test_tutorial_assets.py'
description: Validate docs, reject retired APIs, and fail on catalog drift