BS-JD-213 - Destination-first transactional asset import #61

Closed
opened 2026-07-13 16:51:51 -04:00 by Rbanh · 1 comment
Owner

Summary

Import external assets into the current or explicitly chosen Content Browser folder instead of silently sorting them into fixed type directories.

Scope

  • Add Import Here for the current folder and Import To... with a project-folder chooser and final-path preview.
  • Register/process files already under project content in place rather than copying them again.
  • Remove extension-to-models/textures/audio/materials destination routing.
  • Preserve safe glTF/FBX relative dependency layouts, collision/overwrite decisions, collaborative file guards, and staged rollback.
  • Store optional source provenance and a deterministic reimport recipe without making external paths runtime requirements.
  • Publish registry/generated state only after the complete file transaction succeeds.

Acceptance criteria

  • Models, textures, audio, and supported authored files import into an arbitrary chosen folder beneath assets/.
  • Import creates no visible type folder and performs no post-import relocation.
  • Existing in-project files can be adopted in place.
  • Bundle dependencies retain safe relative paths.
  • Collision choices are explicit and no authored file is overwritten implicitly.
  • Cancel/failure leaves files, registry, derived data, selection, and status exactly unchanged.
  • Reimport uses recorded provenance/recipe and passes external-change guards.

Tests/docs

Bundle rollback, same-name collision, in-project adoption, traversal/symlink rejection, cancel, and native Import Here/To coverage.

Dependencies

Child of #59; depends on storage contract #60.

## Summary Import external assets into the current or explicitly chosen Content Browser folder instead of silently sorting them into fixed type directories. ## Scope - Add **Import Here** for the current folder and **Import To...** with a project-folder chooser and final-path preview. - Register/process files already under project content in place rather than copying them again. - Remove extension-to-`models`/`textures`/`audio`/`materials` destination routing. - Preserve safe glTF/FBX relative dependency layouts, collision/overwrite decisions, collaborative file guards, and staged rollback. - Store optional source provenance and a deterministic reimport recipe without making external paths runtime requirements. - Publish registry/generated state only after the complete file transaction succeeds. ## Acceptance criteria - [ ] Models, textures, audio, and supported authored files import into an arbitrary chosen folder beneath `assets/`. - [ ] Import creates no visible type folder and performs no post-import relocation. - [ ] Existing in-project files can be adopted in place. - [ ] Bundle dependencies retain safe relative paths. - [ ] Collision choices are explicit and no authored file is overwritten implicitly. - [ ] Cancel/failure leaves files, registry, derived data, selection, and status exactly unchanged. - [ ] Reimport uses recorded provenance/recipe and passes external-change guards. ## Tests/docs Bundle rollback, same-name collision, in-project adoption, traversal/symlink rejection, cancel, and native Import Here/To coverage. ## Dependencies Child of #59; depends on storage contract #60.
Rbanh added this to the M2 - Content workspace and asset pipeline milestone 2026-07-13 16:51:51 -04:00
Rbanh added the
roadmap:jackdaw
type:feature
priority:P0
area:scene-io
area:assets
labels 2026-07-13 16:51:51 -04:00
Author
Owner

Closed against M2 candidate cf6eaba

Destination-first static and skeletal imports, Import Here/To, in-project adoption, dependency preservation, traversal/symlink rejection, reviewed final paths, transaction suppression, and rollback are implemented. Native Poly Haven desk and skeletal fixture workflows 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` Destination-first static and skeletal imports, Import Here/To, in-project adoption, dependency preservation, traversal/symlink rejection, reviewed final paths, transaction suppression, and rollback are implemented. Native Poly Haven desk and skeletal fixture workflows 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:58 -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#61
No description provided.