Projects

Keep many projects in one FableCut: a dashboard to open, create from a canvas or template, duplicate, rename, take notes on, tag, archive and delete them, and fablecut_projects for agents.

One FableCut keeps any number of projects. ./project.json is always the open project: the editor, every MCP tool, the REST API and scripts read and edit that file as before. The others wait in projects/, and opening one swaps it in:

pathholds
projects/index.json{active} - the open project's id
projects/<id>/meta.json{id, created, opened, archived, notes, tags, template?}
projects/<id>/project.jsonthe document (while that project is open, ./project.json is the live copy)
projects/<id>/thumb.jpgthe editor's last picture of it
library/project-templates/<id>.jsona saved project template {name, created, project}

media/, exports/, analysis/ and library/ are shared by every project, so a duplicate or a project made from a template copies no footage. The first time projects are used, the existing ./project.json becomes the first project, unchanged. Ids look like p_3f9a01c2de.

Opening a project saves the open one into its folder, then copies the chosen one to ./project.json with a revision above both. A save based on the project that was open before (an editor tab, an agent's fablecut_set_project, a baseRevision patch) is therefore refused as a CONFLICT instead of landing in the wrong project. Editor tabs reload, clear their undo history and close an open composition. GET /api/project names the open project in the X-FableCut-Project header, and the editor sends it back on every save, so an edit made for one project can never be written into another.

In the editor: Projects in the top bar (Ctrl/Cmd+O, or a click on the project name) opens the dashboard: cards with a picture, size, frame rate and length; search by name, notes or #tag; sort by last opened, last modified, created or name. Pick one to rename it, write notes, tag it, Open (or double-click / Enter on its card), Duplicate, Save as template or Archive it. Archived lists archived projects, where Unarchive brings one back and Delete… (click twice) removes it; only archived projects can be deleted, and the open one can be neither archived nor deleted. + New project starts one from a canvas (Landscape 16:9 1080p, Vertical 9:16, Square 1:1, Portrait 4:5, 4K UHD, Landscape 720p) or a saved template, with its own frame rate. Import… adds a project file from elsewhere (an old backup, another machine); its media must be in media/, and Relink finds files that moved.

Agents use fablecut_projects (or GET /api/projects, POST /api/projects):

Recipes: one edit, three versions - duplicate the project per client cut, put the brief in notes; house canvas - build an empty project with your tracks, intro and outro, save_template, then new from it for every episode; park finished work - archive delivered projects to keep the list short without deleting anything.