{
  "title": "Overview drawer",
  "beforeRevision": "fee10e3d2909ebbf9950578575b1ee011492171e",
  "afterRevision": "a3ddc1b35f39268bc34e4d1ca221e6de93d17a73",
  "builds": {
    "before": "0d613af38d4884d7",
    "after": "c67b70a90d8ab8ee"
  },
  "versions": {
    "before": {
      "pins": {
        "agentServer": "1.58.1",
        "agentCanvas": "1.33.0",
        "automation": "1.25.1"
      },
      "reportedRuntime": {
        "agentServer": "1.58.1",
        "sdk": "1.58.1"
      },
      "node": "v24.22.1",
      "npm": "11.12.1",
      "chromeBinary": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
      "browserUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.0.0 Safari/537.36",
      "automationVersionEvidence": "Explicit launch override1.25.1 matches committed pin; health endpoint reports status without independent version field"
    },
    "after": {
      "pins": {
        "agentServer": "1.58.1",
        "agentCanvas": "1.33.0",
        "automation": "1.25.1"
      },
      "reportedRuntime": {
        "agentServer": "1.58.1",
        "sdk": "1.58.1"
      },
      "node": "v24.22.1",
      "npm": "11.12.1",
      "chromeBinary": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
      "browserUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/156.0.0.0 Safari/537.36",
      "automationVersionEvidence": "Explicit launch override1.25.1 matches committed pin; health endpoint reports status without independent version field"
    }
  },
  "implementation": {
    "before": "Drawer outer and inner widths and the transition property are supplied inline.",
    "after": "Typed custom-property values feed CSS width and transition readers while native open/close geometry and the default 420px width are preserved.",
    "owners": [
      "src/components/features/conversation/conversation-overview-drawer.tsx",
      "src/tailwind.css"
    ]
  },
  "scope": {
    "before": {
      "desktop": {
        "theme": "OpenHands-Neutral",
        "viewport": [
          1440,
          1000
        ],
        "motionPreference": "no-preference",
        "bridge": "real --mars-web enabled",
        "llm": "unconfigured; no connect/login submitted"
      },
      "overview": {
        "conversation": "Overview width check; genuine idle; no messages",
        "fixtureBasename": "qa-overview-workspace",
        "openWidths": [
          420,
          420
        ],
        "closedWidths": [
          0,
          420
        ],
        "storedWidth": "420",
        "transitionProperty": "width, transform, opacity",
        "duration": "0.3s",
        "easing": "cubic-bezier(0.4, 0, 0.2, 1)",
        "realPointerGrip": [
          12,
          0
        ],
        "events": 0
      },
      "phone": {
        "theme": "Light+",
        "viewport": [
          390,
          844
        ],
        "sidebar": "unchanged expanded drawer smoke",
        "overview": "Known#16792:Hide overview label,0panel/ellipsis/content, no entry point",
        "conversation": "One owned idle row titled Overview width check; sidebar desktop captures precede arrangement and remain empty."
      }
    },
    "after": {
      "desktop": {
        "theme": "OpenHands-Neutral",
        "viewport": [
          1440,
          1000
        ],
        "motionPreference": "no-preference",
        "bridge": "real --mars-web enabled",
        "llm": "unconfigured; no connect/login submitted"
      },
      "overview": {
        "conversation": "Overview width check; genuine idle; no messages",
        "fixtureBasename": "qa-overview-workspace",
        "openWidths": [
          420,
          420
        ],
        "closedWidths": [
          0,
          420
        ],
        "storedWidth": "420",
        "transitionProperty": "width, transform, opacity",
        "duration": "0.3s",
        "easing": "cubic-bezier(0.4, 0, 0.2, 1)",
        "realPointerGrip": [
          12,
          0
        ],
        "events": 0
      },
      "phone": {
        "theme": "Light+",
        "viewport": [
          390,
          844
        ],
        "sidebar": "unchanged expanded drawer smoke",
        "overview": "Known#16792:Hide overview label,0panel/ellipsis/content, no entry point",
        "conversation": "One owned idle row titled Overview width check; sidebar desktop captures precede arrangement and remain empty."
      }
    },
    "mainFilm": "Changed desktop path only; phone remains separately scoped smoke or documented blocker."
  },
  "comparisonSummary": "9 direct computed sample(s) paired, with 0 stable-field differences. Read the comparison JSON for exact scope; screenshot age text and source duration are not identity/performance claims.",
  "limits": [
    "This compares the specified genuine revisions and selected observed paths. It does not claim global pixel identity, exhaustive UI coverage, or a speed/performance improvement.",
    "Recordings use their existing 25 fps cadence without editorial speed changes. The recorder caps an initial unchanged lead-in at one second and holds the final still at least one second. Capture-clock and encoded durations are retained per source.",
    "Labelled detail scenes are actual source crops after full-viewport context leads. Held screenshots are labelled as stills in captions and provenance; full unmodified selected PNGs and MP4s remain downloadable.",
    "No model message, real credentials, login, provider connection, paid API or paid resource was used. The genuine unconfigured-model warning remains visible.",
    "Representative all-five-theme screenshots do not imply every scenario/theme/viewport combination was tested.",
    "Live native resize is blocked by the preexisting 12×0px pointer grip: the real drag is a no-op and width/storage remain 420px. Issue https://github.com/OpenHands/OpenHands/issues/18910 owns this bug; it is not fixed here.",
    "This film verifies native opening, closing, reopening, reload and Escape at the actual 420px default, with outer 0px/inner 420px when closed. It does not claim live resize, clamp or isDragging coverage at other widths. Focused unit/compiled-CSS validation is separate.",
    "Phone Overview entry remains blocked by known #16792. Its real blocked state is retained in the packet; no changed phone-path pass is claimed.",
    "Erroneous intended-width filenames and the procedural resize recording are excluded; the selected bug PNG and proof JSON report actual 420px."
  ],
  "captureProvenance": "overview-drawer-capture-provenance.json",
  "captureProvenanceSha256": "bef37e27a8edc6d6d76b7aeb9c42053276f1abff0b8b1ea9c65c3c5fc4adb382",
  "evidenceDownload": "overview-drawer-evidence.zip",
  "evidenceDownloadSha256": "b5f5224c1ac1167483caaf7d9ac000571a88d3400ae6b3bb6224c172acc2f113",
  "pullRequest": "https://github.com/OpenHands/OpenHands/pull/18909",
  "film": {
    "dimensions": [
      1440,
      1120
    ],
    "fps": 25,
    "durationSeconds": 20.84,
    "scenes": [
      {
        "phase": "before",
        "sourceRevision": "fee10e3d2909ebbf9950578575b1ee011492171e",
        "kind": "screenshot",
        "publicSourcePath": "overview-drawer-evidence/before/neutral-desktop-open-420.png",
        "label": "Before · Inline width",
        "subtitle": "Desktop · Full context",
        "caption": "Before: authentic full 1440×1000 Neutral desktop with a genuine idle Overview width check conversation and native 420px Pull Requests drawer. This still is held for 2 seconds.",
        "view": "Desktop context",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "178847defa8deab25fcfa98310c3a069fa6d2ceb37818a62c869e47ce653adda",
        "sourceBytes": 57605,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          0,
          2.0
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "before",
        "sourceRevision": "fee10e3d2909ebbf9950578575b1ee011492171e",
        "kind": "recording",
        "publicSourcePath": "overview-drawer-evidence/before/neutral-desktop-open-close.mp4",
        "label": "Before · Inline width",
        "subtitle": "Detail · Same 420px drawer",
        "caption": "Before: complete original native drawer recording at its existing 25 fps cadence. Actual top-right source crop x760/y0/680×500px shows native opening, closing, reopening and Escape at the observed 420px default. No editorial speed change or live resize claim.",
        "crop": [
          760,
          0,
          680,
          500
        ],
        "view": "Native drawer detail",
        "cropDisclosure": "Actual source crop x760/y0/680×500px, fitted below editorial header.",
        "sourceSha256": "5c47f8cd61e64b2677c184c526c9c44f377e580109c64a867459fa3c3e50f74d",
        "sourceBytes": 193204,
        "sourceDurationSeconds": 6.52,
        "sourceFps": 25.0,
        "timelineSeconds": [
          2.0,
          8.52
        ],
        "presentationDurationSeconds": 6.52,
        "editorialSpeedChange": false,
        "sourceStartSeconds": 0,
        "sourceSelectedRangeSeconds": [
          0,
          6.52
        ],
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": true,
        "fullOriginalViewportSelected": false,
        "sourcePlaybackNote": "Selected MP4 interval presented at its existing frame cadence. Recorder caps an initial static lead-in at 1 second and holds the final frame at least 1 second; action intervals retain capture timing. Presentation repeats frames only for output cadence; no motion interpolation."
      },
      {
        "phase": "before",
        "sourceRevision": "fee10e3d2909ebbf9950578575b1ee011492171e",
        "kind": "screenshot",
        "publicSourcePath": "overview-drawer-evidence/before/neutral-desktop-reloaded-420.png",
        "label": "Before · Inline width",
        "subtitle": "Detail · Reloaded 420px",
        "caption": "Before: authentic reloaded 420px state in the same actual top-right crop. This still is held for 2 seconds; no recorded motion is implied. The preexisting zero-height resize grip and blocked phone entry are documented separately in the evidence packet.",
        "crop": [
          760,
          0,
          680,
          500
        ],
        "view": "Reload detail",
        "cropDisclosure": "Actual source crop x760/y0/680×500px, fitted below editorial header.",
        "sourceSha256": "ef7fdb3468204a4a9540e5121464e04806da40c5d9a09d4e12f75a73c3d632ce",
        "sourceBytes": 57409,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          8.52,
          10.52
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": false,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "a3ddc1b35f39268bc34e4d1ca221e6de93d17a73",
        "kind": "screenshot",
        "publicSourcePath": "overview-drawer-evidence/after/neutral-desktop-open-420.png",
        "label": "After · CSS width",
        "subtitle": "Desktop · Full context",
        "caption": "After: authentic full 1440×1000 Neutral desktop with a genuine idle Overview width check conversation and native 420px Pull Requests drawer. This still is held for 2 seconds.",
        "view": "Desktop context",
        "cropDisclosure": "Full original viewport below separate editorial header.",
        "sourceSha256": "eeb5ef37420e61f64136a4c4af0fcbba0086e86634d5fa18352aa4ee754bb288",
        "sourceBytes": 57775,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          10.52,
          12.52
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": true,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      },
      {
        "phase": "after",
        "sourceRevision": "a3ddc1b35f39268bc34e4d1ca221e6de93d17a73",
        "kind": "recording",
        "publicSourcePath": "overview-drawer-evidence/after/neutral-desktop-open-close.mp4",
        "label": "After · CSS width",
        "subtitle": "Detail · Same 420px drawer",
        "caption": "After: complete original native drawer recording at its existing 25 fps cadence. Actual top-right source crop x760/y0/680×500px shows native opening, closing, reopening and Escape at the observed 420px default. No editorial speed change or live resize claim.",
        "crop": [
          760,
          0,
          680,
          500
        ],
        "view": "Native drawer detail",
        "cropDisclosure": "Actual source crop x760/y0/680×500px, fitted below editorial header.",
        "sourceSha256": "aea8938beb82bcc04335e3f2e8a993537d457217298eb705c827f71645edc5cf",
        "sourceBytes": 204819,
        "sourceDurationSeconds": 6.32,
        "sourceFps": 25.0,
        "timelineSeconds": [
          12.52,
          18.84
        ],
        "presentationDurationSeconds": 6.32,
        "editorialSpeedChange": false,
        "sourceStartSeconds": 0,
        "sourceSelectedRangeSeconds": [
          0,
          6.32
        ],
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": true,
        "fullOriginalViewportSelected": false,
        "sourcePlaybackNote": "Selected MP4 interval presented at its existing frame cadence. Recorder caps an initial static lead-in at 1 second and holds the final frame at least 1 second; action intervals retain capture timing. Presentation repeats frames only for output cadence; no motion interpolation."
      },
      {
        "phase": "after",
        "sourceRevision": "a3ddc1b35f39268bc34e4d1ca221e6de93d17a73",
        "kind": "screenshot",
        "publicSourcePath": "overview-drawer-evidence/after/neutral-desktop-reloaded-420.png",
        "label": "After · CSS width",
        "subtitle": "Detail · Reloaded 420px",
        "caption": "After: authentic reloaded 420px state in the same actual top-right crop. This still is held for 2 seconds; no recorded motion is implied. The preexisting zero-height resize grip and blocked phone entry are documented separately in the evidence packet.",
        "crop": [
          760,
          0,
          680,
          500
        ],
        "view": "Reload detail",
        "cropDisclosure": "Actual source crop x760/y0/680×500px, fitted below editorial header.",
        "sourceSha256": "58c755f0b1ca8d69dbc3aa3f9dce75387da09b7343170389da3a1a629f4a2838",
        "sourceBytes": 57640,
        "sourceDurationSeconds": null,
        "sourceFps": null,
        "timelineSeconds": [
          18.84,
          20.84
        ],
        "presentationDurationSeconds": 2.0,
        "editorialSpeedChange": false,
        "sourceStartSeconds": null,
        "sourceSelectedRangeSeconds": null,
        "fullOriginalSelected": false,
        "fullOriginalTimelineSelected": false,
        "fullOriginalViewportSelected": false,
        "sourcePlaybackNote": "Authentic PNG held for the stated presentation duration. A still has no source time range; no recorded motion is implied."
      }
    ],
    "ambience": {
      "origin": "Original synthesized ambient pad; no external samples or provider.",
      "frequenciesHz": [
        174.61,
        220,
        261.63
      ],
      "amplitude": 0.004,
      "normalizationGain": 1.267468,
      "fadeInSeconds": 1.5,
      "fadeOutSeconds": 2,
      "meanDbfs": -52.5,
      "peakDbfs": -42.4,
      "applicationAudio": false
    },
    "recipeSha256": "7eff677f209c84e94be8dcc41b3a712d1ec35fbbef41de96328edcdab2b26101"
  },
  "preview": {
    "file": "overview-drawer-poster.jpg",
    "dimensions": [
      1440,
      1120
    ],
    "type": "poster",
    "audio": false,
    "limitation": "Still poster. Download or play the MP4 for actual native drawer opening and closing at 420px."
  },
  "files": {
    "overview-drawer-comparison.json": {
      "sha256": "c03c0b6c3599f1828236bc39fa33871ac9219ab287e44f27e150855602f5cb9e",
      "bytes": 9898
    },
    "overview-drawer-poster.jpg": {
      "sha256": "df5cb1d678773fe91d49299c9aacaf7f29093930cde0a9a521a267b20f35eee4",
      "bytes": 65230
    },
    "overview-drawer-captions.vtt": {
      "sha256": "e713b1a974200884dd8ab5c602cb3ff0e0c388f471f7de21a09e51d655a7e1ce",
      "bytes": 1584
    },
    "overview-drawer-capture-provenance.json": {
      "sha256": "bef37e27a8edc6d6d76b7aeb9c42053276f1abff0b8b1ea9c65c3c5fc4adb382",
      "bytes": 33962
    },
    "overview-drawer-evidence.zip": {
      "sha256": "b5f5224c1ac1167483caaf7d9ac000571a88d3400ae6b3bb6224c172acc2f113",
      "bytes": 1681883
    },
    "overview-drawer-before-after.mp4": {
      "sha256": "d054345e1da07acc8178ca5172c5166a8af30a50e62044bfb4d14dd7d7ab4886",
      "bytes": 1098541
    }
  }
}
