{
  "entry": {
    "id": "floating-composer-bubble-grows-per-line",
    "title": "Type into a floating composer bubble that re-centres and grows with every new line",
    "kind": "Interface sequences",
    "status": "Rendered draft",
    "verification": "rendered-draft",
    "source": {
      "title": "How to Prepare for Customer Meetings With ChatGPT Work | Tutorial",
      "id": "yQZgOSHHxjk",
      "url": "https://www.youtube.com/watch?v=yQZgOSHHxjk",
      "start": 50.008291666666665,
      "end": 52.135416666666664
    },
    "preview": "/videos/examples/rebuilds/floating-composer-bubble-grows-per-line/remake.mp4",
    "sourcePreview": "/videos/examples/rebuilds/floating-composer-bubble-grows-per-line/source.mp4",
    "adaptationPreview": "/videos/examples/rebuilds/floating-composer-bubble-grows-per-line/adaptation.mp4",
    "download": "/videos/examples/rebuilds/floating-composer-bubble-grows-per-line/package.zip",
    "svg": "/videos/examples/rebuilds/floating-composer-bubble-grows-per-line/editable.svg",
    "resolve": null,
    "limitations": [
      "Visual fidelity is an authored draft judgement from sampled source frames; no independent blind review or native Resolve execution.",
      "Both variants rerendered from the packaged text renderer to repair a prior code/preview mismatch."
    ],
    "bindingLevel": "full-render-manifest",
    "bytes": 147333,
    "packageSha256": "784dbb15edd84770976159ed9dd6bfed9bcb3d9dff5de666c77258ba6435fae0",
    "poster": "/videos/examples/posters/floating-composer-bubble-grows-per-line.jpg",
    "render": {
      "width": 1920,
      "height": 1080,
      "fps": "24000/1001",
      "frames": 51,
      "audioStreams": 0
    },
    "originalRecord": "/videos/examples/rebuilds/floating-composer-bubble-grows-per-line/item.json",
    "observation": "A white rounded composer bubble floats over dark olive footage between a white plus disc and its own black send disc. At local frame 0 three lines are typed and a caret blinks after 'sources:'; by ~f6 a fourth line begins ('today's / a'), the bubble grows and its centre stays put so the top edge rises while the bottom drops; the fourth line completes ~f20, a fifth line starts at ~f21, growing the bubble again, and the sentence ends with a full stop at ~f29 before holding.",
    "mechanism": "Caret type-on inside a vertically centred bubble whose height steps up per wrapped line, pushing both edges outward while the send button rides the bottom edge.",
    "phases": [
      {
        "frame": 0,
        "label": "Three lines typed, caret after colon"
      },
      {
        "frame": 6,
        "label": "Fourth line begins: bubble steps to 4 lines"
      },
      {
        "frame": 21,
        "label": "Fifth line begins: bubble steps to 5 lines"
      },
      {
        "frame": 29,
        "label": "Sentence complete, hold"
      },
      {
        "frame": 51,
        "label": "End"
      }
    ]
  },
  "repair": {
    "id": "floating-composer-bubble-grows-per-line",
    "reason": "Packaged Scene.tsx filters unrevealed characters before laying out the caret; prior preview used the earlier runtime.",
    "originalPackageSha256": "f38a4224197ee1df222f6de91b8d47f444f051a679fe6254e0100a6f909c9d10"
  },
  "original": {
    "id": "floating-composer-bubble-grows-per-line",
    "title": "Type into a floating composer bubble that re-centres and grows with every new line",
    "family": "composer",
    "status": "rendered-draft",
    "edition": "studies-300",
    "gaps": [
      "Visual fidelity is an authored draft judgement from sampled source frames; no independent blind review or native Resolve execution."
    ],
    "intervalKey": [
      "yQZgOSHHxjk",
      "1200199/24000",
      "5005/96"
    ],
    "source": {
      "filmId": "yQZgOSHHxjk",
      "film": "How to Prepare for Customer Meetings With ChatGPT Work | Tutorial",
      "url": "https://www.youtube.com/watch?v=yQZgOSHHxjk",
      "frames": [
        1199,
        1250
      ],
      "fps": {
        "numerator": 24000,
        "denominator": 1001
      },
      "startSeconds": 50.008291666666665,
      "endSeconds": 52.135416666666664,
      "publicationDate": "2026-08-18",
      "masterSha256": "c5b99907dc593b5de943ac7925af83f64206bb73746ace72b025375306262827",
      "clockBasis": "Downloaded 1920x1080 rendition at 24000/1001 fps; excerpt frame i = master frame 1199+i, re-encoded to 960x540 without omitted positions."
    },
    "sourceHash": "088aca9404b5cda8fce53dd32187d6e552e81d3c86927b5dd17effb35fc61554",
    "classification": "vector-code-approximation",
    "bindingLevel": "full-render-manifest",
    "observation": "A white rounded composer bubble floats over dark olive footage between a white plus disc and its own black send disc. At local frame 0 three lines are typed and a caret blinks after 'sources:'; by ~f6 a fourth line begins ('today's / a'), the bubble grows and its centre stays put so the top edge rises while the bottom drops; the fourth line completes ~f20, a fifth line starts at ~f21, growing the bubble again, and the sentence ends with a full stop at ~f29 before holding.",
    "mechanism": "Caret type-on inside a vertically centred bubble whose height steps up per wrapped line, pushing both edges outward while the send button rides the bottom edge.",
    "phases": [
      {
        "frame": 0,
        "label": "Three lines typed, caret after colon"
      },
      {
        "frame": 6,
        "label": "Fourth line begins: bubble steps to 4 lines"
      },
      {
        "frame": 21,
        "label": "Fifth line begins: bubble steps to 5 lines"
      },
      {
        "frame": 29,
        "label": "Sentence complete, hold"
      },
      {
        "frame": 51,
        "label": "End"
      }
    ],
    "checks": {
      "recipeSha256": "2efc8c36b01686a96e844cef404ca5925e8b7dde22965d11fadd6325ae2ad063",
      "renderManifestSha256": "da791079c3a4abbe72e8f15273d3a3058404f32f7fd3aad5bc8e1533cf79404f",
      "adaptationManifestSha256": "2852731c4f0483f63ca9af7c1eb1d72991091f0dac54901681766ff837370667",
      "implementationFiles": 15,
      "movies": {
        "source": {
          "sha256": "088aca9404b5cda8fce53dd32187d6e552e81d3c86927b5dd17effb35fc61554",
          "bytes": 222745,
          "width": 960,
          "height": 540,
          "fps": "24000/1001",
          "frames": 51,
          "duration": 2.127125,
          "codec": "h264",
          "pixelFormat": "yuv420p",
          "audioStreams": 0
        },
        "original": {
          "sha256": "16ecf023b09a11b5c24214a8b11db26d637ac315dbef18f52e93f24e97ea8c45",
          "bytes": 76971,
          "width": 1920,
          "height": 1080,
          "fps": "24000/1001",
          "frames": 51,
          "duration": 2.127122,
          "codec": "h264",
          "pixelFormat": "yuv420p",
          "audioStreams": 0
        },
        "adaptation": {
          "sha256": "08b735110d5f62baf69697e01a8d65ac80e446c84052ee4d8e6a0c35c45101d8",
          "bytes": 73565,
          "width": 1920,
          "height": 1080,
          "fps": "24000/1001",
          "frames": 51,
          "duration": 2.127122,
          "codec": "h264",
          "pixelFormat": "yuv420p",
          "audioStreams": 0
        }
      },
      "preparedArchive": {
        "sha256": "f38a4224197ee1df222f6de91b8d47f444f051a679fe6254e0100a6f909c9d10",
        "bytes": 147325,
        "members": 20,
        "crc": "pass"
      },
      "selectedSvg": {
        "sha256": "928eb5c66a573b3f2797340c8a19f8c105ddae0819526a06effbf587103fe8df",
        "bytes": 2072,
        "drawableElements": 12,
        "rasterEmbedded": false,
        "frame": 38,
        "meaningful": true
      },
      "contentDiffers": true,
      "renderSeconds": 4.7
    },
    "assets": {
      "source.mp4": {
        "path": "items/floating-composer-bubble-grows-per-line/source.mp4",
        "sha256": "088aca9404b5cda8fce53dd32187d6e552e81d3c86927b5dd17effb35fc61554",
        "bytes": 222745
      },
      "remake.mp4": {
        "path": "items/floating-composer-bubble-grows-per-line/remake.mp4",
        "sha256": "16ecf023b09a11b5c24214a8b11db26d637ac315dbef18f52e93f24e97ea8c45",
        "bytes": 76971
      },
      "adaptation.mp4": {
        "path": "items/floating-composer-bubble-grows-per-line/adaptation.mp4",
        "sha256": "08b735110d5f62baf69697e01a8d65ac80e446c84052ee4d8e6a0c35c45101d8",
        "bytes": 73565
      },
      "editable.svg": {
        "path": "items/floating-composer-bubble-grows-per-line/editable.svg",
        "sha256": "928eb5c66a573b3f2797340c8a19f8c105ddae0819526a06effbf587103fe8df",
        "bytes": 2072
      },
      "resolve.txt": {
        "path": "items/floating-composer-bubble-grows-per-line/resolve.txt",
        "sha256": "f439c53f066006d72eb515d7cf083f692385089cefbc08b066235d40232ad593",
        "bytes": 5204
      },
      "package.zip": {
        "path": "items/floating-composer-bubble-grows-per-line/package.zip",
        "sha256": "f38a4224197ee1df222f6de91b8d47f444f051a679fe6254e0100a6f909c9d10",
        "bytes": 147325
      },
      "recipe.json": {
        "path": "items/floating-composer-bubble-grows-per-line/recipe.json",
        "sha256": "2efc8c36b01686a96e844cef404ca5925e8b7dde22965d11fadd6325ae2ad063",
        "bytes": 6822
      }
    },
    "builtAt": "2026-09-18T05:09:03Z"
  }
}
