diff --git a/crates/forge_infra/src/env.rs b/crates/forge_infra/src/env.rs index 1d39eb67ee..de934b3af4 100644 --- a/crates/forge_infra/src/env.rs +++ b/crates/forge_infra/src/env.rs @@ -57,9 +57,14 @@ impl ForgeEnvironmentInfra { pid: std::process::id(), cwd, shell: self.get_shell_path(), - base_path: dirs::home_dir() - .map(|a| a.join("forge")) - .unwrap_or(PathBuf::from(".").join("forge")), + // Resolve base_path: FORGE_FOLDER_PATH env var takes priority, then default to ~/forge + base_path: parse_env::("FORGE_FOLDER_PATH") + .map(PathBuf::from) + .unwrap_or_else(|| { + dirs::home_dir() + .map(|a| a.join("forge")) + .unwrap_or_else(|| PathBuf::from(".").join("forge")) + }), home: dirs::home_dir(), retry_config, max_search_lines: 200, @@ -297,7 +302,7 @@ mod tests { use forge_domain::{TlsBackend, TlsVersion}; use serial_test::serial; - use tempfile::{TempDir, tempdir}; + use tempfile::{tempdir, TempDir}; use super::*; diff --git a/crates/forge_repo/src/provider/bedrock.rs b/crates/forge_repo/src/provider/bedrock.rs index 7fe69bbbea..d96456fa07 100644 --- a/crates/forge_repo/src/provider/bedrock.rs +++ b/crates/forge_repo/src/provider/bedrock.rs @@ -129,6 +129,14 @@ impl BedrockProvider { _ => "", }; + // Remove :0 suffix from Anthropic models before adding regional prefix + // AWS Bedrock Anthropic models don't accept :0 suffix in the model ID + let model_id = if model_id.contains("anthropic.") && model_id.ends_with(":0") { + &model_id[..model_id.len() - 2] + } else { + model_id + }; + // Only prefix Anthropic models that don't already have a regional prefix if model_id.contains("anthropic.") && !model_id.starts_with("us.") diff --git a/shell-plugin/lib/bindings.zsh b/shell-plugin/lib/bindings.zsh index 5100f3fb5b..82bfc9b6f8 100644 --- a/shell-plugin/lib/bindings.zsh +++ b/shell-plugin/lib/bindings.zsh @@ -29,3 +29,14 @@ bindkey '^M' forge-accept-line bindkey '^J' forge-accept-line # Update the Tab binding to use the new completion widget bindkey '^I' forge-completion # Tab for both @ and :command completion + +# Fix: zsh-vi-mode plugin compatibility +# When zsh-vi-mode (jeffreytse/zsh-vi-mode) is active, Enter in vi-command mode +# does not trigger forge's colon commands. Fix by also binding Enter in vicmd. +# Detects both zsh-vi-mode plugin ($ZVM_MODE) and native vi mode (bindkey -v). +if [[ -n "$ZVM_MODE" ]] || bindkey -lL main 2>/dev/null | grep -q "bindkey -A viins main\|bindkey -A vicmd main"; then + bindkey -M vicmd '^M' forge-accept-line + bindkey -M vicmd '^J' forge-accept-line + # Also bind Tab in vicmd for @ and :command completion + bindkey -M vicmd '^I' forge-completion +fi