{
  "schemaVersion": 2,
  "id": "progress",
  "title": "Understand progress and task counts",
  "video": "progress.mp4",
  "poster": "progress-poster.jpg",
  "captions": "progress.vtt",
  "srt": "progress.srt",
  "subtitleLog": "progress.json",
  "sourceMaster": "output/video-masters/progress.mp4",
  "fps": 30,
  "frameIndexConvention": "zero-based; start inclusive, end exclusive",
  "width": 1280,
  "height": 1040,
  "screenHeight": 800,
  "frameCount": 759,
  "durationSeconds": 25.3,
  "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": "progress-01",
      "helpStep": 1,
      "stepTitle": "Read the fraction",
      "text": "The fraction shows completed tasks out of all saved tasks: one of six here.",
      "narrationText": "The fraction shows completed tasks out of all saved tasks: one of six here.",
      "startFrame": 0,
      "endFrameExclusive": 149,
      "startSeconds": 0.0,
      "endSeconds": 4.966666666666667,
      "actions": [
        {
          "action": "highlight",
          "target": ".overview"
        }
      ],
      "originalStartFrame": 0,
      "originalEndFrameExclusive": 149,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/progress-01.mp3",
        "taskId": "95898548-0514-42ba-a93f-2a219698fc72",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 4800,
        "endSampleExclusive": 223254,
        "startSeconds": 0.1,
        "endSeconds": 4.651125,
        "startFrame": 3,
        "endFrameExclusive": 140,
        "sourceSha256": "97e3b9208e2f000c10f209c3b1ffa9e0dfee653f2f9c5d5701b61c5913e7de9f"
      }
    },
    {
      "id": "progress-02",
      "helpStep": 2,
      "stepTitle": "Read the remaining count",
      "text": "The remaining count covers the whole workspace. Complete a task to update it.",
      "narrationText": "The remaining count covers the whole workspace. Complete a task to update it.",
      "startFrame": 149,
      "endFrameExclusive": 301,
      "startSeconds": 4.966666666666667,
      "endSeconds": 10.033333333333333,
      "actions": [
        {
          "action": "click",
          "target": "[data-id=\"demo-1\"] .task-check"
        },
        {
          "action": "highlight",
          "target": ".overview"
        }
      ],
      "originalStartFrame": 149,
      "originalEndFrameExclusive": 301,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/progress-02.mp3",
        "taskId": "1fcf4d23-be93-4ddf-9ecf-0d540eb18146",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 243200,
        "endSampleExclusive": 461654,
        "startSeconds": 5.066666666666666,
        "endSeconds": 9.617791666666667,
        "startFrame": 152,
        "endFrameExclusive": 289,
        "sourceSha256": "811a3567180a0c932421f0a159dcdef6f334450d3f2d82dae48069e32449e092"
      }
    },
    {
      "id": "progress-03",
      "helpStep": 3,
      "stepTitle": "Compare navigation and section badges",
      "text": "List badges count unfinished tasks. Section headings count the visible rows.",
      "narrationText": "List badges count unfinished tasks. Section headings count the visible rows.",
      "startFrame": 301,
      "endFrameExclusive": 451,
      "startSeconds": 10.033333333333333,
      "endSeconds": 15.033333333333333,
      "actions": [
        {
          "action": "click",
          "target": "[data-view=\"Work\"]"
        },
        {
          "action": "highlight",
          "target": "#navigation"
        },
        {
          "action": "highlight",
          "target": "#task-area"
        }
      ],
      "originalStartFrame": 301,
      "originalEndFrameExclusive": 451,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/progress-03.mp3",
        "taskId": "82e594c9-bb47-4ae4-8eba-9ea9b80d32d1",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 486400,
        "endSampleExclusive": 713770,
        "startSeconds": 10.133333333333333,
        "endSeconds": 14.870208333333334,
        "startFrame": 304,
        "endFrameExclusive": 447,
        "sourceSha256": "d8147a3389483a8aec3b769f09403444869e09555e78d91edf1b2c8d91e9ecc0"
      }
    },
    {
      "id": "progress-04",
      "helpStep": 4,
      "stepTitle": "Interpret all-done and empty states",
      "text": "A clear Today view does not mean every task is complete. Other views may still contain work.",
      "narrationText": "A clear Today view does not mean every task is complete. Other views may still contain work.",
      "startFrame": 451,
      "endFrameExclusive": 626,
      "startSeconds": 15.033333333333333,
      "endSeconds": 20.866666666666667,
      "actions": [
        {
          "action": "click",
          "target": "[data-view=\"today\"]"
        },
        {
          "action": "click",
          "target": "[data-id=\"demo-2\"] .task-check"
        },
        {
          "action": "highlight",
          "target": ".empty"
        }
      ],
      "originalStartFrame": 451,
      "originalEndFrameExclusive": 626,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/progress-04.mp3",
        "taskId": "850f639b-733d-41b1-91d1-695aedd50606",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 726400,
        "endSampleExclusive": 993894,
        "startSeconds": 15.133333333333333,
        "endSeconds": 20.706125,
        "startFrame": 454,
        "endFrameExclusive": 622,
        "sourceSha256": "24f1c2ceb05f550a7240f08cf303a14d52025ccc4d574257d5b1aa879d35731f"
      }
    },
    {
      "id": "progress-05",
      "helpStep": 4,
      "stepTitle": "Interpret all-done and empty states",
      "text": "All tasks shows the unfinished work and completed tasks together.",
      "narrationText": "All tasks shows the unfinished work and completed tasks together.",
      "startFrame": 626,
      "endFrameExclusive": 759,
      "startSeconds": 20.866666666666667,
      "endSeconds": 25.3,
      "actions": [
        {
          "action": "click",
          "target": "[data-view=\"all\"]"
        },
        {
          "action": "highlight",
          "target": ".overview"
        }
      ],
      "originalStartFrame": 626,
      "originalEndFrameExclusive": 759,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/progress-05.mp3",
        "taskId": "640a4ee6-7818-4d11-8b4f-1400de86773f",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 1006400,
        "endSampleExclusive": 1189188,
        "startSeconds": 20.966666666666665,
        "endSeconds": 24.77475,
        "startFrame": 629,
        "endFrameExclusive": 744,
        "sourceSha256": "3f838f12e4ca3cbbd85b5250aeaf39eb60ee0429e93f938f0b8c1e10c51cb97a"
      }
    }
  ],
  "subtitleBoundaryEncoding": "ASS cue boundaries quantized down to centiseconds to align exactly with the logged 30 fps frames.",
  "videoSha256": "14663fd3f868be049ca530a0852e68bbd1d96d4ed451404ffa4c731f84fd49c6",
  "masterSha256": "f602f77482ef9d6362987400b3bb0f5ce169a0aa5c41dfb80d5f55583273f1c0",
  "controlsClearancePixels": 128,
  "originalFrameCount": 759,
  "addedNarrationHoldFrames": 0,
  "narration": {
    "voice": "Niki",
    "language": "en",
    "description": "Friendly American narration",
    "generatedSpeech": true,
    "model": "eleven_multilingual_v2",
    "generationSpeed": 1.05,
    "sampleRate": 48000,
    "codec": "AAC",
    "audioFile": "progress-narration.m4a",
    "trackMaster": "output/narration/tracks/progress.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."
  }
}
