NAS-141049 / 27.0.0-BETA.1 / Migrate storage / pool-manager wizard to tn-* - #13868
NAS-141049 / 27.0.0-BETA.1 / Migrate storage / pool-manager wizard to tn-*#13868AlexKarpov98 wants to merge 22 commits into
Conversation
|
Claude finished @AlexKarpov98's task in 6m 17s —— View job ReviewReally nice work on the shared-utility extraction here 🎉 — 🚩 The library bump is buried in a mislabeled commit, and its blast radius is much bigger than this PR
🚩 The bump wasn't followed by a sweep — several workarounds now self-document as removable
Same staleness in the prose, which now describes a version the repo no longer pins:
The
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #13868 +/- ##
==========================================
+ Coverage 87.63% 87.72% +0.09%
==========================================
Files 1895 1904 +9
Lines 71860 72058 +198
Branches 9142 9206 +64
==========================================
+ Hits 62972 63214 +242
+ Misses 8888 8844 -44 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…ration Narrow the indexControlsByLabel guard to unlabelled controls only: repeated labelled controls (ix-list rows) are legitimate and were breaking iscsi-wizard, target-form and apps-settings specs. Claude-Session: https://claude.ai/code/session_01SUZQL1eT6RcmdRR59eYxpY
…ation - indexControlsByLabel drops the ambiguous '' key instead of throwing, so a form with two unlabelled controls no longer fails lookups for its labelled siblings. - Share formControlHarnessTypes/indexFormControls between PoolManagerHarness and the draid spec's local form facade. - tn-radio-group restores focus to the checked option after a model write recreates the radios; document the reference-equality guard and the validator-free invariant on the shared inner control. - Replace the hand-rolled role="button" vdev delete affordance with tn-icon-button. - Restore the details-item label/link styling storage-health-card lost when details-card() was swapped for tn-detail-card. - Align the pools-dashboard tn-empty icon with the rest of the app (56px). Claude-Session: https://claude.ai/code/session_01SUZQL1eT6RcmdRR59eYxpY
…ation - tn-radio-group: fold the index into the @for track key so options whose values stringify alike no longer collide (NG0955); covered by a new spec. - manual-selection-vdev: add a `position` input so the delete button's data-test and accessible name are unique per vdev card. - manual-selection-disk-filters: give the label-less search input an accessible name via [ariaLabel]. - disk-size-selects: record why the null re-emission in updateOptions() must stay unconditional (guarding it breaks unsetting-on-fewer-disks.spec.ts). - tn-migration playbook: correct the tn-menu-item test-id prefix (button-*, not menu-item-*) and document that tn-* form controls fall back to the bound control name, both verified against @truenas/ui-components 0.3.26. Claude-Session: https://claude.ai/code/session_01SUZQL1eT6RcmdRR59eYxpY
…gration - unlock-sed-disks: scope each exception row's test ids and the remove button's accessible name by row position, so repeated rows no longer resolve to the same data-test or the same aria-label. - tn-radio-group: resolve an absent accessible name to null so the group omits aria-label instead of rendering an empty one; fold the per-option test id into renderItems so it is computed once instead of on every change-detection pass. - TnFormControlHarness: document the supported control set and throw a specific error from setValue when the field holds something else. Claude-Session: https://claude.ai/code/session_01LoyKkDU26j8Z8Hgar3ghVW
|
Shouldnt tn-radio-group be part of the components library? |
…radio-group @truenas/ui-components now ships TnRadioGroupComponent, where the group is the single ControlValueAccessor, so the shim's destroy-and-recreate machinery and focus restoration — written only to work around a per-option accessor going stale — is no longer needed. The library group additionally gives the set an accessible name via aria-labelledby, an inferred required indicator, and a rendered validation message, none of which the shim could do. Resolved data-test values are unchanged: the pre-migration bases are passed through verbatim, so options still resolve to radio-button-<base>-<label>. Drops the two now-fixed radio rows from the playbook's upstream-defects table in favour of a component-map entry. Note the library change is unreleased — this needs the published version bumped before it can merge. Claude-Session: https://claude.ai/code/session_01LoyKkDU26j8Z8Hgar3ghVW
william-gr
left a comment
There was a problem hiding this comment.
Great job, could not find any immediate issues.
Might be worth verifying the test comment from claude.
Screen.Recording.2026-07-27.at.13.57.16.mov