Repository navigation
animaEngine 0.2.1 — startup-crash patch
animaEngine 0.2.1 — startup-crash patch
Patch release for a single nasty bug: 0.2.0 crashed on startup on
distros that don't ship libxkbcommon-x11 preinstalled. If your
0.2.0 install works, you don't need this update. If it died with
Library libxkbcommon-x11.so could not be loaded.
— this is the fix.
What went wrong
In 0.2.0 we turned on the AccessKit feature for egui-winit so
screen readers on Linux could see the UI. AccessKit on Linux uses
accesskit_unix, which dlopens libxkbcommon-x11.so.0 at runtime
rather than linking it through ELF NEEDED tags.
Three downstream consequences slipped through:
linuxdeploycouldn't see the dependency when packing the AppImage
(it walks NEEDED tags, notdlopencalls)cargo-deb's$autoreads the same NEEDED tags, so the.deb
didn't declare a dependency either- The CI smoke test runs on a minimal Ubuntu image that doesn't
pulllibxkbcommon-x11through any other package, so it crashed
the same way
Three independent fixes, one root cause.
Fixes in this release
| Surface | Fix |
|---|---|
| AppImage | scripts/build-appimage.sh now resolves libxkbcommon-x11.so.0 via ldconfig on the build host and passes it through --library to linuxdeploy. The library is bundled inside the AppImage. |
.deb |
[package.metadata.deb] depends now explicitly lists libxkbcommon-x11-0, so apt install pulls it in on fresh systems. |
| CI | All four jobs that compile Rust (clippy, test, build, smoke) now install libxkbcommon-x11-dev alongside the existing system deps. |
Installing
Debian / Ubuntu (.deb)
wget https://github.com/Alexandru2984/animaEngine/releases/download/v0.2.1/anima-engine_0.2.1-1_amd64.deb
sudo apt install ./anima-engine_0.2.1-1_amd64.debAppImage (any distro)
wget https://github.com/Alexandru2984/animaEngine/releases/download/v0.2.1/animaEngine-0.2.1-x86_64.AppImage
chmod +x animaEngine-0.2.1-x86_64.AppImage
./animaEngine-0.2.1-x86_64.AppImageUpgrading from 0.2.0
No config migration needed — ~/.config/animaEngine/config.toml is
read by both versions unchanged.
If you installed 0.2.0 via .deb:
sudo apt install ./anima-engine_0.2.1-1_amd64.debIf you ran 0.2.0 via AppImage, just replace the binary.
If you built 0.2.0 from source on a machine that already had
libxkbcommon-x11-0 installed, you don't have to do anything — the
0.2.0 binary worked for you. But pulling the patch keeps your CI
green next time you push.
Verifying the build
SHA-256 checksums:
4ebc892578fc79bbe5187e472c3c71b0330c766174d9e043654dcc5cd5e589ad anima-engine_0.2.1-1_amd64.deb
1e283bdeacdd574ec4bdddcc3ed1a6aa21394942668aa8c44f49b8a3dc1a8821 animaEngine-0.2.1-x86_64.AppImage
.deb depends on libxkbcommon-x11-0 explicitly now (verifiable with
dpkg-deb --field anima-engine_0.2.1-1_amd64.deb Depends).
AppImage bundles libxkbcommon-x11.so.0 directly (verifiable by
running ./animaEngine-0.2.1-x86_64.AppImage --appimage-extract 'usr/lib/libxkbcommon*').
Security hardening (from the post-Faza A audit)
This release also folds in four small hardening items from the
external security audit run against 0.2.0 + the 0.2.1 packaging
fix. None of these were release blockers; they're documented + fixed
now because the audit pass is fresh.
- AT-SPI exposure documented in
docs/threat-model.md§9. The
AccessKit bridge enabled in 0.2.0 publishes every egui widget label
(including the Ctrl+K palette query as you type) on the session bus.
Same-UID processes were already inside the trust boundary, but the
what wasn't visible — now it is. Opt-out path noted for operators
who don't need a screen reader. - Locale rejection now logs
warn!ini18n::initand
i18n::set_locale. A hand-editedconfig.tomlwith
locale = "../etc/passwd"previously fell back silently to English;
now it leaves a tracing line so tampering is visible. SECURITY:comment onScene::reset_to_configs/
append_character_config. These methods load
CharacterConfig::asset_pathwithout re-running drag-drop
validation, because today every caller passes a hardcoded preset.
The comment makes the invariant explicit so future contributors
routing user input through these methods know to add the
pre-validation back.- AppImage reproducibility envelope documented + a pinned build
container shipped atpackaging/Dockerfile.appimage-builder. The
.debis byte-reproducible; the AppImage is byte-reproducible only
when built inside the container (bundledlibxkbcommon-x11's hash
is tied to the build host). Maintainers reproducing locally on a
different distro should expect a different SHA256 unless they use
the container.
The audit found 0 critical, 0 high findings against the new
0.2.0 + 0.2.1 surface. Baseline B.1-B.5 hardening (atomic writes,
asset caps, drag-drop validation, single-method D-Bus invariant,
license allowlist) was verified intact, no regressions.
Not changed
Everything user-facing in 0.2.0 carries over unchanged:
themes, tabbed sidebar, presets, command palette, ten locales,
AccessKit bridge.