ART Framework — presentation layer for Slay the Spire 1 (Desktop ModTheSpire + Amethyst-compatible jars).
Version: see gradle.properties → artframework.version (currently 1.0.0-alpha.4).
- Presentation-only — no multiplayer protocol, party, or combat-authority types here.
- Dual track (
docs/design/dual-track.md):- C1 Synthetic — scene2d.ui windows (layout DSL / LML + StageHost + StsSkin)
- C2 Native — thin templates + full-present surfaces (hand/map/event/select/reward/…)
- SignalBus + HostAssets + EntityPresent presentation slots
- Shipped milestones 0–43 (room/full-present production, PresentPack, node-signal runtime, and C2 Lightwave chrome/FX)
Open work: docs/task.md. Design hub: docs/design/art-framework.md.
Consumer: docs/development/consumer.md.
API stability: docs/development/api-stability.md.
Changelog: CHANGELOG.md.
Release gate: ./scripts/release-gate.sh.
-
JDK 8+ (bytecode target 1.8)
-
Absolute paths to:
Env (ArtFramework) Typical source ART_STS_JARSTS desktop-1.0.jarART_BASEMOD_JARBaseMod.jar ART_MODTHESPIRE_JARModTheSpire.jar
Copy .env.example → .env.local and fill the ART_* key names with local STS / BaseMod / ModTheSpire paths.
Optional: ART_D1_SERIAL / ART_D2_SERIAL (device jar push); ART_INSTALL_DIR / ART_CONSUMER_JAR (publish-art-local).
Optional developer-only STS2 assets use ART_STS2_ROOT and can be bundled with
./scripts/package-sts2-assets.sh. The generated Sts2Assets.jar is gitignored and is
never included in either release artifact.
The optional Spine 4.2 runtime artifact is built separately with
./scripts/build-spine42-runtime.sh; its build contains no tests or STS2 assets.
./scripts/with-art-env.sh test
./scripts/with-art-env.sh jar
./scripts/release-gate.sh # JUnit + art-verify + version + consumer fixture
./scripts/publish-art-local.sh # jar + optional install via envArtifact: build/libs/ArtFramework.jar.
Default gate is JUnit. OpenCode: @junit-test. Optional on-device: @android-deploy-jar.
UI tooling: cd tools/art-verify && python3 -m unittest discover -s tests -v or @art-verify.
Common D1 lab operations:
scripts/art-lab ready
scripts/art-lab combat verify-full
scripts/art-lab console "art probe"modid:artframework- Depends on:
basemod - Consumers:
"dependencies": ["basemod", "artframework"]and ship both jars (do not fat-jar ArtFramework into the consumer).
| Package | Role |
|---|---|
artframework.api |
Facade, UiOps/UiProbe, window defs |
artframework.core |
UiTree, signals, Theme, HostBackend |
artframework.context |
ContextFrame, present surfaces, intents |
artframework.ecs |
EntityId + PresentationWorld for ART-owned presentation state |
artframework.assets |
HostAssets packs / ResourceId |
artframework.c1 |
Synthetic runtime, StageHost, layout/LML |
artframework.c2 |
Native templates + EntityPresent |
artframework.sts1 |
STS1 host backend, draw paths, patches, lab |
artframework.component / render |
Composition AST + effects |
artframework.ArtFrameworkMod |
MTS entry |
MIT — Copyright (c) 2026 ZJustin117.
This project does not grant rights to Slay the Spire, MegaCrit assets, or third-party mods (e.g. BaseMod, ModTheSpire). Runtime use requires a legitimate game install and those dependencies under their own terms.