Skip to content

Release 2026.06.17#96

Merged
Bentroen merged 23 commits into
mainfrom
develop
Jun 17, 2026
Merged

Release 2026.06.17#96
Bentroen merged 23 commits into
mainfrom
develop

Conversation

@Bentroen

Copy link
Copy Markdown
Member

Features

Bentroen and others added 23 commits June 14, 2026 19:59
…mismatch

Two changes fix this at the root and make the test more meaningful.

### 1. Externalize `@encode42/nbs.js` in the `@nbw/song` node build

`packages/song/scripts/build.ts` was bundling `@encode42/nbs.js` into `dist/index.node.js`, so `loadNbsFromBuffer` returned a `Song` from a **different** constructor than the one imported directly in the backend test.

Adding `external: ['@encode42/nbs.js']` to the node build makes the built package import from the shared `node_modules` copy instead. After rebuilding:

```
same constructor: true
```

### 2. Stronger test assertions

Removed the misleading TODO and added checks on the actual song data:

```ts
expect(song).toBeInstanceOf(Song);
expect(song.meta.name).toBe('Cool Test Song');
expect(song.length).toBe(16);
expect(song.layers).toHaveLength(3);
```

Both `getSongObject` tests pass now. The browser build is unchanged (it still bundles `nbs.js`, which is fine for the frontend).
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
We currently implicitly expect all songs on the website to have been generated with Note Block Studio, which will save songs with either 16 or 20 default instruments since the first NBS format upgrade. If a custom-generated song is uploaded that contains fewer instruments, the song normalization should coerce it to have one of these instrument counts. The database allowed any integer to be in this field, though, which is fine. However, in the case this coercion process fails, we would like an extra safeguard so it fails 'early' before the suspicious document is persisted to the database.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Prevents web crawling on non-production deployments.
The field `firstCustomInstrumentIndex` already exists which serves the same purpose.
@railway-app railway-app Bot temporarily deployed to Note Block World / NoteBlockWorld-pr-96 June 17, 2026 05:10 Destroyed
@railway-app

railway-app Bot commented Jun 17, 2026

Copy link
Copy Markdown

🚅 Deployed to the NoteBlockWorld-pr-96 environment in Note Block World

Service Status Web Updated (UTC)
Next.js frontend Bun 🕛 Waiting for status checks (View Logs) Web Jun 17, 2026 at 5:10 am
Nest.js API Bun 🕛 Waiting for status checks (View Logs) Web Jun 17, 2026 at 5:10 am

@Bentroen Bentroen merged commit eb820b0 into main Jun 17, 2026
8 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