Synced from monorepo
Synced from monorepo Changes: - grok-shell: send an expired external-provider credential to the sign-in flow, not a 401 loop - pager: clickable ▲ jumps to the top of the response being read - grok-shell: keep a large task log from making the completion message too long - Plan viewer scrollbar: widen grab zone to the border column; fix striped thumb in Terminal.app - pager: poll the tmux probe teardown grace instead of sleeping it - security: vendor-compat MCP kill switch is now actually enforced when reported as on - grok-shell: restore session eviction when a leader client disconnects - Bump rust-toolchain to 1.93.0 - workspace: lexical-normalize permission path patterns before glob matching - pager: reject garbage Enter in the /resume picker - pager: show Mermaid affordances in plan mode preview - pager: drop manage-account link from /session-info - workspace: auto-approve read-only git queries; defer write floor to auto classifier - Add free-form pattern editor to the "Always allow" command prompt - grok-shell: fix /btw caching - pager: Tab walks answers in the ask_user_question card - External-provider auth refresh: single 7s attempt instead of 3×5s - pager: don't resurrect finished background tasks as Running when completion arrives first - pager: report tmux truecolor clamping in Doctor - Fix plan viewer scrollbar click+drag hijacked by comment gutter - pager/shell: stop double Recap after the same last turn - sampler: preserve x-should-retry through stream collection - pager: clear plan-mode indicator immediately when the user approves a plan - pager: tmux does not re-read its config on reattach Source-Revision: 64c4de99cc822b25ce9c54ab5a4f372093d0885d
This commit is contained in:
parent
a422116582
commit
780d1388ff
323 changed files with 12258 additions and 7226 deletions
|
|
@ -1251,6 +1251,34 @@ pub(crate) fn write_cast_if_requested(harness: &PtyHarness, file_name: &str) {
|
|||
}
|
||||
}
|
||||
|
||||
/// Dump the current screen (plain text and HTML) into
|
||||
/// `$GROK_PTY_CAST_DIR/<file_stem>.{txt,html}` when the env var is set.
|
||||
/// Failures are logged, never fatal — same opt-in as
|
||||
/// [`write_cast_if_requested`].
|
||||
pub(crate) fn write_screen_dump_if_requested(harness: &PtyHarness, file_stem: &str) {
|
||||
let Ok(dir) = std::env::var("GROK_PTY_CAST_DIR") else {
|
||||
return;
|
||||
};
|
||||
if dir.is_empty() {
|
||||
return;
|
||||
}
|
||||
let dir = std::path::PathBuf::from(dir);
|
||||
if let Err(e) = std::fs::create_dir_all(&dir) {
|
||||
eprintln!("failed to create dump dir {}: {e}", dir.display());
|
||||
return;
|
||||
}
|
||||
for (ext, body) in [
|
||||
("txt", harness.screen_contents()),
|
||||
("html", harness.screen_html()),
|
||||
] {
|
||||
let path = dir.join(format!("{file_stem}.{ext}"));
|
||||
match std::fs::write(&path, body) {
|
||||
Ok(()) => eprintln!("wrote screen dump: {}", path.display()),
|
||||
Err(e) => eprintln!("failed to write screen dump {}: {e}", path.display()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ── Clipboard paste e2e tests ───────────────────────────────────────────
|
||||
|
||||
/// Serialized `content` of every user message across recorded requests, in
|
||||
|
|
|
|||
Loading…
Reference in a new issue