Repository navigation
refactor(ui): reuse shared requirement records - #140407
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
3ca598f to
acfe2ab
Compare
|
Codex review: needs maintainer review before merge. Reviewed September 6, 2026, 4:09 PM ET / 20:09 UTC. ClawSweeper reviewWhat this changesThe Skills UI reuses shared requirement and configuration-check types while preserving its existing status fields and optionality. Merge readiness✅ Ready for maintainer review Useful, narrowly scoped cleanup that remains absent from the inspected main revision. No actionable correctness findings; maintainer-authored, protected work should remain open. Priority: P3 Review scores
Verification
How this fits togetherThe Gateway evaluates skill prerequisites and sends status records to the Control UI. The UI uses these records to display missing requirements and available installation actions. flowchart LR
A[Skill metadata] --> B[Requirement evaluation]
B --> C[Gateway skill status]
C --> D[UI status records]
E[Shared requirement types] -.-> B
E -.-> D
D --> F[Skills page]
Before mergeNone. Agent review detailsSecurityNone. PR surfaceSource -16. Total -16 across 1 file. View PR surface stats
Review metricsNone. Technical reviewBest possible solution: Keep requirement records canonical in the shared module while retaining the UI-specific status model. Do we have a high-confidence way to reproduce the issue? Not applicable: this is type-only cleanup, and direct source comparison confirms the existing duplicate records. Is this the best way to solve the issue? Yes: reusing the exact shared records removes duplication without importing runtime code or imposing the server's broader status requirements on the UI. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 9474ff67da1f. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
|
|
Merged via squash.
|
…rol-ui * origin/main: docs: remove the empty release-sections nav group (#140427) fix(tooling): omit Codex machine squash credit (#140420) chore(ui): refresh control ui locales (#140384) refactor(plugin-sdk): reuse native approval input contracts (#140415) fix: silent model WebSocket streams hang past the idle timeout (#140335) perf(ai): avoid unused text extraction for image results (#140409) fix(ui): distinguish failed GitHub status checks from disconnected accounts (#140333) refactor(cron): share runtime feedback schema fields (#140408) fix: avoid duplicate cloud worker teardown during recovery (#140377) fix(cli): show executable approval scope (#138386) refactor(ui): reuse shared requirement records (#140407) test(gateway): table-drive device token lifecycle checks (#140403) fix(chat): fence delayed history at terminal retirement (#140379) test(skills): compare large upload bytes natively (#140402) refactor(delivery): reuse the canonical rendered batch plan type (#140386) docs(start): repair the first-run path from landing page to first channel (#140390) # Conflicts: # docs/.i18n/glossary.zh-CN.json
Related: #135868
What Problem This Solves
The Skills UI repeats requirement and configuration-check records already owned by the shared requirements module. Those copies create avoidable maintenance debt in the maintainer-directed deletion campaign.
Why This Change Was Made
Use the existing
RequirementsandRequirementConfigChecktypes for the UI's required, missing, and configuration-check fields. Keep the broader UI status model because its field requirements intentionally differ from the server model.User Impact
No behavior or appearance change. Production delta is −16 (+4/−20), with zero test/tooling/docs change. Every existing UI status field retains its type and optionality.
Evidence
SkillStatusEntryandSkillStatusReportshapes against real shared types: identical, including nested records and arrays.node scripts/run-vitest.mjs --config ui/vitest.config.ts ui/src/lib/skills ui/src/pages/skills: 3 files, 69 tests passed.node scripts/check-changed.mjs: passed, including core-test/UI types, i18n, dead exports, and lint.