# Xinghuan selected-core adaptations

These are open-source ports adapted with AI assistance, not Xinghuan originals or complete reproductions of every upstream feature. Runtime files are self-hosted. No upstream analytics, cloud accounts or network sharing UI is included.

- Fluid: Pavel Dobryakov, MIT, https://github.com/PavelDoGreat/WebGL-Fluid-Simulation . The shader/solver is preserved; promotional UI and analytics are removed. Added a scoped lifecycle, local controls, resolution/frame caps and framebuffer disposal. Revision a2d292931f19d9b3b9f564e23e6c32729d2121c3.
- Sand: Max Bittker, MIT, https://github.com/MaxBittker/sandspiel . Only the WASM simulation and generated bindings from gh-pages revision 24a63c60428cae13714946118f025d5d1484b344 are included; no Firebase, Sentry or gallery. Source checkout 9936e06b07a583aedfba9589c0cead2917f405fb is recorded separately and is not claimed to reproduce the deployment binary exactly. WASM imports are random, throw and externref initialization only.
- Compression: GoogleChromeLabs Squoosh, Apache-2.0, revision e8d35e0fb66eb16eff6fe8fc773eabcbb7128de3, https://github.com/GoogleChromeLabs/squoosh . Uses its MozJPEG browser codec and original default options. The adapter runs encoding in a disposable worker. WebP/PNG use browser encoders, not Squoosh codecs. Codec terms are in CODEC-LICENSE.md and README.ijg. This software is based in part on the work of the Independent JPEG Group. No Google Analytics or Squoosh service worker is included.
- Painting: miniPaint, ViliusL, MIT, revision a79733eb803fc97084ef0ee4faa96b031e69e1c0, https://github.com/viliusle/miniPaint . Only its bundled imagefilters.js is selected. This library credits ARAKI Hayato / ImageFilters.js; the original MIT notice is retained in paint/FILTERS-LICENSE.txt (source revision 053548ba0406e58b81d99d73e5b1b7893e6defb0). Cropping, transformation and editable text-layer UI are Xinghuan adapters, not the full miniPaint editor.

Codec IJG notice obtained from mozilla/mozjpeg revision 08265790774cd0714832c9e675522acbe5581437. Exact vendor hashes are recorded in manifest.json. Selected cores must be updated deliberately with their licenses; do not replace them with unreviewed upstream bundles.

MozJPEG JavaScript binding adaptation: replaced legacy Embind dynamic function generation with ordinary closures and Reflect.construct. This permits the codec to run under the existing production CSP without JavaScript unsafe-eval. The WASM codec binary and encoding options remain unchanged.

## Second wave

- 2048: Gabriele Cirulli and contributors, MIT. Original Tile, Grid and GameManager are retained; input, rendering and local persistence are Xinghuan adapters. See 2048/LICENSE.txt and wave-two-revisions.json.
- Excalidraw: @excalidraw/excalidraw 0.18.1, MIT. The official single-user React editor is adapted with local file controls. Distributed production JavaScript is pinned in vendor/excalidraw; its font fallback is rewritten to the same-origin font directory. No collaboration, cloud export or URL scene sharing is provided. Fonts are unmodified upstream assets, with their own embedded copyright/license metadata (including SIL OFL notices); do not treat all fonts as MIT. Font source notices are retained alongside each font directory when upstream provides them.
- BeepBox: John Nesky and contributing authors, MIT. Original Song/Synth core, restricted to chip triangle/square/sawtooth for a 16-step editor. Effects factories are captured from trusted upstream at build time and emitted as ordinary static functions; user data never generates executable source. The original full editor, song hashes, remote sharing and URL import are not included. See beepbox/LICENSE.txt and wave-two-revisions.json.
