refactor(engine): split settings_plugin runtime code into submodules

Second phase of #118 for settings_plugin: the 2,857-line mod.rs becomes
four focused submodules along existing system boundaries —

  mod.rs     561  types, markers, SettingsButton, plugin build, persistence
  input.rs   632  button/hotkey handlers, focus attachment, scrolling
  updates.rs 495  per-frame value-text updater systems + label helpers
  ui.rs    1,231  spawn_settings_panel + row builders + thumbnails

Moved items are pub(super); mod.rs glob-imports the submodules so
system registration and tests keep their bare names. No behaviour
change; all 29 settings tests pass unchanged.

Refs #118

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
funman300
2026-07-06 13:45:57 -07:00
parent 8274581edf
commit 1ca1efb3b6
5 changed files with 2367 additions and 2314 deletions
@@ -1,4 +1,7 @@
use super::*;
use crate::ui_focus::{FocusRow, Focusable};
use crate::ui_modal::ModalButton;
use crate::ui_tooltip::Tooltip;
fn headless_app() -> App {
let mut app = App::new();
@@ -326,9 +329,7 @@ fn settings_buttons_carry_tooltip() {
.world_mut()
.query::<(&SettingsButton, &Tooltip)>()
.iter(app.world())
.find_map(|(btn, tip)| {
matches!(btn, SettingsButton::ConnectSync).then(|| tip.0.clone())
})
.find_map(|(btn, tip)| matches!(btn, SettingsButton::ConnectSync).then(|| tip.0.clone()))
.expect("Connect button should spawn with a Tooltip when backend is Local");
assert_eq!(
connect_tip.as_ref(),