Parent
Part of #25 (Screen Solver v1: implementation spec), itself under the map #1.
What to build
The app's settings, and a way to change the target window it watches without restarting. config.json lives under the state root established in ticket 1, holding the target window identity (process name + title — deliberately not a raw OS handle, since handles aren't stable across restarts) and the provider/model selection. Window enumeration lists the currently open windows a user could pick from. A write path lets a client change the target window; every field is live-reloadable with no restart, and a target change is broadcast (a config{target} event, consumed later by ticket 5's SSE layer and ticket 8's client — this ticket only needs to emit it on an internal event bus or equivalent, not yet serve it over the wire).
Acceptance criteria
Blocked by
#26 (Host process bootstrap & API key gate) — needs the state root and startup sequence in place.
Parent
Part of #25 (Screen Solver v1: implementation spec), itself under the map #1.
What to build
The app's settings, and a way to change the target window it watches without restarting.
config.jsonlives under the state root established in ticket 1, holding the target window identity (process name + title — deliberately not a raw OS handle, since handles aren't stable across restarts) and the provider/model selection. Window enumeration lists the currently open windows a user could pick from. A write path lets a client change the target window; every field is live-reloadable with no restart, and a target change is broadcast (aconfig{target}event, consumed later by ticket 5's SSE layer and ticket 8's client — this ticket only needs to emit it on an internal event bus or equivalent, not yet serve it over the wire).Acceptance criteria
config.jsonis created under the state root on first run if absent, with a null/unset target window.config.jsonand survives an app restart.Blocked by
#26 (Host process bootstrap & API key gate) — needs the state root and startup sequence in place.