OSF import: Locations, folders and Lighting (#29) #75

Merged
crowmaki merged 1 commit from issue-29-osf-locations-lighting into main 2026-10-07 09:57:53 +00:00
Owner

Closes #29. Part of #24.

Stacked PR. Review and merge in order: #26 → #27 → #28 → #29 → #30 → #31 → #32. Each PR targets the branch of the one before it.

What

  • Migration V4: location_folder, location and slug_lighting, plus location_id, time_slug and lighting_id on scene.
  • Headings are split into prefix (INT / EXT / INT./EXT. as distinct Locations), Location name and time slug. With three or more segments, the last segment is the slug, and an unknown slug is flagged. With two segments and an unknown last segment, the whole text is the name (confirmed with the owner).
  • Locations that share a base name get an automatic folder. Folder create, rename and delete, and moving Locations, are undoable.
  • The slug→Lighting table is seeded from app defaults (#[serde(default)] keeps old defaults.json files loading). Relative slugs inherit from the previous Scene that isn't omitted. Unknown slugs leave Lighting empty and flag the Scene.
  • Editing the slug table or the Lighting list is undoable and never touches imported Scenes. A Scene's Lighting can be set by hand.
  • UI: Locations panel, Lighting and slug settings, per-Scene Lighting select.

Tests

tests/locations_import.rs and tests/project_settings.rs.

Checks

  • cargo test --workspace --all-features, cargo clippy --workspace --all-targets --all-features -- -D warnings and bun run check pass.
  • The Svelte UI is type-checked only. It has not been run in the app.
Closes #29. Part of #24. > **Stacked PR.** Review and merge in order: #26 → #27 → #28 → #29 → #30 → #31 → #32. Each PR targets the branch of the one before it. ## What - Migration V4: `location_folder`, `location` and `slug_lighting`, plus `location_id`, `time_slug` and `lighting_id` on `scene`. - Headings are split into prefix (INT / EXT / INT./EXT. as distinct Locations), Location name and time slug. With three or more segments, the last segment is the slug, and an unknown slug is flagged. With two segments and an unknown last segment, the whole text is the name (confirmed with the owner). - Locations that share a base name get an automatic folder. Folder create, rename and delete, and moving Locations, are undoable. - The slug→Lighting table is seeded from app defaults (`#[serde(default)]` keeps old `defaults.json` files loading). Relative slugs inherit from the previous Scene that isn't omitted. Unknown slugs leave Lighting empty and flag the Scene. - Editing the slug table or the Lighting list is undoable and never touches imported Scenes. A Scene's Lighting can be set by hand. - UI: Locations panel, Lighting and slug settings, per-Scene Lighting select. ## Tests `tests/locations_import.rs` and `tests/project_settings.rs`. ## Checks - `cargo test --workspace --all-features`, `cargo clippy --workspace --all-targets --all-features -- -D warnings` and `bun run check` pass. - The Svelte UI is type-checked only. It has not been run in the app.
Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
crowmaki changed target branch from issue-28-osf-characters-cues to main 2026-10-07 09:57:46 +00:00
crowmaki deleted branch issue-29-osf-locations-lighting 2026-10-07 09:57:53 +00:00
Sign in to join this conversation.
No description provided.