Treat a project as spent once its song has been exported
Opening an exported song starts a fresh session from detection instead of resuming: cuts, discards and metadata do not carry over, so a re-cut never inherits decisions that have already shipped. --resume overrides it on edit, export and project. This reverses what was agreed in planning and written into docs/spec.md and CONTEXT.md, which promised resume-across-sessions and re-export. Both are corrected. The cost is deliberate and worth stating: changing the width cap or adding the SVG renderer later now means re-cutting each song by hand rather than regenerating every bundle from its project file. Export records the flag in bundle.write, so no caller can forget it. Also removed --refit and the Auto-fit buttons, which were added without being asked for and whose only purpose - migrating projects made before the content rectangle was proposed - disappears once exported projects start fresh. Reset now restores detection's proposal rather than the whole page: clearing to full width would undo the thing the rectangle exists for, so one button covers it. open_project() replaces four copies of load-or-detect across the CLI and the editor.
This commit is contained in:
@@ -85,11 +85,15 @@ def main() -> int:
|
||||
editor.metadata["composer"].setText("trad.")
|
||||
assert project.metadata["title"] == "Ketun joululaulu"
|
||||
|
||||
# Content rectangle edits and reset.
|
||||
# Content rectangle edits, and reset going back to detection's proposal for
|
||||
# the page as it now stands — not to the whole page, which would undo the
|
||||
# thing the rectangle exists for.
|
||||
expected = detect_page(editor._preview(0), skew=0.0).content
|
||||
page.content_rect = (0.05, 0.02, 0.95, 0.98)
|
||||
assert project.page_content_rect(0) == (0.05, 0.02, 0.95, 0.98)
|
||||
editor._reset_rect()
|
||||
assert project.page_content_rect(0) == project.content_rect
|
||||
assert project.page_content_rect(0) == expected, (project.page_content_rect(0), expected)
|
||||
assert project.page_content_rect(0) != (0.0, 0.0, 1.0, 1.0)
|
||||
|
||||
# Autosave target, then a round-trip through disk.
|
||||
editor._save()
|
||||
|
||||
Reference in New Issue
Block a user