- landing/: the spaceshell.ru terminal-dark landing (index.html + screenshots),
containerized as an nginx:alpine image (Dockerfile + nginx.conf with gzip and
asset caching, VERSION, .dockerignore).
- .gitea/workflows/build.yaml: adapted from the coddykinder pipeline to this repo.
Path-gated jobs — `landing` builds & pushes the nginx image to the Gitea
registry on landing changes; `dmg` builds a universal (Intel + Apple Silicon)
.dmg via `tauri build` on app/crates changes and uploads it as an artifact;
Max notification summarizes both. Tags build everything (release).
- DOCS/landing/spaceshell-landing.md: build brief + copy + SEO meta.
Notes: the DMG job needs a self-hosted macOS runner labelled `macos` (Tauri
can't cross-compile macOS from Linux); the DMG is unsigned until Developer ID
secrets are wired. Landing image verified locally (HTTP 200, assets served).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Config in config.toml via daemon (Get/Set/ConfigChanged), low-churn CSS-var
theme switching (Dark/Light + accent), terminal font, default shell, and
daemon status with Stop/Restart.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The app is its own cargo workspace, so in 'tauri dev' the app binary lives
in app/src-tauri/target/ and spaceshd is NOT a sibling — lazy-start failed
and the .expect() crashed the window. Now: find_daemon tries SPACESHD_BIN,
sibling, repo-root target/{debug,release}, then PATH; bridge honors
SPACESH_SOCK like the daemon/CLI; setup logs instead of panicking.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>