df4cf87a20070057a3df037d4e5ff34299eb9047
rhema-config held both vocabularies: the stored settings and the terminal UI's theme, palette, and onboarding state, under one Config type with a global directory. A second frontend had to take the UI settings to get the profiles, and every path helper resolved $XDG_CONFIG_HOME/rhema no matter who called. The crate now ships only the framework's contract. Settings is the stored section, flattenable as one serde field. Home carries the directory conventions as a value, so a frontend keeps its settings, skills, subagents, and SYSTEM.md under its own base while .agents/skills stays machine-global. Store is the seam a foreign frontend implements over its own file and format, YamlStore is the reference impl, and Platform collects home, store, and keychain namespace at one construction site. KeyringSecretStore::named gives each frontend its own OS keychain service, so two frontends never share credentials by accident. examples/godcode.rs builds the whole shape runnable: its own directory, its own JSON document, its own namespace. rhema-code's store::Document flattens the section beside its UI fields, the layout on disk unchanged. serde's flatten silently drops unknown keys, so the load path re-checks every leftover key against the section: a typo'd profiles: stays loud inside the bigger document. CodingAgentConfig gains home: Option<Home>, so a frontend redirects skill discovery without calling the framework. claw and acp name their keychain namespaces, and the mcp, coding-agent, and subagents crates read conventions from the Home they are handed.
Languages
Rust
74.9%
Kotlin
13.8%
Vue
7.1%
TypeScript
3%
Dockerfile
0.5%
Other
0.6%