The same move, for the same reason: this file is written and read by hand, and JSON has no comments to say why a host is configured the way it is. Both house rules come across with it, in config.rs's `format` module and nowhere else -- a file is the *body* of the config, so no outer parentheses and nothing indented for them, and `Some` is implicit, which is what makes `skip_serializing_if` on every optional field load-bearing rather than tidiness. The switch is outright: there is no reader for the old format. That is invisible everywhere except here, because this file holds the enrolled token hashes -- starting empty leaves the phone unable to talk to the server and looks, from the phone, like the config having been lost. So a config.json left beside the new file is named in the log and left alone, rather than read or deleted. One wart, documented at DriverKind: the kebab-case spelling is the string the phone compares against, so it stays, and the file pays for it with `kind: r#claude-cli` -- a hyphen is not a RON identifier. Renaming the variant would change what an already-installed build is talking to. Verified: cargo test, cargo clippy --all-targets, and a real start against a scratch state directory -- a hand-typed config with comments and a bare `port: 2222` loads, and what the server writes back sits at column 0 with no Some(...) in it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017xn8nHw1tw1R6PtiY1eEtw
24 lines
627 B
Plaintext
24 lines
627 B
Plaintext
.gradle/
|
|
build/
|
|
app/androidApp/build/
|
|
local.properties
|
|
.kotlin/
|
|
*.iml
|
|
.idea/
|
|
.DS_Store
|
|
server/target/
|
|
|
|
# Server logs from a development run (ai-server.log by convention,
|
|
# wg-test.log from ./test-wg-tunnel.sh).
|
|
*.log
|
|
|
|
# The state and key material below all live outside the repo now -- under
|
|
# $XDG_CONFIG_HOME/ai-app and $XDG_DATA_HOME/ai-app, because this repo is
|
|
# a mount shared with a VM the host doesn't trust (see AGENTS.md). These
|
|
# entries stay as a backstop so a stray --config or --certs pointed at the
|
|
# checkout can't commit a CA private key, a token hash, or a transcript.
|
|
certs/
|
|
config.ron
|
|
config.json
|
|
sessions/
|