BS-JD-ROADMAP - Jackdaw-inspired editor production roadmap #1

Open
opened 2026-06-06 01:44:41 -04:00 by Rbanh · 5 comments
Owner

Purpose

Track the Jackdaw-inspired Blacksite editor roadmap from .cursor/plans/jackdaw_feature_roadmap_2026-06-06.plan.md.

This roadmap turns Blacksite from a game-specific editor scaffold into a more functional Bevy editor sandbox for a future game while preserving the existing authoring/hydration split, schema validation, in-process PIE, and unified viewport.

Milestone sequence

  • M0 - Foundation and polish seams
  • M1 - Brush-based blockout
  • M2 - Materials and asset pipeline
  • M3 - Terrain and physics placement
  • M4 - Extensibility and runtime integration
  • M5 - Regression, docs, and first-hour UX

Operating rules

  • Preserve Blacksite's authoring/hydration model.
  • Adopt Jackdaw ideas as patterns, not as a wholesale format or architecture migration.
  • Use one operator path for every user mutation: preview, commit, cancel, undo, redo, dirty flag, status message.
  • Prefer statically linked extension APIs before dynamic loading.
  • Every modal tool needs visual preview, clear status text, Escape cancel, and grouped undo.
  • Every new authoring component needs schema migration, save allowlist, validation, hydration stripping, and docs.
  • Every visible workflow change updates root README controls and docs/editor indexes in the same task.

Cross-cutting production checklist

  • Tool preview before commit.
  • Commit/cancel semantics leave no dirty state on cancel.
  • Continuous actions group undo into one meaningful entry.
  • Status bar names active tool and next action.
  • Generated/editor-only proxies resolve to source entities.
  • Large rebuilds are dirty-region based or debounced.
  • Generated meshes, colliders, handles, and helper entities never leak into saved scenes.
  • Each feature ships with README controls, docs/editor updates, and a sample or fixture when relevant.

Child tickets will be listed in a follow-up comment after creation.

## Purpose Track the Jackdaw-inspired Blacksite editor roadmap from `.cursor/plans/jackdaw_feature_roadmap_2026-06-06.plan.md`. This roadmap turns Blacksite from a game-specific editor scaffold into a more functional Bevy editor sandbox for a future game while preserving the existing authoring/hydration split, schema validation, in-process PIE, and unified viewport. ## Milestone sequence - M0 - Foundation and polish seams - M1 - Brush-based blockout - M2 - Materials and asset pipeline - M3 - Terrain and physics placement - M4 - Extensibility and runtime integration - M5 - Regression, docs, and first-hour UX ## Operating rules - Preserve Blacksite's authoring/hydration model. - Adopt Jackdaw ideas as patterns, not as a wholesale format or architecture migration. - Use one operator path for every user mutation: preview, commit, cancel, undo, redo, dirty flag, status message. - Prefer statically linked extension APIs before dynamic loading. - Every modal tool needs visual preview, clear status text, Escape cancel, and grouped undo. - Every new authoring component needs schema migration, save allowlist, validation, hydration stripping, and docs. - Every visible workflow change updates root README controls and docs/editor indexes in the same task. ## Cross-cutting production checklist - [ ] Tool preview before commit. - [ ] Commit/cancel semantics leave no dirty state on cancel. - [ ] Continuous actions group undo into one meaningful entry. - [ ] Status bar names active tool and next action. - [ ] Generated/editor-only proxies resolve to source entities. - [ ] Large rebuilds are dirty-region based or debounced. - [ ] Generated meshes, colliders, handles, and helper entities never leak into saved scenes. - [ ] Each feature ships with README controls, docs/editor updates, and a sample or fixture when relevant. Child tickets will be listed in a follow-up comment after creation.
Rbanh added this to the M0 - Foundation and polish seams milestone 2026-06-06 01:44:41 -04:00
Rbanh added the
roadmap:jackdaw
type:docs
priority:P0
area:governance
type:epic
labels 2026-06-06 01:44:41 -04:00
Author
Owner

Created issue index

M0 - Foundation and polish seams

  • #2 BS-JD-000 - Adoption policy, license notes, and source attribution
  • #3 BS-JD-001 - Project launcher and sandbox profiles
  • #4 BS-JD-002 - Scene document abstraction above DynamicScene RON
  • #5 BS-JD-003 - Editor metadata for components
  • #6 BS-JD-004 - Unified operator/action framework
  • #7 BS-JD-005 - Command palette polish and fuzzy matching
  • #8 BS-JD-006 - Selection and editing shortcut polish
  • #9 BS-JD-007 - Viewport productivity controls

