BS-JD-205 - Content Browser file operations and reference-safe moves #20

Closed
opened 2026-06-06 01:47:36 -04:00 by Rbanh · 1 comment
Owner

Summary

Turn the filesystem-backed Content Browser into a safe project file manager while preserving stable asset identity and authored references.

Why

Users must be able to organize project content without leaving the editor or silently breaking scenes. This expands the original rename/move repair ticket rather than creating a duplicate.

Scope

  • Create folders; rename, move, duplicate, cut/copy/paste, and drag assets or folders to another folder.
  • Keep trash-first delete and add an explicit restore workflow.
  • Preserve AssetId across moves/renames and repair cached paths in scenes, prefabs, Materials/Instances, model material mappings, generated manifests, thumbnails, and registry metadata.
  • Preview collisions, dependencies, source-control/read-only state, and every authored file affected by a broad repair.
  • Use guarded staged filesystem transactions; cancel or failure restores the exact prior files, registry, selection, breadcrumb, and browser state.
  • Reconcile external filesystem moves by stable ID/content fingerprint when unambiguous; otherwise open an explicit repair flow.
  • Protect editor-managed .index, .trash, thumbnail, and derived-artifact locations from ordinary operations.

Acceptance criteria

  • A user can create arbitrary nested folders beneath assets/ and complete rename/move/duplicate/cut/copy/paste/drag-to-folder workflows entirely in the Content Browser.
  • Moving a Material, model, texture, prefab, level, shader, or containing folder retains UUID identity and valid references after save/reopen.
  • Recursive operations show collision and reference impact before commit.
  • Cancelled or failed operations leave project files and registry byte-for-byte unchanged.
  • Trash/restore retains identity and reports affected usages.
  • External moves are repaired automatically only when identity is unambiguous.
  • Selection, thumbnails, breadcrumbs, Material Library usage, validation, and PIE remain correct after moves.

Dependencies

Part of epic #59. The storage/type contract and path-agnostic catalog work land first. Coordinate with live watcher #19 and headless processing #21.

Tests/docs

Recursive transaction and rollback fixtures; reference-repair fixtures across scenes/prefabs/materials/model mappings; native drag-to-folder and restart acceptance. Document the workflow in the canonical content-workspace guide.

## Summary Turn the filesystem-backed Content Browser into a safe project file manager while preserving stable asset identity and authored references. ## Why Users must be able to organize project content without leaving the editor or silently breaking scenes. This expands the original rename/move repair ticket rather than creating a duplicate. ## Scope - Create folders; rename, move, duplicate, cut/copy/paste, and drag assets or folders to another folder. - Keep trash-first delete and add an explicit restore workflow. - Preserve `AssetId` across moves/renames and repair cached paths in scenes, prefabs, Materials/Instances, model material mappings, generated manifests, thumbnails, and registry metadata. - Preview collisions, dependencies, source-control/read-only state, and every authored file affected by a broad repair. - Use guarded staged filesystem transactions; cancel or failure restores the exact prior files, registry, selection, breadcrumb, and browser state. - Reconcile external filesystem moves by stable ID/content fingerprint when unambiguous; otherwise open an explicit repair flow. - Protect editor-managed `.index`, `.trash`, thumbnail, and derived-artifact locations from ordinary operations. ## Acceptance criteria - [ ] A user can create arbitrary nested folders beneath `assets/` and complete rename/move/duplicate/cut/copy/paste/drag-to-folder workflows entirely in the Content Browser. - [ ] Moving a Material, model, texture, prefab, level, shader, or containing folder retains UUID identity and valid references after save/reopen. - [ ] Recursive operations show collision and reference impact before commit. - [ ] Cancelled or failed operations leave project files and registry byte-for-byte unchanged. - [ ] Trash/restore retains identity and reports affected usages. - [ ] External moves are repaired automatically only when identity is unambiguous. - [ ] Selection, thumbnails, breadcrumbs, Material Library usage, validation, and PIE remain correct after moves. ## Dependencies Part of epic #59. The storage/type contract and path-agnostic catalog work land first. Coordinate with live watcher #19 and headless processing #21. ## Tests/docs Recursive transaction and rollback fixtures; reference-repair fixtures across scenes/prefabs/materials/model mappings; native drag-to-folder and restart acceptance. Document the workflow in the canonical content-workspace guide.
Rbanh added this to the M2 - Content workspace and asset pipeline milestone 2026-06-06 01:47:36 -04:00
Rbanh added the
roadmap:jackdaw
type:feature
priority:P1
area:scene-io
labels 2026-06-06 01:47:36 -04:00
Rbanh changed title from BS-JD-205 - Asset rename/move reference repair to BS-JD-205 - Content Browser file operations and reference-safe moves 2026-07-13 16:50:42 -04:00
Rbanh added
priority:P0
area:assets
and removed
priority:P1
labels 2026-07-13 16:54:25 -04:00
Author
Owner

Closed against M2 candidate cf6eaba

The Content Browser now provides reviewed create/rename/move/duplicate/cut/copy/paste/trash/restore/undo, drag-to-folder, destination-first import, adoption, collision/dependency previews, guarded reference rewrites, and byte-exact rollback. Native empty-space, selection, batch, move, duplicate, trash, and undo scenarios pass.

Consolidated code, deterministic, native, and package evidence: M2 evaluation record. Candidate gates passed in full and the commit is published on codex/m2-content-workspace.

## Closed against M2 candidate `cf6eaba` The Content Browser now provides reviewed create/rename/move/duplicate/cut/copy/paste/trash/restore/undo, drag-to-folder, destination-first import, adoption, collision/dependency previews, guarded reference rewrites, and byte-exact rollback. Native empty-space, selection, batch, move, duplicate, trash, and undo scenarios pass. Consolidated code, deterministic, native, and package evidence: [M2 evaluation record](https://git.spacetrainclubhouse.com/Falling-Metal-Interactive/Blacksite/src/commit/cf6eaba53473d2825d0109f5a18f44794af5bd48/docs/editor/evaluations/content-workspace-m2/README.md). Candidate gates passed in full and the commit is published on `codex/m2-content-workspace`.
Rbanh closed this issue 2026-07-17 23:46:31 -04:00
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Falling-Metal-Interactive/Blacksite#20
No description provided.