da047c44ff
* feat(tui): add `notification_condition` override + assistant text in body (#820) `[notifications]` already controls method (auto/osc9/bel/off), the `threshold_secs` gate, and the `include_summary` body. Some users want a simpler high-level switch — "always notify on every turn" or "never notify" — without having to know the lower-level fields. This adds a single optional `[tui].notification_condition` field: - `"always"` — notify on every successful turn (no duration threshold). The configured `[notifications].method` and `include_summary` flag are still respected. - `"never"` — suppress all turn-completion notifications. - omitted — fall back to the existing `[notifications]` defaults (the v0.8.15 behavior is unchanged). The OSC 9 / BEL body now also carries the assistant's reply text, sanitized and truncated to 360 characters, with a fallback to the latest assistant message in `api_messages` when the streaming buffer was empty (e.g. a tool-only turn). When `include_summary = true`, the elapsed/cost line is appended on a new line. Drive-by: drop the unused `Method::from_str` helper (the new code match-arms over the typed `NotificationMethod` enum, so the parser helper had no remaining callers). Differences from upstream #820: - Keeps the `[notifications]` section in `config.example.toml` (with `notification_condition` documented as an opt-in override) rather than deleting the existing block. This avoids breaking configs that already set `[notifications].method` etc. - Drops the unrelated `#[allow(dead_code)]` on `schema_migration::registry`. - Threads `Option<CostEstimate>` through the helper (the cost surface changed from `Option<f64>` since #820 was authored). Tests: - `notification_settings_*` (3) — `always` keeps the configured method, `never` returns `None`, missing override falls back. - `completed_turn_notification_*` (4) — streaming text wins, falls back to latest assistant message, default placeholder, and 360-char truncation with `...`. Integrates #820. Co-authored-by: zero <1603852@qq.com> Co-authored-by: zerx-lab <161401688+zerx-lab@users.noreply.github.com> * style: fmt — collapse short test message helper calls --------- Co-authored-by: zero <1603852@qq.com> Co-authored-by: zerx-lab <161401688+zerx-lab@users.noreply.github.com>