M1 - Brush-based blockout

  • #10 BS-JD-101 - Brush authoring schema and hydration MVP
  • #11 BS-JD-102 - Quick add and draw-brush tool
  • #12 BS-JD-103 - Brush element edit modes
  • #13 BS-JD-104 - Brush CSG operations
  • #14 BS-JD-105 - Per-face material and UV controls
  • #15 BS-JD-106 - Brush validation, repair, and diagnostics

M2 - Materials and asset pipeline

  • #16 BS-JD-201 - Material Browser and shared material catalog
  • #17 BS-JD-202 - PBR texture-set auto-detection
  • #18 BS-JD-203 - Drag/drop material and texture application
  • #19 BS-JD-204 - Live asset watcher and refresh
  • #20 BS-JD-205 - Asset rename/move reference repair
  • #21 BS-JD-206 - Headless asset processing command

M3 - Terrain and physics placement

  • #22 BS-JD-301 - Terrain authoring schema and chunked mesh hydration
  • #23 BS-JD-302 - Terrain sculpt tools with stroke undo
  • #24 BS-JD-303 - Terrain material layers and texture painting MVP
  • #25 BS-JD-304 - Physics placement tool
  • #26 BS-JD-305 - Collider authoring diagnostics and overlays

M4 - Extensibility and runtime integration

  • #27 BS-JD-401 - Static extension API v0
  • #28 BS-JD-402 - Extension and game prototype scaffolds
  • #29 BS-JD-403 - Optional dylib extension exploration
  • #30 BS-JD-404 - BRP remote inspector write prototype
  • #31 BS-JD-405 - Out-of-process game preview spike

M5 - Regression, docs, and first-hour UX

  • #32 BS-JD-501 - Editor sample scenes and regression pack
  • #33 BS-JD-502 - Tool regression tests and undo invariants
  • #34 BS-JD-503 - Performance budgets and editor profiler panel
  • #35 BS-JD-504 - Documentation and issue board structure
  • #36 BS-JD-505 - First-hour usability polish pass
## Created issue index ### M0 - Foundation and polish seams - #2 BS-JD-000 - Adoption policy, license notes, and source attribution - #3 BS-JD-001 - Project launcher and sandbox profiles - #4 BS-JD-002 - Scene document abstraction above DynamicScene RON - #5 BS-JD-003 - Editor metadata for components - #6 BS-JD-004 - Unified operator/action framework - #7 BS-JD-005 - Command palette polish and fuzzy matching - #8 BS-JD-006 - Selection and editing shortcut polish - #9 BS-JD-007 - Viewport productivity controls ### M1 - Brush-based blockout - #10 BS-JD-101 - Brush authoring schema and hydration MVP - #11 BS-JD-102 - Quick add and draw-brush tool - #12 BS-JD-103 - Brush element edit modes - #13 BS-JD-104 - Brush CSG operations - #14 BS-JD-105 - Per-face material and UV controls - #15 BS-JD-106 - Brush validation, repair, and diagnostics ### M2 - Materials and asset pipeline - #16 BS-JD-201 - Material Browser and shared material catalog - #17 BS-JD-202 - PBR texture-set auto-detection - #18 BS-JD-203 - Drag/drop material and texture application - #19 BS-JD-204 - Live asset watcher and refresh - #20 BS-JD-205 - Asset rename/move reference repair - #21 BS-JD-206 - Headless asset processing command ### M3 - Terrain and physics placement - #22 BS-JD-301 - Terrain authoring schema and chunked mesh hydration - #23 BS-JD-302 - Terrain sculpt tools with stroke undo - #24 BS-JD-303 - Terrain material layers and texture painting MVP - #25 BS-JD-304 - Physics placement tool - #26 BS-JD-305 - Collider authoring diagnostics and overlays ### M4 - Extensibility and runtime integration - #27 BS-JD-401 - Static extension API v0 - #28 BS-JD-402 - Extension and game prototype scaffolds - #29 BS-JD-403 - Optional dylib extension exploration - #30 BS-JD-404 - BRP remote inspector write prototype - #31 BS-JD-405 - Out-of-process game preview spike ### M5 - Regression, docs, and first-hour UX - #32 BS-JD-501 - Editor sample scenes and regression pack - #33 BS-JD-502 - Tool regression tests and undo invariants - #34 BS-JD-503 - Performance budgets and editor profiler panel - #35 BS-JD-504 - Documentation and issue board structure - #36 BS-JD-505 - First-hour usability polish pass
Author
Owner

M0 progress update from local commits 19c4d01 and 2fa6410:

  • Closed out the Jackdaw adoption/source policy via ADR 0020 and PR checklist updates.
  • Advanced component metadata/Add Component UX: registry metadata now drives descriptions, categories, hidden state, conflicts, hydration hints, recommendations, and the inspector Add Component shelf.
  • Advanced command/selection/input polish: command palette focus/keyboard navigation, selected-command default, reset transform command, multi-select gizmo live movement, scoped viewport/editor hotkeys, text-field focus protection, RMB viewport-look cursor hiding.
  • Removed the attempted Alt+LMB orbit gesture from scope because it appears to be intercepted/not firing reliably in the current environment.

