Synced from monorepo

Changes:
- Gate session-lifecycle heap steady state with a dhat soak
- Unbreak merge lifecycle e2e after default model → grok-4.5
- Scan home-scope rules dirs at <root>/rules
- Complete text-input paste and terminal parity
- Gate project roles and personas
- Use canonical editing in dialogs
- Use canonical editing in search bars
- Reject ambiguous MCP tool IDs
- Harden Git operands for plugins
- Simplify queue drain API
- Pass RFC 9207 iss through MCP OAuth token exchange
- Show leader roster when local agents map is empty
- Use canonical editing in Persona views
- Remove marketplace default-skills auto-install and purge old installs
- Use canonical editing in extension forms
- Add canonical dashboard text editing
- Use canonical editing in settings
- Add /summarize as a /recap alias
- Restore previous agent when exiting dashboard
- Use tool_choice auto for compaction
- Settings toggle for snap-prompt-to-top on send
- Update default models to grok-4.5
- Source login shell once for local bash (env + alias/function snapshot)
- Template hardcoded param names in server-native tool descriptions
- Fix System-Reminder XML tag injection in CLAUDE.md via agents_md
- Fix remote workspace-server hardcoding LSP trust (repo code execution risk)
- Clear orphaned tool-call updates at turn end
- Suppress task wake after cancel
- Send x-grok-client-identifier on direct API tool calls
- Harden dashboard peek lease transitions
- Host /btw side panel in live region (minimal mode)
- Bound scroll presentation latency
- Highlight multi-line constructs correctly in diffs and the file viewer
- Block web_fetch non-public IPs; local opt-in is explicit-host only
- Seed coding_data_retention_opt_out=false for OAuth e2es in pty-harness
- Follow up clipboard delivery feedback
- Use canonical editing in pickers
- Route TextArea through canonical editor
- Persistent "watching" status row; quieter turn markers
- Gate sensitive edit targets
- Expose agent registry counts and gate session churn on them
- Default coding data sharing to opt-out until server preference applies
- Wire chat attachment ids through gateway prompts
- On auth refresh failure, issue retry
- Forward preview provenance and computer lifecycle state
- Document independent privacy controls and scope /privacy output
- Strip SamplingError Display prefix on rate-limit UI copy
- Stop dumping Cloudflare HTML into Retry failed
- Disable in-place prompt edit (scroll jank on enter)
- Strip forced ANSI color from gh pr view JSON
- Plumb bash tool description onto ToolUsageCard wire
This commit is contained in:
grokkybara[bot] 2026-07-18 19:48:28 +01:00
commit 7cfcb20d2b
292 changed files with 23315 additions and 9209 deletions

View file

@ -43,6 +43,10 @@ pub struct UiConfig {
/// `None` = off (client default; opt-in). Written by the pager's settings modal.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub show_timeline: Option<bool>,
/// Snap a just-sent prompt to the viewport top. `None` = on (default).
/// Written by the pager's settings modal.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page_flip_on_send: Option<bool>,
/// Theme to use when the OS is in dark mode. Written by the pager's theme persist module.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub auto_dark_theme: Option<String>,
@ -244,6 +248,7 @@ impl Default for UiConfig {
default_selected_permission: None,
show_timestamps: None,
show_timeline: None,
page_flip_on_send: None,
auto_dark_theme: None,
auto_light_theme: None,
scroll_speed: None,
@ -292,6 +297,14 @@ impl UiConfig {
self.show_timeline.unwrap_or(Self::SHOW_TIMELINE_DEFAULT)
}
/// Default for [`Self::page_flip_on_send`] when unset.
pub const PAGE_FLIP_ON_SEND_DEFAULT: bool = true;
pub fn page_flip_on_send_enabled(&self) -> bool {
self.page_flip_on_send
.unwrap_or(Self::PAGE_FLIP_ON_SEND_DEFAULT)
}
/// True when the highlight should not timer-dismiss (`hold` / `word_select`,
/// or legacy duration 0).
pub fn keep_text_selection_enabled(&self) -> bool {
@ -306,6 +319,16 @@ impl UiConfig {
mod tests {
use super::*;
#[test]
fn page_flip_on_send_defaults_on() {
assert!(UiConfig::default().page_flip_on_send_enabled());
let off = UiConfig {
page_flip_on_send: Some(false),
..Default::default()
};
assert!(!off.page_flip_on_send_enabled());
}
#[test]
fn keep_text_selection_enabled_precedence() {
let mut ui = UiConfig::default();