Skip to content

Release packages - #174

Merged
nulltask merged 63 commits into
mainfrom
devel
Aug 18, 2026
Merged

Release packages#174
nulltask merged 63 commits into
mainfrom
devel

Conversation

@nulltask

Copy link
Copy Markdown
Owner

Release PR for the packages versioned by pnpm run release:version on devel.

Versions

package version
@be-music/player 0.5.0 → 0.6.0 (minor)
@be-music/player-web 0.6.2 → 0.7.0 (minor)
@be-music/player-tui 0.3.0 → 0.4.0 (minor)
@be-music/lr2-skin 0.1.4 → 0.1.5 (patch)
@be-music/player-web-demo 0.3.1 → 0.3.2 (patch, private)

Highlights

  • Play-log recording and replay simulation — the new @be-music/player/playlog subpath records each play as an input replay (resolved chart + raw press/release stream + play settings) and re-derives LR2 / beatoraja / IIDX judgments, EX-SCORE, max combo, money score, and groove gauge from it. See docs/playlog.md.
  • Replay playback — dropping a *.bmplay.json onto the browser player replays the recorded run against the matching chart (matched by chart-file SHA-256), re-applying the recorded lane arrangement so shuffled plays reproduce exactly.
  • Switchable live judge windowsPlayerOptions.judgeRuleset selects LR2 (default) / beatoraja / IIDX window widths, recorded into the play-log and restored on replay.
  • bms-playlog CLI (@be-music/player-tui) — re-derives every ruleset's result from a recorded play-log offline.
  • isolated-declarations fix for public const types in @be-music/lr2-skin and @be-music/player-web.
  • node-web-audio-api runtime dependency bumped to 2.2.0 for @be-music/player.

Toolchain-only changes in this range (no changeset by design): Node 26 upgrade, TypeScript 7.0.2 stable, and the usual devDependency bumps.

Verification

  • pnpm run build / pnpm typecheck / pnpm lint clean
  • pnpm test — 147 files, 1877 tests passing
  • pnpm run bench — 263 exports covered (CI benchmark job repaired in 92e2c1a)

Merging this PR publishes the bumped packages and creates their GitHub Releases.

dependabot Bot and others added 30 commits June 14, 2026 02:33
Bumps [@cloudflare/workers-types](https://github.com/cloudflare/workerd) from 4.20260611.1 to 4.20260613.1.
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)

---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
  dependency-version: 4.20260613.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@typescript/native-preview](https://github.com/microsoft/typescript-go) from 7.0.0-dev.20260611.2 to 7.0.0-dev.20260613.1.
- [Changelog](https://github.com/microsoft/typescript-go/blob/main/CHANGES.md)
- [Commits](https://github.com/microsoft/typescript-go/commits)

---
updated-dependencies:
- dependency-name: "@typescript/native-preview"
  dependency-version: 7.0.0-dev.20260613.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…are/workers-types-4.20260613.1

chore(deps-dev): bump @cloudflare/workers-types from 4.20260611.1 to 4.20260613.1
…ipt/native-preview-7.0.0-dev.20260613.1

chore(deps-dev): bump @typescript/native-preview from 7.0.0-dev.20260611.2 to 7.0.0-dev.20260613.1
….0 RC

TypeScript 7.0 ships under the `typescript` package on the `rc` tag
(7.0.1-rc) instead of the separate `@typescript/native-preview` package,
and the binary is the standard `tsc` again rather than `tsgo`.

- Swap the root devDependency to `typescript@7.0.1-rc`
- Point every package's `typecheck` script at `tsc`
- Allow the TS7 RC via `pnpm.peerDependencyRules` so tsdown /
  rolldown-plugin-dts no longer warn about the optional peer range
- Drop the now-unused `tsgo` cSpell entry

Verified with lint, typecheck, build, and test.
chore(deps-dev): replace @typescript/native-preview with typescript 7.0 RC
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) from 1.69.0 to 1.70.0.
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.70.0/npm/oxlint)

---
updated-dependencies:
- dependency-name: oxlint
  dependency-version: 1.70.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler) from 4.100.0 to 4.103.0.
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.103.0/packages/wrangler)

---
updated-dependencies:
- dependency-name: wrangler
  dependency-version: 4.103.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…ns/checkout-7

