{
  "schemaVersion": 2,
  "id": "sort",
  "title": "Sort tasks",
  "video": "sort.mp4",
  "poster": "sort-poster.jpg",
  "captions": "sort.vtt",
  "srt": "sort.srt",
  "subtitleLog": "sort.json",
  "sourceMaster": "output/video-masters/sort.mp4",
  "fps": 30,
  "frameIndexConvention": "zero-based; start inclusive, end exclusive",
  "width": 1280,
  "height": 1040,
  "screenHeight": 800,
  "frameCount": 750,
  "durationSeconds": 25.0,
  "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": "sort-01",
      "helpStep": 1,
      "stepTitle": "Choose a view and filters",
      "text": "Select the view you want to sort. Here we use All tasks.",
      "narrationText": "Select the view you want to sort. Here we use All tasks.",
      "startFrame": 0,
      "endFrameExclusive": 119,
      "startSeconds": 0.0,
      "endSeconds": 3.966666666666667,
      "actions": [
        {
          "action": "click",
          "target": "[data-view=\"all\"]"
        }
      ],
      "originalStartFrame": 0,
      "originalEndFrameExclusive": 119,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/sort-01.mp3",
        "taskId": "c54c23d6-235b-4ce9-9b48-fc45f8884168",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 4800,
        "endSampleExclusive": 174213,
        "startSeconds": 0.1,
        "endSeconds": 3.6294375,
        "startFrame": 3,
        "endFrameExclusive": 109,
        "sourceSha256": "62b43b5dd8e76a17706218303e74a5973f8512fcb7c88f9f52237ef8148b4a47"
      }
    },
    {
      "id": "sort-02",
      "helpStep": 2,
      "stepTitle": "Select an ordering",
      "text": "Due date puts earlier dates first and undated tasks last.",
      "narrationText": "Due date puts earlier dates first and undated tasks last.",
      "startFrame": 119,
      "endFrameExclusive": 239,
      "startSeconds": 3.966666666666667,
      "endSeconds": 7.966666666666667,
      "actions": [
        {
          "action": "select",
          "target": "#sort",
          "value": "due"
        },
        {
          "action": "highlight",
          "target": "#task-area"
        }
      ],
      "originalStartFrame": 119,
      "originalEndFrameExclusive": 239,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/sort-02.mp3",
        "taskId": "f6f7a6fd-3965-446c-a8ce-a338c38123a8",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 195200,
        "endSampleExclusive": 366842,
        "startSeconds": 4.066666666666666,
        "endSeconds": 7.642541666666666,
        "startFrame": 122,
        "endFrameExclusive": 230,
        "sourceSha256": "b27f7fb67fa5d50678e55e923b8371a9fc2301ebd54feb74235225ca949bec6e"
      }
    },
    {
      "id": "sort-03",
      "helpStep": 2,
      "stepTitle": "Select an ordering",
      "text": "Priority orders High, then Medium, then Low.",
      "narrationText": "Priority orders High, then Medium, then Low.",
      "startFrame": 239,
      "endFrameExclusive": 353,
      "startSeconds": 7.966666666666667,
      "endSeconds": 11.766666666666667,
      "actions": [
        {
          "action": "select",
          "target": "#sort",
          "value": "priority"
        }
      ],
      "originalStartFrame": 239,
      "originalEndFrameExclusive": 353,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/sort-03.mp3",
        "taskId": "74d9b512-b293-4b06-87a5-9dab686fb455",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 387200,
        "endSampleExclusive": 520947,
        "startSeconds": 8.066666666666666,
        "endSeconds": 10.8530625,
        "startFrame": 242,
        "endFrameExclusive": 326,
        "sourceSha256": "856d9915bac1cf14c421b1a5397a43d4ba9d190b6af20e697d0ba86e9a849ae6"
      }
    },
    {
      "id": "sort-04",
      "helpStep": 2,
      "stepTitle": "Select an ordering",
      "text": "A\u2013Z orders task names alphabetically.",
      "narrationText": "A\u2013Z orders task names alphabetically.",
      "startFrame": 353,
      "endFrameExclusive": 467,
      "startSeconds": 11.766666666666667,
      "endSeconds": 15.566666666666666,
      "actions": [
        {
          "action": "select",
          "target": "#sort",
          "value": "title"
        }
      ],
      "originalStartFrame": 353,
      "originalEndFrameExclusive": 467,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/sort-04.mp3",
        "taskId": "df4b7320-5696-4735-b4c1-2d215f01a2e4",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 569600,
        "endSampleExclusive": 681056,
        "startSeconds": 11.866666666666667,
        "endSeconds": 14.188666666666666,
        "startFrame": 356,
        "endFrameExclusive": 426,
        "sourceSha256": "84dc3c370be168bc165324db604ff8d88cfca72b6ffbcb2fb355a3d1adb46226"
      }
    },
    {
      "id": "sort-05",
      "helpStep": 3,
      "stepTitle": "Read each section separately",
      "text": "TO DO and COMPLETED remain separate sections, each using the chosen order.",
      "narrationText": "TO DO and COMPLETED remain separate sections, each using the chosen order.",
      "startFrame": 467,
      "endFrameExclusive": 614,
      "startSeconds": 15.566666666666666,
      "endSeconds": 20.466666666666665,
      "actions": [
        {
          "action": "scroll",
          "target": ".task-list:last-of-type"
        },
        {
          "action": "highlight",
          "target": ".task-list:last-of-type"
        }
      ],
      "originalStartFrame": 467,
      "originalEndFrameExclusive": 614,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/sort-05.mp3",
        "taskId": "228d05e9-9c6e-4fe5-aa4e-490210b990c5",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 752000,
        "endSampleExclusive": 968224,
        "startSeconds": 15.666666666666666,
        "endSeconds": 20.171333333333333,
        "startFrame": 470,
        "endFrameExclusive": 606,
        "sourceSha256": "854752607a474ae5b0f69eb5fa13c594e04a5f0513ea1a325105af1ebe27441c"
      }
    },
    {
      "id": "sort-06",
      "helpStep": 4,
      "stepTitle": "Change the order whenever needed",
      "text": "Switch back to Newest first to show the latest-created tasks first.",
      "narrationText": "Switch back to Newest first to show the latest-created tasks first.",
      "startFrame": 614,
      "endFrameExclusive": 750,
      "startSeconds": 20.466666666666665,
      "endSeconds": 25.0,
      "actions": [
        {
          "action": "scroll",
          "target": "#sort"
        },
        {
          "action": "select",
          "target": "#sort",
          "value": "created"
        }
      ],
      "originalStartFrame": 614,
      "originalEndFrameExclusive": 750,
      "addedHoldFrames": 0,
      "narration": {
        "voice": "Niki",
        "sourceClip": "output/narration/clips/sort-06.mp3",
        "taskId": "cdebaad9-d5fa-4c6a-95d3-904fa7bcdad1",
        "generationSpeed": 1.05,
        "playbackSpeed": 1.0,
        "sampleRate": 48000,
        "startSample": 987200,
        "endSampleExclusive": 1156613,
        "startSeconds": 20.566666666666666,
        "endSeconds": 24.096104166666667,
        "startFrame": 617,
        "endFrameExclusive": 723,
        "sourceSha256": "66b3994c374969c1f805b274b516a0bd7d3bf8c4972d493d99add4a149f36702"
      }
    }
  ],
  "subtitleBoundaryEncoding": "ASS cue boundaries quantized down to centiseconds to align exactly with the logged 30 fps frames.",
  "videoSha256": "f265a4606f2cbfd0f244c0ea842a48cd3ea8422a73b9365e82296e157ed845e7",
  "masterSha256": "b1325b81c56b5efed1ee905d7424ab050eebfc7a2abd6980bc2cdbe81fe5c5c2",
  "controlsClearancePixels": 128,
  "originalFrameCount": 750,
  "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": "sort-narration.m4a",
    "trackMaster": "output/narration/tracks/sort.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."
  }
}
