Commit graph

4199 commits

Author SHA1 Message Date
Jordan Eldredge
6c3dd2a793 Update docs, examples, and version for v2.3.0
- Bump package.json and Webamp.VERSION to 2.3.0
- Move changelog Unreleased items into 2.3.0 section
- Update "unreleased" references in docs to v2.3.0
- Switch all examples from renderWhenReady to renderInto
- Update multipleMilkdropPresets to use stable @^2 instead of @next
- Update lazy example to webamp@^2.3.0
- Update release skill with version bump and changelog steps

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 20:42:10 -07:00
Jordan Eldredge
d7b0cee444 Revert version bump — CI sets version from tag
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 20:15:47 -07:00
Jordan Eldredge
8585e9616d Bump webamp to v2.3.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 20:10:19 -07:00
Jordan Eldredge
6a45429e39 Fix scroll offset in contained mode (renderInto)
centerWindows() was unconditionally adding window.scrollX/Y, which
incorrectly offset window positions when using renderInto with a scrolled
page. Move scroll offset responsibility to callers so each can decide:
- contained (renderInto): no scroll offset needed
- non-contained (renderWhenReady): add scroll offset to viewport coords
- body fallback (centerWindowsInView): add scroll offset only for body

Also make parentDomNode required in browserWindowSizeChanged,
ensureWindowsAreOnScreen, and centerWindowsInView since the serialized
state code (the only caller without a parentDomNode) was removed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 20:07:00 -07:00
Jordan Eldredge
f973319e3e Remove serialized state infrastructure
The serialized state feature (LOAD_SERIALIZED_STATE action, SerializedStateV1
types, getSerializedState/getSerlializedState functions) was unused external
API surface. Removing it simplifies the codebase and eliminates the only
caller of ensureWindowsAreOnScreen() without a parentDomNode argument.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 20:07:00 -07:00
Jordan Eldredge
d99b8c6b3d
Remove unused RichText import from bluesky.ts to fix CI lint failure (#1347)
The RichText import from @atproto/api was unused after refactoring the
Bluesky posting logic to use manual facets instead of RichText helpers.
This caused the ESLint no-unused-vars rule to fail in CI.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 19:09:44 -07:00
Jordan Eldredge
a0c018ac0f Fix incorrect method name in renderInto docs example
The code example for renderInto was calling renderWhenReady instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 10:32:05 -07:00
Jordan Eldredge
f7e163a2e4 Show how to use @next via unpkg 2026-06-07 15:08:31 -07:00
Jordan Eldredge
4c9fdbf28b Clean up webamp build config
- Remove stale browserslist field (Babel was removed)
- Remove stale files exclusion for built/types/demo
- Fix rollup typescript plugin to not emit declarations (suppresses TS5069 warning)
- Clean up tsconfig.json: remove commented-out lines, replace jest types with vitest/globals, remove stale includes/excludes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 14:58:17 -07:00
Jordan Eldredge
b4d7daa0c2 Add zero runtime dependencies note to changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 14:43:12 -07:00
Jordan Eldredge
c7a282c1fd
Split demo site into its own package (#1351)
* 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 <noreply@anthropic.com>

* 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 <noreply@anthropic.com>

* Add updated readme to webamp-demo package

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Document the live reloading dev flow in both readmes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* 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 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 14:40:07 -07:00
Jordan Eldredge
52c425df3b Move all runtime dependencies to devDependencies
All dependencies are bundled into the library output at build time,
so consumers don't need any of them installed. This gives users a
zero-dependency install.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 12:51:48 -07:00
Jordan Eldredge
f95cea6564 Move @sentry/browser and redux-sentry-middleware to devDependencies
Both are only used in the demo site, not the library. Consumers
don't need them installed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 12:47:08 -07:00
Jordan Eldredge
3e70353b36 Remove @redux-devtools/extension dependency
Use the standard window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ runtime
check instead of importing the package. DevTools still work if the
browser extension is installed.

Also inline the defaultMemoize usage from reselect to fix Vite dev
server compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 12:44:41 -07:00
Jordan Eldredge
e593cc12da Upgrade redux-thunk to v3 and tinyqueue to v3
Both now ship ESM. Updated imports to use named exports
(redux-thunk v3 dropped the default export).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 12:36:18 -07:00
Jordan Eldredge
e534b8e10c Remove unused devDependencies
Remove style-loader, url-loader (Webpack-era), canvas-mock,
react-test-renderer, glob, http-server, and @types/lodash-es.
None were imported anywhere in the codebase.

Replace http-server serve script with vite preview.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 12:23:52 -07:00
Jordan Eldredge
a4895b26fd
Migrate from Jest to Vitest (#1350)
- Replace Jest with Vitest for unit tests
- Remove integration tests (not used in CI, relied on puppeteer)
- Remove .babelrc (no longer needed — was only used for Jest transform)
- Remove jest-puppeteer, jest-image-snapshot, and related deps
- Replace jest.fn() with vi.fn() in test files
- Add vitest.config.ts with jsdom environment

All 224 unit tests pass. The postcss plugin test remains skipped
as before.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 12:20:29 -07:00
Jordan Eldredge
41d6ae0568 Remove Babel from library build pipeline
The rollup build already uses @rollup/plugin-typescript for type
stripping and JSX. Babel was running after it as a no-op for modern
targets. Now Babel is only used by Jest for ESM→CJS conversion.

Also removes @babel/preset-env since it's no longer needed.
Bundle size decreased by ~1.7KB.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 11:54:42 -07:00
Jordan Eldredge
a901afcff9 Move milkdrop-preset-converter-aws to devDependencies
The demo site still imports it, so it needs to remain as a dev
dependency for the Vite build. Consumers don't need it since it's
not used in the library bundle.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 11:37:17 -07:00
Jordan Eldredge
65a1cd4461 Remove unused milkdrop-preset-converter-aws dependency
Not imported anywhere in the source. It was pulling in babel-runtime@6
and core-js@2 as transitive dependencies for consumers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 11:31:05 -07:00
Jordan Eldredge
81420f4487 Remove useBuiltIns/corejs config from Babel
These options told preset-env to inject core-js polyfills, but with
modern browser targets nothing was being polyfilled. Removes the
transitive core-js dependency.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 11:21:18 -07:00
Jordan Eldredge
20b60ce3e3 Update lockfile and remove @types/fscreen
The lockfile was out of sync after dependency changes, causing CI
to fail with --frozen-lockfile.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 11:11:08 -07:00
Jordan Eldredge
4679f432c5 Replace fscreen with native Fullscreen API
The fscreen library was a vendor-prefix shim for the Fullscreen API.
All target browsers now support the unprefixed standard API natively.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 11:09:42 -07:00
Jordan Eldredge
115fc88f52 Remove unused Babel proposal plugins
These plugins handled class properties, optional chaining, nullish
coalescing, object rest spread, and dynamic import syntax — all of
which are natively supported by our target browsers. Bundle size is
unchanged, confirming they were no-ops.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 11:04:09 -07:00
Jordan Eldredge
622f945646 Move winamp-eqf to devDependencies
Same issue as ani-cursor: bundled at build time via rollup, so
consumers don't need it installed. The workspace:* protocol caused
install failures for users outside the workspace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 10:55:19 -07:00
Jordan Eldredge
42314430d1 Fix docs to reference webamp@next instead of @main
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 10:51:47 -07:00
Jordan Eldredge
9fcc48bd8d Move ani-cursor to devDependencies
It's bundled at build time via rollup, so consumers don't need it
at install time. Having it as a dependency with workspace:* caused
install failures for users since the workspace protocol isn't
resolved during npm publish.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-07 10:50:46 -07:00
Jordan Eldredge
3a898b46d7
Remove unused RichText import from bluesky.ts to fix CI lint failure (#1346)
The RichText import from @atproto/api was unused after refactoring the
Bluesky posting logic to use manual facets instead of RichText helpers.
This caused the ESLint no-unused-vars rule to fail in CI.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 21:08:48 -07:00
Jordan Eldredge
247bda11ef Consolidate bluesky posts 2026-02-14 11:44:30 -08:00
Jordan Eldredge
2fe3235d51 Remove contained example and clarify position requirements 2026-01-01 15:44:11 -08:00
Jordan Eldredge
54dbe369d4
Fix TypeScript error in Webamp renderInto call (#1340)
Add non-null assertion operator to ref.current when calling webamp.renderInto()
to match the pattern used elsewhere in the component and resolve the CI type error:
"Argument of type 'HTMLDivElement | null' is not assignable to parameter of type 'HTMLElement'"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-01 15:19:31 -08:00
Jordan Eldredge
bce845962f Enable Webamp for scroll UI 2025-12-31 15:18:45 -08:00
Jordan Eldredge
4b784b6eaf Start wiring up Webamp in scroller museum UI 2025-12-31 15:00:16 -08:00
Jordan Eldredge
52f12327fa Persist search query in URL 2025-12-31 15:00:16 -08:00
Jordan Eldredge
1d10f7a1f4 Don't wait as long to hint that you can scroll 2025-12-31 15:00:16 -08:00
Jordan Eldredge
99f06d3bfc Remove logging 2025-12-31 15:00:16 -08:00
Lorenzo Stanco
162025f8a0
Webamp optionally fully contained into a DOM element (#1338)
* Webamp optionally fully contained into a DOM element

* Fix spelling

* Reenable updating search index for uploads

* Replace contained flag on renderWhenReady with a new method. Add docs

---------

Co-authored-by: Jordan Eldredge <jordan@jordaneldredge.com>
2025-12-31 14:59:14 -08:00
Jordan Eldredge
f600fb0344 lints 2025-12-30 04:46:47 +00:00
Jordan Eldredge
04c396ed1f Scroll search 2025-12-29 20:22:39 -08:00
Jordan Eldredge
f74d7a6cdf Move search input 2025-12-29 17:38:14 -08:00
Jordan Eldredge
1fb930cd63 New pages for scroll 2025-12-29 17:29:11 -08:00
Jordan Eldredge
8d4ff41f42 Improve scroll UI 2025-12-29 17:03:29 -08:00
Jordan Eldredge
e062a51a88 Improve scroll UI 2025-12-29 15:32:03 -08:00
Jordan Eldredge
0895f9191f Add explicit app routes 2025-12-29 15:17:06 -08:00
Jordan Eldredge
3b4e5b17c3 Remove blocklist of skins with viruses. These are now purged. 2025-12-29 13:15:46 -08:00
Jordan Eldredge
91618c9c6b Block downloading skin that seems to trigger security block 2025-12-29 11:52:11 -08:00
Jordan Eldredge
6c732f8e24 Add bulk download page 2025-12-29 11:35:45 -08:00
Jordan Eldredge
d87cb6ffa3 Switch away from cached api 2025-12-26 19:20:30 +00:00
Jordan Eldredge
6997c852f9 Get uploads working again 2025-12-26 19:20:30 +00:00
Jordan Eldredge
61476591f8 Trusted publishing 2025-12-17 16:51:54 -08:00