Shared Swift foundations for the macOS clients of the Symaira ecosystem — the GUI counterpart to symaira-corekit.
Every Symaira app stays fully standalone: this package is consumed as a pinned SPM dependency (exact version), never as a required runtime service.
| Product | Purpose |
|---|---|
SymairaTheme |
Cross-platform design foundation: adaptive Symaira tokens, a Dynamic-Type-backed type scale (SymairaTypography, .symairaText(_:)), Apple materials and Liquid Glass, backgrounds, surfaces, controls, form scaffolding (SymairaFormSection, SymairaFormRow, .symaira text fields), feedback and status states, and accessibility-aware fallbacks. Includes legacy Color.symaira* aliases. |
SymairaCLIRunner |
Subprocess execution for Symaira CLIs: mandatory timeout, stderr capture, snake_case JSON decoding, unified CLIRunnerError. |
SymairaToolKit |
SymairaToolRegistry (single source of truth for all tools), BinaryLocator (bundle → exe dir → PATH → Homebrew prefixes → user override), ToolDetector with the version --json schema handshake. |
SymairaKeychain |
Keychain wrapper, service-namespaced dev.symaira.<app>. |
SymairaUpdateCheck |
GitHub latest-release checker with disk cache and stable-semver comparison (port of corekit/updatecheck). |
SymairaDaemonKit |
DaemonSupervisor for launching and supervising long-running Symaira core daemon processes. |
SymairaIngestContract |
JSON contract clients for symingest rules/mail config and ReOCR requests. |
// Package.swift of a client app — always pin exactly:
.package(url: "https://github.com/danieljustus/symaira-appkit.git", exact: "0.7.0")Review the CHANGELOG before bumping your pin — every release documents its additions, fixes, and breaking changes.
import SymairaToolKit
let detector = ToolDetector()
if let seek = await detector.detect(SymairaToolRegistry.tool(id: "symseek")!) {
try detector.requireSchemaVersion(1, of: seek)
let results = try await CLIRunner().runDecoding(
SearchResults.self,
executable: seek.location.url,
arguments: ["search", "query", "--json"]
)
}import SwiftUI
import SymairaTheme
struct Dashboard: View {
var body: some View {
ZStack {
SymairaBackdrop(gridStyle: .dots)
VStack(spacing: SymairaSpacing.xLarge) {
SymairaNotice(
title: "Core connected",
message: "Local features are ready.",
tone: .positive
)
Text("Content uses a standard Apple material.")
.padding(SymairaSpacing.xLarge)
.glassCard()
SymairaGlassEffectContainer {
HStack {
Button("Cancel") {}
.symairaButtonStyle(.secondary)
Button("Continue") {}
.symairaButtonStyle(.primary)
}
}
}
.padding()
}
}
}Use Liquid Glass for controls and navigation chrome, not as the background of
every content card. symairaButtonStyle, symairaGlassChrome, and
SymairaGlassEffectContainer adopt the native macOS/iOS 26 effects and provide
material or opaque accessibility fallbacks on earlier systems. See
DESIGN.md for the design rules and migration guidance.
swift build
swift testRequires macOS 14+ or iOS 17+, Swift 6. Native Liquid Glass is enabled on macOS/iOS 26+ when built with a compatible SDK.
Apache-2.0
