* Cache correct assets
* Update lib/entry-data-plugin.js
Co-authored-by: Surma <surma@surma.dev>
* Actually commit the fix this time
Co-authored-by: Surma <surma@surma.dev>
* Paste button
* Logo and animated blobs
* Predictable initial blob position
* Initial blob shape
* Update canvas on resize if not updating every frame
* lol
* Get styles from CSS
* Background blobs
* Fade into the center
* Get initial focus
* Pause time while page is hidden
* Footer
* Optimise amount of initial CSS
* More CSS optimisation
* Install button
* Home page with demo loading
* Tweak size
* Replace thumbnails
* Responsive demo section
* Responsive main section
* Remove debug stuff
* Fix prerender SVG size
* Changes from feedback
* Blob nudges (#872)
* more smaller blobs
* less blobs that are practically invisible
* more dynamic speed range and stronger gravity
* Reverting resize observer change
The content rect is different to getBoundingClientRect
Co-authored-by: Adam Argyle <atom@argyleink.com>
* wip
* wip
* Add extra options
* Even more options!
* Update src/features/encoders/wp2/client/index.tsx
Co-authored-by: Surma <surma@surma.dev>
Co-authored-by: Surma <surma@surma.dev>
- Refactor to work around Chromium's issue with postMessage queuing. https://bugs.chromium.org/p/chromium/issues/detail?id=1075645
- Convert codec code to TypeScript.
- Make separate parallel and non-parallel builds.
- Switch to nightly Rust for OxiPNG to allow parallel builds (but also reuse it for regular builds to avoid installing two toolchains).
Now initialise all workers with module+memory separately, and then instead of using postMessage to send thread pointers, push them into a crossbeam-deque on the Rust side.
Rayon already depends on crossbeam-dequeue, so we're not even adding another dependency, and this model allows us to push "tasks" (thread pointers) on the main thread and pop them on worker threads in arbitrary order without sacrificing correctness.