From 7e86f7a23587919006abb18549ca6b0cae0669f4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 03:58:58 +0000 Subject: [PATCH 1/3] Initial plan From 691ed6f93e1076ae7ae8185b3326a68dfe86ae66 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 04:05:53 +0000 Subject: [PATCH 2/3] Enrich error messages with actionable context Co-authored-by: Uliboooo <190558756+Uliboooo@users.noreply.github.com> Agent-Logs-Url: https://github.com/Uliboooo/ghost_git_writer/sessions/606ce44d-30b4-4c1d-9228-2a820e904a7f --- src/main.rs | 56 +++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index da64cbf..0b93f7e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,7 +45,7 @@ enum Error { Rdm(readme_gen::Error), EnvVar, NotFoundHome, - NotFoundConfig, + NotFoundConfig(String), NotFoundLlmField, NotFoundSelectedModel, NotFoundDefaultModel, @@ -119,14 +119,32 @@ impl Display for Error { Error::Git(error) => write!(f, "git error: {error}"), // Error::Cmt(error) => write!(f, "commit gen error: {error}"), Error::Rdm(error) => write!(f, "readme gen error: {error}"), - Error::NotFoundHome => write!(f, "not found home directory"), - Error::NotFoundConfig => write!(f, "not found config file"), - Error::NotFoundWorkFolder => write!(f, "not found work folder"), + Error::NotFoundHome => write!( + f, + "not found home directory. Please ensure the HOME environment variable is set." + ), + Error::NotFoundConfig(ctx) => write!(f, "not found config file. {ctx}"), + Error::NotFoundWorkFolder => write!( + f, + "not found work folder. Please verify the path passed with --path exists." + ), Error::Cancel => write!(f, "commit canceled"), - Error::EnvVar => write!(f, "failed get api key as env var. please set it."), - Error::NotFoundLlmField => write!(f, "not found llm field in config file"), - Error::NotFoundSelectedModel => write!(f, "not found selected model in config"), - Error::NotFoundDefaultModel => write!(f, "not found default model in config"), + Error::EnvVar => write!( + f, + "failed to get API key from environment variable. Please set the appropriate variable (e.g. GGW_GEMINI_API, GGW_OPENAI_API, GGW_ANTHROPIC_API, or GGW_DEEPSEEK_API)." + ), + Error::NotFoundLlmField => write!( + f, + "not found 'llms' field in config file. Please add an [llms] section to your config. See the config template for reference." + ), + Error::NotFoundSelectedModel => write!( + f, + "not found selected model alias in config. Please verify the alias exists under [llms.models] in your config file." + ), + Error::NotFoundDefaultModel => write!( + f, + "not found default model in config. Please set 'default_model' under the [llms] section of your config file." + ), Error::InvalidSemVer(s) => write!(f, "invalid SemVer part from LLM response: {s}"), } } @@ -163,7 +181,13 @@ fn resolve_config_path>(path: &Option) -> Result match config { Some(loaded_config) => loaded_config.llms().clone().ok_or(Error::NotFoundLlmField), - None => Err(Error::NotFoundConfig), + None => Err(Error::NotFoundConfig( + "A config file is required to resolve model aliases. \ + Please create ~/.config/ggw/config.toml, or pass the model as \ + 'provider/model' (e.g. `-m gemini/gemini-2.0-flash`).".to_string() + )), }? .get_model(v) .ok_or(Error::NotFoundSelectedModel), }, // without mode arg None => match config { - Some(v) => v.llms().clone().ok_or(Error::NotFoundConfig), - None => Err(Error::NotFoundConfig), + Some(v) => v.llms().clone().ok_or(Error::NotFoundLlmField), + None => Err(Error::NotFoundConfig( + "No config file found and no model specified. \ + Please create ~/.config/ggw/config.toml with a default_model, \ + or specify a model with `-m provider/model` (e.g. `-m gemini/gemini-2.0-flash`).".to_string() + )), }? .get_default() .ok_or(Error::NotFoundDefaultModel), From c7b7d28d2f4292baee9320fadba39e4f39814d1f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 24 Mar 2026 04:30:13 +0000 Subject: [PATCH 3/3] Bump version to 0.18.4 Co-authored-by: Uliboooo <190558756+Uliboooo@users.noreply.github.com> Agent-Logs-Url: https://github.com/Uliboooo/ghost_git_writer/sessions/c3225ba9-cab2-43cd-acba-7b650755d27b --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 09845eb..c000a8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -424,7 +424,7 @@ dependencies = [ [[package]] name = "ghost_git_writer" -version = "0.18.3" +version = "0.18.4" dependencies = [ "atty", "chrono", diff --git a/Cargo.toml b/Cargo.toml index f3e7f63..7f096bd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "ghost_git_writer" description = "write a git commit message, README or Diff Summary by LLM services." -version = "0.18.3" +version = "0.18.4" repository = "https://github.com/Uliboooo/ghost_git_writer" edition = "2024" license = "MIT OR Apache-2.0"