forked from 1b-agent/fieldcraft-upstream
mesh.quality: a one-line summary, shown in the status bar
Quality from the ribbon printed its whole JSON report into the status
bar, cut off after the first metric's histogram, so a user saw braces
and no answer. The report now carries a `summary` line ("30676 elements,
all valid; scaled Jacobian min 0.305, mean 0.963", with the invalid and
undetermined counts when there are any), and the status bar shows a
reply's summary instead of its JSON whenever it has one. The CLI and MCP
get the same line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
This commit is contained in:
1 parent
e4e3c9a699
commit
4445be0b48
2 files changed
+54
No files matched your search
@@ -438,6 +438,8 @@ impl ModelApp {
|
||||
}
|
||||
match &r {
|
||||
Ok(v) if v.is_null() || changed || display => self.set_status(format!("{label} done"), false),
|
||||
// A reply with a `summary` line shows it instead of its JSON.
|
||||
Ok(v) if let Some(summary) = v.get("summary").and_then(Value::as_str) => self.set_status(format!("{label}: {summary}"), false),
|
||||
Ok(v) => self.set_status(format!("{label}: {v}"), false),
|
||||
Err(e) => self.set_status(format!("{label}: {e}"), true),
|
||||
}
|
||||
@@ -1227,6 +1229,19 @@ mod tests {
|
||||
assert_eq!(app.ui.tab, Tab::Properties);
|
||||
}
|
||||
|
||||
/// Mesh Quality reads as a sentence in the status bar, not as its JSON report.
|
||||
#[test]
|
||||
fn mesh_quality_reports_in_a_line() {
|
||||
let mut app = ModelApp::new(Session::default());
|
||||
app.run("mesh.quality", json!({})).unwrap();
|
||||
assert_eq!(app.status.as_ref().map(|s| s.text.as_str()), Some("Mesh Quality: no elements to measure"));
|
||||
app.run_script(&fieldcraft_engine::sample::script()).unwrap();
|
||||
app.run("mesh.quality", json!({})).unwrap();
|
||||
let status = app.status.clone().unwrap();
|
||||
assert!(status.text.starts_with("Mesh Quality: 226 elements, all valid; scaled Jacobian min "), "{}", status.text);
|
||||
assert!(!status.error && !status.text.contains('{'));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn starting_a_command_opens_its_form_and_running_it_closes_the_form() {
|
||||
let mut app = ModelApp::new(Session::default());
|
||||
|
||||
Reference in new issue
Block a user