Read-only shared settings spine#151
Conversation
|
I haven’t fully reviewed yet, but I tried it out and the result looks great! A
|
Hmmm, this one is unexpected. |
ah, I want the CLI to be intuitive, so if you think it's not clear I'm happy to change it! the Without |
# Conflicts: # jukebox/adapters/inbound/config.py # jukebox/di_container.py # tests/jukebox/adapters/inbound/test_config.py # tests/jukebox/test_jukebox_di_container.py
You're right, sorry about that, I gave you the wrong information about my test. Anyway, it doesn't happen anymore with the latest version of the branch, regardless of the command ( |
Gudsfile
left a comment
There was a problem hiding this comment.
There's a lot to it! But the tests really help me understand it, thanks for that.
I’ve just got a few comments, which are actually more like questions. I might have some further points later, but I’m happy with the direction subject is taking for now.
OK to merge it as it is.
Closes #148
Summary
Implements Phase 1 of the shared settings system: a read-only settings spine that becomes the single source of truth for playback and admin startup.
This adds the canonical persisted settings schema, sparse file loading from
~/.jukebox/settings.json, migration/version handling, effective settings resolution with precedencedefaults < file < env < CLI, and read-only settings inspection through admin CLI/API surfaces.What Changed
jukebox/settings/jukeboxstartup to consume resolved runtime config from the shared settings layerdiscstorestartup to consume resolved admin runtime config from the shared settings layerdiscstore settings showdiscstore settings show --effectiveGET /api/v1/settingsGET /api/v1/settings/effectiveCLI Behavior Change
jukeboxCLI parsing is now override-oriented instead of requiring a fully runnable config up front.PLAYER READERargs are still accepted, but they are now optional.--playerand--readercan be provided independently, with final runtime values resolved from shared settings usingdefaults < file < env < CLI.Architectural Notes
Notes