chore(deps): bump actions/checkout from 6 to 7
…1.70.0

chore(deps-dev): bump oxlint from 1.69.0 to 1.70.0
…r-4.103.0

chore(deps-dev): bump wrangler from 4.100.0 to 4.103.0
Bumps [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) from 0.54.0 to 0.57.0.
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.57.0/npm/oxfmt)

---
updated-dependencies:
- dependency-name: oxfmt
  dependency-version: 0.55.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
….55.0

chore(deps-dev): bump oxfmt from 0.54.0 to 0.57.0
Bumps [@cloudflare/workers-types](https://github.com/cloudflare/workerd) from 4.20260613.1 to 5.20260707.1.
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)

---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
  dependency-version: 5.20260707.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [tsx](https://github.com/privatenumber/tsx) from 4.22.4 to 4.23.0.
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](privatenumber/tsx@v4.22.4...v4.23.0)

---
updated-dependencies:
- dependency-name: tsx
  dependency-version: 4.23.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) from 1.70.0 to 1.73.0.
- [Release notes](https://github.com/oxc-project/oxc/releases)
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md)
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.73.0/npm/oxlint)

---
updated-dependencies:
- dependency-name: oxlint
  dependency-version: 1.73.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…ns compatible

tsdown 0.22.3 (rolldown-plugin-dts 0.26.0) rejects `as const satisfies ...`
on declaration-emitting consts with TS9010 under isolated declarations.
Annotate LR2_PLAY_VARIANTS explicitly and keep plain `as const` where the
literal types are load-bearing (LR2_SKIN_INFORMATION_TYPE,
BEATORAJA_PLAYABLE_VARIANTS).
…1.73.0

chore(deps-dev): bump oxlint from 1.70.0 to 1.73.0
chore(deps-dev): bump tsx from 4.22.4 to 4.23.0
…are/workers-types-5.20260707.1

chore(deps-dev): bump @cloudflare/workers-types from 4.20260613.1 to 5.20260707.1
Bumps [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler) from 4.103.0 to 4.107.0.
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.107.0/packages/wrangler)

---
updated-dependencies:
- dependency-name: wrangler
  dependency-version: 4.107.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.0.16 to 8.1.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.3/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.1.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
chore(deps-dev): bump vite from 8.0.16 to 8.1.3
…r-4.107.0

chore(deps-dev): bump wrangler from 4.103.0 to 4.107.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
dependabot Bot and others added 26 commits August 9, 2026 02:33
Bumps [tsx](https://github.com/privatenumber/tsx) from 4.23.0 to 4.23.8.
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](privatenumber/tsx@v4.23.0...v4.23.8)

---
updated-dependencies:
- dependency-name: tsx
  dependency-version: 4.23.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…b-audio-api-2.1.0

chore(deps): bump node-web-audio-api from 2.0.0 to 2.1.0
…1.77.0

chore(deps-dev): bump oxlint from 1.73.0 to 1.77.0
chore(deps-dev): bump tsx from 4.23.0 to 4.23.8
…ets/cli-2.31.1

