{
  "schemaVersion": 2,
  "id": "import",
  "title": "Import a backup and understand duplicates",
  "video": "import.mp4",
  "poster": "import-poster.jpg",
  "captions": "import.vtt",
  "srt": "import.srt",
  "subtitleLog": "import.json",
  "sourceMaster": "output/video-masters-narrated/import.mp4",
  "fps": 30,
  "frameIndexConvention": "zero-based; start inclusive, end exclusive",
  "width": 1280,
  "height": 1040,
  "screenHeight": 800,
  "frameCount": 821,
  "durationSeconds": 27.366666666666667,
  "captionsBurnedIn": true,
  "audioTracks": 1,
  "exampleDate": "2026-09-24",
  "capture": "Live Chromium Page.startScreencast frames; resampled to constant frame rate without cutting or speeding up actions.",
  "nativeDialogs": "OS file pickers are not captured. Cues explicitly identify file-selection steps.",
  "demoNote": null,
  "cues": [
    {
      "id": "import-01",
      "helpStep": 1,
      "stepTitle": "Choose the backup file",
      "text": "Select Import at the bottom of the sidebar.",
      "narrationText": "Select Import at the bottom of the sidebar.",
      "startFrame": 0,
      "endFrameExclusive": 115,
      "startSeconds": 0.0,
      "endSeconds": 3.8333333333333335,
      "actions": [
        {
          "action": "highlight",
          "target": "#import"
        },
        {
          "action": "click",
          "target": "#import"
        }
      ],
      "originalStartFrame": 0,
      "originalEndFrameExclusive": 115,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/import-01.mp3",
        "taskId": "ca4249e1-69ed-4d3b-9ff7-ede92a2c5907",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 4800,
        "endSampleExclusive": 118485,
        "startSeconds": 0.1,
        "endSeconds": 2.4684375,
        "startFrame": 3,
        "endFrameExclusive": 75,
        "sourceSha256": "e9ed971e87ab80216890784f5cb86234ca80ee0e9ee26c5bb206bc2b3c633b83"
      }
    },
    {
      "id": "import-02",
      "helpStep": 1,
      "stepTitle": "Choose the backup file",
      "text": "The device file chooser is outside this recording. Select your Today List JSON backup.",
      "narrationText": "The device file chooser is outside this recording. Select your Today List JSON backup.",
      "startFrame": 115,
      "endFrameExclusive": 286,
      "startSeconds": 3.8333333333333335,
      "endSeconds": 9.533333333333333,
      "actions": [
        {
          "action": "choose-file",
          "name": "today-list-example.json",
          "note": "Native operating-system chooser is outside browser screencast."
        }
      ],
      "originalStartFrame": 115,
      "originalEndFrameExclusive": 281,
      "addedHoldFrames": 5,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/import-02.mp3",
        "taskId": "59390edd-db31-4f13-bc3a-3bc90d5c24e3",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 188800,
        "endSampleExclusive": 449607,
        "startSeconds": 3.933333333333333,
        "endSeconds": 9.3668125,
        "startFrame": 118,
        "endFrameExclusive": 282,
        "sourceSha256": "798017cf714085efd9475989ae55dc6bc1a9474358bde65c2345fddbfead4339"
      }
    },
    {
      "id": "import-03",
      "helpStep": 2,
      "stepTitle": "Check the import result",
      "text": "The message reports how many tasks were added. Existing tasks remain unchanged.",
      "narrationText": "The message reports how many tasks were added. Existing tasks remain unchanged.",
      "startFrame": 286,
      "endFrameExclusive": 446,
      "startSeconds": 9.533333333333333,
      "endSeconds": 14.866666666666667,
      "actions": [
        {
          "action": "highlight",
          "target": "#toast"
        }
      ],
      "originalStartFrame": 281,
      "originalEndFrameExclusive": 435,
      "addedHoldFrames": 6,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/import-03.mp3",
        "taskId": "15bea24c-5742-48b8-8533-8304fe0f322f",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 462400,
        "endSampleExclusive": 705374,
        "startSeconds": 9.633333333333333,
        "endSeconds": 14.695291666666666,
        "startFrame": 289,
        "endFrameExclusive": 441,
        "sourceSha256": "d649ca452c3f16c7ba0a88653f9cc6710652639f534bcc271f5c6f83a305aed4"
      }
    },
    {
      "id": "import-04",
      "helpStep": 3,
      "stepTitle": "Find imported tasks",
      "text": "Open All tasks and clear filters to find the imported task.",
      "narrationText": "Open All tasks and clear filters to find the imported task.",
      "startFrame": 446,
      "endFrameExclusive": 570,
      "startSeconds": 14.866666666666667,
      "endSeconds": 19.0,
      "actions": [
        {
          "action": "click",
          "target": "[data-view=\"all\"]"
        },
        {
          "action": "highlight",
          "target": "[data-id=\"demo-import\"]"
        }
      ],
      "originalStartFrame": 435,
      "originalEndFrameExclusive": 559,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/import-04.mp3",
        "taskId": "f09ab1bd-67d4-488d-93ff-b0fe2721ffd5",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 718400,
        "endSampleExclusive": 894500,
        "startSeconds": 14.966666666666667,
        "endSeconds": 18.635416666666668,
        "startFrame": 449,
        "endFrameExclusive": 560,
        "sourceSha256": "7422a469b43b66d46aa27be90a12781a84a30fa9bbab44c14e7ba0d22f1ef5a4"
      }
    },
    {
      "id": "import-05",
      "helpStep": 4,
      "stepTitle": "Understand duplicates",
      "text": "Importing the same backup again skips existing task IDs.",
      "narrationText": "Importing the same backup again skips existing task IDs.",
      "startFrame": 570,
      "endFrameExclusive": 688,
      "startSeconds": 19.0,
      "endSeconds": 22.933333333333334,
      "actions": [
        {
          "action": "choose-file",
          "name": "today-list-example.json",
          "note": "Native operating-system chooser is outside browser screencast."
        }
      ],
      "originalStartFrame": 559,
      "originalEndFrameExclusive": 677,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/import-05.mp3",
        "taskId": "8c291f90-6739-4f82-a8e1-b5cecad58605",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 916800,
        "endSampleExclusive": 1077297,
        "startSeconds": 19.1,
        "endSeconds": 22.4436875,
        "startFrame": 573,
        "endFrameExclusive": 674,
        "sourceSha256": "a5d10b02923918669ff907060078e16be9191314a10d019b23ba9a158685f55b"
      }
    },
    {
      "id": "import-06",
      "helpStep": 4,
      "stepTitle": "Understand duplicates",
      "text": "These tasks are already in your list means nothing new was added.",
      "narrationText": "These tasks are already in your list means nothing new was added.",
      "startFrame": 688,
      "endFrameExclusive": 821,
      "startSeconds": 22.933333333333334,
      "endSeconds": 27.366666666666667,
      "actions": [
        {
          "action": "highlight",
          "target": "#toast"
        }
      ],
      "originalStartFrame": 677,
      "originalEndFrameExclusive": 810,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/import-06.mp3",
        "taskId": "9f8df2b8-54ba-4639-9894-80f280d46bdc",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 1105600,
        "endSampleExclusive": 1263867,
        "startSeconds": 23.033333333333335,
        "endSeconds": 26.3305625,
        "startFrame": 691,
        "endFrameExclusive": 790,
        "sourceSha256": "2edfba03333e9ef9053580d7f4a4c38680b2f490bf435a7fe4d7043eff1d5024"
      }
    }
  ],
  "subtitleBoundaryEncoding": "ASS cue boundaries quantized down to centiseconds to align exactly with the logged 30 fps frames.",
  "videoSha256": "3efb5681d9ae62fe39f04012daaddf68128caced81459b4d24fd699e038c33f0",
  "masterSha256": "1dc40e657b85d75387d942ee5faceb59ba9bea58e3ed52fb9b3a068d90dd9d46",
  "controlsClearancePixels": 128,
  "originalSourceMaster": "output/video-masters/import.mp4",
  "originalMasterSha256": "9bf3aeafcce026e13a704882a4a2511884bf3422235635157aeb64034b11e0b8",
  "originalFrameCount": 810,
  "addedNarrationHoldFrames": 11,
  "narration": {
    "voice": "Niki",
    "language": "en",
    "description": "Friendly American narration",
    "generatedSpeech": true,
    "model": "eleven_multilingual_v2",
    "generationSpeed": 1.05,
    "sampleRate": 48000,
    "codec": "AAC",
    "audioFile": "import-narration.m4a",
    "trackMaster": "output/narration/tracks/import.wav",
    "alignment": "Each original cue plays at its original pace. End-frame holds extend cues when needed for natural speech, with 100 ms lead-in and at least 150 ms end clearance. Audio is never truncated or sped up.",
    "timingConvention": "Audio sample indices at 48000 Hz are exact; covering video frame ranges are rounded outward."
  }
}
