This commit is contained in:
Kelorastus
2026-09-29 10:29:52 +02:00
parent 73a8f2c30c
commit 80dd1e7c7d
22 changed files with 1739 additions and 44 deletions
+25
View File
@@ -27,6 +27,26 @@ pub struct Settings {
pub ai_url: String,
#[serde(default)]
pub install_dir: String,
/// Dev mode: the folder holding the checkouts (it contains `ODIAN_Engine`). Empty until
/// the operator picks one, and meaningless without a dev licence.
#[serde(default)]
pub dev_root: String,
/// Run the client from `dev_root` instead of the installed version. Honoured ONLY on a
/// PC with a valid licence - the launcher checks the licence, not this flag, so setting
/// it by hand in settings.json does nothing on an operator's machine.
#[serde(default)]
pub dev_mode: bool,
/// Dev mode: run the client as this operator instead of the one signed in. Empty for the
/// signed-in one. Swapping it turns sync OFF for that run - see `StackConfig::dev_user`.
#[serde(default)]
pub dev_user: String,
/// Dev mode: build the checkout before launching.
#[serde(default)]
pub dev_build: bool,
/// Dev mode: which client(s) Launch starts - the .exe, the browser client, or both
/// against the one stack. Defaults to the .exe, which is what every launch was before.
#[serde(default)]
pub dev_target: crate::stack::DevTarget,
/// Display name from site.json; the UI's settings form does not edit it.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub site_name: Option<String>,
@@ -272,6 +292,11 @@ impl Settings {
ai_url: normalize_url(&site.ai_url),
install_dir: default_install_dir(),
site_name: site.name,
dev_root: String::new(),
dev_mode: false,
dev_user: String::new(),
dev_build: false,
dev_target: crate::stack::DevTarget::default(),
};
settings.save(app)?;
settings