Skip to content

v0.19.0 — SFX playlists are flat, playlist-sourced banks removed - #17

Merged
this-fifo merged 1 commit into
masterfrom
feat/flat-sfx-playlists
Jul 28, 2026
Merged

v0.19.0 — SFX playlists are flat, playlist-sourced banks removed#17
this-fifo merged 1 commit into
masterfrom
feat/flat-sfx-playlists

Conversation

@this-fifo

Copy link
Copy Markdown
Member

Why

createSoundBank({ playlist_id = ... }) shipped in v0.18.0 and never worked in practice.

An unlabelled sound became its own slot, so a flat playlist resolved to pools of exactly one — pick had nothing to choose between. And every real SFX playlist is flat: across the catalog only two ever carried a slot label, both tests. Developers organise by having more than one playlist — ObbySounds: Hits, LittleMonsters-Vocalizations, BigScreech — where the playlist name is the role. The slot layer duplicated the container above it.

Variation for a single sound is what Audio Packs are for: layers with per-variation gain, cuts and fades.

Removed

  • createSoundBank({ playlist_id = ... }) and the _resolveFromPlaylist path
  • PlaylistSlot type and PlaylistInfo.slots
  • PlaylistSound.label

seeds is now the only sound-bank source. Seed-based banks are unchanged — expanding one asset into a pool of catalog neighbours is untouched, and remains the runtime answer to the machine-gun effect.

Integration coverage

The Open Cloud smoke keeps both halves under test against the real API and the real engine:

  • getPlaylist (sfx) asserts playlist.slots == nil and that no sound carries a label — a regression that reintroduces grouping fails here rather than silently returning a shape nobody reads.
  • createSoundBank (playlist source removed) asserts the removed option is genuinely rejected, then exercises what replaces it: read an SFX playlist, seed a bank from one of its sounds, resolve against the live catalog, and pick 20 times without an immediate repeat.

Verification

Full CI gauntlet run locally: stylua --check, selene (0 errors, 0 warnings), luau-lsp analyze (0 parse errors), 21 unit specs pass, and the wally package --list snapshot matches tests/wally-package.expected.txt.

The install-snippet spec caught the README version pin during the bump, which is what it's for.

`createSoundBank({ playlist_id = ... })` is gone, along with the `slots` field
on the playlist response and the `label` field on each playlist sound.

The slot layer was never used. Across the whole catalog only two playlists ever
carried a slot label and both were tests — every real SFX playlist is flat, and
organises by having more than one playlist ("ObbySounds: Hits",
"LittleMonsters-Vocalizations", "BigScreech"), where the playlist name is the
role. The mode was also inert by construction: an unlabelled sound became its
own slot, so a flat playlist resolved to pools of exactly one and `pick` had
nothing to choose between.

Variation for a single sound is what Audio Packs are for — layers with
per-variation gain, cuts and fades.

Seed-based banks are unchanged and remain the way to expand one asset into a
pool of neighbours.

The Open Cloud smoke keeps integration coverage on both halves: it asserts the
`slots` field is genuinely absent (a regression would bring it back) and that
the replacement path works end to end — read an SFX playlist, seed a bank from
one of its sounds, resolve it against the real catalog and pick without repeats.
@this-fifo
this-fifo temporarily deployed to openCloud-smoke July 28, 2026 22:07 — with GitHub Actions Inactive
@this-fifo
this-fifo merged commit 101be72 into master Jul 28, 2026
2 checks passed
@this-fifo
this-fifo deleted the feat/flat-sfx-playlists branch July 28, 2026 22:21
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