mirror of
https://github.com/nyakang/nyaterm.git
synced 2026-10-06 08:01:04 +00:00
Seventy `NyaTermApp` fields carried the `ai_` prefix. They cover six unrelated concerns, now one struct each in `AiFeatureState`: provider `settings`, the `chat` composer and transcript, session `history`, model `discovery`, the agent loop, and `panel` chrome. Two details worth noting for review: `SettingsDraftSnapshot` has its own `ai_settings`, `ai_model_draft`, `ai_base_url_draft` and `ai_secret_draft` fields with exactly the names being moved. They are deliberately unchanged — it is a separate snapshot type — and the rewrite was anchored on `self`/`this` receivers so `snapshot.ai_settings` was left alone while `self.ai_settings` became `self.ai.settings.config`. The constructor destructures a loaded-store tuple that also binds `ai_settings`, `ai_session_count`, `ai_message_count` and `ai_audit_count`. Those are local bindings, not struct fields; the field sweep removed them and the compiler caught it immediately. `app_state` drops eight more model imports. Field count goes from 417 to 348 — down from 585 when this series started.