Skip to content

Release 1.9.0 - #3003

Merged
Danielku15 merged 689 commits into
mainfrom
release/1.9.0
Oct 31, 2026
Merged

Danielku15 merged 689 commits into
mainfrom
release/1.9.0

Conversation

@Danielku15

Copy link
Copy Markdown
Member

Danielku15 and others added 30 commits August 9, 2026 22:27
…ndencies group (#2833)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…es (#2834)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…b-actions group across 1 directory (#2824)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…lin/src in the gradle-dependencies group (#2835)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…dependencies group (#2840)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…es (#2841)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
… /packages/kotlin/src in the android group (#2842)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2844)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…b-actions group (#2845)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…lin/src in the gradle-dependencies group (#2848)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…es (#2847)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…s/kotlin/src in the android group (#2846)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…site#213)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…TabWebsite#214)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2852)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…s/kotlin/src in the android group (#2854)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ectory with 6 updates (#2853)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ite#216)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ite#217)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#219)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…bsite#218)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…abWebsite#221)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ne/alphaTabWebsite#220)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ndencies group (#2868)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Danielku15 and others added 28 commits October 31, 2026 10:55
API Extractor keeps imports it cannot resolve and inlines the text of
whatever it resolves, so a missing or mis-rooted declaration silently
became a broken path in the published types, and a published sibling
resolved through a path alias would ship its TypeScript source.

The bundling now fails when a declaration resolves to a TypeScript
source that is not declared in externalTypes, also when API Extractor
crashes on that source, and when a bundled or per-file declaration
keeps a relative import that does not resolve to a declaration file
shipped with the package.
Files that only re-exported or declared @internal members kept their
`export {}` and their now unused imports after filtering. In
@coderline/alphatab-vite this shipped bridge/typeUtils.d.ts, which
imports 'rollup', not a dependency of the package, and references the
removed GetHookContextMap type; the `./*` export makes it importable.

Such files are no longer written. Modules that never had exports, like
the monaco worker entry, keep their `export {}` declaration.
scripts/check-published-types.mts packs the web packages, installs the
tarballs into a project outside of the repository and type checks all
exported entry points and shipped declaration files with
skipLibCheck disabled. It also rejects relative imports that leave a
package or point into sources.

Build Web runs it after building the packages, before the dist cache is
saved, so a cached dist has passed the check. The cache key includes
the script, and the alphaTex sources, which the language server bundles.
…maid

The two installation pages were the only mermaid users; the plugin added
114 packages and about 168 MB to the install. The diagram is an inline
SVG that follows the site's light and dark colours.
… dev server

The generator deleted every reference page up front and streamed each
file in place, so a watching dev server saw ~800 pages vanish (ENOENT)
and could read half-written files. Pages are now written atomically and
only when their content changed; pages the run did not produce are
removed at the end.
The port type came from vscode-languageserver and named the WebWorker-only
DedicatedWorkerGlobalScope, so the browser entry, which also carries the
DOM-typed alphaTab API, could not type check in any project. The new
LanguageServerMessagePort lists only the members the server uses; every
declaration file is now part of the published-types check.
It is part of the shared player, not a temporary QA aid.
The changes job now selects the web jobs itself and emits the test_web
matrix as JSON, so a change in packages/react or packages/ui runs only the
Editor and Player leg plus the website build, and a playground-only change
runs lint alone. Core and web package changes still run all three legs.
The playground has no tests; installing it only cost time.
Dev server:
- Lazy compilation for the dev client, plus a loader that drops the
  require.resolveWeak() ids from Docusaurus' route registry; weakly
  referenced modules are built eagerly, which kept every page compiling
  at startup. Cold start 12.5 s -> 3.3 s, RSS after start ~2.1 GB ->
  0.65-0.9 GB.
- Eval source maps only for the site's own code, not for node_modules
  or prebuilt packages/*/dist.
- Gzip-compressed persistent cache, one in-memory generation in dev.

Build output:
- usedExports "global" so alphaTab's core ships as one chunk shared by
  the page, the alphaTab worker and the alphaTex language-server worker
  instead of one copy per runtime.
- Monaco registers only the editor features the alphaTex editor uses.
- Latin font subsets only.
- File format tooltips render through react-tooltip's render prop
  instead of react-dom/server in the browser.
- Generated Signature tokens use a compact string encoding.

alphaTex editor:
- Overflow widgets follow page and ancestor scrolling.
- Completion and hover widgets open below the cursor on scrolled pages:
  corrects Monaco's page-vs-viewport measurement
  (microsoft/monaco-editor#5512); a test pins the patched Monaco code.
…bpack, Rspack and Vite

alphaTab:
- Start workers with the standard `new Worker(new URL(..., import.meta.url))`
  form bundlers recognise; the blob, scriptFile and classic fallbacks stay.
- Load the worklet through `alphaTabWorklet.addModule`, which first adds the
  chunk files a webpack-style runtime lists via `__webpack_require__.atwm`
  (with a shim for `self`, `location` and `importScripts`).
- Keep the worker/worklet URLs as written in the library build instead of
  letting Vite bundle the worker and inline the worklet.

@coderline/alphatab-webpack:
- Rewritten as a thin plugin for webpack 5 and Rspack on public plugin APIs:
  worker syntax scoped to alphaTab's modules (works with `worker: false`
  hosts like Angular), the `__ALPHATAB_WEBPACK__` define, a page runtime
  module mapping the worklet to its chunk files, a worklet runtime module
  installing the pre-added chunks, `usedExports: 'global'` in production
  and an `alphaTabCore` split chunk so one core serves all runtimes.
- `webWorkers: false` now applies to workers (it checked `audioWorklets`).

@coderline/alphatab-vite:
- Emit the worker and worklet as chunks of the main build sharing the core
  chunk instead of separate sub-builds; exclude alphaTab from dependency
  pre-bundling in dev. Removes the copied Vite internals and the
  `workerPlugin` subpath.

Website:
- Build with Rspack (`rspackBundler`, persistent cache); lazy compilation in
  dev wired through Rspack's middleware; source maps from the active bundler.
- packages/ui: declare worker entry files as side effects (Rspack dropped the
  language-server worker's imports under `usedExports: 'global'`).
…chunk

The URLs no longer go through import.meta.ROLLUP_FILE_URL, which Rolldown
corrupts for relative base, renderBuiltUrl, SvelteKit and Nuxt 4. The emitted
worker and worklet chunks are no longer flagged as entries, and each build
environment tracks its own entries. Vite 6 joins the peer range.
Turbopack compiles import.meta.url to a file:// URL, so alphaTab took itself
for a classic script and could not start its workers. Environment detects
Turbopack via __turbopack_require__ (isTurbopackBundled, also printed by
printEnvironmentInfo) and alphaTab then creates its module workers, which
Turbopack bundles with the shared core. Turbopack bundles no Audio Worklets,
so there the worklet loads from core.scriptFile; a missing script file fails
with a clear error.
Installing in web projects chooses the setup by bundler and framework,
compares the alphaTab core copies each one loads and lists what every
setup needs. Bundler pages cover webpack with Rspack and Rsbuild, Vite,
and the core/worker/worklet recipe for esbuild, Rollup and Parcel;
framework pages cover React and Next.js including Turbopack, Vue and
Nuxt, Angular, Svelte and SvelteKit, and Solid, each from its verified
sample. The custom bundler page becomes a card pointing to the recipe,
and the 1.9 release notes describe the bundler changes.
Next.js prefixes the bundled workers with basePath but not URLs into public/, so the font directory, SoundFont, score and the worklet's core.scriptFile need the prefix. The section shows how to expose basePath to the client through next.config.ts.
…builder setup

alphaTab.min.mjs, its worker and its worklet import alphaTab.core.min.mjs,
so the setup copies and import-maps the minified set and names the
unminified set as the alternative for debugging.
…es (#3000)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The website build waited only until the dist-tag served the published
@coderline/alphatab version and took whatever the other packages' tags
pointed to. npm makes each package visible at a different time, so the
build could pick up an outdated @coderline/alphatab-monaco without the
lsp export. The web publish now reports every published package with
its version and the website build waits for each of them.
DEPLOY_TOKEN is a repository secret, which a reusable workflow only
receives when the caller passes it. The website job did not, so the
deploy sent an empty bearer token and the server rejected it. The
reusable workflow now declares the secret as required and every caller
passes it; an empty value fails before the upload.
@Danielku15
Danielku15 merged commit 9f1aa10 into main Oct 31, 2026
12 checks passed
@Danielku15
Danielku15 deleted the release/1.9.0 branch October 31, 2026 21:07
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.

4 participants