Skip to content

feat: add named WiiM device profiles - #15

Merged
zzwong merged 14 commits into
mainfrom
feat/device-profiles
Jul 11, 2026
Merged

feat: add named WiiM device profiles#15
zzwong merged 14 commits into
mainfrom
feat/device-profiles

Conversation

@zzwong

@zzwong zzwong commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Summary

  • add backward-compatible named device profiles with --device targeting
  • add device list/add/remove/use/discover and config set/unset defaultDevice
  • preserve legacy defaultHost and exact precedence: --hostWIIM_HOST--devicedefaultDevicedefaultHost
  • make profile persistence atomic/crash-resistant, preserve ownership/symlinks and unknown config metadata
  • document discovery-to-config workflows and correct existing command safety/availability docs

Examples

wiim device discover
wiim device add living-room 192.168.1.20
wiim device use living-room
wiim --device living-room status

Compatibility

  • existing configs require no migration
  • top-level and nested unknown JSON metadata is retained on rewrites
  • explicit target flags are rejected for discovery and commands where targeting is meaningless

Verification

  • gofmt -l . clean
  • go vet ./...
  • go test -race ./...
  • golangci-lint run ./... (0 issues)
  • Linux, macOS, and Windows test packages compile

Reviews

  • every implementation task passed spec and quality review
  • full-diff spec review passed and quality review approved
  • adversarial findings addressed: deterministic validation, copy-on-write maps, empty target handling, atomic persistence, env-independent validation, unknown-field preservation, case collisions, ownership, symlinks, and target confusion
  • final adversarial re-review: CLEAN

@zzwong
zzwong merged commit 3254a99 into main Jul 11, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant