Skip to content

v0.22.0 — seed lists on similar/sfxSimilar; remotes honour max_score/dedupe - #22

Merged
this-fifo merged 2 commits into
masterfrom
feat/similar-asset-ids
Sep 17, 2026
Merged

this-fifo merged 2 commits into
masterfrom
feat/similar-asset-ids

Conversation

@this-fifo

Copy link
Copy Markdown
Member

Summary

AudioScape:similar and AudioScape:sfxSimilar (and the AudioScapeClient mirrors) accept a list of seeds — an array of anything the single-seed form accepts (asset_id string, Track, Sound, AudioPlayer), or { asset_ids = { ... }, limit = ... }. Results sound like the set as a whole: playlist continuation for music, variety packs for SFX.

local result = AudioScape:similar(playlist.tracks, { limit = 20 })
-- result.meta.seeds_used     -- seeds that resolved and were blended
-- result.meta.seeds_ignored  -- ids skipped: unknown, not yet analyzed, or not public

Up to 100 seeds; seeds are never returned. The list ships as one comma-separated asset_ids query parameter.

Also fixed: the Similar / SfxSimilar RemoteFunctions dropped the client's max_score and dedupe, so near-duplicate filtering never applied to client-initiated calls.

Details

  • resolveSeedIds runs before resolveAssetId. Track tables, Sounds and AudioPlayers never enter the list arm, so existing single-seed calls are unchanged.
  • Types: SimilarInput / SfxSimilarInput, SimilarOptions.asset_ids, SimilarResult.meta.seeds_used / seeds_ignored (and the SFX twins); max_score / dedupe added to the options-table types.
  • README and CHANGELOG updated; wally.toml 0.22.0.

Checks

StyLua, selene, luau-lsp analyze, wally package --list, and all 23 Lune specs pass (7 new cases: string / Track / options-table lists, a bad element named by index, an empty list). The Open Cloud smoke runs on environment approval.

After merge: tag v0.22.0 (release workflow builds the .rbxm), then wally publish.

AudioScape:similar and AudioScape:sfxSimilar (and their AudioScapeClient
mirrors) accept a list of seeds — an array of anything the single-seed form
accepts, or `{ asset_ids = { ... }, limit = ... }` — and send it to the API
as one `asset_ids` CSV. Results sound like the set as a whole; seeds are
never returned. `result.meta.seeds_used` / `seeds_ignored` report which
seeds the API blended and which it skipped.

- resolveSeedIds runs before resolveAssetId; Track tables, Sounds and
  AudioPlayers never enter the list arm, so existing calls are unchanged.
- Similar / SfxSimilar remotes accept `asset_ids` alongside `asset_id`.
- Lune specs for string / Track / options-table lists, bad element,
  empty list.
AudioScapeClient.similar / sfxSimilar sent both fields, but the server-side
remotes rebuilt the options table without them, so client-initiated calls
never filtered near-duplicates. SimilarOptions / SfxSimilarOptions gain the
two fields the legacy options-table form already accepted at runtime.
@this-fifo
this-fifo deployed to openCloud-smoke September 17, 2026 00:48 — with GitHub Actions Active
@this-fifo
this-fifo merged commit 2cd6fad into master Sep 17, 2026
2 checks passed

This branch was successfully deployed

1 active deployment
openCloud-smoke — de3ff9bd Deployed Sep 17, 2026 by this-fifo via openCloud smoke #39
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