Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
".": "1.3.0",
"pkg/etl": "1.3.0"
".": "1.4.0",
"pkg/etl": "1.4.0"
}
74 changes: 74 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,79 @@
# Changelog

## [1.4.0](https://github.com/OpenAudio/go-openaudio/compare/v1.3.0...v1.4.0) (2026-06-15)


### Features

* **console:** show registry diffs on validators page ([#306](https://github.com/OpenAudio/go-openaudio/issues/306)) ([f30302f](https://github.com/OpenAudio/go-openaudio/commit/f30302ff38ec3b5b9e559472c6e659b1752f4872))
* **console:** show store-all node status ([#352](https://github.com/OpenAudio/go-openaudio/issues/352)) ([d4c3e92](https://github.com/OpenAudio/go-openaudio/commit/d4c3e9273aa6c67db7a92375f1228521b2c192e1))
* **console:** surface jailed status and stable height ([#326](https://github.com/OpenAudio/go-openaudio/issues/326)) ([f6e02dd](https://github.com/OpenAudio/go-openaudio/commit/f6e02dd0f3d864997eeaf53ef04f65f78e78a99d))
* **core/db:** drop unused core indexes ([#270](https://github.com/OpenAudio/go-openaudio/issues/270)) ([361cd0c](https://github.com/OpenAudio/go-openaudio/commit/361cd0cb85786d2183fdabb54c8e6d9564adb086))
* **core:** self-heal registration if node falls out of core_validators ([#309](https://github.com/OpenAudio/go-openaudio/issues/309)) ([7c33778](https://github.com/OpenAudio/go-openaudio/commit/7c33778dcaeed144e6478ffcfaf37d9a8695a0fc))
* **etl:** add event_routes for contest permalink support ([#354](https://github.com/OpenAudio/go-openaudio/issues/354)) ([97ccec3](https://github.com/OpenAudio/go-openaudio/commit/97ccec32c1c62f6bd0f8c0aee68191cafbad6523))
* **etl:** add TrackCollaborator to the entity manager spec ([#345](https://github.com/OpenAudio/go-openaudio/issues/345)) ([550356d](https://github.com/OpenAudio/go-openaudio/commit/550356d6fdf88301678fccf59ee0e2a2562c0488))
* **etl:** allowed_api_keys + access_authorities normalization (parity 5B) ([#250](https://github.com/OpenAudio/go-openaudio/issues/250)) ([247007a](https://github.com/OpenAudio/go-openaudio/commit/247007a881984cff9a29320a66ac39863225b0a5))
* **etl:** auto-subscribe uploader to remix-contest event on Track Create ([#311](https://github.com/OpenAudio/go-openaudio/issues/311)) ([1b70465](https://github.com/OpenAudio/go-openaudio/commit/1b70465de8b7d45ccec45e9d38d04e34a9a5e2f6))
* **etl:** comments.is_members_only + video_url for fan club text posts ([#312](https://github.com/OpenAudio/go-openaudio/issues/312)) ([3b99954](https://github.com/OpenAudio/go-openaudio/commit/3b99954f85383b3066a10c95b7312ad7653bcae6))
* **etl:** consume blocks via gRPC StreamBlocks with catch-up + fallback ([#342](https://github.com/OpenAudio/go-openaudio/issues/342)) ([aee578e](https://github.com/OpenAudio/go-openaudio/commit/aee578ec923b789a8c97b361642659a458473313))
* **etl:** decode hashid-encoded track_ids in playlist_contents (parity 5A) ([#269](https://github.com/OpenAudio/go-openaudio/issues/269)) ([c8fddb6](https://github.com/OpenAudio/go-openaudio/commit/c8fddb6fb9a51db7baf7fa5f00b8e7adb79e88dd))
* **etl:** index oauth_redirect_uris on developer app create/update (parity 5E) ([#252](https://github.com/OpenAudio/go-openaudio/issues/252)) ([bc86dea](https://github.com/OpenAudio/go-openaudio/commit/bc86deab948b20673c3bfa315a469592344f0d68))
* **etl:** let a collaborator leave a track after accepting ([#349](https://github.com/OpenAudio/go-openaudio/issues/349)) ([22066c3](https://github.com/OpenAudio/go-openaudio/commit/22066c3521d3f6d60578e7f879899689bbc6b58d))
* **etl:** post-handler hooks for User/Track/Playlist Create + generic registry ([#317](https://github.com/OpenAudio/go-openaudio/issues/317)) ([1c75995](https://github.com/OpenAudio/go-openaudio/commit/1c7599596a27e376d7e374a7543b8a5abe826a76))
* **etl:** post-write hook for Plays transactions ([#322](https://github.com/OpenAudio/go-openaudio/issues/322)) ([4d1c9df](https://github.com/OpenAudio/go-openaudio/commit/4d1c9dfdfb529bad111e03a3d10221c25b48677f))
* **examples:** local ETL harness for stream/poll + tx load + resume ([#344](https://github.com/OpenAudio/go-openaudio/issues/344)) ([7758ae7](https://github.com/OpenAudio/go-openaudio/commit/7758ae709d18e933d817f3e2c20e420a71b0c89d))
* **mediorum:** flip health-check unhealthy when bucket writes fail ([#297](https://github.com/OpenAudio/go-openaudio/issues/297)) ([94793f9](https://github.com/OpenAudio/go-openaudio/commit/94793f91594f81f80421e3e00668552e8c1f9af8))
* **mediorum:** prune the append-only crudr ops log ([#325](https://github.com/OpenAudio/go-openaudio/issues/325)) ([f850a6b](https://github.com/OpenAudio/go-openaudio/commit/f850a6b235e69a0acf026f3c6af09107ad29528a))
* **mediorum:** retain recent storage repairs ([#353](https://github.com/OpenAudio/go-openaudio/issues/353)) ([cd10354](https://github.com/OpenAudio/go-openaudio/commit/cd10354e6bfe17eb59743110bb92c848204949ac))


### Bug Fixes

* **ci:** wait for SHA-tagged image before retagging release tag ([#291](https://github.com/OpenAudio/go-openaudio/issues/291)) ([cc875ef](https://github.com/OpenAudio/go-openaudio/commit/cc875ef5459d6cca28a112cfc2694f6b6fe6ee88))
* **console:** rate limit historical pages ([#358](https://github.com/OpenAudio/go-openaudio/issues/358)) ([919dbb3](https://github.com/OpenAudio/go-openaudio/commit/919dbb36f69daacc0767be37aa963647239b088e))
* **console:** separate archive and store-all indicators ([#355](https://github.com/OpenAudio/go-openaudio/issues/355)) ([a33e361](https://github.com/OpenAudio/go-openaudio/commit/a33e361e56c621d216a902c290f1a732855d4f0a))
* **console:** update jailed banner copy ([#328](https://github.com/OpenAudio/go-openaudio/issues/328)) ([6b2b7ee](https://github.com/OpenAudio/go-openaudio/commit/6b2b7ee765fb7922539739775152de855a353d20))
* **core:** broaden mainnet p2p bootstrap peers ([#361](https://github.com/OpenAudio/go-openaudio/issues/361)) ([3bdbf51](https://github.com/OpenAudio/go-openaudio/commit/3bdbf51ed78ebdf49bb1b39c54958560549bd0a5))
* **core:** coerce nil ProverAddresses to empty slice in finalizeStorageProof ([#313](https://github.com/OpenAudio/go-openaudio/issues/313)) ([c786d3f](https://github.com/OpenAudio/go-openaudio/commit/c786d3f8dfa1c14e3129793f4e0ed821f6de1901))
* **core:** guard against empty ProverAddresses in PoS submission and validation ([#315](https://github.com/OpenAudio/go-openaudio/issues/315)) ([983bde8](https://github.com/OpenAudio/go-openaudio/commit/983bde8f5ff4653a62c9076297d7ba44fd2fa181))
* **core:** keep storage proof checks out of block replay ([#362](https://github.com/OpenAudio/go-openaudio/issues/362)) ([8d55ef6](https://github.com/OpenAudio/go-openaudio/commit/8d55ef6b33298bf8531e26db40217d3e6ab2872f))
* **core:** pass --disable-triggers to pg_restore data section ([#293](https://github.com/OpenAudio/go-openaudio/issues/293)) ([438c29f](https://github.com/OpenAudio/go-openaudio/commit/438c29f52683d823f751a003360b2439e86b6c06))
* **core:** regenerate stale priv_validator_key.json when delegate key rotates ([#299](https://github.com/OpenAudio/go-openaudio/issues/299)) ([5a2e0cd](https://github.com/OpenAudio/go-openaudio/commit/5a2e0cdf639820ae4de1cfc290dcad8aaf810d27))
* **core:** validate StorageProof structure in CheckTx ([#316](https://github.com/OpenAudio/go-openaudio/issues/316)) ([88444d5](https://github.com/OpenAudio/go-openaudio/commit/88444d51a5b0b966a819f9fb22e9648766ee11cc))
* **etl:** canonicalize playlist_contents entry keys on write ([#321](https://github.com/OpenAudio/go-openaudio/issues/321)) ([35ad422](https://github.com/OpenAudio/go-openaudio/commit/35ad422c0f2753c33f9b709dc91bcab626aac9a9))
* **etl:** comment threading guards (parity 5C) ([#251](https://github.com/OpenAudio/go-openaudio/issues/251)) ([56db895](https://github.com/OpenAudio/go-openaudio/commit/56db89571b49d79008885fc01cb81daac7c8f3ce))
* **etl:** count runes not bytes in name/bio/handle/description limits ([#340](https://github.com/OpenAudio/go-openaudio/issues/340)) ([7062cd9](https://github.com/OpenAudio/go-openaudio/commit/7062cd90dff56af681d738cad9c5cee2958e0445))
* **etl:** default release_date to created_at when unset (python parity) ([#333](https://github.com/OpenAudio/go-openaudio/issues/333)) ([959f1c7](https://github.com/OpenAudio/go-openaudio/commit/959f1c7db8e05178177afccd2f8bd2ada2ce3080))
* **etl:** drop incompatible developer_apps UNIQUE(address) + auto-seed block in tests ([#302](https://github.com/OpenAudio/go-openaudio/issues/302)) ([6885f9a](https://github.com/OpenAudio/go-openaudio/commit/6885f9a011f3df661086ad20ac330fb5f46d1a7b))
* **etl:** four prod-clone-run bugs + [#307](https://github.com/OpenAudio/go-openaudio/issues/307) test fixes folded in ([#308](https://github.com/OpenAudio/go-openaudio/issues/308)) ([4e0c89b](https://github.com/OpenAudio/go-openaudio/commit/4e0c89bce96b3043e7d6c99306438dafd8a7bb42))
* **etl:** halt on block indexing failure ([#323](https://github.com/OpenAudio/go-openaudio/issues/323)) ([819100b](https://github.com/OpenAudio/go-openaudio/commit/819100b28c94215b609c02f97c7338738bc1d4f1))
* **etl:** let a grant's grantee revoke their own user-to-user grant ([#360](https://github.com/OpenAudio/go-openaudio/issues/360)) ([5edfdf3](https://github.com/OpenAudio/go-openaudio/commit/5edfdf36a895d1a8a33e2416fffd3d30cac498e5))
* **etl:** normalize empty playlist_contents on update (apps[#14306](https://github.com/OpenAudio/go-openaudio/issues/14306) parity) ([#265](https://github.com/OpenAudio/go-openaudio/issues/265)) ([a8016e9](https://github.com/OpenAudio/go-openaudio/commit/a8016e9e1661ec5344d3d0d29a1346f7dd190c69))
* **etl:** persist dev-app image_url; rune-count video_url/redirect_uri ([#350](https://github.com/OpenAudio/go-openaudio/issues/350)) ([bda0b8b](https://github.com/OpenAudio/go-openaudio/commit/bda0b8b592f56289e4c397bdb063456a7e41743f))
* **etl:** persist dropped track + comment fields on write ([#343](https://github.com/OpenAudio/go-openaudio/issues/343)) ([c5fcacf](https://github.com/OpenAudio/go-openaudio/commit/c5fcacffbb7973b5dfe38912d529c6db4f591aca))
* **etl:** persist social links on user create/update ([#341](https://github.com/OpenAudio/go-openaudio/issues/341)) ([4cccb46](https://github.com/OpenAudio/go-openaudio/commit/4cccb46f1332d59e0913533c5fd303b2ca9073ec))
* **etl:** persist track bpm/musical_key/audio_upload_id (python parity) ([#334](https://github.com/OpenAudio/go-openaudio/issues/334)) ([dca79f0](https://github.com/OpenAudio/go-openaudio/commit/dca79f0306394816a56955677dd839bdb9fad3e2))
* **etl:** playlist_seen PK, ErrNoRows on soft-deleted rows, attribute dispatch errors ([#310](https://github.com/OpenAudio/go-openaudio/issues/310)) ([77cfaee](https://github.com/OpenAudio/go-openaudio/commit/77cfaee95650c3fed5b6edfb1e1a9a15a697e784))
* **etl:** populate playlists.last_added_to on track add ([#348](https://github.com/OpenAudio/go-openaudio/issues/348)) ([e8586ac](https://github.com/OpenAudio/go-openaudio/commit/e8586ac9ce16a9cd9dc7aa414c6c901186261513))
* **etl:** scan custom Postgres enums + dedup repeat tx inserts ([#305](https://github.com/OpenAudio/go-openaudio/issues/305)) ([f832a89](https://github.com/OpenAudio/go-openaudio/commit/f832a89abd1732bde62155d496d9bffb7ebea74d))
* **etl:** tolerate co-existing writers + process each block atomically ([#319](https://github.com/OpenAudio/go-openaudio/issues/319)) ([6ea0f10](https://github.com/OpenAudio/go-openaudio/commit/6ea0f10200acb802e6194b25a2b58c4b6b12131e))
* **etl:** tolerate timezone-less release_date formats ([#332](https://github.com/OpenAudio/go-openaudio/issues/332)) ([5ed068b](https://github.com/OpenAudio/go-openaudio/commit/5ed068b34326998e3c9ce8757ba523d106ebd817))
* **etl:** upsert explicit subscription writes (root cause of dupes) ([#335](https://github.com/OpenAudio/go-openaudio/issues/335)) ([5d2e19a](https://github.com/OpenAudio/go-openaudio/commit/5d2e19ad9d7849bd2c426de062e3079e2c2a1270))
* **mediorum:** avoid blocked replication pipe goroutines ([#336](https://github.com/OpenAudio/go-openaudio/issues/336)) ([8b7cd74](https://github.com/OpenAudio/go-openaudio/commit/8b7cd74ad3ba39b2f980ef60479976b8fb4b66f7))
* **mediorum:** bound audio analysis backlog scans ([#274](https://github.com/OpenAudio/go-openaudio/issues/274)) ([689709e](https://github.com/OpenAudio/go-openaudio/commit/689709edc3774b6c2f0069186749d23b902515bd))


### Performance Improvements

* **etl:** index route (owner_id, title_slug) for slug-collision lookups ([#337](https://github.com/OpenAudio/go-openaudio/issues/337)) ([43606e8](https://github.com/OpenAudio/go-openaudio/commit/43606e8d8e5aac580b9665c4deefdcfac0852cae))
* **etl:** stop maintaining blocks is_current ([#330](https://github.com/OpenAudio/go-openaudio/issues/330)) ([ea6c925](https://github.com/OpenAudio/go-openaudio/commit/ea6c925d2455b7615c3070ed455d743686de21a0))
* **etl:** upsert social writes in place instead of demote-then-insert ([#331](https://github.com/OpenAudio/go-openaudio/issues/331)) ([24084d2](https://github.com/OpenAudio/go-openaudio/commit/24084d2bf30baaef46baed6728d5c65df4709850))


### Code Refactoring

* **etl:** tighten track_collaborators reconcile ([#346](https://github.com/OpenAudio/go-openaudio/issues/346)) ([3904b9d](https://github.com/OpenAudio/go-openaudio/commit/3904b9d7046c9fa453d201736907709bc7469a13))

## [1.3.0](https://github.com/OpenAudio/go-openaudio/compare/v1.2.14...v1.3.0) (2026-05-19)


Expand Down
48 changes: 48 additions & 0 deletions pkg/etl/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Changelog

## [1.4.0](https://github.com/OpenAudio/go-openaudio/compare/pkg/etl/v1.3.0...pkg/etl/v1.4.0) (2026-06-15)


### Features

* **etl:** add event_routes for contest permalink support ([#354](https://github.com/OpenAudio/go-openaudio/issues/354)) ([97ccec3](https://github.com/OpenAudio/go-openaudio/commit/97ccec32c1c62f6bd0f8c0aee68191cafbad6523))
* **etl:** add TrackCollaborator to the entity manager spec ([#345](https://github.com/OpenAudio/go-openaudio/issues/345)) ([550356d](https://github.com/OpenAudio/go-openaudio/commit/550356d6fdf88301678fccf59ee0e2a2562c0488))
* **etl:** auto-subscribe uploader to remix-contest event on Track Create ([#311](https://github.com/OpenAudio/go-openaudio/issues/311)) ([1b70465](https://github.com/OpenAudio/go-openaudio/commit/1b70465de8b7d45ccec45e9d38d04e34a9a5e2f6))
* **etl:** comments.is_members_only + video_url for fan club text posts ([#312](https://github.com/OpenAudio/go-openaudio/issues/312)) ([3b99954](https://github.com/OpenAudio/go-openaudio/commit/3b99954f85383b3066a10c95b7312ad7653bcae6))
* **etl:** consume blocks via gRPC StreamBlocks with catch-up + fallback ([#342](https://github.com/OpenAudio/go-openaudio/issues/342)) ([aee578e](https://github.com/OpenAudio/go-openaudio/commit/aee578ec923b789a8c97b361642659a458473313))
* **etl:** let a collaborator leave a track after accepting ([#349](https://github.com/OpenAudio/go-openaudio/issues/349)) ([22066c3](https://github.com/OpenAudio/go-openaudio/commit/22066c3521d3f6d60578e7f879899689bbc6b58d))
* **etl:** post-handler hooks for User/Track/Playlist Create + generic registry ([#317](https://github.com/OpenAudio/go-openaudio/issues/317)) ([1c75995](https://github.com/OpenAudio/go-openaudio/commit/1c7599596a27e376d7e374a7543b8a5abe826a76))
* **etl:** post-write hook for Plays transactions ([#322](https://github.com/OpenAudio/go-openaudio/issues/322)) ([4d1c9df](https://github.com/OpenAudio/go-openaudio/commit/4d1c9dfdfb529bad111e03a3d10221c25b48677f))


### Bug Fixes

* **etl:** canonicalize playlist_contents entry keys on write ([#321](https://github.com/OpenAudio/go-openaudio/issues/321)) ([35ad422](https://github.com/OpenAudio/go-openaudio/commit/35ad422c0f2753c33f9b709dc91bcab626aac9a9))
* **etl:** count runes not bytes in name/bio/handle/description limits ([#340](https://github.com/OpenAudio/go-openaudio/issues/340)) ([7062cd9](https://github.com/OpenAudio/go-openaudio/commit/7062cd90dff56af681d738cad9c5cee2958e0445))
* **etl:** default release_date to created_at when unset (python parity) ([#333](https://github.com/OpenAudio/go-openaudio/issues/333)) ([959f1c7](https://github.com/OpenAudio/go-openaudio/commit/959f1c7db8e05178177afccd2f8bd2ada2ce3080))
* **etl:** drop incompatible developer_apps UNIQUE(address) + auto-seed block in tests ([#302](https://github.com/OpenAudio/go-openaudio/issues/302)) ([6885f9a](https://github.com/OpenAudio/go-openaudio/commit/6885f9a011f3df661086ad20ac330fb5f46d1a7b))
* **etl:** four prod-clone-run bugs + [#307](https://github.com/OpenAudio/go-openaudio/issues/307) test fixes folded in ([#308](https://github.com/OpenAudio/go-openaudio/issues/308)) ([4e0c89b](https://github.com/OpenAudio/go-openaudio/commit/4e0c89bce96b3043e7d6c99306438dafd8a7bb42))
* **etl:** halt on block indexing failure ([#323](https://github.com/OpenAudio/go-openaudio/issues/323)) ([819100b](https://github.com/OpenAudio/go-openaudio/commit/819100b28c94215b609c02f97c7338738bc1d4f1))
* **etl:** let a grant's grantee revoke their own user-to-user grant ([#360](https://github.com/OpenAudio/go-openaudio/issues/360)) ([5edfdf3](https://github.com/OpenAudio/go-openaudio/commit/5edfdf36a895d1a8a33e2416fffd3d30cac498e5))
* **etl:** persist dev-app image_url; rune-count video_url/redirect_uri ([#350](https://github.com/OpenAudio/go-openaudio/issues/350)) ([bda0b8b](https://github.com/OpenAudio/go-openaudio/commit/bda0b8b592f56289e4c397bdb063456a7e41743f))
* **etl:** persist dropped track + comment fields on write ([#343](https://github.com/OpenAudio/go-openaudio/issues/343)) ([c5fcacf](https://github.com/OpenAudio/go-openaudio/commit/c5fcacffbb7973b5dfe38912d529c6db4f591aca))
* **etl:** persist social links on user create/update ([#341](https://github.com/OpenAudio/go-openaudio/issues/341)) ([4cccb46](https://github.com/OpenAudio/go-openaudio/commit/4cccb46f1332d59e0913533c5fd303b2ca9073ec))
* **etl:** persist track bpm/musical_key/audio_upload_id (python parity) ([#334](https://github.com/OpenAudio/go-openaudio/issues/334)) ([dca79f0](https://github.com/OpenAudio/go-openaudio/commit/dca79f0306394816a56955677dd839bdb9fad3e2))
* **etl:** playlist_seen PK, ErrNoRows on soft-deleted rows, attribute dispatch errors ([#310](https://github.com/OpenAudio/go-openaudio/issues/310)) ([77cfaee](https://github.com/OpenAudio/go-openaudio/commit/77cfaee95650c3fed5b6edfb1e1a9a15a697e784))
* **etl:** populate playlists.last_added_to on track add ([#348](https://github.com/OpenAudio/go-openaudio/issues/348)) ([e8586ac](https://github.com/OpenAudio/go-openaudio/commit/e8586ac9ce16a9cd9dc7aa414c6c901186261513))
* **etl:** scan custom Postgres enums + dedup repeat tx inserts ([#305](https://github.com/OpenAudio/go-openaudio/issues/305)) ([f832a89](https://github.com/OpenAudio/go-openaudio/commit/f832a89abd1732bde62155d496d9bffb7ebea74d))
* **etl:** tolerate co-existing writers + process each block atomically ([#319](https://github.com/OpenAudio/go-openaudio/issues/319)) ([6ea0f10](https://github.com/OpenAudio/go-openaudio/commit/6ea0f10200acb802e6194b25a2b58c4b6b12131e))
* **etl:** tolerate timezone-less release_date formats ([#332](https://github.com/OpenAudio/go-openaudio/issues/332)) ([5ed068b](https://github.com/OpenAudio/go-openaudio/commit/5ed068b34326998e3c9ce8757ba523d106ebd817))
* **etl:** upsert explicit subscription writes (root cause of dupes) ([#335](https://github.com/OpenAudio/go-openaudio/issues/335)) ([5d2e19a](https://github.com/OpenAudio/go-openaudio/commit/5d2e19ad9d7849bd2c426de062e3079e2c2a1270))


### Performance Improvements

* **etl:** index route (owner_id, title_slug) for slug-collision lookups ([#337](https://github.com/OpenAudio/go-openaudio/issues/337)) ([43606e8](https://github.com/OpenAudio/go-openaudio/commit/43606e8d8e5aac580b9665c4deefdcfac0852cae))
* **etl:** stop maintaining blocks is_current ([#330](https://github.com/OpenAudio/go-openaudio/issues/330)) ([ea6c925](https://github.com/OpenAudio/go-openaudio/commit/ea6c925d2455b7615c3070ed455d743686de21a0))
* **etl:** upsert social writes in place instead of demote-then-insert ([#331](https://github.com/OpenAudio/go-openaudio/issues/331)) ([24084d2](https://github.com/OpenAudio/go-openaudio/commit/24084d2bf30baaef46baed6728d5c65df4709850))


### Code Refactoring

* **etl:** tighten track_collaborators reconcile ([#346](https://github.com/OpenAudio/go-openaudio/issues/346)) ([3904b9d](https://github.com/OpenAudio/go-openaudio/commit/3904b9d7046c9fa453d201736907709bc7469a13))
Loading
Loading