Releases: affromero/splattie
Releases · affromero/splattie
v0.3.1
Quadruped mammals + a per-request reconstruction-model switch, synced with widget v0.3.1.
Added
- Quadruped-mammal asset category — single image → rigged 3D Gaussian-splat animal with a SMAL skeleton and cursor head-follow (TripoSplat/TRELLIS → SuperAnimal-anchored SMAL). "Animal" option on
/create. - TripoSplat reconstruction backend (VAST-AI), the default for animals (cleaner muzzles/faces), selectable per request via the
/createmodel toggle, the?backend=triposplat|trellisAPI param, and the--backendCLI flag. - 12 demos per category (48 total) with diverse subjects + mixed people poses.
- Pre-commit code-quality enforcement in CI (jaxtyping array annotations, no-
dict-typing, 1000-line cap, getattr/sys.pathbans,__all__-only-in-__init__.py).
Changed
- All project versions align on 0.3.1 (root, web app, backend, widget submodule,
.splattieformatVersion).
Fixed
- Cursor head-follow on rigged objects + quadrupeds (widget v0.3.1): bones rotate about their joint pivot (not the splat origin) and drive a split neck/head gaze chain, so heads visibly turn toward the cursor without tearing.
Widget: @afromero/splattie-widget@0.3.1
v0.3.0
[0.3.0] - 2026-05-31
Added
- General-purpose object
.splattiegeneration through TRELLIS reconstruction, Puppeteer skeleton/weight generation, object binding, and.splattiebundle export. - Object demos: 8 Gemini-generated source objects, public object
.splattiebundles, landing-page object carousel, and Playwright coverage for object rendering and editor controls. - Object editor support with object-specific follow sliders, rig joint controls, skeleton overlay, edit-pose mode, and drag-to-pose terminal handles.
- Forked TRELLIS and Puppeteer submodules on Splattie's branches so runtime patches stay tracked with the main pipeline.
Changed
- All project versions now align on
0.3.0: root package, web app, backend package, widget package,.splattieformatVersion, and release notes. - Public web copy and README positioning now describe rigged Gaussian assets, not only avatars.
- Backend first-party logging now uses
klogr, and Python typing hooks forbiddict/Dictannotations and stdlib dataclasses outside vendor code.
Fixed
- Object bundle orientation now exports with the production viewer transform so generated objects render upright in the widget.
- Object editor categories no longer show head-only smile/jaw controls, and sliders reflect object rig state.
v0.2.0
[0.2.0] - 2026-05-31
Added
- Full body avatar support alongside heads: LHM/SMPL-X generation, body
.splattiebundles with skeleton and LBS weights, body-aware API/model metadata, and head/body category selection. - Body editing in the web experience: separate head/body demo carousels, body-aware inline editor, full-body framing, body pose controls, and Playwright coverage for body rendering and IK handle dragging.
- GPU-backed test coverage for head and body generation, with
RUN_GPU_TESTS=1running the full inference path and normal pytest runs keeping GPU checks explicitly opt-in. - Release-aligned CLI commands for demo generation, batch
.splattiegeneration, manifest updates, expression-basis shrinking, and FLAME/ARKit basis exports.
Changed
- All project versions now align on
0.2.0: root package, web app, backend package, widget package,.splattieformatVersion, and release tags. .splattieformat0.2.0requiresassetTypeso bundles can represent heads, bodies, and future general-purpose objects.- Demo assets were regenerated and compressed for the bodies release, including compressed PLY bundles, smaller expression basis assets, updated thumbnails, and cache-busted public assets.
- Backend script entrypoints were folded into the typed
splattieCLI so release tooling runs in-process on Python 3.11.
Fixed
- Body pose/export issues that caused stretched arms, T-pose fallback behavior, inconsistent per-state poses, and incorrect full-body framing.
- Reduced-motion and stale widget-bundle issues that could leave the inline body editor blank or hide body IK handles.
- API and deployment rough edges around camelCase responses, asset-type query parsing, CPU/GPU backend split, and reproducible frozen uv installs.
v0.1.1
[0.1.1] - 2026-05-28
Added
.splattieformat now requiresmanifest.jsonwith strict format-version locking. See@afromero/splattie-widgetv0.1.1 CHANGELOG.NEXT_PUBLIC_SELF_HOSTenv var: whentrue, exposes the/createupload flow for users running their own GPU backend. Default (unset/false) shows the "Coming soon" placeholder used for splattie.app.gsplat(Apache 2.0) replacesdiff-gaussian-rasterization(INRIA, non-commercial) as the rasterizer in the LAM fork. Output is byte-identical for our use case.cpuandgpuuv extras inbackend/pyproject.toml.uv sync --extra cpufor the FastAPI server,uv sync --extra gpufor the full LAM pipeline.- Root
LICENSE(MIT),NOTICE(third-party attribution + commercial-use paths),CONTRIBUTING.md. - Repo is open source.
Changed
- All 6 demo
.splattiefiles re-bundled toformatVersion: 0.1.1to match the widget version. .gitmodulesuses HTTPS URLs so anonymous clones work out of the box.
Fixed
- README links to widget repo files now use absolute GitHub URLs (relative paths to submodule files don't render on GitHub).
v0.1.0
Added
- Landing page at splattie.app with 6 interactive 3D demo faces from Pexels
- Gallery with inline editor expand (expression sliders, camera, ghost, rotation, tracking)
- Download .splattie button for customized avatars
- Dark/light theme toggle with localStorage persistence
- OG image and social meta tags for link previews
- GPU batch pipeline (
backend/scripts/generate_splattie_batch.py) for generating .splattie files from photos via LAM - Dockerfile for frontend deployment
- Caddy config for splattie.app on Sotto
- Shared expression basis (50 FLAME PCA blendshapes) as a separate asset
- Mobile gyroscope support for head tracking
<splattie-widget>web component with FLAME SplatSkinning, eye tracking, state machine
Fixed
- Missing FLAME expr + pose params in LAM method.py (caused KeyError on inference)
- Widget expression-basis attribute fallback when .splattie ZIP omits it