Next active M0 work: BS-JD-002 Scene document abstraction above DynamicScene RON.

M0 progress update from local commits `19c4d01` and `2fa6410`: - Closed out the Jackdaw adoption/source policy via ADR 0020 and PR checklist updates. - Advanced component metadata/Add Component UX: registry metadata now drives descriptions, categories, hidden state, conflicts, hydration hints, recommendations, and the inspector Add Component shelf. - Advanced command/selection/input polish: command palette focus/keyboard navigation, selected-command default, reset transform command, multi-select gizmo live movement, scoped viewport/editor hotkeys, text-field focus protection, RMB viewport-look cursor hiding. - Removed the attempted Alt+LMB orbit gesture from scope because it appears to be intercepted/not firing reliably in the current environment. Next active M0 work: BS-JD-002 Scene document abstraction above DynamicScene RON.
Author
Owner

M0 progress update after 2054fa2:

Closed:

  • BS-JD-002 / #4 Scene document abstraction above DynamicScene RON.

Additional foundation work landed:

  • Render-stack invariant hardened: atmosphere/effective Solari force HDR targets and full stack rebuilds occur on target/GI-path transitions.
  • Solari local-light policy changed: point/spot LightDesc components are runtime-disabled with an inline inspector message instead of switching the whole viewport to Forward.
  • Hot-reload all-features check repaired for the InspectorOrder import path.

Verified with focused tests plus workspace and all-features checks.

Next active M0 ticket: BS-JD-004 / #6 Unified operator/action framework.

M0 progress update after `2054fa2`: Closed: - BS-JD-002 / #4 Scene document abstraction above DynamicScene RON. Additional foundation work landed: - Render-stack invariant hardened: atmosphere/effective Solari force HDR targets and full stack rebuilds occur on target/GI-path transitions. - Solari local-light policy changed: point/spot `LightDesc` components are runtime-disabled with an inline inspector message instead of switching the whole viewport to Forward. - Hot-reload all-features check repaired for the `InspectorOrder` import path. Verified with focused tests plus workspace and all-features checks. Next active M0 ticket: BS-JD-004 / #6 Unified operator/action framework.
Author
Owner

M0 progress update after d77cc6a:

BS-JD-004 / #6 has its first operator bridge committed:

  • Command palette and queued commands now run through the operator lifecycle.
  • Operator status appears in the status bar.
  • Undo/redo status now reports user-facing operation labels, including operator commits that create undo entries.

Next #6 implementation slice: migrate representative scene mutation paths (asset drop/material apply/component add/gizmo commit) onto explicit operators and add targeted undo/cancel tests.

M0 progress update after `d77cc6a`: BS-JD-004 / #6 has its first operator bridge committed: - Command palette and queued commands now run through the operator lifecycle. - Operator status appears in the status bar. - Undo/redo status now reports user-facing operation labels, including operator commits that create undo entries. Next #6 implementation slice: migrate representative scene mutation paths (asset drop/material apply/component add/gizmo commit) onto explicit operators and add targeted undo/cancel tests.
Author
Owner

M0 closeout: foundation cut is complete and pushed through:

  • 19c4d01 Start M0 editor workflow polish
  • 2fa6410 Polish inspector add component workflow
  • 2054fa2 Advance M0 scene and rendering foundations
  • d77cc6a Add editor operator lifecycle bridge
  • cc6acb1 Complete M0 editor asset workflow

M0 delivered the adoption policy, SceneDocument foundation, component metadata/inspector foundation, operator lifecycle bridge, asset operator routing, consolidated actor material UI, texture picker/drop controls, JPEG texture support, and related docs.

Remaining broad launcher/command-palette/selection/viewport productivity items have been carried forward to M5 instead of being closed as completed.

M0 closeout: foundation cut is complete and pushed through: - `19c4d01` Start M0 editor workflow polish - `2fa6410` Polish inspector add component workflow - `2054fa2` Advance M0 scene and rendering foundations - `d77cc6a` Add editor operator lifecycle bridge - `cc6acb1` Complete M0 editor asset workflow M0 delivered the adoption policy, SceneDocument foundation, component metadata/inspector foundation, operator lifecycle bridge, asset operator routing, consolidated actor material UI, texture picker/drop controls, JPEG texture support, and related docs. Remaining broad launcher/command-palette/selection/viewport productivity items have been carried forward to M5 instead of being closed as completed.
Rbanh modified the milestone from M0 - Foundation and polish seams to M5 - Regression, docs, and first-hour UX 2026-06-06 05:08:09 -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#1
No description provided.