From 1c039e2f5ecd61132ee08087a12c959d4eb5e160 Mon Sep 17 00:00:00 2001 From: Phil Bjorge Date: Tue, 18 Aug 2026 13:35:08 -0700 Subject: [PATCH 1/3] fix(initiatives): drop progress, which Linear removed from Initiative MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `initiatives list` has been returning HTTP 400 for every caller: Cannot query field "progress" on type "Initiative". Did you mean "projects"? Schema introspection confirms Initiative no longer exposes `progress`; it carries `health` and `status` instead. Query `health` and show it in the table in place of the derived percentage. `initiative get` was unaffected — it never selected the field — and the `progress` selection on Project inside its projects query is still valid, so both are left alone. --- src/commands/initiatives.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/commands/initiatives.rs b/src/commands/initiatives.rs index f4888d8..722c47a 100644 --- a/src/commands/initiatives.rs +++ b/src/commands/initiatives.rs @@ -66,8 +66,8 @@ struct InitiativeRow { name: String, #[tabled(rename = "Status")] status: String, - #[tabled(rename = "Progress")] - progress: String, + #[tabled(rename = "Health")] + health: String, #[tabled(rename = "Projects")] project_count: String, } @@ -113,7 +113,7 @@ async fn list_initiatives(output: &OutputOptions, pagination: &PaginationOptions description status sortOrder - progress + health projects { nodes { id @@ -143,10 +143,7 @@ async fn list_initiatives(output: &OutputOptions, pagination: &PaginationOptions .iter() .filter_map(|v| { let i = serde_json::from_value::(v.clone()).ok()?; - let progress = format!( - "{}%", - (v["progress"].as_f64().unwrap_or(0.0) * 100.0) as i32 - ); + let health = v["health"].as_str().unwrap_or("-").to_string(); let project_count = v["projects"]["nodes"] .as_array() .map(|a| a.len().to_string()) @@ -155,7 +152,7 @@ async fn list_initiatives(output: &OutputOptions, pagination: &PaginationOptions id: i.id, name: truncate(&i.name, max_width), status: i.status.as_deref().unwrap_or("-").to_string(), - progress, + health, project_count, }) }) From 85fb7d9752e8a5522c7eaf9b050617dd9bab0aab Mon Sep 17 00:00:00 2001 From: Phil Bjorge Date: Tue, 18 Aug 2026 13:35:08 -0700 Subject: [PATCH 2/3] fix(issues): drop sla fields that are invalid on IssueHistory `issues get --history` has been returning HTTP 400 for every caller: Cannot query field "slaBreachesAt" on type "IssueHistory". Did you mean "toSlaBreachesAt", "fromSlaBreachesAt", or "toSlaBreached"? IssueHistory only carries the to*/from* prefixed variants. Remove the two bare selections from the history fragment. The identically named fields on the Issue type are valid and stay, as does the formatter that reads them when the API does return them. --- src/commands/issues.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/commands/issues.rs b/src/commands/issues.rs index 8527275..439bc37 100644 --- a/src/commands/issues.rs +++ b/src/commands/issues.rs @@ -1031,8 +1031,6 @@ async fn get_issue(id: &str, output: &OutputOptions, history: bool, comments: bo toProject { name } archived trashed - slaBreachesAt - slaStartedAt } }"# } else { From 930297a41e81d4eab60ea2239e2a0bc0b3d8c800 Mon Sep 17 00:00:00 2001 From: Phil Bjorge Date: Tue, 18 Aug 2026 13:36:43 -0700 Subject: [PATCH 3/3] chore: drop a trailing blank line so cargo fmt --check passes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR Check has failed on "Check formatting" since 2026-08-05 because src/commands/initiatives.rs ends with an extra blank line. It is the only formatting diff in the tree, and it is unrelated to the fixes in this branch — happy to split it out if you would rather take it on its own. --- src/commands/initiatives.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/commands/initiatives.rs b/src/commands/initiatives.rs index 722c47a..909ca60 100644 --- a/src/commands/initiatives.rs +++ b/src/commands/initiatives.rs @@ -393,4 +393,3 @@ async fn delete_initiative(id: &str, force: bool) -> Result<()> { Ok(()) } -