Skip to content

feat: add read-only multiroom inspection - #16

Merged
zzwong merged 12 commits into
mainfrom
feat/read-only-multiroom
Jul 11, 2026
Merged

feat: add read-only multiroom inspection#16
zzwong merged 12 commits into
mainfrom
feat/read-only-multiroom

Conversation

@zzwong

@zzwong zzwong commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Summary

  • add read-only group status and group members commands
  • normalize modern Arylic and legacy Linkplay multiroom response shapes
  • derive master/slave/standalone/unknown roles with stable human and JSON output
  • harden device JSON decoding against precision loss, duplicate keys, excessive nesting, malformed fields, oversized groups, and terminal injection
  • document published API provenance, safety boundaries, and compatibility limits

Examples

wiim group status
wiim --json group members
wiim --device living-room group status

Safety

No first-class join, leave, kick, volume, mute, or channel mutations are included. Both commands issue read-only status/member queries only.

Hardware verification

Verified read-only against a standalone WiiM Ultra: WMRM 4.3 and zero-member response rendered correctly. Master/slave grouped configurations remain explicitly documented as not yet hardware-verified.

Verification

  • gofmt -l . clean
  • go vet ./...
  • go test -race ./...
  • golangci-lint run ./... (0 issues)
  • Linux/386 parser tests pass
  • live standalone group status and group members succeeded

Reviews

  • task-level spec and quality gates passed
  • final full-diff spec review passed and quality review approved
  • adversarial findings addressed: case-fold ambiguity, numeric precision/bounds, list allocation limits, terminal escaping, exact duplicate JSON keys, and nesting-depth denial of service
  • final adversarial re-review: CLEAN

@zzwong
zzwong merged commit cdd80b0 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