mirror of
https://github.com/captbaritone/webamp.git
synced 2026-11-07 10:25:59 -10:00
* Split demo site into its own package Move the demo site from packages/webamp/demo/ into packages/webamp-demo/ as a standalone workspace package. This cleanly separates the library (published to npm) from the demo site (deployed to webamp.org). Key changes: - Demo imports webamp source via relative paths (no aliases needed) - Demo has its own package.json with demo-specific deps - Simplified vite config (just nodePolyfills plugin) - Removed vite branching from rollupPlugins.mjs (library-only now) - Renamed build-library -> build in webamp package - Updated turbo.json, CI, netlify config, and code-size workflow - Removed demo-only deps from webamp package (sentry, butterchurn stays for the butterchurn bundle) - Zero bundle size change for the library Co-Authored-By: Claude Opus 4.6 <[email protected]> * Fix: add type-check dependency to webamp#build task The webamp-docs package needs type declarations from webamp to type-check. These are generated by tsc (type-check), which must run before the build task. Co-Authored-By: Claude Opus 4.6 <[email protected]> * Add updated readme to webamp-demo package Co-Authored-By: Claude Opus 4.6 <[email protected]> * Document the live reloading dev flow in both readmes Co-Authored-By: Claude Opus 4.6 <[email protected]> * Fix code-size CI: use deploy script that exists on both branches The compressed-size-action checks out master and runs the build script. Master doesn't have a root "build" script, so revert to using "deploy" which exists on both branches. Co-Authored-By: Claude Opus 4.6 <[email protected]> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
3.4 KiB
3.4 KiB
Webamp NPM Module
Development
The demo site in packages/webamp-demo imports the library source directly, so you can iterate on the library with live reloading:
cd packages/webamp-demo
pnpm start
Any edits to library source files in packages/webamp/js/ are immediately reflected in the browser — no rebuild needed.
# Run tests
cd packages/webamp
pnpm test
Building
To build the library for publishing:
pnpm run build
This will write files to ./built.
Testing
pnpm test
This will run the tests the linter and the type checker.
To update snapshots run
pnpm test -u
Cutting a Release
- Update the version number in
package.json - Rename the "Next" title at the top of
CHANGELOG.mdto the new version number and ensure it is up to date - Update the static
VERSIONproperty of theWebampclass inwebampLazy.tsx - Git commit
cd packages/webampnpm publish- Git tag the commit (e.g.
1.4.2or1.4.3-beta.3) - Push tag to GitHub
git push origin <TAG_NAME> - Update all the examples to use the new version:
minimal/index.htmlminimalMilkdrop/index.htmlwebpack/package.jsonwebpackLazyLoad/package.json- https://codesandbox.io/s/y0xypox60z
- Commit and push
Reference
- skinspecs.pdf
- Skinner's Atlas 1.5 by Jellby
- Winamp Skinning Tutorial
- Sacrat Skinning tutorial parts 1, 2, 3, 4, and 5,
- Winamp Wiki
Predecessors
- Webamp2x An impressive implementation from 2002(!).
- JsAmp An implementation from 2005 by @twm (via Hacker News).
- LlamaCloud Comp From 2011 by Lee Martin (via Twitter)
- Winamp em HTML5 e Javascript In 2010 a developer named Danilo posted one of his HTML5 experiments: "an audio player simulating good old Winamp". You will have to download the zip file.
- JuicyDrop An HTML5 implementation with less emphasis on being true to the skin, but fully featured visualizations. @cggaurav is keeping it alive on GitHub
- Spotiamp The folks at Spotify reimplemented Winamp as a frontend for Spotify. Not in a browser, and only runs on Windows. It has since been discontinued.