[codex] Deduplicate skill load warnings (#26698)

Skill reloads can get noisy when the watcher keeps triggering
`skills/list` and the same invalid `SKILL.md` error comes back each
time.

This keeps the first warning visible, then suppresses repeats while the
same `(path, message)` is still active. If the error clears and later
comes back, or if the message changes, it will show again.

Validation:
- `just fmt`
- `just test -p codex-tui skill_load_warning_state`
This commit is contained in:
xl-openai authored and GitHub committed 2026-06-05 18:37:47 -07:00
1 parent 2f108f9fd9
commit cbac22dabe
6 files changed
+199

No files matched your search

+3
View File
@@ -513,6 +513,8 @@ pub(crate) struct App {
status_line_invalid_items_warned: Arc<AtomicBool>,
// Shared across ChatWidget instances so invalid terminal-title config warnings only emit once.
terminal_title_invalid_items_warned: Arc<AtomicBool>,
// Tracks active skill-load warnings so refreshes do not duplicate history cells.
skill_load_warnings: SkillLoadWarningState,
// Esc-backtracking state grouped
pub(crate) backtrack: crate::app_backtrack::BacktrackState,
@@ -1015,6 +1017,7 @@ See the Codex keymap documentation for supported actions and examples."
commit_anim_running: Arc::new(AtomicBool::new(false)),
status_line_invalid_items_warned: status_line_invalid_items_warned.clone(),
terminal_title_invalid_items_warned: terminal_title_invalid_items_warned.clone(),
skill_load_warnings: SkillLoadWarningState::default(),
backtrack: BacktrackState::default(),
backtrack_render_pending: false,
feedback: feedback.clone(),