Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

Studio: read-only packages accept edit gestures client-side, fail only at server write #2259

Closed

Description

@os-zhuang

Mirror of framework#2615 (P1), found by the Studio package-create UX dogfood (framework#2609, audit doc docs/audits/2026-07-studio-package-create-ux-dogfood.md). Reproduced against the pinned console build 7782698 at /_console/studio/com.example.showcase/data (source-loaded, Read-only badge shown).

What happens

On a read-only package:

  • "+ Add field" actually mutates the canvas — header count goes 16 → 17 fields and the Field properties panel opens on the new field_17.
  • "New object" opens the inline create form and lets the user fill it out.
  • "Save draft" / "Publish" remain visible (Publish styled enabled).

Only when the eventual server write fires does the user learn the whole edit was futile — a 422 writable_package_required toast (whose copy is being fixed framework-side in framework#2625).

Expected

Client-side courtesy gating per ADR-0057 D10: when the active package is read-only, disable/hide Add field, New object, Save draft, Publish, and field-property inputs, with a tooltip like "Read-only package — create or switch to a writable package to edit". The server remains the authoritative gate; the client just shouldn't let users build up doomed local state.

Notes

  • The read-only signal is already available to the client — the package switcher and Studio landing both badge Read-only correctly.
  • Related polish: the read-only toast can fire twice for a single gesture.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DHQc5BdGhTzPfazex3vWdt

Activity

  1. added theissue type on Jul 5, 2026
  2. added a commit that references this issue on Jul 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions