Repository navigation
animaEngine 0.2.0 — UI/UX polish
animaEngine 0.2.0 — UI/UX polish
A twelve-step coherence pass on top of 0.1. The engine renders the
same content; the chrome around it is a different product.
TL;DR
Themes (4 of them, including high-contrast AAA), a tabbed settings
sidebar with collapsible inspector, a Ctrl+K command palette, six
bundled scene presets, ten UI languages, and an AccessKit screen-reader
bridge — all without leaving Rust, all under 9 MB on disk.
Highlights
🎨 Four themes
Dark and Light by default, plus two high-contrast siblings tuned to
WCAG AAA (≥ 7:1 text contrast, 3 px focus ring, zero animation time
for motion-sensitive users). Switch in Appearance → Theme — every
panel re-renders instantly, no restart, no flicker.
CI now refuses any colour change that drops the palette below its
threshold. Coherence is enforced, not hoped for.
🧭 Redesigned settings sidebar
Three tabs replace the long scroll:
- Inspector — entity-specific controls in collapsible sections
(Position / Appearance / Animation / Behavior) with the
most-used quick-toggles pinned at top (Visible, Gravity) - Scene — entity list with a pulsing accent stripe on the
selected row, plus the new preset gallery - Appearance — theme picker, language picker, and a read-only
keyboard reference table covering all 21 actions
A sticky header carries the app icon, a sticky footer shows the
live entity count.
🚀 Ctrl+K command palette
A fuzzy-search popup centered near the top of the screen. Type
"halloween" to find a preset; type "light" to switch themes;
press Enter / click to execute. Closes on Esc or another Ctrl+K.
📚 Six bundled scene presets
One-click starting points using only the shipped demo assets — no
external paths, never fails out of the box:
| Preset | Vibe |
|---|---|
| Cozy Companion | One gentle ghost wandering on the right edge |
| Productivity Zen | Static slime + heart at low opacity in a corner |
| Halloween Party | Three ghosts marching with mismatched speeds |
| Birthday Confetti | Hearts and stars raining down with gravity |
| Studio Session | All five demo characters with mixed behaviours |
| Cursor Follower | A cat that tags along with the mouse |
Each preset can Append (suffixes IDs so nothing collides) or
Replace (wipes the current scene first, styled destructive
so the choice feels deliberate).
🌍 Ten UI locales
English, Română, Español, Deutsch, Français, Italiano,
Português (BR), Polski, Nederlands, 日本語. The active locale auto-
detects from LANG / LC_ALL / LC_MESSAGES on startup; an
explicit override in Appearance → Language persists across
restarts. Backed by Project Fluent, English fallback at every lookup
so a missing translation never produces an empty label.
The language picker lists autonyms — your language in its own
script — so you can find yours without reading English first.
♿ Accessibility commitments
- AccessKit + AT-SPI bridge enabled by default — Orca, Speakup,
and other Linux ATs read every egui widget without further setup - High-contrast theme variants clear WCAG AAA on every text tier
- Visible focus rings (2 px on standard themes, 3 px on HC) on
every interactive widget - Read-only keyboard reference table documents all 21 actions in
one place
Full commitments + deliberate non-goals in
docs/accessibility.md.
👻 New app icon
The "Ghost Mascot" — a friendly white ghost on a violet gradient
with motion-dot trails. Chosen from three exploratory variants
kept in the repo for future reference. Replaces the previous "a"
mark across the desktop file / hicolor theme.
Other changes
- Toast notifications redesigned per the design system: bg.elevated
surface, semantic-coloured severity icons (CheckCircle,
Warning,XCircle,Info), slide-in fade-out animation timed
off the toast's age - Three dismissible inline onboarding hints for fresh users (tabs,
V/G shortcuts, theme instant-apply). Existing users skip
everything via#[serde(default = "OnboardingProgress::all_seen")] - Settings sidebar default width: 280 → 320 px
- Phosphor icon font wired through
src/ui/icons.rs— every glyph
in the UI is now a named constant
Tests
119 tests pass (up from 90 in 0.1.0). New coverage:
- WCAG contrast assertions on every theme variant
- FTL syntax + key-coverage parity across all ten locales
- Preset roster shape (non-empty, under cap, unique IDs, demo-asset-only)
- Action enum metadata completeness
- Toast / spinner timing-curve helpers
- Onboarding serde upgrade paths
Installing
Debian / Ubuntu (.deb)
wget https://github.com/Alexandru2984/animaEngine/releases/download/v0.2.0/anima-engine_0.2.0-1_amd64.deb
sudo apt install ./anima-engine_0.2.0-1_amd64.debAppImage (any distro)
wget https://github.com/Alexandru2984/animaEngine/releases/download/v0.2.0/animaEngine-0.2.0-x86_64.AppImage
chmod +x animaEngine-0.2.0-x86_64.AppImage
./animaEngine-0.2.0-x86_64.AppImageFrom source
git clone https://github.com/Alexandru2984/animaEngine
cd animaEngine
git checkout v0.2.0
sudo apt install -y build-essential cmake libvulkan-dev \
libx11-dev libxcb1-dev libxkbcommon-dev libwayland-dev libxrandr-dev
cargo build --release
./target/release/anima_engineVerifying the build
SHA-256 checksums:
f60e611a411ad8da95cf1c3f15699f0d813f77b941ea48ca57fb0c7278eabccb anima-engine_0.2.0-1_amd64.deb
cb1c0fa7d73239eb649efda988a42cb8245cf38525270484d64e177fa649422c animaEngine-0.2.0-x86_64.AppImage
# .deb integrity + checksum
sha256sum -c SHA256SUMS-v0.2.0.txt
dpkg-deb --info anima-engine_0.2.0-1_amd64.deb
dpkg-deb --contents anima-engine_0.2.0-1_amd64.debReproducing the build locally:
make deb # produces build/anima-engine_0.2.0-1_amd64.deb
make appimage # produces build/animaEngine-0.2.0-x86_64.AppImageKnown issues
pastecrate flagged as unmaintained (RUSTSEC-2024-0436). Pulled
in transitively bywgpu-hal(macOS metal backend) and
accesskit_winit(Windows AT-SPI bridge). Neither path executes
on the Linux X11 / Wayland targets we ship for, so no runtime
exposure. Will land an upstream fix in a follow-up.- Romanian translations are native-quality; the other nine locales
are best-effort technical translations awaiting native review.
Pull requests againstsrc/i18n/locales/*.ftlvery welcome.
Upgrading from 0.1
Configs round-trip cleanly. The new fields (theme, locale,
onboarding) all carry #[serde(default = ...)] annotations tuned
so that upgrading users:
- Keep their existing scene as-is
- Default to Dark theme (matching 0.1's behaviour)
- Default to environment locale (no UI change unless
LANG
is non-English) - Skip every onboarding hint (those are only for fresh installs)
Nothing in ~/.config/animaEngine/ needs manual editing.
What's next
- 0.2.x patch series for translation fixes from native speakers
- 0.3 plan: user-rebindable keyboard map; persistence for
collapse-state per inspector section; multi-window for multi-
monitor setups; opt-in sound on toast severity