solidcraft --control PORT writes a random per-launch token to a user-only file (<data>/control/PORT.token; 0700/0600 on Unix, icacls on Windows; SOLIDCRAFT_CONTROL_TOKEN overrides) and refuses any connection whose first request lacks it. mcp --connect, the demo and packaging smoke clients send it. MCP execute/batch/open/save/export/screenshot are annotated destructive and open-world, new_design destructive. Docs: control-protocol.md, mcp.md, AGENTS.md, pending release note in releasing.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d9237d004e
commit
fe3717f2e4
19 files changed
+465
-53
No files matched your search
@@ -46,6 +46,21 @@ pub fn default_dir() -> Option<PathBuf> {
|
||||
Some(dir)
|
||||
}
|
||||
|
||||
/// SolidCraft's per-user data folder (the recovery folder's parent unless
|
||||
/// `SOLIDCRAFT_RECOVERY_DIR` moves that): `%LOCALAPPDATA%\SolidCraft`,
|
||||
/// `~/Library/Application Support/SolidCraft`, or `$XDG_DATA_HOME/solidcraft`
|
||||
/// (`~/.local/share/solidcraft`).
|
||||
pub fn data_dir() -> Option<PathBuf> {
|
||||
let env = |k: &str| std::env::var_os(k).filter(|d| !d.is_empty()).map(PathBuf::from);
|
||||
if cfg!(windows) {
|
||||
Some(env("LOCALAPPDATA")?.join("SolidCraft"))
|
||||
} else if cfg!(target_os = "macos") {
|
||||
Some(env("HOME")?.join("Library/Application Support/SolidCraft"))
|
||||
} else {
|
||||
Some(env("XDG_DATA_HOME").or_else(|| env("HOME").map(|h| h.join(".local/share")))?.join("solidcraft"))
|
||||
}
|
||||
}
|
||||
|
||||
/// The recovery folder under the per-user data `root`, and the folder earlier releases used.
|
||||
/// Windows and macOS name the app's folder in title case, other systems in lower case.
|
||||
fn dirs_under(root: &Path, title_case: bool) -> (PathBuf, PathBuf) {
|
||||
|
||||
Reference in new issue
Block a user