リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
Free, open-source stick figure animation app for Windows, Linux and the browser. Opens Pivot and Stick Nodes projects.
翻訳待ち
Loading the full README.
Read the full README ↗.piv/.stk.Everything (decoding, editing, saving and rendering) runs locally.
Your animations stay on your computer. The desktop app sends anonymous statistics about speed and crashes and which features are used, with no account, no identifier and nothing from your animations. Home says so in one line at first start, and Preferences › Privacy turns them off and shows exactly what was last sent. docs/STATISTICS.md lists everything that is sent and why.
Requirements: Node.js 22+ (CI uses 24.11), the Rust toolchain below, and, for development only, Python 3.11+ (CI uses 3.12): it stages the offline video encoder and builds the Windows codec helpers when packaging, and runs the tests of the Python Pivot codec kept as an oracle. The app, desktop and web, contains and needs no Python. Windows and Linux are tested on every change; macOS has an untested build target.
npm ci
npm run engine:build # the Rust engine and Pivot codec, into src/engine/pkg/
npm start # desktop app (Electron)
npm run serve # or the editor in your browser at http://127.0.0.1:47831
npm run engine:build needs rustup with the pinned nightly and its source (rustup toolchain install nightly-2026-09-15 --component rust-src --target wasm32-unknown-unknown), the stable Rust that rust-toolchain.toml names with the same target (rustup installs it on first use), wasm-bindgen-cli 0.2.129 (cargo install wasm-bindgen-cli --version 0.2.129 --locked) and clang for the WebAssembly target. Python runs only the codec's development test oracle (backend/, codecs/) and the packaging scripts; set STYK_PYTHON to choose an interpreter.
Packaging, on the matching operating system:
python -m pip install -r scripts/requirements-build.txt
npm run engine:build
npm run build:video-encoder
npm run pack && npm run verify:package
npm run dist:win # or dist:linux, dist:mac
The browser build: npm run web:build, then npm run web:preview. See Web build, Linux and Touch interface.
npm run check # syntax, stylesheet lint, locales, engine inventory
npm test # unit tests
python -m unittest discover -s backend -p "test_*.py" # the Python codec oracle (development only)
Browser tests (tests/*.browser.mjs) run against npm run serve with Chrome or Playwright Chromium, for example node tests/timeline.browser.mjs. npm run test:browser starts the server and runs them all, or those whose names contain the words you give it (npm run test:browser -- timeline hotkeys), and lists which pass, skip or fail. Some tests read a local corpus of Pivot projects that is not distributed; without it they skip and name the missing file (STYK_REQUIRE_FIXTURES=1 makes them fail instead). Desktop tests and scripts (tests/*.desktop.mjs, scripts/smoke-*.mjs) open the app in a window; set STYK_BACKGROUND_WINDOW=1 to open it off-screen without taking focus (packaged builds too). .github/workflows/ci.yml shows what runs on every pull request.
| Location | Responsibility |
|---|---|
src/editor*.mjs, src/pivot/ | Document model, commands, undo/redo, rigs, native evaluation and validation |
src/engine/engine-stage.mjs, src/engine/engine-playback.mjs | The scene canvas drawn by the engine, playback tickets |
src/document-transport.mjs | Bounded document snapshots |
engine/ | The Rust engine: document store, Pivot and Stick Nodes codecs, evaluation, rendering, editing (docs/RUST-ENGINE-PORT.md) |
src/engine/ | How the app reaches the engine (stage, playback, export, editing) |
src/import-*.mjs, backend/, codecs/, native/ | Import into the editor, the Python codec kept as a test oracle, native helpers |
src/document-export*.mjs, src/image-*.mjs, src/video-export.mjs | Saving, recovery and image/video export |
src/app.mjs, src/shell/, src/ui/, src/styles/ | Interface, workspaces, timelines and styles |
src/locales/, src/localization*.mjs | Translations |
desktop/ | Electron main process, preload bridge, file access, updates |
web/ | Browser build: service worker and Cloudflare configuration |
tests/, scripts/ | Tests, smoke tests, build and release scripts |
perf/ | Measuring the app's speed: scenarios, environments, reports (npm run perf, docs/PERFORMANCE.md) |
docs/ | Feature contracts and architecture |
Start with docs/ARCHITECTURE.md. Feature behavior is documented in docs/, for example the timeline, scene editing and the engine's rendering.
Bug reports, ideas, translations and pull requests are welcome. Read CONTRIBUTING.md first, and follow the Code of Conduct. Report security problems privately as described in SECURITY.md.
StykAnimate is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3 or (at your option) any later version. Bundled third-party components keep their own licenses; see THIRD_PARTY_NOTICES.md.
The StykAnimate name and logo identify the official project. The GPL lets you fork and redistribute the code, but please give modified versions a different name and icon so people can tell them apart from official releases.
StykAnimate is an independent project. It is not affiliated with or endorsed by Pivot Animator or Stick Nodes; those names are used only to describe file compatibility.