From 19a0f0bcb8142053434286958444df037d71a08a Mon Sep 17 00:00:00 2001 From: Anshul Garg Date: Fri, 13 Mar 2026 03:04:31 +0530 Subject: [PATCH 1/3] chore: replace deprecated serde_yaml with serde_yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit serde_yaml 0.9.34 is marked as deprecated by its author (the version string in Cargo.lock shows +deprecated). Replace with serde_yml which is the actively maintained community fork with the same API. Only 4 call sites in generate_skills.rs — drop-in replacement. --- .changeset/chore-replace-serde-yaml.md | 5 +++++ Cargo.toml | 2 +- src/generate_skills.rs | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 .changeset/chore-replace-serde-yaml.md diff --git a/.changeset/chore-replace-serde-yaml.md b/.changeset/chore-replace-serde-yaml.md new file mode 100644 index 00000000..baa4d26c --- /dev/null +++ b/.changeset/chore-replace-serde-yaml.md @@ -0,0 +1,5 @@ +--- +"@googleworkspace/cli": patch +--- + +chore: replace deprecated serde_yaml with serde_yml diff --git a/Cargo.toml b/Cargo.toml index c8e0db0b..fd9e519d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ ratatui = "0.30.0" crossterm = "0.29.0" chrono = "0.4.44" async-trait = "0.1.89" -serde_yaml = "0.9.34" +serde_yml = "0.0" percent-encoding = "2.3.2" zeroize = { version = "1.8.2", features = ["derive"] } diff --git a/src/generate_skills.rs b/src/generate_skills.rs index ba2496b5..e5408dc1 100644 --- a/src/generate_skills.rs +++ b/src/generate_skills.rs @@ -203,7 +203,7 @@ pub async fn handle_generate_skills(args: &[String]) -> Result<(), GwsError> { .as_ref() .is_none_or(|f| "persona".contains(f.as_str()) || "personas".contains(f.as_str())) { - if let Ok(registry) = serde_yaml::from_str::(PERSONAS_YAML) { + if let Ok(registry) = serde_yml::from_str::(PERSONAS_YAML) { eprintln!( "Generating skills for {} personas...", registry.personas.len() @@ -234,7 +234,7 @@ pub async fn handle_generate_skills(args: &[String]) -> Result<(), GwsError> { .as_ref() .is_none_or(|f| "recipe".contains(f.as_str()) || "recipes".contains(f.as_str())) { - if let Ok(registry) = serde_yaml::from_str::(RECIPES_YAML) { + if let Ok(registry) = serde_yml::from_str::(RECIPES_YAML) { eprintln!( "Generating skills for {} recipes...", registry.recipes.len() @@ -968,9 +968,9 @@ mod tests { #[test] fn test_registry_references() { let personas: PersonaRegistry = - serde_yaml::from_str(PERSONAS_YAML).expect("valid personas yaml"); + serde_yml::from_str(PERSONAS_YAML).expect("valid personas yaml"); let recipes: RecipeRegistry = - serde_yaml::from_str(RECIPES_YAML).expect("valid recipes yaml"); + serde_yml::from_str(RECIPES_YAML).expect("valid recipes yaml"); // Valid services mapped by api_name or alias let all_services = services::SERVICES; From 5a304ff0656b07959efe7fdb09d8ae622cb16268 Mon Sep 17 00:00:00 2001 From: Anshul Garg Date: Fri, 13 Mar 2026 12:09:27 +0530 Subject: [PATCH 2/3] fix: pin serde_yml to 0.0.12 instead of loose 0.0 Address Gemini review: "0.0" is too broad and acts like a wildcard. Pin to the exact minor version 0.0.12 for predictable builds. --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index fd9e519d..602bf995 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ ratatui = "0.30.0" crossterm = "0.29.0" chrono = "0.4.44" async-trait = "0.1.89" -serde_yml = "0.0" +serde_yml = "0.0.12" percent-encoding = "2.3.2" zeroize = { version = "1.8.2", features = ["derive"] } From 606f2484845885fa8ac58ac9106fb7ca51569e5e Mon Sep 17 00:00:00 2001 From: Anshul Garg Date: Fri, 13 Mar 2026 12:16:20 +0530 Subject: [PATCH 3/3] fix: include error details in YAML parse failure warnings The else branches for personas.yaml and recipes.yaml parsing now include the actual error message (e.g. line/column info), making debugging much easier if the YAML ever has a syntax issue. --- src/generate_skills.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/generate_skills.rs b/src/generate_skills.rs index e5408dc1..d3788a1e 100644 --- a/src/generate_skills.rs +++ b/src/generate_skills.rs @@ -224,8 +224,8 @@ pub async fn handle_generate_skills(args: &[String]) -> Result<(), GwsError> { }); } } - } else { - eprintln!("WARNING: Failed to parse personas.yaml"); + } else if let Err(e) = serde_yml::from_str::(PERSONAS_YAML) { + eprintln!("WARNING: Failed to parse personas.yaml: {e}"); } } @@ -255,8 +255,8 @@ pub async fn handle_generate_skills(args: &[String]) -> Result<(), GwsError> { }); } } - } else { - eprintln!("WARNING: Failed to parse recipes.yaml"); + } else if let Err(e) = serde_yml::from_str::(RECIPES_YAML) { + eprintln!("WARNING: Failed to parse recipes.yaml: {e}"); } }