chore(deps-dev): bump @changesets/cli from 2.31.0 to 2.31.1
Bumps [tsdown](https://github.com/rolldown/tsdown) from 0.22.3 to 0.22.14.
- [Release notes](https://github.com/rolldown/tsdown/releases)
- [Commits](rolldown/tsdown@v0.22.3...v0.22.14)

---
updated-dependencies:
- dependency-name: tsdown
  dependency-version: 0.22.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…0.22.14

chore(deps-dev): bump tsdown from 0.22.3 to 0.22.14
Bumps [node-web-audio-api](https://github.com/ircam-ismm/node-web-audio-api) from 2.1.0 to 2.2.0.
- [Changelog](https://github.com/ircam-ismm/node-web-audio-api/blob/main/CHANGELOG.md)
- [Commits](ircam-ismm/node-web-audio-api@v2.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: node-web-audio-api
  dependency-version: 2.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [tsx](https://github.com/privatenumber/tsx) from 4.23.8 to 4.23.12.
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](privatenumber/tsx@v4.23.8...v4.23.12)

---
updated-dependencies:
- dependency-name: tsx
  dependency-version: 4.23.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [tinybench](https://github.com/tinylibs/tinybench) from 6.0.2 to 6.1.3.
- [Release notes](https://github.com/tinylibs/tinybench/releases)
- [Commits](tinylibs/tinybench@v6.0.2...v6.1.3)

---
updated-dependencies:
- dependency-name: tinybench
  dependency-version: 6.1.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@cloudflare/workers-types](https://github.com/cloudflare/workerd) from 5.20260707.1 to 5.20260813.1.
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)

---
updated-dependencies:
- dependency-name: "@cloudflare/workers-types"
  dependency-version: 5.20260813.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…ch-6.1.3

chore(deps-dev): bump tinybench from 6.0.2 to 6.1.3
…3.12

chore(deps-dev): bump tsx from 4.23.8 to 4.23.12
…b-audio-api-2.2.0

chore(deps): bump node-web-audio-api from 2.1.0 to 2.2.0
…are/workers-types-5.20260813.1

chore(deps-dev): bump @cloudflare/workers-types from 5.20260707.1 to 5.20260813.1
Record every play as a be-music-playlog input replay (resolved chart, raw
press/release stream, play settings) via new PlayerOptions.onPlaylogRecorded /
recordPlaylog engine hooks. The @be-music/player/playlog subpath ships the
format, defensive parser, recorder, and per-ruleset simulators that re-derive
judgments, EX-SCORE, max combo, money score, and groove gauge from the same
inputs. The web player exposes the recorded log on both gameplay scenes and
the demo auto-downloads it when the result scene mounts (lil-gui toggle,
default ON). player-tui gains the bms-playlog CLI for offline re-simulation.
Pin .node-version to 26.7.0, raise engines.node to >=26, and move the
tsdown and SEA build targets from node25 to node26. Bump @types/node to
26.x and update the Node version stated in both READMEs and the
build-sea CLI help and error messages.
PlayerOptions.replayInputs re-drives a recorded input stream deterministically
inside manualPlay — each event fires at its exact chart-relative microsecond
timestamp while live lane input is ignored. The LR2/default gameplay scene
accepts a play-log via PixiGameplayViewOptions.replay and re-applies the
recorded note arrangement onto the freshly prepared chart
(applyPlaylogArrangement), so RANDOM / MIRROR runs replay without re-rolling;
mismatched #RANDOM control flow fails the prepare instead of replaying a
wrong chart. The demo starts a replay when a *.bmplay.json file is dropped
and the matching song is loaded (chartPath match first, title/artist
fallback), and replays record no new play-log.

The Debug Menu's playlog option is now latched at song start and its
controller is disabled during a play — mid-song changes no longer apply.
…ay options

The playlog stamps the source chart file's SHA-256 (chart.sha256, format
version unchanged) and dropped logs match by hash first, then chartPath,
then title/artist. PlayerOptions.judgeRuleset switches the live judge
windows between LR2 (default), beatoraja (judgerank-scaled SEVENKEYS), and
IIDX (fixed widths) — window widths only, recorded as play.judgeRuleset and
re-applied by replays; dynamic #EXRANKxx stays LR2-only.

The demo's Debug Menu gains a Play options folder (auto play, judge windows,
gauge, random 1P/2P, DP flip, auto scratch) that two-way syncs with the LR2
select scene's PLAY OPTION panel, feeds every gameplay family, and is
latched at song start — all controls are disabled while a song is playing.
Bumps the root devDependency off the 7.0.1 release candidate onto the
stable 7.0.2 release and drops the pnpm peerDependencyRules exception it
needed: the RC was a prerelease, so it never satisfied the tsdown /
rolldown-plugin-dts `~7.0.0` peer ranges without an explicit allowance,
while 7.0.2 matches them directly.

Also refreshes the stale `@typescript/native-preview` example in the
changeset rules — that package was replaced by `typescript` 7 in 2b10f2a.
The exports benchmark validates that every exported function has a case, so
the playlog serializer re-exports (serializePlaylog / parsePlaylog /
resolvePlaylogFilename) and the chart-hash helpers (computeChartFileSha256 /
computeSha256Hex) added in ab210cb and e96d7fa failed the CI benchmark job
with "Missing benchmark cases".
…config

Typecheck and the exports benchmark both run against sources without a prior
build, resolving cross-package subpaths through tsconfig.typecheck.json's
`paths`. The playlog subpath added in ab210cb had no mapping, so both jobs
fell back to the package's `exports` `types` / `default` entries and failed
on the missing `packages/player/dist/playlog.*` — locally they passed only
because a previous build had populated dist.

Verified with dist removed: `pnpm typecheck` and `pnpm run bench` both pass.
The benchmark compare jobs restored their base64 snapshots by handing them to
`node -e` as a command-line argument. Linux caps a single argv entry at
`MAX_ARG_STRLEN` (128 KiB), and the snapshot crossed that once the benchmarked
export count grew (133,928 base64 bytes at fd01a56), so every compare job died
with `node: Argument list too long` and exit 126. macOS has no per-argument
cap, which is why it only reproduced on the runners.

All four restore steps now take the snapshot from the step environment and
decode it off stdin via the `printf` builtin, so the payload is never attached
to an exec. Job outputs still cap at 1 MiB, leaving ample headroom.
…s the playlog subpath for Vite

Two remaining CI failures, same underlying shape — a payload or a module the
job could not reach.

Benchmark compare jobs: the base64 snapshot was handed over as a job output and
then materialized on the command line, which died with `Argument list too long`
once the snapshot passed 128 KiB. Routing it through the step environment hit
the same wall, because `MAX_ARG_STRLEN` caps every argv AND envp string — the
runner could no longer even spawn bash. The snapshot now travels as an
upload/download-artifact pair, which has no such ceiling; the base uploads carry
the aggregate step's availability guard so a PR whose base lacks the bench
script still skips cleanly instead of failing `if-no-files-found: error`.

Cloudflare Workers Builds: the demo's Vite build resolves workspace subpaths
through the alias table in vite.config.ts and runs without a prior workspace
build, so `@be-music/player/playlog` had nothing to resolve to and rolldown
failed the build. Added the missing alias — the third and last resolution map
that enumerates player subpaths (vitest.config.ts and tsconfig.typecheck.json
were the earlier two).

Verified with dist removed: the demo build succeeds, and a two-run bench +
aggregate + compare rehearsal reproduces the CI pipeline end to end.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 17, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
🚫 Deployment cancelled
View logs
be-music-player-demo dc51b63 Aug 17 2026, 05:37 PM

The benchmark comparison itself succeeded, then `Post benchmark comment` died
on a GitHub API 503 during a platform incident, failing the whole job for a
result that had already been computed. `actions/github-script` defaults to zero
retries; its retry list already exempts 400/401/403/404/422, so a missing
permission or bad payload still fails immediately rather than being retried
into a timeout.
@github-actions

Copy link
Copy Markdown

Exports Benchmark

  • Base SHA: 1d606bcbac4f
  • Head SHA: dc51b63a0023
  • Comparable cases: 233
  • Regression threshold: 8.00%
  • Base runs: median of 3
  • Head runs: median of 3

Summary

Metric Value
Improved (>= threshold) 1
Regressed (<= -threshold) 19
Unchanged 213
Median change -1.80%
Mean change -2.65%
Head benchmarked cases 242
Head skipped cases 21

Top Regressions

API Base ops/s Head ops/s Change
player-tui.loadTerminalAnsiImage 993.61 834.19 -16.04%
editor.listNotes 328947.17 278873.91 -15.22%
json.ensureMeasure 440100.44 374785.61 -14.84%
audio-renderer.renderChartFile 209.86 181.55 -13.49%
editor.deleteNote 279050.66 241930.62 -13.30%
editor.setMetadata 302361.26 267314.77 -11.59%
audio-renderer.writeAudioFile 5619.99 4976.66 -11.45%
audio-renderer.renderJson 392.96 348.17 -11.40%
editor.addNote 254702.81 226011.03 -11.26%
player-web.BrowserSongCollectionStore 14735.73 13083.34 -11.21%
player-web.BeatorajaBgaLayer 980573.46 876638.64 -10.60%
player-web.readDroppedFiles 2359823.10 2110651.77 -10.56%

Top Improvements

API Base ops/s Head ops/s Change
player-web.isInsideLr2DefaultSearchBox 3921572.43 4254113.67 +8.48%

@nulltask
nulltask merged commit 675eb53 into main Aug 18, 2026
36 of 38 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