Skip to main content

songbird-project

Project-level lifecycle: open, save, template bootstrap, arrangement markers and regions, and timeline tools. Sits above songbird-state and below the application shells — both songbird-app and songbird-headless go through this crate, so there is a single canonical path for loading a project.

Modules

  • lifecycleresolve_project_dir / PostLoadConfig. Returns the on-disk project directory after a load, creating a timestamped sketches directory for new in-memory projects. Each host supplies its own hooks (git init, recent-projects list, graph mirrors).
  • loader — bird → project-state loader. Parses .bird, produces a populated StateStore.
  • markers — arrangement markers, regions, and section metadata. Coordinates with songbird-state for persistence and songbird-types for shared IDs.

Why it exists

Before this crate, project-open logic lived in two places — the Tauri project_open IPC handler and the headless command handler — and they drifted. Consolidating into a single path means fixing a load bug once fixes it everywhere (desktop + headless + CLI). No UI dependencies. No engine lifecycle — that belongs to songbird-orchestrator.