BS-JD-001 - Project launcher and sandbox profiles #3

Closed
opened 2026-06-06 01:45:31 -04:00 by Rbanh · 2 comments
Owner

Summary

Add an optional launcher/start screen for recent projects, new sandbox project, open project, and last scene resume.

Why

Blacksite currently behaves like one workspace. A future-game editor sandbox needs project switching and sandbox creation as first-class workflows.

Implementation notes

  • Add EditorStartupState or LauncherState before full editor mode.
  • Keep direct-open behavior behind CLI flag or saved preference.
  • Extend ProjectWorkspace with project id, last opened scene, and project kind.
  • Add assets/project.ron fields for display name, default scene, template version, and capabilities.
  • Add File > Switch Project and File > Reveal Project Folder.

Acceptance criteria

  • First launch can create a sandbox project with expected asset folders.
  • Recent projects filters missing folders and shows last scene.
  • Existing default repo project still opens directly when configured.
  • Window title and active scene path update after switching.

Tests/docs

Unit test manifest read/write defaults. Smoke test temp project create/open/save/reload. Update README Running and docs/editor/architecture.md.

## Summary Add an optional launcher/start screen for recent projects, new sandbox project, open project, and last scene resume. ## Why Blacksite currently behaves like one workspace. A future-game editor sandbox needs project switching and sandbox creation as first-class workflows. ## Implementation notes - Add `EditorStartupState` or `LauncherState` before full editor mode. - Keep direct-open behavior behind CLI flag or saved preference. - Extend `ProjectWorkspace` with project id, last opened scene, and project kind. - Add `assets/project.ron` fields for display name, default scene, template version, and capabilities. - Add File > Switch Project and File > Reveal Project Folder. ## Acceptance criteria - [ ] First launch can create a sandbox project with expected asset folders. - [ ] Recent projects filters missing folders and shows last scene. - [ ] Existing default repo project still opens directly when configured. - [ ] Window title and active scene path update after switching. ## Tests/docs Unit test manifest read/write defaults. Smoke test temp project create/open/save/reload. Update README Running and `docs/editor/architecture.md`.
Rbanh added this to the M0 - Foundation and polish seams milestone 2026-06-06 01:45:31 -04:00
Rbanh added the
roadmap:jackdaw
type:feature
priority:P0
area:project-ux
labels 2026-06-06 01:45:31 -04:00
Author
Owner

M0 closeout triage: this remains valuable, but it is not part of the completed M0 foundation cut that landed through cc6acb1. Carrying this to M5 where first-hour UX, samples, and startup guidance are tracked.

M0 closeout triage: this remains valuable, but it is not part of the completed M0 foundation cut that landed through `cc6acb1`. Carrying this to M5 where first-hour UX, samples, and startup guidance are tracked.
Rbanh modified the milestone from M0 - Foundation and polish seams to M5 - Regression, docs, and first-hour UX 2026-06-06 05:08:01 -04:00
Rbanh modified the milestone from M5 - Regression, docs, and first-hour UX to M6 - Reliability, recovery, and project workflow 2026-07-10 04:03:47 -04:00
Rbanh added the
roadmap:production
label 2026-07-10 04:03:56 -04:00
Author
Owner

Implemented the production Project Browser slice locally.

What shipped:

  • Versioned project identity/kind/template/capability fields with backward-compatible manifest defaults.
  • Strict pre-engine project validation: canonical root, safe project-relative default level, existence, and shared scene validation.
  • editor --project <root> activation before Bevy app/AssetServer construction.
  • Dedicated dark Project Browser with validated Browse Existing, filtered/deduplicated recents, last-scene display, and conservative New Sandbox scaffolding.
  • Sandbox creation writes only to missing/empty destinations, creates the standard asset tree plus a schema-current empty level, and uses transactional writes.
  • File > Switch Project... and launcher-to-editor process handoffs through independent transient user services on Linux, with clean session shutdown and an explicit environment allowlist.
  • File > Reveal Project Folder, title/root/scene updates, VS Code project-root launch profile, README/editor docs, ADR 0025, and an installed desktop Open Project Browser action.

Runtime QA:

  • Editor -> Project Browser: editor exited, session.ron recorded clean_shutdown: true, browser survived independently.
  • Project Browser -> editor: selected recent repo opened as editor --project /mnt/Fedora/home/Rbanh/Documents/Bevy; browser exited independently; title showed the active root and scene.
  • Installed desktop action built/launched project_launcher; normal desktop wrapper launched the editor and reached Solari-ready rendering.

Automated gate:

  • cargo fmt --all -- --check
  • git diff --check
  • jq empty .vscode/launch.json
  • strict all-workspace/all-features Clippy
  • strict editor dev Clippy
  • cargo test --workspace --all-features: 152 passed, 1 ignored
  • cargo validate-levels: ok

All acceptance criteria are satisfied.

Implemented the production Project Browser slice locally. What shipped: - Versioned project identity/kind/template/capability fields with backward-compatible manifest defaults. - Strict pre-engine project validation: canonical root, safe project-relative default level, existence, and shared scene validation. - `editor --project <root>` activation before Bevy app/AssetServer construction. - Dedicated dark Project Browser with validated Browse Existing, filtered/deduplicated recents, last-scene display, and conservative New Sandbox scaffolding. - Sandbox creation writes only to missing/empty destinations, creates the standard asset tree plus a schema-current empty level, and uses transactional writes. - `File > Switch Project...` and launcher-to-editor process handoffs through independent transient user services on Linux, with clean session shutdown and an explicit environment allowlist. - `File > Reveal Project Folder`, title/root/scene updates, VS Code project-root launch profile, README/editor docs, ADR 0025, and an installed desktop `Open Project Browser` action. Runtime QA: - Editor -> Project Browser: editor exited, `session.ron` recorded `clean_shutdown: true`, browser survived independently. - Project Browser -> editor: selected recent repo opened as `editor --project /mnt/Fedora/home/Rbanh/Documents/Bevy`; browser exited independently; title showed the active root and scene. - Installed desktop action built/launched `project_launcher`; normal desktop wrapper launched the editor and reached Solari-ready rendering. Automated gate: - `cargo fmt --all -- --check` - `git diff --check` - `jq empty .vscode/launch.json` - strict all-workspace/all-features Clippy - strict editor dev Clippy - `cargo test --workspace --all-features`: 152 passed, 1 ignored - `cargo validate-levels`: ok All acceptance criteria are satisfied.
Rbanh closed this issue 2026-07-10 12:41:42 -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#3
No description provided.