mirror of
https://github.com/nyakang/nyaterm.git
synced 2026-10-03 16:00:51 +00:00
refactor(desktop): isolate settings page imports
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
use super::*;
|
||||
|
||||
mod models;
|
||||
mod rules;
|
||||
mod section;
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
use super::*;
|
||||
use gpui::{
|
||||
Context, FontWeight, IntoElement, KeyDownEvent, SharedString, div, prelude::*, px, rgb,
|
||||
};
|
||||
|
||||
use crate::features::{NyaTermApp, TextInputSetup};
|
||||
use crate::widgets::small_button;
|
||||
|
||||
use super::super::super::settings_switch;
|
||||
|
||||
impl NyaTermApp {
|
||||
pub(super) fn ai_credential_rows(
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
use super::*;
|
||||
use gpui::MouseButton;
|
||||
use gpui::{Context, IntoElement, KeyDownEvent, MouseButton, div, prelude::*, px, rgb};
|
||||
|
||||
use crate::features::{NyaTermApp, TextInputSetup};
|
||||
use crate::theme::ThemePalette;
|
||||
use crate::widgets::small_button;
|
||||
|
||||
use super::super::settings_form_section;
|
||||
|
||||
mod credential_rows;
|
||||
mod model_groups;
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
use super::*;
|
||||
use gpui::{
|
||||
AnyElement, Context, FontWeight, IntoElement, KeyDownEvent, SharedString, div, prelude::*, px,
|
||||
rgb,
|
||||
};
|
||||
use nyaterm_core::truncate_preview;
|
||||
|
||||
use crate::features::{NyaTermApp, TextInputSetup};
|
||||
use crate::widgets::small_button;
|
||||
|
||||
use super::super::super::settings_switch;
|
||||
|
||||
impl NyaTermApp {
|
||||
pub(super) fn ai_model_groups(
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
use super::*;
|
||||
use gpui::{
|
||||
AnyElement, App, ClickEvent, Context, FontWeight, IntoElement, KeyDownEvent, SharedString,
|
||||
Window, div, prelude::*, px, rgb,
|
||||
};
|
||||
|
||||
use crate::features::{NyaTermApp, TextInputSetup};
|
||||
use crate::models::{AiActionEditorField, AiActionListKind};
|
||||
use crate::theme::ThemePalette;
|
||||
use crate::widgets::small_button;
|
||||
|
||||
use super::super::{settings_form_row, settings_form_section, settings_switch};
|
||||
|
||||
impl NyaTermApp {
|
||||
pub(in crate::features) fn ai_rules_settings_section(
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
use super::*;
|
||||
use gpui::{
|
||||
AnyElement, App, ClickEvent, Context, IntoElement, SharedString, Window, div, prelude::*, px,
|
||||
rgb,
|
||||
};
|
||||
use nyaterm_core::RiskLevel;
|
||||
|
||||
use crate::features::{NyaTermApp, TextInputSetup};
|
||||
use crate::models::AiInputField;
|
||||
use crate::theme::ThemePalette;
|
||||
use crate::widgets::small_button;
|
||||
|
||||
use super::super::{settings_form_row, settings_form_section, settings_switch};
|
||||
|
||||
impl NyaTermApp {
|
||||
pub(in crate::features) fn ai_input(
|
||||
|
||||
@@ -1,20 +1,12 @@
|
||||
use gpui::{
|
||||
AnyElement, App, ClickEvent, Context, FontWeight, IntoElement, KeyDownEvent, SharedString,
|
||||
Window, div, prelude::*, px, rgb, rgba, svg,
|
||||
AnyElement, App, ClickEvent, Context, FontWeight, IntoElement, SharedString, Window, div,
|
||||
prelude::*, px, rgb, rgba, svg,
|
||||
};
|
||||
use nyaterm_core::{CloudSyncSettings, RiskLevel};
|
||||
|
||||
use crate::models::{
|
||||
CloudSyncConflictState, CloudSyncInputField, SettingsTab, SnapshotPasswordPromptKind,
|
||||
SnapshotPasswordPromptState, TranslateInputField,
|
||||
};
|
||||
use crate::models::{SettingsTab, SnapshotPasswordPromptKind, SnapshotPasswordPromptState};
|
||||
use crate::theme::ThemePalette;
|
||||
use crate::widgets::{small_button, status_pill};
|
||||
|
||||
use super::super::{
|
||||
ChromeTooltip, NyaTermApp, TextInputSetup, compact_id, configured_cloud_sync_provider,
|
||||
format_history_timestamp_ms, secret_input_setup, truncate_preview,
|
||||
};
|
||||
use super::super::{ChromeTooltip, NyaTermApp};
|
||||
|
||||
mod ai;
|
||||
mod security;
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
use super::*;
|
||||
use gpui::{Context, FontWeight, IntoElement, SharedString, div, prelude::*, px, rgb};
|
||||
|
||||
use crate::features::{ChromeTooltip, NyaTermApp, TextInputSetup};
|
||||
use crate::widgets::small_button;
|
||||
|
||||
use super::{
|
||||
settings_choice_chip, settings_form_row, settings_form_section, settings_switch,
|
||||
settings_switch_with_enabled,
|
||||
};
|
||||
|
||||
impl NyaTermApp {
|
||||
pub(in crate::features) fn security_settings_section(
|
||||
|
||||
@@ -1,7 +1,20 @@
|
||||
use super::*;
|
||||
use gpui::{
|
||||
AnyElement, App, ClickEvent, Context, FontWeight, IntoElement, SharedString, Window, div,
|
||||
prelude::*, px, rgb, rgba, svg,
|
||||
};
|
||||
use nyaterm_core::CloudSyncSettings;
|
||||
|
||||
use crate::features::{dialog_action_button, format_cloud_provider};
|
||||
use crate::models::{SettingsTab, SnapshotPasswordPromptKind};
|
||||
use crate::features::{
|
||||
NyaTermApp, compact_id, configured_cloud_sync_provider, dialog_action_button,
|
||||
format_cloud_provider, format_history_timestamp_ms, secret_input_setup,
|
||||
};
|
||||
use crate::models::{
|
||||
CloudSyncConflictState, CloudSyncInputField, SettingsTab, SnapshotPasswordPromptKind,
|
||||
};
|
||||
use crate::theme::ThemePalette;
|
||||
use crate::widgets::small_button;
|
||||
|
||||
use super::super::{settings_form_row, settings_form_section, settings_switch_with_enabled};
|
||||
|
||||
mod providers;
|
||||
impl NyaTermApp {
|
||||
|
||||
+8
-1
@@ -1,4 +1,11 @@
|
||||
use super::*;
|
||||
use gpui::{AnyElement, Context, FontWeight, IntoElement, SharedString, div, prelude::*, px, rgb};
|
||||
use nyaterm_core::truncate_preview;
|
||||
|
||||
use crate::features::NyaTermApp;
|
||||
use crate::models::CloudSyncInputField;
|
||||
|
||||
use super::super::super::{settings_form_row, settings_switch_with_enabled};
|
||||
use super::cloud_sync_action_button;
|
||||
|
||||
impl NyaTermApp {
|
||||
pub(super) fn cloud_sync_webdav_provider_fields(
|
||||
|
||||
@@ -1,3 +1 @@
|
||||
use super::*;
|
||||
|
||||
mod cloud_sync;
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
use super::*;
|
||||
use gpui::{AnyElement, Context, FontWeight, IntoElement, div, prelude::*, px, rgb};
|
||||
|
||||
use crate::features::{NyaTermApp, TextInputSetup, secret_input_setup};
|
||||
use crate::models::TranslateInputField;
|
||||
use crate::widgets::{small_button, status_pill};
|
||||
|
||||
use super::{settings_choice_chip, settings_form_section};
|
||||
|
||||
impl NyaTermApp {
|
||||
fn translation_input(
|
||||
|
||||
@@ -12,7 +12,7 @@ Last updated from the working tree on 2026-07-28.
|
||||
| `NyaTermApp` fields | 261 | Counted from `features/app_state/mod.rs`; down from 585, still transitional. |
|
||||
| `impl NyaTermApp` blocks | 240 | Spread across 235 files under `crates/nyaterm-desktop/src`. |
|
||||
| `#[path = "..."]` declarations in desktop | 0 | Cleared. Every directory is a real module; the boundary script fails on any new occurrence. |
|
||||
| `use super::*` imports in desktop | 255 | Includes indented test-module imports; historical migration debt, do not add new occurrences. |
|
||||
| `use super::*` imports in desktop | 244 | Includes indented test-module imports; historical migration debt, do not add new occurrences. |
|
||||
| `features/prelude.rs` rough exported-token count | 221 | Still a broad shared prelude; two hundred twenty-four low-frequency transport/core/http/model/helper exports are now explicit imports. |
|
||||
| Entity Store structs | 4 | `Runtime`, `WindowRuntime`, `StartupRestore`, `Overlay`. Each owns state the app does not. |
|
||||
| Snapshot structs | 0 | Cleared. No store is a projection of `NyaTermApp` any more. |
|
||||
@@ -418,13 +418,15 @@ these as staged extraction candidates, not as formatting-only refactor targets.
|
||||
`pages/remote/mod.rs` as a pure module entry point. All 13 wildcard imports
|
||||
were removed across roughly 3,800 lines, so the boundary script now governs
|
||||
the complete `pages/remote` tree.
|
||||
- The settings `transfer`, `terminal` and `workspace` subtrees no longer use
|
||||
wildcard imports. Fourteen module boundaries across roughly 4,773 lines now
|
||||
name their GPUI traits, settings form helpers, text-input setup, shortcut,
|
||||
theme and transport model dependencies directly. Their `mod.rs` files are
|
||||
module entry points rather than implicit child preludes, and `settings/mod.rs`
|
||||
no longer carries the SFTP duplicate policy or tab-mouse models used only by
|
||||
those children. The boundary script governs all three complete subtrees.
|
||||
- The complete settings page tree no longer uses wildcard imports. Its AI,
|
||||
security, translation, cloud-sync/backup, transfer, terminal and workspace
|
||||
modules name their GPUI traits, settings form helpers, text-input setup,
|
||||
theme, core and model dependencies directly. The nested AI and sync/backup
|
||||
`mod.rs` files are pure module entry points, and `settings/mod.rs` no longer
|
||||
carries child-only AI, translation, cloud-sync or widget imports. The
|
||||
boundary script governs all 27 Rust modules under `pages/settings` at zero
|
||||
`use super::*` imports. Cloud-sync provider fields, secret masking,
|
||||
validation and request/storage behavior are unchanged.
|
||||
- The quick-command import runtime no longer uses wildcard imports or flattened
|
||||
child-module globs. Its dialog calls the source adapter directly; source
|
||||
parsing depends directionally on JSON, merge and helper modules; merge names
|
||||
@@ -1205,7 +1207,7 @@ Items 1, 3 and 4 are done. What follows is the honest remaining list.
|
||||
cohesive, while still resolving each file's dependency set explicitly with
|
||||
compiler guidance. Run formatting, boundary checks, compilation and tests
|
||||
once for the completed batch rather than committing one file at a time.
|
||||
3. Largely done. `NyaTermApp` is down from 585 fields to 284, across eight
|
||||
3. Largely done. `NyaTermApp` is down from 585 fields to 261, across eight
|
||||
feature-state structs. What is left is a long tail — the biggest remaining
|
||||
domain is eighteen fields, and much of the rest is genuinely app-level
|
||||
(stores, runtime, services, persisted collections). Group by cohesion where
|
||||
|
||||
@@ -565,12 +565,25 @@ declare -A SUPER_BASELINE=(
|
||||
[crates/nyaterm-desktop/src/features/pages/remote/docker_view.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/remote/mod.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/remote/stats_view.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/mod.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/ai/mod.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/ai/models/credential_rows.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/ai/models/mod.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/ai/models/model_groups.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/ai/rules.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/ai/section.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/security.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/sync_backup/mod.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/sync_backup/cloud_sync/mod.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/sync_backup/cloud_sync/providers.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/translation.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/transfer/advanced.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/transfer/editor.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/transfer/files.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/transfer/mod.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/transfer/recording.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/terminal/general.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/terminal/helpers.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/terminal/keywords.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/terminal/mod.rs]=0
|
||||
[crates/nyaterm-desktop/src/features/pages/settings/terminal/search.rs]=0
|
||||
@@ -650,9 +663,7 @@ done < <(rg -n --path-separator / '^[[:space:]]*use super::\*;' \
|
||||
crates/nyaterm-desktop/src/features/pages/tunnels \
|
||||
crates/nyaterm-desktop/src/features/pages/transfers \
|
||||
crates/nyaterm-desktop/src/features/pages/remote \
|
||||
crates/nyaterm-desktop/src/features/pages/settings/transfer \
|
||||
crates/nyaterm-desktop/src/features/pages/settings/terminal \
|
||||
crates/nyaterm-desktop/src/features/pages/settings/workspace \
|
||||
crates/nyaterm-desktop/src/features/pages/settings \
|
||||
crates/nyaterm-desktop/src/features/shell/mod.rs \
|
||||
crates/nyaterm-desktop/src/features/shell/activity_bar_runtime.rs \
|
||||
crates/nyaterm-desktop/src/features/shell/appearance.rs \
|
||||
|
||||
Reference in New Issue
Block a user