wip: in-progress changes (grid, config, wizard, settings, pty) before session-persistence

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-15 15:28:19 +07:00
parent e37faf49d3
commit 4419f5660e
18 changed files with 365 additions and 42 deletions
+14 -1
View File
@@ -540,6 +540,17 @@ dependencies = [
"libc",
]
[[package]]
name = "core-text"
version = "22.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "333dab512ce710ca2d08574c373d246dbeac8b22769e47da4c0e72730ce442b7"
dependencies = [
"core-foundation",
"core-graphics",
"foreign-types",
]
[[package]]
name = "cpufeatures"
version = "0.2.17"
@@ -3413,6 +3424,8 @@ version = "0.1.0"
dependencies = [
"anyhow",
"base64 0.22.1",
"core-foundation",
"core-text",
"dirs 5.0.1",
"reqwest 0.12.28",
"serde",
@@ -3427,7 +3440,7 @@ dependencies = [
[[package]]
name = "spacesh-proto"
version = "0.1.0"
version = "0.1.2"
dependencies = [
"bytes",
"serde",
+2
View File
@@ -25,3 +25,5 @@ anyhow = "1"
dirs = "5"
# rustls (no openssl) so the universal-apple-darwin cross-build stays self-contained.
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }
core-text = "22"
core-foundation = "0.10"
+24
View File
@@ -422,6 +422,11 @@ pub async fn health(state: BridgeState<'_>) -> Result<Value, String> {
data_of(state.request(Cmd::Health).await.map_err(|e| e.to_string())?)
}
#[tauri::command]
pub async fn which_agents(state: BridgeState<'_>, candidates: Vec<String>) -> Result<Value, String> {
data_of(state.request(Cmd::WhichAgents { candidates }).await.map_err(|e| e.to_string())?)
}
// ---- Update check ----
/// Where the GUI looks for the published app version. Overridable via
@@ -481,6 +486,25 @@ pub fn open_external(url: String) -> Result<(), String> {
Ok(())
}
/// List the user's installed font families (CoreText) so Settings can offer any of
/// them for the terminal. Hidden system families (".SF NS" etc.) are dropped; the
/// result is de-duplicated and sorted case-insensitively.
#[tauri::command]
pub fn list_fonts() -> Vec<String> {
use std::collections::BTreeSet;
let names = core_text::font_collection::get_family_names();
let mut set: BTreeSet<String> = BTreeSet::new();
for name in names.iter() {
let s = name.to_string();
if !s.is_empty() && !s.starts_with('.') {
set.insert(s);
}
}
let mut v: Vec<String> = set.into_iter().collect();
v.sort_by_key(|s| s.to_lowercase());
v
}
// ---- Settings commands ----
#[tauri::command]
+2
View File
@@ -54,8 +54,10 @@ pub fn run() {
bridge::mark_read,
bridge::clear_events,
bridge::health,
bridge::which_agents,
bridge::check_update,
bridge::open_external,
bridge::list_fonts,
bridge::get_config,
bridge::set_config,
bridge::shutdown_daemon,
+11 -3
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "spacesh",
"version": "0.1.0",
"version": "0.1.2",
"identifier": "xyz.spacesh.app",
"build": {
"frontendDist": "../dist",
@@ -10,8 +10,16 @@
"beforeBuildCommand": "npm run build"
},
"app": {
"windows": [{ "title": "spacesh", "width": 1100, "height": 720 }],
"security": { "csp": null }
"windows": [
{
"title": "spacesh",
"width": 1100,
"height": 720
}
],
"security": {
"csp": null
}
},
"bundle": {
"active": true,