feat: load optional XDG TOML configuration with session overrides

This commit is contained in:
2026-10-11 14:41:11 +02:00
parent 0dce073287
commit 722a225da5
16 changed files with 461 additions and 89 deletions
+12 -4
View File
@@ -1,5 +1,6 @@
import AppKit
import MediaPlayer
import TerebiConfiguration
@main
@MainActor
@@ -29,13 +30,20 @@ struct SystemPlaybackChecks {
"buffer readout can be enabled before playback and reveals controls")
initialModel.shutdown()
let restoredModel = PlayerModel(defaults: defaults)
require(restoredModel.showsBufferInfo, "enabled buffer readout survives model recreation")
restoredModel.setShowsBufferInfo(false)
require(!restoredModel.showsBufferInfo, "buffer readout can be explicitly disabled")
require(!restoredModel.showsBufferInfo, "session opt-in does not survive model recreation")
restoredModel.shutdown()
let configuredModel = PlayerModel(defaults: defaults, configuration:
PlayerConfiguration(showBufferInfo: true, automaticQuality: true, snapToEdges: false))
require(configuredModel.showsBufferInfo && configuredModel.automaticYouTubeQuality
&& !configuredModel.compactWindow.snappingEnabled, "configuration initializes all three controls")
configuredModel.setShowsBufferInfo(false)
configuredModel.setAutomaticYouTubeQuality(false)
configuredModel.compactWindow.snappingEnabled = true
configuredModel.shutdown()
let model = PlayerModel(defaults: defaults)
defer { model.shutdown() }
require(!model.showsBufferInfo, "explicitly disabled buffer readout survives model recreation")
require(!model.showsBufferInfo && !model.automaticYouTubeQuality && model.compactWindow.snappingEnabled,
"session overrides never replace built-in settings")
model.setVolume(0)
let directory = URL(fileURLWithPath: CommandLine.arguments[1], isDirectory: true)
let center = MPNowPlayingInfoCenter.default()