{
  "schemaVersion": 2,
  "id": "today",
  "title": "Plan Today and handle overdue tasks",
  "video": "today.mp4",
  "poster": "today-poster.jpg",
  "captions": "today.vtt",
  "srt": "today.srt",
  "subtitleLog": "today.json",
  "sourceMaster": "output/video-masters-narrated/today.mp4",
  "fps": 30,
  "frameIndexConvention": "zero-based; start inclusive, end exclusive",
  "width": 1280,
  "height": 1040,
  "screenHeight": 800,
  "frameCount": 835,
  "durationSeconds": 27.833333333333332,
  "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": "today-01",
      "helpStep": 1,
      "stepTitle": "Select Today",
      "text": "Select Today. It includes unfinished tasks due today and overdue tasks.",
      "narrationText": "Select Today. It includes unfinished tasks due today and overdue tasks.",
      "startFrame": 0,
      "endFrameExclusive": 149,
      "startSeconds": 0.0,
      "endSeconds": 4.966666666666667,
      "actions": [
        {
          "action": "click",
          "target": "[data-view=\"today\"]"
        },
        {
          "action": "highlight",
          "target": "#task-area"
        }
      ],
      "originalStartFrame": 0,
      "originalEndFrameExclusive": 143,
      "addedHoldFrames": 6,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/today-01.mp3",
        "taskId": "888879fa-5c0c-4940-aaa6-85e3f61f25b2",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 4800,
        "endSampleExclusive": 229941,
        "startSeconds": 0.1,
        "endSeconds": 4.7904375,
        "startFrame": 3,
        "endFrameExclusive": 144,
        "sourceSha256": "31d41ba50549ec5778247c707e974ee37c16e1cf8f1d98c55b6172134b315bf3"
      }
    },
    {
      "id": "today-02",
      "helpStep": 2,
      "stepTitle": "Add a task for today",
      "text": "New task opened from Today preselects the current date.",
      "narrationText": "New task opened from Today preselects the current date.",
      "startFrame": 149,
      "endFrameExclusive": 266,
      "startSeconds": 4.966666666666667,
      "endSeconds": 8.866666666666667,
      "actions": [
        {
          "action": "click",
          "target": "#new-task"
        },
        {
          "action": "highlight",
          "target": "#task-due"
        }
      ],
      "originalStartFrame": 143,
      "originalEndFrameExclusive": 260,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/today-02.mp3",
        "taskId": "f174c5f6-e001-4fb6-aff0-e39551519c8a",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 243200,
        "endSampleExclusive": 392551,
        "startSeconds": 5.066666666666666,
        "endSeconds": 8.178145833333334,
        "startFrame": 152,
        "endFrameExclusive": 246,
        "sourceSha256": "fc292252679b035055a6249cd2822733bddacf898500bbf6115205d247354a35"
      }
    },
    {
      "id": "today-03",
      "helpStep": 2,
      "stepTitle": "Add a task for today",
      "text": "You can create it with that date, or cancel this example.",
      "narrationText": "You can create it with that date, or cancel this example.",
      "startFrame": 266,
      "endFrameExclusive": 386,
      "startSeconds": 8.866666666666667,
      "endSeconds": 12.866666666666667,
      "actions": [
        {
          "action": "type",
          "target": "#task-title",
          "value": "Call the workshop venue"
        },
        {
          "action": "click",
          "target": "#save-task"
        }
      ],
      "originalStartFrame": 260,
      "originalEndFrameExclusive": 380,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/today-03.mp3",
        "taskId": "198769e9-e114-4afa-bc31-ac5fd1ff6b91",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 430400,
        "endSampleExclusive": 575293,
        "startSeconds": 8.966666666666667,
        "endSeconds": 11.985270833333333,
        "startFrame": 269,
        "endFrameExclusive": 360,
        "sourceSha256": "3be08271286b3def8d498378e25d97fa8cd78ad2885aa0e7128d1b14627d5ffe"
      }
    },
    {
      "id": "today-04",
      "helpStep": 3,
      "stepTitle": "Resolve an overdue task",
      "text": "Reschedule an overdue task by editing its Due date.",
      "narrationText": "Reschedule an overdue task by editing its Due date.",
      "startFrame": 386,
      "endFrameExclusive": 500,
      "startSeconds": 12.866666666666667,
      "endSeconds": 16.666666666666668,
      "actions": [
        {
          "action": "click",
          "target": "[data-id=\"demo-2\"] [data-action=\"edit\"]"
        },
        {
          "action": "fill",
          "target": "#task-due",
          "value": "2026-09-27"
        },
        {
          "action": "click",
          "target": "#save-task"
        }
      ],
      "originalStartFrame": 380,
      "originalEndFrameExclusive": 494,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/today-04.mp3",
        "taskId": "1dbd4277-1ed7-48a8-9f1f-e8ffd8d5389d",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 622400,
        "endSampleExclusive": 765064,
        "startSeconds": 12.966666666666667,
        "endSeconds": 15.938833333333333,
        "startFrame": 389,
        "endFrameExclusive": 479,
        "sourceSha256": "2f37878bf6ce1f4aac417d4b1f25380ca9f8c6deea25227fb3f312bfc3b13cf3"
      }
    },
    {
      "id": "today-05",
      "helpStep": 3,
      "stepTitle": "Resolve an overdue task",
      "text": "The rescheduled task appears in Upcoming. Completed tasks leave Today too.",
      "narrationText": "The rescheduled task appears in Upcoming. Completed tasks leave Today too.",
      "startFrame": 500,
      "endFrameExclusive": 656,
      "startSeconds": 16.666666666666668,
      "endSeconds": 21.866666666666667,
      "actions": [
        {
          "action": "click",
          "target": "[data-view=\"upcoming\"]"
        },
        {
          "action": "highlight",
          "target": "[data-id=\"demo-2\"]"
        },
        {
          "action": "click",
          "target": "[data-view=\"today\"]"
        },
        {
          "action": "click",
          "target": "[data-id=\"demo-1\"] .task-check"
        }
      ],
      "originalStartFrame": 494,
      "originalEndFrameExclusive": 641,
      "addedHoldFrames": 9,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/today-05.mp3",
        "taskId": "dc4b99e4-8408-4db8-abf8-620a1070d215",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 804800,
        "endSampleExclusive": 1041087,
        "startSeconds": 16.766666666666666,
        "endSeconds": 21.6893125,
        "startFrame": 503,
        "endFrameExclusive": 651,
        "sourceSha256": "b721734c07d36d0dbe050ecc239db4312dd360599dcfb122ec597cde93dd2fd5"
      }
    },
    {
      "id": "today-06",
      "helpStep": 4,
      "stepTitle": "Understand an empty view",
      "text": "When no unfinished tasks remain due today, this view is clear. Other tasks still exist.",
      "narrationText": "When no unfinished tasks remain due today, this view is clear. Other tasks still exist.",
      "startFrame": 656,
      "endFrameExclusive": 835,
      "startSeconds": 21.866666666666667,
      "endSeconds": 27.833333333333332,
      "actions": [
        {
          "action": "click",
          "target": ".task-row .task-check"
        },
        {
          "action": "highlight",
          "target": ".empty"
        }
      ],
      "originalStartFrame": 641,
      "originalEndFrameExclusive": 808,
      "addedHoldFrames": 12,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/today-06.mp3",
        "taskId": "584f64a3-cb70-4efa-b91b-8fdbb2aff46f",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 1054400,
        "endSampleExclusive": 1328581,
        "startSeconds": 21.966666666666665,
        "endSeconds": 27.678770833333335,
        "startFrame": 659,
        "endFrameExclusive": 831,
        "sourceSha256": "30427a55671efaae8f8acacf9824c47d9dc914fcb60977cc842e1df443bd16fb"
      }
    }
  ],
  "subtitleBoundaryEncoding": "ASS cue boundaries quantized down to centiseconds to align exactly with the logged 30 fps frames.",
  "videoSha256": "0a094c256aa185d7ec0e11ae6c57b1df975f6b58e845e210c53221a7c72ed8a3",
  "masterSha256": "e647b587f22dcc62d2740e5d45acf7ab6eb67a49e10523b4866f7e98859942e7",
  "controlsClearancePixels": 128,
  "originalSourceMaster": "output/video-masters/today.mp4",
  "originalMasterSha256": "c6d50b7a2be8a9aa480e27e90cb104fbd640c8659c06d59625b90f5bbb607463",
  "originalFrameCount": 808,
  "addedNarrationHoldFrames": 27,
  "narration": {
    "voice": "Niki",
    "language": "en",
    "description": "Friendly American narration",
    "generatedSpeech": true,
    "model": "eleven_multilingual_v2",
    "generationSpeed": 1.05,
    "sampleRate": 48000,
    "codec": "AAC",
    "audioFile": "today-narration.m4a",
    "trackMaster": "output/narration/tracks/today.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."
  }
}
