Add zerx-lab/openwarp main source to the repo.#1
Closed
wolverine2k wants to merge 240 commits intowolverine2k:openwarpfrom
Closed
Add zerx-lab/openwarp main source to the repo.#1wolverine2k wants to merge 240 commits intowolverine2k:openwarpfrom
wolverine2k wants to merge 240 commits intowolverine2k:openwarpfrom
Conversation
整合自定义 Agent 提供商(BYOP)完整链路: - 新增 `agent_providers` 模块,支持 OpenAI 兼容协议配置 - 集成 `async-openai` 库,实现流式 chat completions 与 tool calling - API key 安全存储到系统密钥库,provider 元数据持久化到 settings.toml - 双向工具翻译: OpenAI function calls ↔ warp 内部 Tool variant - 支持 10+ 内置工具(shell/文件操作/搜索/MCP)与动态 MCP tool 注入 - 多轮历史记录与 tool result 自动 fallback 处理 - 设置面板 widget 支持 CRUD provider 与模型列表,含"Fetch from API"功能
添加轻量级 Jinja2 模板引擎(minijinja),支持 BYOP 模式下动态渲染 system prompt。
核心包括:
- **prompt_renderer.rs**:收集 `AIAgentContext` 并按模型族选择模板
(gpt/anthropic/gemini/kimi 等),渲染为最终 system message
- **8 套模板**
(`system/{default,anthropic,gpt,beast,gemini,kimi,codex,trinity}.j2`):覆盖不同模型的提示词(参考
opencode 项目同步)
- **5 个
partial**(`partials/{env,skills,project_rules,tool_aliases,footer}.j2`):环境/技能/项目规则等可复用组件
- **新工具注册**:read/edit/create_documents(Drive 文档系统
)、open_code_review/init_project(UI 信号
)、transfer_shell_command_control_to_user(PTY 控制权交还
)、suggest_new_conversation/suggest_prompt(提示用户)
- **工具描述外部化**:将 tool 说明文本从代码移入 markdown 文件,便于单独更新而无需重编
minijinja 选用理由:轻量(无重依赖)、支持 if/for/include/extends、debug 下可走文件 loader 热加
载。
删除 Computer Use 相关的 executor、enum variant、双向 protobuf 转换、UI render 与 persistence 反序列化路径,共 14 个文件、净 -700 行。 - 删 2 个 executor: use_computer.rs / request_computer_use.rs - crates/ai action / action_result enum 拆 UseComputer / RequestComputerUse variant 及对应 UseComputerResult / RequestComputerUseResult / ScreenDimensions 等 struct - convert.rs / convert_conversation.rs / convert_from.rs / convert_to.rs / redaction.rs 逐处删 match arm,convert_from 改返回 ToolToAIAgentActionError::UnexpectedTool - conversation.use_computer_action_ids() 改返回 std::iter::empty() - block.rs ViewScreenshot lightbox / block/view_impl/output.rs render 函数全部删除 - persistence.rs 删 PersistedAIAgentActionType variant 与双向转换 - agent_sdk/driver/output.rs 删 writer / JSON serializer arm protobuf 字段 (warp-proto-apis) 保持不动,只 client 端不再 dispatch — 收到这两类 ToolCall 直接报 UnexpectedTool,upstream sync 友好。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Decentralize 分支无登录路径下 "Create team" 按钮和 "Share commands & knowledge with your teammates" 标语点了无法兑现,直接不再插入到 sections 列表。DriveIndexSection::CreateATeam / JoinTeam 的 enum variant 与 render 函数暂留死代码,Batch 5 (Drive 云同步) 统一清理。 PERSONAL / MCP Servers / Rules / TRASH 区域保留不变。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
清理 UseComputer / RequestComputerUse 删除后留下的孤儿代码: - crates/ai action/convert.rs: 删 6 个 helper 函数 (convert_screenshot_params / coordinates_to_vec / to_computer_use_button / to_scroll_direction / to_scroll_distance / convert_key) + 不再使用的 itertools import - block.rs: 删 view_screenshot_buttons 字段 + 默认初始化 + AssetCache/ImageType import - block/view_impl.rs: 删 view_screenshot_buttons 传参 - block/view_impl/output.rs: 删 view_screenshot_buttons Props 字段 + ui_components::button import - action_model.rs: 删 ComputerUseCancelled 删除后留下的 telemetry import - convert_conversation.rs: 删 convert_api_platform 函数 剩余 22 warning 全是与 Batch 1 无关的预存死代码 (referral_theme_status / execution_profiles/editor / workspace/view 等),后续 Batch 处理。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
将 BYOP AgentProvidersWidget 从 Warp Agent 主页迁出,新增 Agents → Providers 二级菜单(SettingsSection::AgentProviders);新增 models_dev.rs 接入 models.dev 模型清单;system prompt 模板从 8 份模型族精简为单一 default.j2,新增 tasks/ 压缩任务模板(compaction_system / compaction_user)。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Astro + React + Tailwind 项目,介绍 Decentralize / BYOP 模式; 路由 /(zh-CN) 与 /en,组件化 Hero / Features / Compare / FAQ 等; node_modules 已通过 website/.gitignore 排除。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
为"快速添加"卡片头部加单行搜索 EditorView,实时分发 AISettingsPageAction::SetModelsDevSearchQuery 过滤 models.dev 列表; 标题文案从"从 models.dev 快速添加"精简为"快速添加"。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
将 BYOP 协议层从 async-openai 切换到 genai 0.6 beta,通过 ServiceTargetResolver 显式绑定 endpoint + AdapterKind,绕过"按模型名识别 provider"的默认行为, 解决误识别问题。同步引入相关重构: - 新增 AgentProviderApiType 枚举(OpenAI / OpenAI-Resp / Gemini / Anthropic / Ollama / DeepSeek),provider 配置显式选择,UI 提供 chip 选择器并按类型 预填默认 base_url - 新增 user_context 模块:把附件类 AIAgentContext(Block/SelectedText/File/ Image)注入当前轮 user message,与环境型 context(由 prompt_renderer 进 system)分两路处理,字段对齐 warp protobuf - tools/mod.rs:OpenAiTool 增加 to_genai_tool;拆出 action_result_to_msg_result 共用 ReqR → MsgR 映射 - skills:list_skills_if_changed → list_skills,去云端后 BYOP 无状态,system prompt 每轮全量重渲,差量逻辑无意义;同步删除 conversation.latest_skills / task_store.latest_skills 死代码
移除推荐(referral)系统的遗留代码,包括: - `ReferralThemeStatus` 完全重构为 stub,所有 referral-gated 主题对本地用户开放 - 删除云端 referral 状态查询逻辑(API 已下线) - 从 `ai_page.rs` 移除 Warp Drive 上下文切换和相关配置 - 从 workspace 删除 resource center 按钮及其相关逻辑 - 清理导入和未使用的变量 修复 website nixpacks 配置,指定 Node 20(默认 18 已 EOL)与 bun 包管理器。
更新项目对外展示,将 Warp 上游仓库转变为 OpenWarp 社区分支标识。 调整网站在移动设备上的布局与文本响应式表现,改进 CTA 卡片排版。 修复 Windows 安全存储的文件未找到异常处理,日志级别降低为 debug。
- Workspace deps: i18n-embed 0.15 / i18n-embed-fl 0.9 / fluent / unic-langid / sys-locale - app/src/i18n.rs: RustEmbed + OnceLock<FluentLanguageLoader>, t!() macro, fallback chain (locale → language → en), set_locale() runtime switch - app/src/settings/language.rs: Language enum (System/English/SimplifiedChinese) + LanguageSettings group, persisted to settings.toml under appearance.language - Appearance page: Language widget dropdown + restart-required modal - 12 settings_view files translated: - mod.rs (SettingsSection 25 variants + pane menu + debug toggles) - about_page.rs / main_page.rs (referral / autoupdate / version) - mcp_servers_page.rs / platform_page.rs / warpify_page.rs - keybindings.rs / referrals_page.rs / agent_providers_widget.rs - appearance_page.rs (Language widget) / ai_page.rs (6 const) - environments_page.rs (39 new keys) - 277 ftl keys (en + zh-CN), ~280 t!() call sites - banner/view.rs (1) + quit_warning/mod.rs (14, with Fluent select expr) Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
…g 拆分 - 移除付费/云相关模块: billing_and_usage 整组、buy_credits_banner、enable_auto_reload_modal、cloud_agent_capacity_modal,合计删除 ~8800 行 - 替换上游发布流水线: 删除 create_release/cut_new_releases/cut_new_release_candidate/delete_release,新增 openwarp_release.yml(tag v* 触发,3 job 全未签名) - OpenWarp 身份化: bundle identifier dev.warp.WarpOss → dev.openwarp.OpenWarp,channel state / paths 同步 - 输入分类器加 CJK 早返回 → AI: util.rs 新增 contains_cjk(),覆盖中日韩 + 全角字符 - agent_providers 新增 reasoning 子模块,chat_stream 重构以接入 - 新增 logo.png + 顶层/app i18n.toml Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
- code_page.rs: 51 keys / ~38 sites (Indexing/Editor/Code Review) - privacy_page.rs: 36 keys / 30+ sites (telemetry, AI data, secret obfuscation) - appearance_page.rs: 71 keys / ~50 sites (Themes/Window/Tabs/Editor/Cursor) - execution_profile_view.rs: 39 sites (agent execution profiles) - agent_assisted_environment_modal.rs: 16 sites (AI-assisted env config) - show_blocks_view.rs: 16 sites (shared blocks) Total: 497 ftl keys, 18/24 settings_view files translated. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
- logo: 新设计的 logo.png(1.3MB→279KB),新增 scripts/generate-logos.ts 通过 potrace 矢量化 + sharp 重渲染所有 channel(dev/preview/stable/local/oss) 的 7 个 PNG 尺寸 + icon.ico,assets/logo.svg 为矢量源 - i18n: warp.ftl 新增 4 个 ANCHOR-SUB 区(ai-page / features / teams / settings-page-nav),teams_page 完成 P0+P1(~75 个 key),settings_page / delete_environment_confirmation_dialog / directory_color_add_picker 接入 crate::t! 宏 - byop: chat_stream.rs 加 tool_call_in 入参 dump 与 from_args 失败诊断, 方便定位模型出参 schema 偏差(string 化的 bool/number、嵌套被塌成 string 等) - gitignore: 排除嵌套仓库 warp-proto-apis/ 与 scripts/node_modules/ Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
…g 欢迎块 - i18n: ai_page / features_page / teams_page 余下硬编码字符串收口到 Fluent key,en + zh-CN 同步 - BYOP: 抽 normalize_endpoint_url(),host-only base_url 按 api_type 自动补 /v1/ 或 /v1beta/,修 Anthropic 404 - workspace: 移除首次打开的 agentic suggestions 欢迎块教程,仅保留 onboarded 标记 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
之前 push v2026.04.30.preview tag 触发 OpenWarp Release workflow 时, softprops/action-gh-release 创建 GitHub release 报 "Resource not accessible by integration"(403)。原因是默认 GITHUB_TOKEN 在受限仓库下只读,创建 release/上传 asset 需要 contents: write。在 workflow 顶层声明 permissions 后兜底,所有 job 继承。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
- Reverted changes in `script/linux/bundle_deb` and `script/linux/install_build_deps`. - Moved `libdbus-1-dev` and `fakeroot` installation directly to the `.github/workflows/openwarp_release.yml` workflow. - This addresses the review feedback by avoiding modifications to shared scripts while still fixing the CI build failures. Co-authored-by: BLumia <[email protected]>
避免和 ctrl-shift-enter / alt-shift-enter / ctrl-alt-enter 等已被 prompt-suggestions 占用的快捷键冲突。
…g-surfaces fix(i18n): 补全剩余用户界面中文文案
Add deb package when building
sonnet 全系与 opus 4.6+ 模型走 BYOP / 中转(anyrouter 等)时,
请求未带 anthropic-beta: context-1m-2025-08-07 会被网关 400 拒绝
(中文报错"1m 上下文已经全量可用")。Warp 设置里的 200K/1M 开关只
影响 Warp 自家 cloud 链路,不会翻译成 BYOP 请求 header。
- adapter to_web_request_data 命中支持 1M 的模型时默认注入 beta header
- 判据对齐 opencode:name.contains("sonnet") 或 opus 版本 >= 4.6
- 补上之前缺失的 ChatOptions::extra_headers 合并(用户可覆盖)
- is_opus_4_7_or_higher 重构为参数化 is_opus_at_least
- 6 个新单测覆盖各模型 / extra_headers 覆盖 / 判据矩阵
Closes #21
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
首次见到 ToolCallChunk 且可解析时立即 yield 一条占位 ToolCall message, 让 UI 在 stream End 之前就能看到调用 X 工具反馈; 流末用 update_message (共用同一 message.id) 原地覆盖为最终 args, 避免视觉抖动 / 双卡。 - 仅首次出现且可解析才 yield, 后续 chunk 静默累积到 tool_bufs, 每 tool 至多 2 次 yield (首帧 + 终帧)。 - web 工具 (webfetch/websearch) 走自己的 loading 帧链路, 这里 skip 避免双卡。 - 首帧 parse 失败 (args 不完整 / 未知工具) 走老路径, 在 End 时一次性 emit。
…pe enable_thinking zai-glm-4.7 走 Cerebras 时第二轮 400 wrong_api_format — genai OpenAI adapter 见到 ContentPart::ReasoningContent 就无条件 hoist 顶层 reasoning_content 字段,Cerebras / Groq / OpenRouter 等严格 OpenAI provider 直接拒。AssistantBuffer::flush_into 反转 gate:仅 force_echo_reasoning=true (DeepSeek / Kimi 白名单)才挂 reasoning,其它默认丢弃即便 stream 收到了真实 reasoning_content。与 opencode transform.ts:217-249 的 interleaved gate 行为对齐。 顺手补 DashScope 阿里云百炼 OpenAI 兼容路径自动注入 extra_body.enable_thinking=true, qwen3 / qwq / deepseek-r1 / kimi-k2.5 / qwen-plus 等 reasoning 模型不再哑火, 对齐 opencode transform.ts:931-938。kimi-k2-thinking 默认就开,白名单显式排除。 新增 13 个 unit test 覆盖两条 gate 的 happy path 与边界 case。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
- ui: 新建 BrailleSpinner / ToolCard 统一组件,inline_action 全线接入(loading 帧 + 5 状态机) - byop: chat_stream tool_call 流式占位卡 + reasoning_content / DashScope thinking 兼容 - lsp: rust-analyzer 探测加 CREATE_NO_WINDOW,修 Windows 启动闪 cmd - branding: 关于页换 OpenWarp 纯图标 + 文字 + Dev 版本兜底 - chore: .gitignore 忽略 ProcMon 日志,.clippy.toml 微调 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
- lib/rust-genai: WebConfig/WebClient gzip 默认 false。Accept-Encoding: gzip 让 nginx 类代理压缩 SSE 响应,server 必须 flush 完整 deflate frame 客户端才能解明文, 流式被切成 ~K 字节 burst,体感"几百 ms 一卡"。zed/opencode 不在 SSE 上协商 gzip 所以不踩。带宽影响可忽略(逐行小 JSON 压缩比差),换来连续 token 流。 - chat_stream: BYOP build_client 显式 with_web_config(gzip=false) 双保险。 - chat_stream: 移除 stream 期间 chunk pacing 诊断 log(text/reasoning/tool 占位卡 emit/late),根因已定位、log 完成历史使命。 - workflows: 拆 pr-check.yml(每 PR Linux cargo check,~分钟级)与 openwarp_release.yml (只在 tag / 手动 dispatch 跑三平台全量打包,~3h),避免每个 PR 浪费三平台 runner。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
…sk_user_question always-ask in auto-approve - prompt_renderer: add available_tools to PromptContext; render_system now accepts &[String] tool names computed by chat_stream::available_tool_names - chat_stream: add available_tool_names() that applies the same gating as build_tools_array (LRC / web_search / MCP) and feeds into render_system - tool_aliases.j2: replace hardcoded whitelist+blacklist with dynamic Jinja2 loop over available_tools; removes 'Do not call unavailable tools' anti-pattern that caused models to under-use real tools - general_settings: add persist_conversations (bool, default true) setting independent of restore_session - features_page: wire PersistConversations toggle (UI widget + i18n EN/ZH) - conversation: write_updated_conversation_state on turn-start, CommitTx, AddAssistantMessage, AddUserMessage, MoveSubtasksToConversation so history survives mid-stream exits; guard uses persist_conversations instead of restore_session - permissions/execution_profiles: AskExceptInAutoApprove and AlwaysAsk both return true so ask_user_question always pauses even in auto-approve mode; auto-approve only applies to shell/edit execution tools - ask_user_question_tests: update test expectations to match new behaviour
之前 BYOP 路径下 /plan 完全无效:仅吞掉 6 字符前缀,UserQueryMode::Plan 被 chat_stream UserQuery 分支 `..` 整体忽略,system prompt / 工具集都不分支。 plan 语义全在上游 Warp 云后端,OSS/BYOP 不复刻。 本次让 /plan 在 BYOP 真正生效(per-turn 语义,与 Claude Code EnterPlanMode 对齐): - partials/plan_mode.j2 新建:Investigate(只读工具) → Plan(markdown 结构化) → 可选 create_documents 沉淀到 Warp Drive → Stop and wait - partials/footer.j2 末尾 include,8 个 system prompt 自动继承 - prompt_renderer:注册新 partial、PromptContext 加 plan_mode 字段、 render_system 第 4 参,新加 2 个单测覆盖 on/off - chat_stream:is_plan_mode_turn(扫 params.input 里的 UserQuery::Plan)+ PLAN_MODE_BLOCKED_TOOLS 常量(run_shell_command / apply_file_diffs / write_to_long_running_shell_command / open_code_review / init_project / transfer_shell_command_control_to_user / suggest_prompt),available_tool_names 和 build_tools_array 双过滤 + plan 时 log create_documents / edit_documents 故意不 BLOCK:它们只动 AIDocumentModel 本地文档存储,不碰文件系统/不跑命令,正是 Plan Mode 的产出归档语义, 用户后续可在 Drive UI 里把生成的 plan 文档拖入自建的 PLAN 文件夹。 per-turn 而非 conversation-sticky:make_user_query_message 当前用 ..Default::default() 写 UserQuery proto,不持久化 mode 字段,历史 task message 拿不到。MVP 不动 proto schema,用户每条想保持只读的 query 都需重新加 /plan 前缀。 cargo check --bin warp-oss 通过。 Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Phase 1: 为后续 LSP 启用脱离 per-workspace 做铺垫
- app/src/settings/code.rs 新增 `enabled_lsp_servers: Vec<LSPServerType>`
全局 setting,toml_path = `code.lsp.enabled_servers`,sync 到云端
- crates/lsp/src/supported_servers.rs 给 LSPServerType 加 schemars::JsonSchema
derive + settings_value::impl_snake_case! impl(orphan rule:必须在 lsp crate 落)
- crates/lsp/Cargo.toml 加 schemars + settings_value workspace dep
Phase 1.5: 拔代码库索引相关表层入口(后续 Phase 4 拔模块)
- 删 /index 静态命令(commands.rs INDEX 定义 + all_commands 注册 +
slash_commands/mod.rs IndexProjectSpeedbump dispatch)
- 删 TerminalAction::{GenerateCodebaseIndex, WriteCodebaseIndex,
IndexProjectSpeedbump} 三个 variant + Display + handle_action arm
- 删两个 keybinding:terminal:generate_codebase_index(Debug) +
workspace:write_codebase_index
- 删 6 行 i18n key:slash-cmd-index-desc / keybinding-desc-terminal-
generate-codebase-index / keybinding-desc-workspace-write-codebase-index
(en + zh)
view.rs 残留 generate_codebase_index / write_codebase_index /
*_codebase_index_speedbump_banner 几个方法目前无人调,Phase 4 拔
ai::index::full_source_code_embedding 整模块时一并清。
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
LSP 启用/禁用从 per-workspace 提升为全局 CodeSettings 控制; /init 斜杠命令改为通过 Jinja2 模板渲染生成 AI 查询,支持传参; 设置页面 '代码库索引' 重命名为 'LSP 管理'; 新增 LSP 卸载功能,清理托管安装目录后可重新安装。
InitProject 向导是 Warp 云端 agent 模式的首次运行引导流程, openWarp BYOP 模式没有云端 onboarding 需求,直接移除相关 代码(工具注册、UI 组件、模型、事件编排等)。同时将 CompactionState 序列化存入 AgentConversationData,确保 head trimming 压缩状态跨会话持久化。
为避免 openWarp 因无法获取 ServerId 而将文档阻塞在 pending 队列中,改为 使用任意 SyncId(ClientId 或 ServerId)立即创建文件夹下的笔记本。
wolverine2k
pushed a commit
that referenced
this pull request
May 5, 2026
…v#9600) Closes warpdotdev#9196. ### Description Two `show_code_review_button` gates were dropping panel-open requests on the floor when the user had hidden the toolbar button: **1. Data-path gate at `Workspace::setup_code_review_panel` (`view.rs:7982`)** ```rust if !*TabSettings::as_ref(ctx).show_code_review_button { return; } ``` `update_right_panel_open_state` calls into this whenever the right panel is being opened (chip click, `Shift+Cmd+=` keybinding, etc.), so the early return silently swallowed every explicit user action. **2. Render-path gate at `Workspace::render_config_panel` and `render_config_panel_maximized` (`view.rs:18981` / `19040`)** ```rust if !item.is_available(app) || !item.is_panel() { return None; } … if !HeaderToolbarItemKind::CodeReview.is_available(app) { return None; } ``` `HeaderToolbarItemKind::is_available` for `CodeReview` returns `*TabSettings::as_ref(app).show_code_review_button.value()` (`header_toolbar_item.rs:89`). So even after fix #1 set `pane_group.right_panel_open = true` and `setup_code_review_panel` ran, the next render frame saw `is_available() == false` and returned `None` — the `right_panel_view` was never added to the layout. This second gate is what @moirahuang flagged when their local repro still showed nothing happening after the first fix landed. The data was correct; the panel was just never composed into the UI. ### Fix 1. **Drop the early return at `setup_code_review_panel`.** The setting is meant to gate only the toolbar button's visibility (already enforced correctly by `header_toolbar_item.rs::is_available`, which feeds `render_header_toolbar_button` at `view.rs:17276`). 2. **Switch panel-render call sites from `is_available` → `is_supported`.** `is_available`'s own doc-comment says it's specifically *"Whether this item should be shown in the **toolbar** — checks both `is_supported` and user show/hide preferences."* Using it to gate panel rendering conflates two unrelated concerns. Panel rendering should only care about whether the feature is compiled in (`is_supported`), not whether the user has hidden the toolbar button. For `CodeReview`, `is_supported` is `cfg!(feature = "local_fs")`. For the other variants in the same match (`TabsPanel`, `ToolsPanel`), `is_available` already equals `is_supported` (default `_ => true` arm in the inner match), so behaviour is unchanged. `AgentManagement` and `NotificationsMailbox` return `None` unconditionally inside `render_config_panel`, so the change is moot for them too. ### Caller audit for `setup_code_review_panel` 5 call sites in `view.rs`: 1. `view.rs:3681` — `TransferredTab` flow, only runs when the source tab already had `right_panel_open == true`. 2. `view.rs:8136` — `update_right_panel_open_state` with `should_open == true`. **The diff-button path** that warpdotdev#9196 is about. 3. `view.rs:13372` — `PaneFocused` event, gated on `right_panel_open` already true. 4. `view.rs:13490` — `RepoChanged` event, gated on `right_panel_open` already true. 5. `view.rs:14458` — session env update, gated on `right_panel_open` already true. None of these need the `show_code_review_button` gate — they're either explicit user actions or gated on `right_panel_open` already being open. The toolbar button toggle continues to do its job at `render_header_toolbar_button` independently. ### Testing Reproduced @moirahuang's test locally on macOS 26.4.1 (Apple Silicon) against `WarpOss.app` built from this branch: 1. Settings → "Show code review button" → **OFF** 2. `echo "x" >> README.md` inside a git repo 3. Click the diff stats chip on the prompt (`+1 -0`) **Result:** Code review panel opens on the right showing the diff, while the toolbar button stays hidden — exactly the expected behaviour from issue warpdotdev#9196. Inverse case (toggle ON) also verified: toolbar button visible, panel still works the same. - `cargo fmt -p warp -- --check` passes. - `cargo nextest` skipped locally — Metal toolchain unavailable on my machine, mirroring warpdotdev#9277. CI will exercise the change. ### Server API No server changes. ### Agent Mode Not applicable. ### Changelog Entries `CHANGELOG-BUG-FIX`: The diff button on the terminal prompt now opens the code review panel even when the toolbar's "Show code review button" toggle is disabled (regression from a recent release). Co-authored-by: anshul-garg27 <[email protected]>
Owner
Author
|
THe PR has been manually merged into openwarp branch. Closing the PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add the zerx-lab/warp main source to the repo. It already has multiple providers which seems to work perfectly fine.