feat(studio): review-then-publish confirmation + field-level detail in the changes panel#2271
Merged
Merged
Conversation
…n the changes panel Two P1 findings from the Studio package-create UX dogfood (objectstack-ai/framework#2615, mirrored as #2258): - One-click Publish had no confirmation: the header button released every package draft atomically straight away. It now opens the pending-changes panel, which gains a confirm footer (count note + "Publish all") when the caller passes onPublish — review-then-publish in one surface. The publish action itself stays with the caller; the preview-bar usage without onPublish keeps its read-only behavior. - The changes panel listed only "name · New/Update" with no drill-in. Each entry now expands into a lazily-fetched diff of published vs draft: field-level added/changed/removed rows (reusing the designer's diffFields) plus a changed-top-level-keys strip for everything else. New panel strings translated in all 10 locales.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
os-zhuang
pushed a commit
that referenced
this pull request
Jul 5, 2026
…8n sweep Upstream landed read-only gating + live API-name sync (#2263) and review-then-publish + changes detail (#2271) in parallel — take those implementations wholesale (they supersede this branch's #2259/#2260/#2261 work, including per-keystroke name sync and a structured diffFields-based detail). Kept from this branch: create-app nav scaffolding (#2262), the studio-design i18n sweep (#2264), ObjectFormDesigner's full read-only mode, and the nav-seeded skeleton conformance case; dropped the now- redundant blur-based derive tests in favour of upstream's. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DHQc5BdGhTzPfazex3vWdt
os-zhuang
pushed a commit
that referenced
this pull request
Jul 5, 2026
…name derive and changes-panel implementation, keep this PR's four-pillar readOnly gating, nav scaffold and i18n sweep
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Completes the remaining two P1 findings from the Studio "create a package and build in it" browser dogfood (objectstack-ai/framework#2615, mirrored here as #2258). The first two P1 items landed in #2263.
DraftChangesPanelgains an opt-in confirm footer (an "all N drafts publish atomically" note + a "Publish all" button) rendered only when the caller passesonPublish. Publishing itself stays with the caller (doPublish, unchanged); the preview-bar usage that doesn't passonPublishkeeps its read-only review behavior.name · New/Update. Each entry now expands (chevron toggle) into a lazily-fetched diff of published vs draft: field-level+ added/~ changed (which keys)/− removedrows, reusing the designer's existingdiffFields, plus an "Also changed:" strip for non-fieldstop-level keys. A NEW item's 404 on the published read is treated as data (everything added), not an error.New panel strings (
detailLoading,detailLoadFailed,detailNone,detailChangedKeys,confirmNote,publishConfirm) are translated in all 10 locales.Test plan
DraftChangesPanel.test.tsx— 8 tests: purecomputeChangeDetailcases (NEW item, update with added/changed/removed fields, field-less types, no-diff), footer absent withoutonPublish, confirm click forwards toonPublish, button disabled while publishing, and expand → lazily-fetched field diff renders.npx vitest run packages/app-shell— 129 files / 974 tests passing.npx vitest run packages/i18n— 93 tests passing (locale files still compile and load).npx tsc --noEmiton app-shell and i18n — no errors in touched files.npx eslinton the changed panel files — 0 errors (only the codebase's pre-existing fetch-in-effect warning pattern).🤖 Generated with Claude Code
Generated by Claude Code