feat(FR-2761): add deployment preset create/edit/delete UI#7125
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has required the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
Coverage report for
|
St.❔ |
Category | Percentage | Covered / Total |
|---|---|---|---|
| 🔴 | Statements | 7.98% (-0.11% 🔻) |
1859/23302 |
| 🔴 | Branches | 7.17% (-0.17% 🔻) |
1187/16545 |
| 🔴 | Functions | 4.72% (-0.08% 🔻) |
297/6289 |
| 🔴 | Lines | 7.76% (-0.1% 🔻) |
1750/22566 |
Show new covered files 🐣
St.❔ |
File | Statements | Branches | Functions | Lines |
|---|---|---|---|---|---|
| 🔴 | ... / AdminDeploymentPresetSettingPageContent.tsx |
0% | 0% | 0% | 0% |
| 🔴 | ... / DeploymentPresetDetailContent.tsx |
0% | 0% | 0% | 0% |
| 🔴 | ... / AdminDeploymentPresetSettingPage.tsx |
0% | 0% | 0% | 0% |
| 🔴 | ... / AdminDeploymentPresetListPage.tsx |
0% | 0% | 0% | 0% |
Test suite run success
865 tests passing in 40 suites.
Report generated by 🧪jest coverage report action from e93e2bf
70f160b to
c4093fb
Compare
b2ca96c to
b0f5fb7
Compare
b0f5fb7 to
69c1ee3
Compare
d769590 to
adc2b11
Compare
c4093fb to
563bd00
Compare
adc2b11 to
2e9864f
Compare
0234e8f to
065f85b
Compare
Coverage report for
|
St.❔ |
Category | Percentage | Covered / Total |
|---|---|---|---|
| 🟢 | Statements | 81.87% | 429/524 |
| 🟡 | Branches | 70.43% | 362/514 |
| 🟡 | Functions | 76.86% | 93/121 |
| 🟢 | Lines | 83.19% | 391/470 |
Test suite run success
319 tests passing in 13 suites.
Report generated by 🧪jest coverage report action from e93e2bf
f2a7345 to
64cf62b
Compare
Add AdminDeploymentPresetSettingModal with create/edit form, DeploymentPresetDetailContent for delete preview, and wire both into AdminDeploymentPresetListPage. Add i18n translations for all 21 locales.
- AdminDeploymentPresetListPage: runtimeVariantId filter is a raw UUID
scalar in the schema (not a UUIDFilter object). Switch the filter
property to type 'uuid' with valueMode 'scalar' and fixedOperator
'equals', and harden buildFilter to coerce both the scalar string and
the legacy { equals: '...' } operator form into a plain UUID.
- AdminServingPage: migrate the tab-fallback useEffect to useEffectEvent
per .claude/rules/use-effect-event.md so the effect only re-runs on
the genuine reactive deps (tab, isSuperAdmin, isDeploymentPresetSupported)
rather than re-firing when setQueryParam identity churns.
- AdminDeploymentPresetSettingModal: gate the Description field to edit
mode only and add a TODO(needs-backend) marker. The current
CreateDeploymentRevisionPresetInput does not yet accept description,
so rendering the field on create silently dropped user input.
… RuntimeVariantSelect
64cf62b to
4bbc1f8
Compare
065f85b to
d7cb5fc
Compare
c6a2244 to
1146cb6
Compare
- Remove resourceSlots from fragment to fix AllocatedResourceSlotNode.id backend error that was causing deploymentRevisionPreset to return null - Switch fetch policy from network-only to store-and-network to avoid duplicate requests - Revert node() query workaround (backend doesn't support node for DeploymentRevisionPreset) - Track review step validation result in separate reviewHasError state so error status is correct even when other steps' form fields are unmounted - Show review step title in red on error instead of x-icon status - Update button disabled prop to use reviewHasError
1146cb6 to
e93e2bf
Compare

Resolves #7121 (FR-2761)
Summary
Add create / edit / delete UI for deployment revision presets on the admin tab.
New files
AdminDeploymentPresetSettingPageContent– stepper-based create / edit form covering:name,description(edit-only),rank,runtimeVariantIdimageId(UUID-based image select via newBAIImageSelect)clusterMode(single / multi),clusterSizestartupCommand,bootstrapScriptreplicaCount,revisionHistoryLimit,openToPublicAdminDeploymentPresetSettingPage– page wrapper that routes create / edit flows intoAdminDeploymentPresetSettingPageContentAdminDeploymentPresetListPage– list page with row actions (edit → setting page, delete →BAIConfirmModalWithInputper destructive-confirmation rule)BAIImageSelect– reusable UUID-based image select component (undercomponents/fragments/)Notable fixes
RuntimeVariantSelectin<Suspense>caused the innerForm.Itemto unmount during loading, un-registering the field and making"runtime is required"stick. Fix:RuntimeVariantSelectField/ImageSelectFieldwrappers keep<Suspense>inside the field whilevalue/onChangeflow throughForm.Itemuninterrupted.useEffectEventmigration inAdminServingPagetab-fallback effect so the effect re-runs only on genuine reactive deps.Divider.orientationMargin→styles.content.margin,Select.filterOption→showSearch={{ filterOption }}. Spacing literals replaced with theme tokens.runtimeVariantIdfilter in the list page switched to UUID scalar withfixedOperator: 'equals';buildFilterhardened to tolerate the legacy{ equals: '...' }form in URL state.i18n
52 new keys added across the deployment-preset surface and translated for all 22 locales.