Fix design system selection persistence#621
Conversation
lefarcen
left a comment
There was a problem hiding this comment.
Hi @Sid-Qin! Thanks for this PR — the design system default logic is much clearer now. 👍
Found a couple of edge cases that could affect live-artifact projects and catalog changes while the panel is mounted. See inline below.
mrcfps
left a comment
There was a problem hiding this comment.
@Sid-Qin I reviewed the New Project panel changes for default design-system initialization, the touched-state behavior that preserves explicit user choices, the media-surface nulling path, and the new component/helper coverage. The implementation looks consistent with the PR goal, and the helper extraction plus tests make the behavior easier to maintain. Thanks for tightening up this project-creation flow — nice work! 🙌
Generated by Looper 0.5.6 · runner=reviewer · agent=opencode|
@Sid-Qin Thanks for the update. Before this can be treated as merge-ready, please resolve all remaining review conversations on this PR. There are still two unresolved threads in
Please either address both points in code and then resolve the conversations, or reply in-thread if you believe a conversation should be closed without a code change. |
|
Hi @Sid-Qin! 🎉 Thanks for your contribution — this PR has been merged and the design system selection persistence fix is now live. The implementation now properly defaults the picker to the configured design system and preserves user choices across project creation. Thanks for making open-design better! |
Summary
Root cause
The New Project panel received
defaultDesignSystemIdbut initializedselectedDsIdsto an empty array. As a result, structured project surfaces displayedNone — freeformand created projects withdesignSystemId: nullunless the user manually reselected a design system.User impact
New prototype, deck, template, and other structured projects now visibly start with the configured default design system and persist that selection into project creation. Media surfaces remain design-system-free because their picker is hidden.
Testing
pnpm --filter @open-design/web testpnpm --filter @open-design/web typecheckpnpm --filter @open-design/web buildpnpm guardpnpm typecheckgit diff --checkCloses #603