Skip to content

Refine Studio product previews#45

Merged
Yona-Appletree merged 62 commits into
mainfrom
feature/studio
Jun 26, 2026
Merged

Refine Studio product previews#45
Yona-Appletree merged 62 commits into
mainfrom
feature/studio

Conversation

@Yona-Appletree

Copy link
Copy Markdown
Member

Summary

  • Prefer fixture nodes, then shader nodes, for the default Studio focus.
  • Cap visual/control product previews at 320px, sample visual products at 32x32, and render control layouts with black-backed radial lamp gradients.
  • Update produced-product stories, Studio story fixtures, and committed story baselines.
  • Handle control-product probes in the CLI debug UI and keep host clippy clean for wasm-only URL helpers.

Validation

  • rustup update nightly
  • just studio-story-baselines-if-needed
  • just ci

Adds semantic Studio CSS tokens, reusable web primitives, responsive editor shell stories, and sm/md/lg story baseline capture.

Updates docs/adr/2026-06-18-studio-story-png-baselines.md for the responsive baseline matrix.

Plan: /Users/yona/.photomancer/planning/lightplayer/2026-06-23-studio-project-editor-m1-theme-layout/plan.md
Adds path-shaped UxNodeId helpers, project editor target ids, and hierarchical project-descendant dispatch while preserving typed in-process actions.

ADR: docs/adr/2026-06-23-studio-hierarchical-ux-node-dispatch.md

Plan: /Users/yona/.photomancer/planning/lightplayer/2026-06-23-studio-project-editor-m2-dynamic-ux-registry/plan.md
Add a story proc macro and build-time registry generation for Studio web stories. Story ids now come from family/component paths plus function names, and existing stories move into base, studio, and exploration families with refreshed baselines.\n\nPlan: /Users/yona/.photomancer/planning/lightplayer/2026-06-24-studio-story-macro/plan.md
Rename lpa-studio-ux to lpa-studio-core and move Studio source layers to base/core/app naming. Add ADR docs/adr/2026-06-24-studio-core-and-layer-vocabulary.md for the crate and layer vocabulary decision.

Plan: /Users/yona/Dropbox/Documents/PersonalNotes/Planning/lightplayer/2026-06-24-studio-core-refactor/plan.md
- add Rust docs for Studio core UI data roles

- extract reusable issue, log, and terminal core components

- add core story coverage and refreshed baselines
Adds typed project node and slot addresses/controllers, pipe-separated controller ids, and typed project target encoding for future real node UI projection.

ADR: docs/adr/2026-06-26-studio-project-editor-controller-tree.md
Make ProjectController own recursive NodeController and SlotController trees directly, removing the public descriptor layer and ProjectEditorTree aggregate.

ADR: docs/adr/2026-06-26-studio-project-editor-controller-tree.md
Replace the old project node/slot POC body model with ProjectController-produced UiNodeView DTOs rendered through NodePane. Keep the sidebar tree as navigation built from node controllers, and remove legacy string node/slot project targets.

Refresh Studio story baselines for the project workspace migration.

Plan: /Users/yona/Dropbox/Documents/PersonalNotes/Planning/lightplayer/2026-06-25-studio-project-controller-tree/04-m4-project-ui-replacement.md
# Conflicts:
#	lp-app/lpa-studio-core/src/app/node/ui_produced_product.rs
#	lp-app/lpa-studio-core/src/app/node/ui_slot_value.rs
#	lp-app/lpa-studio-core/src/lib.rs
#	lp-app/lpa-studio-web/assets/tailwind.css
#	lp-app/lpa-studio-web/src/app/node/config_slot_row_stories.rs
#	lp-app/lpa-studio-web/src/app/node/node_pane.rs
#	lp-app/lpa-studio-web/src/app/node/node_story_fixtures.rs
#	lp-app/lpa-studio-web/src/app/node/produced_product_view.rs
#	lp-app/lpa-studio-web/src/base/popover.rs
#	lp-app/lpa-studio-web/story-images/base__icon-menu__overview__sm.png
#	lp-app/lpa-studio-web/story-images/base__icon-menu__trigger-states__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__all-states__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__all-states__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__all-states__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__overview__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__overview__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__overview__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__node__error-node__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__node__node-pane__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__node__node-pane__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__node__node-pane__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__node__overview__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__node__overview__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__node__overview__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__detail-popup__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__detail-popup__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__detail-popup__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__gallery__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__gallery__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__gallery__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__overview__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__overview__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__overview__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__visual-product__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__visual-product__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__visual-product__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-value__overview__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-value__overview__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__slot-record-editor__nested-record__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__slot-value-editor__gallery__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__slot-value-editor__gallery__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__slot-value-editor__gallery__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__slot-value-editor__overview__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__slot-value-editor__overview__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__slot-value-editor__overview__sm.png
# Conflicts:
#	lp-app/lpa-studio-web/story-images/base__icon-menu__overview__lg.png
#	lp-app/lpa-studio-web/story-images/base__icon-menu__overview__md.png
#	lp-app/lpa-studio-web/story-images/base__icon-menu__overview__sm.png
#	lp-app/lpa-studio-web/story-images/studio__layout__studio-shell__overview__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__bound-value__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__overview__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__overview__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__config-slot-row__overview__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__node__overview__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__detail-popup__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__detail-popup__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__detail-popup__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__gallery__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__overview__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__overview__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-product__overview__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-value__detail-popup__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-value__detail-popup__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-value__detail-popup__sm.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-value__overview__lg.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-value__overview__md.png
#	lp-app/lpa-studio-web/story-images/studio__node__produced-value__overview__sm.png
Add native control-product probe DTOs, fixture display-layout probing, Studio sync/DTO support, and web control preview rendering/stories.

ADR: docs/adr/2026-06-26-control-product-preview-probes.md

Plan: /Users/yona/Dropbox/Documents/PersonalNotes/Planning/lightplayer/2026-06-26-control-product-layout/plan.md
@Yona-Appletree Yona-Appletree merged commit 25b33c6 into main Jun 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant