songbird-project
Project-level lifecycle: open, save, template bootstrap, arrangement markers and regions, and timeline tools. Sits abovesongbird-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
lifecycle—resolve_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 populatedStateStore.markers— arrangement markers, regions, and section metadata. Coordinates withsongbird-statefor persistence andsongbird-typesfor shared IDs.
Why it exists
Before this crate, project-open logic lived in two places — the Tauriproject_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.