From d46c3d037dda396e1be1d6fd1449525fc4a18da6 Mon Sep 17 00:00:00 2001 From: Onur Solmaz <2453968+osolmaz@users.noreply.github.com> Date: Sun, 26 Jul 2026 13:21:36 +0800 Subject: [PATCH 1/4] fix: give the edit button real button styling and a precise hit area The edit affordance now renders with the shared button style and an icon in the emoji symbol set, and its hit area covers exactly the label instead of the whole row, so clicking beside it does nothing. ContentRow targets gain an optional clickable width for button-like rows; list rows keep full-row hit areas. --- src/render/resource.rs | 101 +++++++++++++++++++++++++++++++++++++---- src/render/symbols.rs | 7 ++- 2 files changed, 98 insertions(+), 10 deletions(-) diff --git a/src/render/resource.rs b/src/render/resource.rs index 6457ba4..417c61f 100644 --- a/src/render/resource.rs +++ b/src/render/resource.rs @@ -33,6 +33,10 @@ use self::header::{ struct ContentRow { line: Line<'static>, target: Option, + /// Clickable width of the target. None means the whole row is the hit + /// area (list rows); buttons set their rendered label width so clicks + /// beside them do nothing. + target_width: Option, comfortable_gap_after: bool, activity_focus: Option, } @@ -121,6 +125,7 @@ struct ChromeSpacingPlan { impl ContentRow { fn plain(text: impl Into) -> Self { Self { + target_width: None, line: Line::from(text.into()), target: None, comfortable_gap_after: false, @@ -130,6 +135,7 @@ impl ContentRow { fn styled(text: impl Into, style: Style) -> Self { Self { + target_width: None, line: Line::from(Span::styled(text.into(), style)), target: None, comfortable_gap_after: false, @@ -139,6 +145,7 @@ impl ContentRow { fn target(text: impl Into, target: HitTarget) -> Self { Self { + target_width: None, line: Line::from(text.into()), target: Some(target), comfortable_gap_after: false, @@ -148,6 +155,7 @@ impl ContentRow { fn target_styled(text: impl Into, target: HitTarget, style: Style) -> Self { Self { + target_width: None, line: Line::from(Span::styled(text.into(), style)), target: Some(target), comfortable_gap_after: false, @@ -157,6 +165,7 @@ impl ContentRow { fn target_line(line: Line<'static>, target: HitTarget) -> Self { Self { + target_width: None, line, target: Some(target), comfortable_gap_after: false, @@ -164,6 +173,11 @@ impl ContentRow { } } + fn with_target_width(mut self, width: u16) -> Self { + self.target_width = Some(width); + self + } + fn with_comfortable_gap_after(mut self) -> Self { self.comfortable_gap_after = true; self @@ -1803,11 +1817,14 @@ fn render_content(frame: &mut Frame<'_>, area: Rect, state: &mut AppState, palet let mut visible = Vec::new(); for (visible_index, (_row_index, row)) in visible_rows.into_iter().enumerate() { if let Some(target) = row.target { + let width = row + .target_width + .map_or(content_area.width, |width| width.min(content_area.width)); state.hit_areas.push(HitArea::new( Rect::new( content_area.x, content_area.y.saturating_add(visible_index as u16), - content_area.width, + width, 1, ), target, @@ -2599,10 +2616,10 @@ fn push_body_timeline_rows( heading_style(palette), )); if crate::domain::body_edit_target(resource).is_some() { - rows.push(ContentRow::target_styled( - "[edit]", + rows.push(edit_button_row( + &symbols, + palette, HitTarget::EditResourceBody, - link_style(palette), )); } if resource.body.trim().is_empty() { @@ -2702,7 +2719,7 @@ fn push_activity_timeline_rows( let block = BlockId::Activity(entry.id.clone()); let can_expand = text_is_truncated(&entry.body, width, ACTIVITY_COLLAPSED_LINES); let expanded = can_expand && state.block_expanded(&block); - if let Some(edit_row) = activity_edit_row(entry, palette) { + if let Some(edit_row) = activity_edit_row(entry, &symbols, palette) { rows.push(edit_row); } if expanded { @@ -2738,18 +2755,30 @@ fn activity_icon(entry: &ActivityEntry, symbols: &Symbols) -> &'static str { } /// A standalone clickable row offered on entries the viewer may edit. -fn activity_edit_row(entry: &ActivityEntry, palette: &Palette) -> Option { +fn activity_edit_row( + entry: &ActivityEntry, + symbols: &Symbols, + palette: &Palette, +) -> Option { entry.edit.as_ref().map(|target| { - ContentRow::target_styled( - "[edit]", + edit_button_row( + symbols, + palette, HitTarget::EditActivityEntry { node_id: target.node_id.clone(), }, - link_style(palette), ) }) } +/// The edit affordance renders like every other button and is clickable +/// only on its own label, not the rest of the row. +fn edit_button_row(symbols: &Symbols, palette: &Palette, target: HitTarget) -> ContentRow { + let label = symbols.edit_button; + ContentRow::target_styled(label, target, button_style(palette)) + .with_target_width(UnicodeWidthStr::width(label) as u16) +} + fn activity_heading_style(entry: &ActivityEntry, palette: &Palette) -> Style { let color = match entry.kind { crate::domain::ActivityKind::Comment => palette.teal, @@ -7746,4 +7775,58 @@ mod tests { assert!(content.contains("Edit comment on openclaw/openclaw#81834")); assert!(!content.contains("Edit description of")); } + + #[test] + fn edit_button_is_styled_like_a_button_and_sized_to_its_label() { + let palette = ThemeName::Default.palette(); + let mut state = editable_pr_state(); + draw_actionable(&mut state); + let rect = rendered_target_rect(&state, |target| *target == HitTarget::EditResourceBody) + .expect("edit button hit area"); + let label = state.symbols.symbols().edit_button; + assert_eq!( + usize::from(rect.width), + UnicodeWidthStr::width(label), + "the hit area covers exactly the label" + ); + assert_eq!( + draw_cell_bg_for_text(&mut state, 120, 36, label, 0), + Some(palette.accent), + "edit renders with the shared button style" + ); + } + + #[test] + fn clicking_beside_the_edit_button_does_nothing() { + let mut state = editable_pr_state(); + draw_actionable(&mut state); + let rect = rendered_target_rect(&state, |target| *target == HitTarget::EditResourceBody) + .expect("edit button hit area"); + apply_event( + &mut state, + AppEvent::Mouse(MouseEvent { + kind: MouseEventKind::Down(MouseButton::Left), + column: rect.x + rect.width + 4, + row: rect.y, + modifiers: KeyModifiers::empty(), + }), + ); + assert!( + state.comment_composer.is_none(), + "the row beside the button must not open the composer" + ); + apply_event( + &mut state, + AppEvent::Mouse(MouseEvent { + kind: MouseEventKind::Down(MouseButton::Left), + column: rect.x + 1, + row: rect.y, + modifiers: KeyModifiers::empty(), + }), + ); + assert!( + state.comment_composer.is_some(), + "the button itself still opens the composer" + ); + } } diff --git a/src/render/symbols.rs b/src/render/symbols.rs index 9a6b945..e357519 100644 --- a/src/render/symbols.rs +++ b/src/render/symbols.rs @@ -77,6 +77,7 @@ pub struct Symbols { pub more_patch: &'static str, pub less_patch: &'static str, pub footer_actions: &'static str, + pub edit_button: &'static str, pub footer_refresh: &'static str, pub footer_copy: &'static str, pub footer_open: &'static str, @@ -132,6 +133,7 @@ impl Symbols { more_patch: "[+ more patch]", less_patch: "[- less patch]", footer_actions: "[actions]", + edit_button: "[edit]", footer_refresh: "[refresh]", footer_copy: "[copy]", footer_open: "[open]", @@ -187,6 +189,7 @@ impl Symbols { more_patch: "[➕ more patch]", less_patch: "[➖ less patch]", footer_actions: "[⚡ actions]", + edit_button: "[✏ edit]", footer_refresh: "[🔄 refresh]", footer_copy: "[📋 copy]", footer_open: "[🌐 open]", @@ -207,7 +210,7 @@ impl Symbols { mod tests { use super::*; - fn symbol_values(symbols: Symbols) -> [&'static str; 49] { + fn symbol_values(symbols: Symbols) -> [&'static str; 50] { [ symbols.state_open, symbols.state_merged, @@ -246,6 +249,7 @@ mod tests { symbols.collapse_all, symbols.more_patch, symbols.less_patch, + symbols.edit_button, symbols.footer_refresh, symbols.footer_copy, symbols.footer_open, @@ -291,6 +295,7 @@ mod tests { symbols.collapse_all, symbols.more_patch, symbols.less_patch, + symbols.edit_button, symbols.footer_refresh, symbols.footer_copy, symbols.footer_open, From ef81ee55a05847cf03f7aba986e1c5a8de1fe198 Mon Sep 17 00:00:00 2001 From: Onur Solmaz <2453968+osolmaz@users.noreply.github.com> Date: Sun, 26 Jul 2026 13:21:36 +0800 Subject: [PATCH 2/4] test: refresh capture manifests --- captures/ghzinga-issue-88499/large/manifest.json | 4 ++-- captures/ghzinga-issue-88499/manifest.json | 4 ++-- captures/ghzinga-issue-88499/medium/manifest.json | 4 ++-- captures/ghzinga-issue-88499/mouse-smoke/manifest.json | 4 ++-- captures/ghzinga-issue-88499/narrow/manifest.json | 4 ++-- captures/ghzinga-pr-81834/large/manifest.json | 4 ++-- captures/ghzinga-pr-81834/manifest.json | 4 ++-- captures/ghzinga-pr-81834/medium/manifest.json | 4 ++-- captures/ghzinga-pr-81834/mouse-smoke/manifest.json | 4 ++-- captures/ghzinga-pr-81834/narrow/manifest.json | 4 ++-- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/captures/ghzinga-issue-88499/large/manifest.json b/captures/ghzinga-issue-88499/large/manifest.json index 8efe95d..f22a34d 100644 --- a/captures/ghzinga-issue-88499/large/manifest.json +++ b/captures/ghzinga-issue-88499/large/manifest.json @@ -4,8 +4,8 @@ "title": "openai-responses provider: 404 on previous_response_id when store=false (default)", "mode": "issue", "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-issue-88499/capture-empty-config.toml", "requested_columns": 160, "requested_rows": 50, diff --git a/captures/ghzinga-issue-88499/manifest.json b/captures/ghzinga-issue-88499/manifest.json index d2c0717..97b19ab 100644 --- a/captures/ghzinga-issue-88499/manifest.json +++ b/captures/ghzinga-issue-88499/manifest.json @@ -3,8 +3,8 @@ "title": "openai-responses provider: 404 on previous_response_id when store=false (default)", "mode": "issue", "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-issue-88499/capture-empty-config.toml", "offline_fixture": "fixtures/issue-88499.json", "offline_resource_fixtures": [], diff --git a/captures/ghzinga-issue-88499/medium/manifest.json b/captures/ghzinga-issue-88499/medium/manifest.json index a2eb7ea..666427e 100644 --- a/captures/ghzinga-issue-88499/medium/manifest.json +++ b/captures/ghzinga-issue-88499/medium/manifest.json @@ -4,8 +4,8 @@ "title": "openai-responses provider: 404 on previous_response_id when store=false (default)", "mode": "issue", "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-issue-88499/capture-empty-config.toml", "requested_columns": 120, "requested_rows": 36, diff --git a/captures/ghzinga-issue-88499/mouse-smoke/manifest.json b/captures/ghzinga-issue-88499/mouse-smoke/manifest.json index 5f5913c..31960d2 100644 --- a/captures/ghzinga-issue-88499/mouse-smoke/manifest.json +++ b/captures/ghzinga-issue-88499/mouse-smoke/manifest.json @@ -5,8 +5,8 @@ "fixtures/issue-66943.json" ], "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-issue-88499/mouse-smoke/capture-empty-config.toml", "command": "cd . && TERM=xterm-256color GZG_CONFIG_PATH=./captures/ghzinga-issue-88499/mouse-smoke/capture-empty-config.toml GZG_STATE_HOME=./captures/ghzinga-issue-88499/mouse-smoke/.capture-state GZG_CACHE_HOME=./captures/ghzinga-issue-88499/mouse-smoke/.capture-cache BROWSER=./captures/ghzinga-issue-88499/mouse-smoke/capture-open-url.sh GZG_COPY_COMMAND=./captures/ghzinga-issue-88499/mouse-smoke/capture-copy-url.sh ./target/debug/gzg https://github.com/openclaw/openclaw/issues/88499 --offline-fixture ./captures/ghzinga-issue-88499/mouse-smoke/navigation-fixture.json --offline-resource-fixture ./fixtures/issue-66943.json --no-restore --refresh-seconds 0", "actual_tmux_size": "120x36", diff --git a/captures/ghzinga-issue-88499/narrow/manifest.json b/captures/ghzinga-issue-88499/narrow/manifest.json index 9609174..8e2db27 100644 --- a/captures/ghzinga-issue-88499/narrow/manifest.json +++ b/captures/ghzinga-issue-88499/narrow/manifest.json @@ -4,8 +4,8 @@ "title": "openai-responses provider: 404 on previous_response_id when store=false (default)", "mode": "issue", "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-issue-88499/capture-empty-config.toml", "requested_columns": 80, "requested_rows": 24, diff --git a/captures/ghzinga-pr-81834/large/manifest.json b/captures/ghzinga-pr-81834/large/manifest.json index 2de8de3..40b2f69 100644 --- a/captures/ghzinga-pr-81834/large/manifest.json +++ b/captures/ghzinga-pr-81834/large/manifest.json @@ -4,8 +4,8 @@ "title": "feat(senseaudio): add SenseAudio TTS provider", "mode": "pr", "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-pr-81834/capture-empty-config.toml", "requested_columns": 160, "requested_rows": 50, diff --git a/captures/ghzinga-pr-81834/manifest.json b/captures/ghzinga-pr-81834/manifest.json index 34b7bcf..7a377a5 100644 --- a/captures/ghzinga-pr-81834/manifest.json +++ b/captures/ghzinga-pr-81834/manifest.json @@ -3,8 +3,8 @@ "title": "feat(senseaudio): add SenseAudio TTS provider", "mode": "pr", "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-pr-81834/capture-empty-config.toml", "offline_fixture": null, "offline_resource_fixtures": [], diff --git a/captures/ghzinga-pr-81834/medium/manifest.json b/captures/ghzinga-pr-81834/medium/manifest.json index a7a9a92..4ece13d 100644 --- a/captures/ghzinga-pr-81834/medium/manifest.json +++ b/captures/ghzinga-pr-81834/medium/manifest.json @@ -4,8 +4,8 @@ "title": "feat(senseaudio): add SenseAudio TTS provider", "mode": "pr", "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-pr-81834/capture-empty-config.toml", "requested_columns": 120, "requested_rows": 36, diff --git a/captures/ghzinga-pr-81834/mouse-smoke/manifest.json b/captures/ghzinga-pr-81834/mouse-smoke/manifest.json index 8c6b31d..81ef3a7 100644 --- a/captures/ghzinga-pr-81834/mouse-smoke/manifest.json +++ b/captures/ghzinga-pr-81834/mouse-smoke/manifest.json @@ -5,8 +5,8 @@ "fixtures/issue-66943.json" ], "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-pr-81834/mouse-smoke/capture-empty-config.toml", "command": "cd . && TERM=xterm-256color GZG_CONFIG_PATH=./captures/ghzinga-pr-81834/mouse-smoke/capture-empty-config.toml GZG_STATE_HOME=./captures/ghzinga-pr-81834/mouse-smoke/.capture-state GZG_CACHE_HOME=./captures/ghzinga-pr-81834/mouse-smoke/.capture-cache BROWSER=./captures/ghzinga-pr-81834/mouse-smoke/capture-open-url.sh GZG_COPY_COMMAND=./captures/ghzinga-pr-81834/mouse-smoke/capture-copy-url.sh ./target/debug/gzg 'openclaw/openclaw#81834' --offline-fixture ./captures/ghzinga-pr-81834/mouse-smoke/navigation-fixture.json --offline-resource-fixture ./fixtures/issue-66943.json --no-restore --refresh-seconds 0", "actual_tmux_size": "120x36", diff --git a/captures/ghzinga-pr-81834/narrow/manifest.json b/captures/ghzinga-pr-81834/narrow/manifest.json index 1660e0d..d21497a 100644 --- a/captures/ghzinga-pr-81834/narrow/manifest.json +++ b/captures/ghzinga-pr-81834/narrow/manifest.json @@ -4,8 +4,8 @@ "title": "feat(senseaudio): add SenseAudio TTS provider", "mode": "pr", "binary": "target/debug/gzg", - "git_commit": "7ddbf47fc6616b1f3bc2e631780d1d565faf1110", - "app_tree_hash": "dddf26dded2c4e38b74fe4c9490b980332198cbe3637c2e4928fcb933dc9e4b2", + "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", + "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", "config_path": "captures/ghzinga-pr-81834/capture-empty-config.toml", "requested_columns": 80, "requested_rows": 24, From 8361604b1b68330910b8e12386e7e6c877259b98 Mon Sep 17 00:00:00 2001 From: Onur Solmaz <2453968+osolmaz@users.noreply.github.com> Date: Sun, 26 Jul 2026 13:23:46 +0800 Subject: [PATCH 3/4] fix: keep the edit hit width on wrapped fragments --- src/render/resource.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/render/resource.rs b/src/render/resource.rs index 417c61f..dfae7a8 100644 --- a/src/render/resource.rs +++ b/src/render/resource.rs @@ -2127,6 +2127,9 @@ fn wrap_content_row(row: ContentRow, width: usize, spacing: SpacingMode) -> Vec< None if style != Style::default() => ContentRow::styled(line, style), None => ContentRow::plain(line), }; + // Button-like rows keep their precise hit width on every + // wrapped fragment; registration clamps it to the viewport. + wrapped.target_width = row.target_width; wrapped.activity_focus = focus.clone(); wrapped }) From 2604d79fd71c4a37606c208ebb10a671a6fc8fde Mon Sep 17 00:00:00 2001 From: Onur Solmaz <2453968+osolmaz@users.noreply.github.com> Date: Sun, 26 Jul 2026 13:25:51 +0800 Subject: [PATCH 4/4] test: refresh capture manifests --- captures/ghzinga-issue-88499/large/manifest.json | 4 ++-- captures/ghzinga-issue-88499/manifest.json | 4 ++-- captures/ghzinga-issue-88499/medium/manifest.json | 4 ++-- captures/ghzinga-issue-88499/mouse-smoke/manifest.json | 4 ++-- captures/ghzinga-issue-88499/narrow/manifest.json | 4 ++-- captures/ghzinga-pr-81834/large/manifest.json | 4 ++-- captures/ghzinga-pr-81834/manifest.json | 4 ++-- captures/ghzinga-pr-81834/medium/manifest.json | 4 ++-- captures/ghzinga-pr-81834/mouse-smoke/manifest.json | 4 ++-- captures/ghzinga-pr-81834/narrow/manifest.json | 4 ++-- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/captures/ghzinga-issue-88499/large/manifest.json b/captures/ghzinga-issue-88499/large/manifest.json index f22a34d..ce82add 100644 --- a/captures/ghzinga-issue-88499/large/manifest.json +++ b/captures/ghzinga-issue-88499/large/manifest.json @@ -4,8 +4,8 @@ "title": "openai-responses provider: 404 on previous_response_id when store=false (default)", "mode": "issue", "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-issue-88499/capture-empty-config.toml", "requested_columns": 160, "requested_rows": 50, diff --git a/captures/ghzinga-issue-88499/manifest.json b/captures/ghzinga-issue-88499/manifest.json index 97b19ab..722b671 100644 --- a/captures/ghzinga-issue-88499/manifest.json +++ b/captures/ghzinga-issue-88499/manifest.json @@ -3,8 +3,8 @@ "title": "openai-responses provider: 404 on previous_response_id when store=false (default)", "mode": "issue", "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-issue-88499/capture-empty-config.toml", "offline_fixture": "fixtures/issue-88499.json", "offline_resource_fixtures": [], diff --git a/captures/ghzinga-issue-88499/medium/manifest.json b/captures/ghzinga-issue-88499/medium/manifest.json index 666427e..79a8715 100644 --- a/captures/ghzinga-issue-88499/medium/manifest.json +++ b/captures/ghzinga-issue-88499/medium/manifest.json @@ -4,8 +4,8 @@ "title": "openai-responses provider: 404 on previous_response_id when store=false (default)", "mode": "issue", "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-issue-88499/capture-empty-config.toml", "requested_columns": 120, "requested_rows": 36, diff --git a/captures/ghzinga-issue-88499/mouse-smoke/manifest.json b/captures/ghzinga-issue-88499/mouse-smoke/manifest.json index 31960d2..3c49fb6 100644 --- a/captures/ghzinga-issue-88499/mouse-smoke/manifest.json +++ b/captures/ghzinga-issue-88499/mouse-smoke/manifest.json @@ -5,8 +5,8 @@ "fixtures/issue-66943.json" ], "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-issue-88499/mouse-smoke/capture-empty-config.toml", "command": "cd . && TERM=xterm-256color GZG_CONFIG_PATH=./captures/ghzinga-issue-88499/mouse-smoke/capture-empty-config.toml GZG_STATE_HOME=./captures/ghzinga-issue-88499/mouse-smoke/.capture-state GZG_CACHE_HOME=./captures/ghzinga-issue-88499/mouse-smoke/.capture-cache BROWSER=./captures/ghzinga-issue-88499/mouse-smoke/capture-open-url.sh GZG_COPY_COMMAND=./captures/ghzinga-issue-88499/mouse-smoke/capture-copy-url.sh ./target/debug/gzg https://github.com/openclaw/openclaw/issues/88499 --offline-fixture ./captures/ghzinga-issue-88499/mouse-smoke/navigation-fixture.json --offline-resource-fixture ./fixtures/issue-66943.json --no-restore --refresh-seconds 0", "actual_tmux_size": "120x36", diff --git a/captures/ghzinga-issue-88499/narrow/manifest.json b/captures/ghzinga-issue-88499/narrow/manifest.json index 8e2db27..a33e080 100644 --- a/captures/ghzinga-issue-88499/narrow/manifest.json +++ b/captures/ghzinga-issue-88499/narrow/manifest.json @@ -4,8 +4,8 @@ "title": "openai-responses provider: 404 on previous_response_id when store=false (default)", "mode": "issue", "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-issue-88499/capture-empty-config.toml", "requested_columns": 80, "requested_rows": 24, diff --git a/captures/ghzinga-pr-81834/large/manifest.json b/captures/ghzinga-pr-81834/large/manifest.json index 40b2f69..b8e0ace 100644 --- a/captures/ghzinga-pr-81834/large/manifest.json +++ b/captures/ghzinga-pr-81834/large/manifest.json @@ -4,8 +4,8 @@ "title": "feat(senseaudio): add SenseAudio TTS provider", "mode": "pr", "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-pr-81834/capture-empty-config.toml", "requested_columns": 160, "requested_rows": 50, diff --git a/captures/ghzinga-pr-81834/manifest.json b/captures/ghzinga-pr-81834/manifest.json index 7a377a5..acd13d4 100644 --- a/captures/ghzinga-pr-81834/manifest.json +++ b/captures/ghzinga-pr-81834/manifest.json @@ -3,8 +3,8 @@ "title": "feat(senseaudio): add SenseAudio TTS provider", "mode": "pr", "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-pr-81834/capture-empty-config.toml", "offline_fixture": null, "offline_resource_fixtures": [], diff --git a/captures/ghzinga-pr-81834/medium/manifest.json b/captures/ghzinga-pr-81834/medium/manifest.json index 4ece13d..90208df 100644 --- a/captures/ghzinga-pr-81834/medium/manifest.json +++ b/captures/ghzinga-pr-81834/medium/manifest.json @@ -4,8 +4,8 @@ "title": "feat(senseaudio): add SenseAudio TTS provider", "mode": "pr", "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-pr-81834/capture-empty-config.toml", "requested_columns": 120, "requested_rows": 36, diff --git a/captures/ghzinga-pr-81834/mouse-smoke/manifest.json b/captures/ghzinga-pr-81834/mouse-smoke/manifest.json index 81ef3a7..69ba2e1 100644 --- a/captures/ghzinga-pr-81834/mouse-smoke/manifest.json +++ b/captures/ghzinga-pr-81834/mouse-smoke/manifest.json @@ -5,8 +5,8 @@ "fixtures/issue-66943.json" ], "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-pr-81834/mouse-smoke/capture-empty-config.toml", "command": "cd . && TERM=xterm-256color GZG_CONFIG_PATH=./captures/ghzinga-pr-81834/mouse-smoke/capture-empty-config.toml GZG_STATE_HOME=./captures/ghzinga-pr-81834/mouse-smoke/.capture-state GZG_CACHE_HOME=./captures/ghzinga-pr-81834/mouse-smoke/.capture-cache BROWSER=./captures/ghzinga-pr-81834/mouse-smoke/capture-open-url.sh GZG_COPY_COMMAND=./captures/ghzinga-pr-81834/mouse-smoke/capture-copy-url.sh ./target/debug/gzg 'openclaw/openclaw#81834' --offline-fixture ./captures/ghzinga-pr-81834/mouse-smoke/navigation-fixture.json --offline-resource-fixture ./fixtures/issue-66943.json --no-restore --refresh-seconds 0", "actual_tmux_size": "120x36", diff --git a/captures/ghzinga-pr-81834/narrow/manifest.json b/captures/ghzinga-pr-81834/narrow/manifest.json index d21497a..97f9211 100644 --- a/captures/ghzinga-pr-81834/narrow/manifest.json +++ b/captures/ghzinga-pr-81834/narrow/manifest.json @@ -4,8 +4,8 @@ "title": "feat(senseaudio): add SenseAudio TTS provider", "mode": "pr", "binary": "target/debug/gzg", - "git_commit": "d46c3d037dda396e1be1d6fd1449525fc4a18da6", - "app_tree_hash": "b5615ecd4e73706387c56b651e1da2e168b10a2457532cc53fd84c901e651bbc", + "git_commit": "8361604b1b68330910b8e12386e7e6c877259b98", + "app_tree_hash": "dddd804277bbb61e09c06e504ab7c6480c622c0fe0345a6875687ed2c58b491e", "config_path": "captures/ghzinga-pr-81834/capture-empty-config.toml", "requested_columns": 80, "requested_rows": 24,