Files
galaxy/app/src/terminal/general_settings.rs
T

176 lines
6.9 KiB
Rust

use std::collections::HashSet;
use crate::{banner::BannerState, resource_center::Tip};
use galaxy_core::settings::{
macros::define_settings_group, RespectUserSyncSetting, SupportedPlatforms, SyncToCloud,
};
define_settings_group!(GeneralSettings, settings: [
show_warning_before_quitting: ShowWarningBeforeQuitting {
type: bool,
default: true,
supported_platforms: SupportedPlatforms::DESKTOP,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: false,
toml_path: "general.show_warning_before_quitting",
description: "Whether to show a warning dialog before quitting Warp.",
},
quit_on_last_window_closed: QuitOnLastWindowClosed {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::MAC,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: false,
toml_path: "general.quit_on_last_window_closed",
description: "Whether to quit Warp when the last window is closed.",
},
restore_session: RestoreSession {
type: bool,
default: true,
supported_platforms: SupportedPlatforms::DESKTOP,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: false,
toml_path: "general.restore_session",
description: "Whether to restore the previous session when Warp starts up.",
},
add_app_as_login_item: LoginItem {
type: bool,
default: true,
supported_platforms: SupportedPlatforms::OR(
Box::new(SupportedPlatforms::MAC),
Box::new(SupportedPlatforms::WINDOWS),
),
sync_to_cloud: SyncToCloud::Never,
private: false,
toml_path: "general.login_item",
description: "Whether to launch Warp automatically when you log in.",
},
// Records whether the app has been added as a login item.
// If it has, we don't try to add it again unless the user explicitly
// retoggles the setting. This is to allow a user to remove the login item
// directly from their OS's startup UI and not have it re-added when they
// next start Warp.
app_added_as_login_item: AppAddedAsLoginItem {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::OR(
Box::new(SupportedPlatforms::MAC),
Box::new(SupportedPlatforms::WINDOWS),
),
sync_to_cloud: SyncToCloud::Never,
private: true,
},
link_tooltip: LinkTooltip {
type: bool,
default: true,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: false,
toml_path: "general.link_tooltip",
description: "Whether to show a tooltip when hovering over links.",
},
welcome_tips_features_used: WelcomeTipsFeaturesUsed {
type: HashSet<Tip>,
default: HashSet::new(),
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Never,
private: true,
},
welcome_tips_skipped_or_completed: WelcomeTipsCompleted {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: true,
},
agent_mode_onboarding_block_shown: AgentModeOnboardingBlockShown {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: true,
},
telemetry_banner_dismissed: TelemetryBannerDismissed {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: true,
},
user_default_shell_unsupported_banner_state: UserDefaultShellUnsupportedBannerState {
type: BannerState,
default: BannerState::default(),
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: true,
},
open_in_warp_banner_dismissed_for_markdown: OpenInWarpBannerDismissedMarkdown {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Never,
private: true,
},
open_in_warp_banner_dismissed_for_code_and_text: OpenInWarpBannerDismissedCode {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Never,
private: true,
},
did_non_anonymous_user_log_in: DidNonAnonymousUserLogIn {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Never,
private: true,
},
free_tier_limit_hit_modal_dismissed: FreeTierLimitHitModalDismissed {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: true,
},
build_plan_migration_modal_dismissed: BuildPlanMigrationModalDismissed {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: true,
},
// One-time flag tracking whether the OpenWarp launch modal has already been
// shown to the user. Not user-visible; modeled as a setting so it's only
// shown once per user regardless of the number of devices they use.
did_check_to_trigger_openwarp_launch_modal: DidShowOpenWarpLaunchModal {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::No),
private: true,
},
anonymous_user_ai_sign_up_banner_shown: AnonymousUserAISignUpBannerShown {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Never,
private: true,
},
auto_open_code_review_pane_on_first_agent_change: AutoOpenCodeReviewPaneOnFirstAgentChange {
type: bool,
default: false,
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: false,
toml_path: "code.editor.auto_open_code_review_pane_on_first_agent_change",
description: "Whether to automatically open the code review pane when the agent makes its first change.",
},
bonus_grants_shown: BonusGrantsShown {
type: HashSet<String>,
default: HashSet::new(),
supported_platforms: SupportedPlatforms::ALL,
sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes),
private: true,
},
]);