David
Blumenau
Menu
Feature atlas
StudioGive a creative library a home

Move the project. Keep its contents together.

The problem

A growing gallery needs a stable way to group projects, scenes and panels without flattening every asset into one long list.

A recorded project move

A new home.
The same contents.

Move Pocket Gardens from Studio into Archive. Its two scenes, panel and uploaded image stay together, ready to find again.

  1. 01

    Studio Archive

    Change the project’s workspace.

  2. 02

    Keep its contents together

    Two scenes, one panel and one image remain.

  3. 03

    Reload and find it there

    The saved move appears in the gallery.

Actual PanelForge UI with fictional data. Includes an unreleased fix that loads the workspace destinations. This continuous, silent recording retains the real reload wait; a small mask hides the image identifier.
Inspect the saved views
Actual PanelForge gallery before the move. Studio contains Pocket Gardens, its two scenes and the Afternoon light panel. The uploaded plant illustration appears beside the tree. The image identifier is masked.Open full size
Studio holds Pocket Gardens.Window Garden and Courtyard are scenes inside the project. Afternoon light is a panel in Window Garden, with the uploaded still life assigned to it.
Actual PanelForge gallery after the move and page reload. Archive contains Pocket Gardens, Courtyard, Window Garden and the Afternoon light panel, with the same plant illustration. The image identifier is masked.Open full size
Archive holds the same project.The reloaded gallery shows Pocket Gardens beneath Archive. The same two scenes, panel and uploaded image remain visible together.
Actual after-move phone view of the PanelForge tree. Archive contains Pocket Gardens, the Courtyard and Window Garden scenes, and the Afternoon light panel.Open full size
The saved hierarchy at phone width.A separate after-move phone capture shows Archive, Pocket Gardens, both scenes and the panel. The move itself was recorded on desktop.

What the checks confirmed

Same records.
Unchanged image bytes.

The captured view shows the retained names, tree and image. Separate checks of the saved fixture confirmed the same project, scenes, panel, image and file records, with their relationships intact and the media bytes unchanged.

Source, checks and the unreleased fix

A workspace is the parent above Project, Scene and Panel. The move changes that parent while retaining the project’s existing contents. This example ran the real interface and server against a disposable database containing only fictional records.

The canonical destination picker did not load its choices on first mount. This recording uses one private watcher option, immediate: true, to load them when the dialog opens. That correction is unreleased; this is not a production capture or a claim that the unmodified picker works.

The actual move request and page reload supplied the persistence check for this fixture. Seventeen separate client UI tests passed with mocked requests; those tests do not establish server persistence or every hierarchy write path.

The observed saved changes were the project’s workspace and update timestamp, plus the image assignment’s workspace. The assignment timestamp remained unchanged. The scenes, panel, image and file records remained unchanged.

The uploaded still life uses procedural geometry. No image generation, live provider or production account was involved. The top-center icon is static Forge branding, supplied by HeaderBranding.vue and ForgeMascot.vue.

Read the concise proof receipt See the PanelForge case study

What this makes possible

A project can change workspace while its scenes, panels and assigned media stay together. The recorded local example checks that the saved hierarchy survives a reload.

Source information sheet

Evidence, implementation & history Implementation inspected

What I checked

Source and release record inspected. The recorded isolated move and reload use fictional data and one unreleased destination-dialog watcher option. Saved-row and file checks verify this fixture; mocked client tests are separate. No production availability is claimed.

Release anchor: web-v10.0.0.

Research cut: 15 October 2026. Source areas below are from panel-forge. Private conversation references are retained in the research ledger and are not published here.

Implementation decisions

A per-user Workspace root sits above Project, Scene and Panel and supports moving projects while preserving hierarchy-aware gallery and API assignment.

Add a protected root and backfill existing assignments so organization can grow without abandoning the old hierarchy.

A path through the feature

  1. The consequence

    Add a protected root and backfill existing assignments so organization can grow without abandoning the old hierarchy.

Source areas

  • app/Models/Workspace.php
  • resources/js/composables/useGalleryTree.ts
  • app/Http/Controllers/GalleryController.php
  • database/migrations/

The recorded showcase uses the actual isolated application with fictional data and an unreleased destination-dialog fix. Its proof receipt separates the actual persistence run from mocked client tests.

Recorded history

Dates describe the researched record, rather than today’s deployment.

  1. web-v10.0.0