Skip to the article
Keep safe · Files and volumes

# Storage, archive, and restore

Two episode roots keep active work fast and completed work movable. A separate B-roll Library root keeps reusable media on external storage. Metadata remains searchable when a drive is disconnected.

## Two roots, one local library

P

### Primary storage

Active episodes, reusable media, templates, and production assets.

A

### Archive storage

Completed episode folders on a local folder, external disk, or mounted share.

Configure both in Settings → Workspace. Primary defaults to `~/Movies/After2AM Studio`. Archive begins unset. Each episode stores a relative folder path plus its current Primary or Archive role.

## Configure B-roll Library storage

In Settings → Workspace → Reusable media storage, choose an external drive or folder. After2AM creates or reuses this structure:

    After2AM Media/
      B-Roll/
      App Demos/
      Graphics/
      Audio/
      Other reusable assets/

Existing real directories and their contents are reused. A file or symbolic link occupying an expected folder path stops setup; the app never deletes, replaces, or moves it. The B-roll Library status then appears with Primary and Archive in the main sidebar.

While the app is open and this storage is online, supported video, audio, and image files placed inside any of the five categories are scanned every 10 seconds. A file is catalogued in place only after its size and modification date remain unchanged for 20 seconds; files outside the categories are left alone.

Generated B-roll video previews are stored separately on Primary at `Media/.Thumbnails/B-roll`. This keeps the Media Library visually useful while the external drive is offline; cards show an OFFLINE badge and the inspector says whether a cached preview is available. Existing external previews are backfilled into Primary when both locations are online. The app does not remove the previous external preview during backfill.

## Read storage status accurately

Status | Meaning | What you can do
--- | --- | ---
Online | The expected root and volume are available. | Read and write when filesystem permissions allow.
Read only | The root is visible but cannot accept changes. | Inspect files; do not import or transfer.
Offline | The configured path or mounted storage is unavailable. | Reconnect it; metadata remains searchable.
Wrong volume | Something is mounted at the path, but its identity does not match. | Eject it and connect the configured disk/share.
Not set | No root has been chosen. | Choose a folder in Settings.
Checking | The monitor has not completed its probe. | Wait for the live status to settle.

A matching path is not enough

The app remembers volume identity. A different disk mounted at the old path is rejected as Wrong volume instead of being treated as the archive.

For local and removable drives, identity is the stable filesystem volume UUID—not the drive label or changing disk number such as `disk13s1`. If macOS reconnects the same UUID as `/Volumes/B-Roll` instead of `/Volumes/B-Roll 1`, the app locates the expected relative folder, validates it, and updates the saved path. Network shares use their normalized server/share address.

## Changing a root does not move files

Choosing a different storage root relinks the app to an existing hierarchy. It does not copy or reorganise content. For every episode assigned to that role, the new root must contain the expected folder and a regular, non-symlink manifest with the matching episode identity.

A replacement B-roll Library root must already contain every externally stored asset recorded in the catalogue. Use the root picker only to relink an existing library; it does not move media.

To move a completed episode between Primary and Archive, use the episode’s verified Archive files or Restore to primary action—not the root picker.

## Archive a completed episode

1. Check both roots. Primary and Archive must be online, writable, and the expected volumes.
2. Keep episode links portable. Linked media, script, thumbnail, export, and editing project paths must remain inside the episode folder before archive.
3. Choose Archive files. Read the destination and confirmation, then begin the operation.
4. Let verification finish. The app stages a complete copy, preserves filesystem metadata, compares the exact inventory, and verifies every file’s SHA-256.
5. Wait for final cleanup. Metadata switches to Archive, the destination is rechecked, and only then is the Primary source removed.

A portable storage receipt is written with the archived episode. The episode status becomes Archived. Only one storage transfer can run across the app at a time; edits, imports, deletion, and root changes remain locked during it.

## Restore for rework

Restore performs the same guarded transaction in reverse. It verifies the copy back to Primary, switches the storage role, and returns status to Editing. Imported media and file actions can resume once the operation and any cleanup have finished.

## Cancellation and Retry cleanup

Cancellation is safe. Before the destination is committed, the source remains authoritative. If destination activation succeeds but removal of the old source cannot complete, the destination stays active and the old verified copy is preserved.

Retry cleanup is not a second move

Reconnect both configured storage locations and choose Retry cleanup. The app reconstructs and re-verifies the inventory before removing the old copy. Do not manually delete either folder while this state exists.