Update the core player marquee dependency, remarqueeble, to v0.7.0.
Update the docs styling dependency, @remino/directive, to v5.3.7.
v0.8.1
Library
Avoid unnecessary full track reloads when non-playback attributes change by special-casing display-only attributes (for example: show-source-link and midi-oscillator). Toggling the source-link now updates the header link in-place via syncSourceLink() and no longer resets the current track or playback state.
Stop observing show-source-link mutations on child track elements so player-level toggles don’t trigger child-track resynchronization and accidental track reloads.
Ensure MIDI oscillator changes are applied at track load time without forcing a reload of the active playable track.
Docs
Optimize the playground demo script to update only changed player attributes instead of recreating or reinitializing the player element on every setting change. This preserves playback and selection state while keeping the embed preview in sync.
v0.8.0
Library
Add a show-source-link attribute/property on jukette-player with per-track show-source-link / showSourceLink overrides so the selected track can expose its source URL directly from the player header.
Split the player header row into a wide display area and a narrow source link target, with a larger clickable hit area and a small optical glyph offset for the default link icon.
Docs
Enable the source link in the live demo and point the docs app at local workspace source entries during development/builds so player changes show up in the demo without rebuilding package dist outputs first.
Avoid duplicate initial playlist-src fetches by deduplicating remote playlist loads across element setup and attribute updates for the same source URL.
Docs
Keep the docs demo aligned with the new remote playlist support by rebuilding the package dist outputs consumed by jukette/auto.
v0.7.0
Library
Add a playlist-src attribute on jukette-player so playlists can be fetched from remote JSON files using the same track object shape as the existing inline playlist attribute.
Surface explicit loading and failure states while a remote playlist is being fetched instead of silently falling through to unrelated sources.
Docs
Change the live demo page to load its playlist from /jukette/demo-playlist.data.json instead of inline <jukette-track> children, with the playlist now authored directly as a JSON file in the docs source.
Add .json to the Astro compression pass so the built demo playlist is emitted as minified JSON and included in compressed site assets.
v0.6.0
Library
Merge the player header’s separate title and artist/status rows into one display line, and format the resting track label in the same Title - Artist style used by the playlist selector.
Add remarqueeble to the core player UI so the merged display line only scrolls when its text overflows, including when transient status text replaces the normal track label.
Add a player-level display-marquee option with overflow, always, and never modes so marquee motion can be configured explicitly.
Keep the elapsed-versus-remaining time toggle stable during active playback by restarting the live progress loop when the time mode changes.
Replace the shadow-parts trio title, artist, and status with one stable display part for styling the merged header line.
Docs
Give the first demo track a deliberately long title so the live docs showcase the overflow marquee behavior immediately.
v0.5.0
Library
Preserve live jukette-player playback across brief Turbo-style disconnect and reconnect cycles by deferring teardown and reusing the current prepared track when the same element instance is reattached.
Add per-track startAt / start-at offsets with fractional-second support so audio, MIDI, and SoundCloud tracks can begin playback from a configured start time and restart from that same offset.
Clarify the SoundCloud preload split: per-track preload still controls early widget preparation, while player-level or per-track media metadata preference can still trigger oEmbed metadata fetches before selection.
v0.4.4
Repo
Minify inline player CSS in ESM and CommonJS package builds too, not only in the standalone minified browser bundle, so published dist/* artifacts stop shipping pretty-printed shadow CSS.
Stop package declaration builds from using composite incremental state so fresh workspace builds always re-emit dist/*.d.ts after dist/ is cleaned, fixing release failures caused by missing package type files.
v0.4.3
Library
Preserve jukette-player state across brief disconnect and reconnect cycles such as Turbo permanent navigations by deferring playback teardown and skipping unnecessary track reloads when the same selected track is reattached immediately.
Fix the jukette/auto workspace source entry so it imports defineElement() directly from @remino/jukette-core, keeping package type generation aligned with the published convenience entrypoint.
v0.4.2
Library
Restore browser-audio registration in the jukette/auto convenience entry so plain audio tracks work again anywhere the package is consumed without an explicit @remino/jukette-audio import, including the docs demo site.
v0.4.1
Repo
Generate packages/jukette/README.md from the repo-top README during prepack and remove it in postpack, keeping npm package docs in sync without tracking a duplicate workspace README.
v0.4.0
Repo
Replace the root Jasmine runner with Vitest, port the release-script and helper tests, and add jsdom-based player DOM coverage.
Migrate the repository to an npm workspaces monorepo with packages/jukette, packages/core, packages/audio, packages/midi, and apps/docs.
Publish modular packages as @remino/jukette-core, @remino/jukette-audio, and @remino/jukette-midi while keeping unscoped jukette as the convenience bundle.
Move the Astro docs and demo site into the apps/docs workspace and update shared build, typecheck, release, and publish tooling to run across the workspace layout in lockstep.
Keep the docs site on the shared @remino/astro-site-nav components and leave SITE_NAV_INCLUDE_ROOT as the environment-provided source of HTML partials instead of checking partials into this repository.
Add a workspace-local docs .env so SITE_NAV_INCLUDE_ROOT resolves correctly for the Astro app without extra launch wrappers.
Rename the private workspace root package and add explicit dev:docs, build:packages, build:docs, preview:docs, and targeted typecheck scripts so the monorepo entrypoints read more clearly.
Remove the stale ROADMAP.md planning file now that the SoundCloud addon direction has either landed or moved into the changelog.
Fix lockstep release automation so version bumps and release staging now include @remino/jukette-soundcloud and the docs workspace manifest.
Make root typecheck read-only for release preflight by removing workspace builds from that script and splitting package validation into dedicated non-composite tsconfig.typecheck.json files.
Pin the repo-local @remino npm scope to https://registry.npmjs.org/ so workspace release scripts do not get redirected by user-level scoped registry overrides during publish.
Read npm publish auth from RELEASE_IT_NPM_TOKEN in the repo-local .npmrc so local workspace releases can authenticate without relying on machine-wide npm login state.
Library
Shorten the explicit package setup APIs to defineElement() for jukette and register() for addon backends, while keeping the existing verbose aliases available during the 0.x line.
Keep SoundCloud preload opt-in so player-level preload-metadata alone does not fetch or prepare SoundCloud tracks, while per-track preload remains the signal for early widget setup.
Reintroduce SoundCloud support as the optional @remino/jukette-soundcloud backend addon with per-track widget preparation, oEmbed metadata loading, and selection-time readiness gating.
Reuse per-track SoundCloud widgets while resetting selection-time state correctly so reselected tracks rewind to the beginning, ignore stale progress from earlier play sessions, and no longer surface Pause before an explicit user play request.
Remove SoundCloud playback from the core library so jukette-player focuses on browser-native audio and local MIDI tracks.
Simplify jukette-player into a track selector with a single play/pause control row, native track <select>, clickable elapsed or remaining time readout, and no previous/next or playlist panel UI.
Let the focused track <select> act as a transport shortcut: Enter now toggles play or pause for the prepared selected track, and Space starts playback when the player is idle.
Remove playlist navigation and toggle APIs from the player public surface, keeping track selection and playback state focused on the current track.
Fold transient status messaging into the track meta line so the player falls back to the artist display when no status is active.
Remove the built-in volume control from the simplified player UI and internal playback plumbing.
Split track parsing, metadata parsing, MIDI parsing, shared types, and constants into focused src/lib modules.
Move player shadow styles into src/lib/jukette-player.css and generate a minified inline style module for builds and tests.
Move JukettePlayerElement and custom-element registration out of the public jukette.ts entrypoint.
Split native audio and MIDI playback behavior into internal playable track classes so the player element can focus on UI and playlist orchestration.
Move player DOM setup, playlist rendering, metadata preloading, and progress/status display into focused internal controller and helper modules.
Import player shadow CSS through Vite’s inline CSS pipeline instead of a custom generated TypeScript style module.
Add a per-track preload flag for future playback preparation policies.
Add per-track prefer-media-metadata and preload overrides so authored playlists can control metadata display and playback preparation on a track-by-track basis.
Replace the handwritten MIDI parser and oscillator scheduler with @tonejs/midi plus a Tone.js synth-backed playback path.
Move MIDI playback to a Tone transport and part lifecycle so pause, replay, and rapid resume behavior work predictably for local MIDI files.
Expose the time readout as button > time in the player shadow DOM and simplify the control styling surface around the new compact layout.
v0.3.0
Library
Add stable ::part() hooks for styling the shadow UI.
Site
Document the supported Jukette styling surface.
v0.2.0
Repo
Add Husky, lint-staged, release-it, and changelog release tooling.
Library
Add jukette:* custom events for playback, navigation, progress, volume, playlist toggling, and track changes.
Add a public currentTime getter/setter for reading and seeking the playback position.
Add currentTrackIndex, totalTracks, and playlistOpen public properties.
Site
Add an updates page rendered from this changelog.
v0.1.0
Library
Add the initial jukette-player custom element for audio and MIDI playlists.
Site
Add the initial Astro documentation site and demo.