TL;DR
The external-projects surfaces now follow two distinct workflows:- The root workspace owns the canonical registry and workspace bindings through a searchable control tower.
- Each bound workspace edits content in a split-view studio with a content rail, focused editor, and live preview.
Root Control Tower
- Use the registry search and adapter filter to find canonical projects quickly.
- Keep project edits in the registry cards so adapter, delivery profile, and recommended collections stay visible while editing.
- Use the sticky action panel on the right for two jobs:
- create a new canonical project
- bind or unbind a destination workspace
- Recent binding audits stay below the registry so operational changes remain visible after edits.
Workspace Studio
- The left rail is the primary navigation surface for collections, filters, and record selection.
- The center column keeps collection settings inline and uses a compact active-item summary instead of forcing every edit into the page body. Secondary explanations belong in tooltips on actions and controls, not as permanently visible helper text on every card.
- Each selected item opens in a near-fullscreen editor dialog.
- Use the rail cards to jump directly into item editing.
- New draft items should open into the same editor immediately after creation so admins can stay in one flow.
- Keep rail cards visually dense. Use small thumbnails, tight metadata chips, and 2-3 line excerpts rather than large preview tiles that push the list below the fold.
- Live preview is on demand instead of permanently visible.
- Open it from the sticky action bar when you need a rendered or payload check.
- Rendered reflects the current draft immediately in the UI.
- Payload fetches the real preview delivery response from
GET /api/v1/workspaces/:wsId/external-projects/delivery?preview=true.
- Import, save, publish, and unpublish actions stay explicit in the sticky action bar. There is no autosave.
Implementation Notes
- The preview source of truth is the existing preview delivery API, not a duplicate client-side payload builder.
- The workspace studio still uses the existing internal API helpers for entry, block, asset, import, publish, and binding operations.
- Preview now opens in a sheet so the default workspace stays focused on navigation and editing first.
Team Guidance
- When changing external-project authoring UX, keep the live preview wired to the preview delivery endpoint instead of inventing a second payload contract in the client.
- For dense admin surfaces, keep collection-level controls inline but move item-level authoring into a dedicated editor page or near-fullscreen dialog. Do not render the same heavy editor twice in both the page body and an overlay.
- In split-view admin pages, prefer one compact selected-item summary in the main column and keep preview as an explicit secondary action when it would otherwise crowd the default workspace.
- Use tooltips for secondary control explanations so the default layout stays compact, especially in sticky action bars and collection controls.
- Add any new user-facing copy to both
apps/web/messages/en.jsonandapps/web/messages/vi.json, then runbun i18n:sort.