Repository navigation
feat: MPRIS server of our own and release binaries for v0.8.0 - #5
Merged
Merged
Conversation
github.com/quarckster/go-mpris-server is GPL-3.0. A binary that links it is under GPL-3.0, so the release binaries could not have a permissive license. internal/mpris now has a server of its own. It is written from the MPRIS 2.2 specification and uses only godbus/dbus. The apps call PlaybackChanged, StatusChanged, MetadataChanged, VolumeChanged, and Seeked on it. Changes that an MPRIS client sees: - A Set of Volume with a value of a wrong type returns an error. With the old module it stopped the program. - The metadata contains only the fields that have a value. - The introspection data shows only the interfaces that exist. - PropertiesChanged does not contain Position or CanControl. server_linux_test.go starts the server on a private session bus and checks it as a client does. The same test passed with the old module before the change. With PINE_REQUIRE_DBUS=1 it fails if dbus-daemon is absent. CI and scripts/release.sh set that variable. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The Release workflow starts when a GitHub Release is published. It builds pine and spruce with CGO_ENABLED=0 for linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, and windows/amd64, and attaches one archive for each program and each system to the release. Each archive contains the program, the LICENSE file, and the license texts of Go and of the modules that the program links. The job fails if the version in the binary is not the release tag. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Add the release notes for v0.8.0, the release with binaries and with the MPRIS server of our own. Name the new version in the release steps of the two READMEs. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request prepares v0.8.0. It has three commits.
1. MPRIS server of our own
github.com/quarckster/go-mpris-serveris GPL-3.0. A binary that links it is under GPL-3.0, so release binaries could not have a permissive license.internal/mpris/server.gois a new server. It is written from the MPRIS 2.2 specification and uses onlygodbus/dbus(BSD-2-Clause).go.modno longer contains the GPL module.Changes that an MPRIS client sees:
SetofVolumewith a value of a wrong type returns an error. With the old module it stopped the program (panic: reflect: Call using string as type float64).TrackListandPlaylists.PropertiesChangeddoes not containPositionorCanControl.2. Release binaries
.github/workflows/release.ymlstarts when a GitHub Release is published. It builds pine and spruce forlinux/amd64,linux/arm64,darwin/amd64,darwin/arm64, andwindows/amd64, and attaches 10 archives to the release.Each archive contains the program,
LICENSE, and alicensesdirectory with the license texts of Go and of the linked modules. The job fails if the version in the binary is not the release tag.3. Release preparation
docs/releases/v0.8.0.md, and the new version in the release steps of the two READMEs.Verification
internal/mpris/server_linux_test.gostarts the server on a private session bus and checks it as a client does. The same test file passed with the old module before the change.gofmt,go vet,golangci-lint2.14.0, andgo test -race ./...pass locally.playerctlandbusctlwork with the new server on a private bus.mpris-proxy.v0.8.0tag: 10 archives,spruce --versionprintedspruce v0.8.0, and no archive contains GPL text.Not verified
linux_arm64, macOS, and Windows have not run on a test machine.After the merge, the release is one command on
main:🤖 Generated with Claude Code