Skip to content

animaEngine 1.5.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 14:45
· 25 commits to main since this release

animaEngine 1.5.0

The characters come to life, and the overlay finds a place in your day.
Most of it is off until you turn it on.

What you'll notice

  • They are alive, if you want them to be. Tap a character, even
    outside edit mode, and it hops, says one of its own lines and plays
    its sound, with a few hearts. Characters can follow one another, play
    tag, greet each other when they meet and bump into each other; they
    fade in and out, keep hours of their own, and can be livelier in the
    morning and slower at night.
  • Around your day. Reminders every so often or at a set time, said
    by a character in a bubble — and, if you like, as a desktop
    notification with a sound. A focus timer. Bedtime. Snooze for a
    while from the tray. While you are away they doze, and greet you when
    you come back. They step aside while a game, a video or a
    presentation fills the screen, or while an app you choose is in
    front, and can live behind your windows instead of over them.
  • Editing. Undo and redo (Ctrl+Z, Ctrl+Shift+Z). Select several
    characters — Shift+click or a rectangle — and move, change, group,
    line up or space them together; drags snap. Copy, cut and paste
    characters, or paste a picture copied in another app. Throw one.
  • Scenes and files. Save what is on screen under a name, with a
    picture, and switch between scenes from the Scene tab, the palette,
    the tray or on a schedule. Share a scene or one character as a single
    file, save a character as a GIF, and back up everything in one file to
    restore on another machine.
  • Sounds at the volume you want: one volume for everything and one
    for each character, quiet at bedtime, mute from the tray, a shortcut
    or D-Bus.
  • New global shortcuts: Super+Alt+A, H and P (Win+Alt on
    Windows) open edit mode, hide the overlay and pause, in a new config.
    The old Ctrl+Shift+A, H and P were taken from every app while
    this one ran — VS Code's command palette, Firefox's private window,
    KDE's Deselect. An existing config keeps the shortcuts it has.
  • Without a mouse. Shift+F10 or the Menu key opens a character's
    right-click menu, Ctrl+A selects every character, N steps through
    them, and Tab moves through the settings panel. The F-keys can be
    bound.
  • Lighter. The overlay barely works while nothing moves: hidden,
    snoozed, paused or asleep it wakes a few times a second, where native
    Wayland used to draw sixty frames a second, and a hidden overlay on X11
    as many as a shown one. With several monitors, each one's overlay
    draws only when something on it changes. It also starts sooner and
    sets up the GPU with less memory and fewer threads. And while
    characters move, it can draw thirty frames a second instead of sixty
    — always, or only on battery — at the same speed: on a laptop's
    integrated GPU that halved the time drawing took.
  • Ten characters of its own, and a welcome. The ghost, the slime,
    the heart, the star and the cat are drawn again — outlined, lit, with
    eyes that blink — and a bunny, a frog, a robot, a cloud and a mushroom
    join them, in Library's Built-in characters and the Meadow friends
    preset. They walk, fall, dangle when you pick them up and fall asleep
    when you are away, each with drawings of its own. The first time you open edit mode, a welcome lets you choose
    which of them are on your desktop, the language and whether the app
    starts at login. A new icon, too.
  • In your language, more of it. The tray, the presets, the reasons a
    file is refused, a first run's characters and what delivers the global
    shortcuts were English in every language; they are translated now, in
    all ten, and the Keybindings tab names the keys as your keyboard
    labels them. A count is said as your language says that number — "60
    de minute", "5 postaci".

Fixed

A selection of what was wrong before 1.5:

  • Global shortcuts on GNOME under Wayland — Ctrl+Shift+A, H,
    P — worked only while one of the app's own windows had the keyboard.
    The app asked GNOME's shortcuts portal before GNOME knew which app was
    asking, and fell back to an X11 grab. It says who it is now; the first
    time, GNOME asks you to allow the shortcuts, and the app waits for
    your answer for up to ten minutes.
  • Logging out or shutting down with the app running lost whatever it
    had not saved yet — edits still in edit mode, a pause from the tray.
    It saves on the way out now, as its own Quit always did.
  • Installed from a package and started from the desktop's menu, the app
    made an assets folder in your home directory, for its demo
    characters' pictures. They live in its data directory now; an
    ~/assets/demo folder left behind can be deleted.
  • Saving never wrote the sprite groups back: a deleted character's id
    stayed in its group, and a character added later under the same id
    joined that group at the next start.
  • Native Wayland drew sixty frames a second whatever the scene did, and
    edit mode did on both backends.
  • Sounds stopped for good when the sound server restarted.
  • Leaving edit mode or hiding the overlay in the middle of a drag left
    the character frozen, or carried it to the pointer afterwards; on
    native Wayland with several monitors, hiding left the other monitors'
    characters on screen.
  • The right-click menu of a character on another monitor opened on the
    wrong one; opened from the keyboard, no key reached it there and a
    screen reader did not see it — it now opens on the panel's monitor.
  • On native Wayland at a scale above 1 — 150 %, 200 % — the settings
    panel came out twice its size, clicks on it missed, and everything
    was blurred. Each monitor is now drawn sharp at its own scale.
  • The settings panel's footer covered the last row of a long tab, and
    the panel's text fields had no copy and paste.
  • The settings panel grew wider in some languages, on the Keybindings
    tab in all of them, and a screen reader found some controls without a
    name.
  • On native Wayland, starting the app again while its characters were
    hidden did nothing; it shows them, as on X11.
  • A folder of PNG frames can be dropped, as one animation; a picture
    saved under the wrong extension is known by what it holds; and an
    unreadable picture is refused in your language, without the decoder's
    jargon or the file's whole path.
  • Tabbing through the settings panel scrolls it to the focused control;
    it used to go on out of sight below the panel's edge.
  • The command palette finds a label typed without its accents —
    "atip" finds Ațipește, "theme" thème.
  • The tray's menu caught up with a click only up to three seconds later:
    snoozed from it, it still offered to snooze. It changes at once now.
  • H and I only wrote to the log: H opens the Keybindings tab now,
    every shortcut, and I the Inspector. + raises the opacity on a US
    keyboard too, and on native Wayland Ctrl+Shift+H hides the overlay
    in edit mode, as on X11.
  • After an upgrade, a new action's default could take a shortcut you had
    set, and the Keybindings tab could not remove a new action's default.
  • Duplicate failed for the demo characters when the app was started from
    the desktop's menu, and kept only a character's size and opacity. It
    copies the whole character now.
  • Recording a shortcut, the key also did what it was already bound to:
    Escape left edit mode, S saved — on X11 a global one too, as
    Ctrl+Shift+P paused.
  • The frame cache kept every picture at its full size, and each start
    made it smaller again: a 1024² sequence of 24 frames took 96 MB on
    disk for the 6 MB it uses. It keeps them as they are shown now.
  • "Reset onboarding hints" did not bring "What's new" back, and a tour
    started again began at its last step.
  • Two warnings could be written every frame — an X11 window on another
    monitor, a picture read back on Windows — and fill the log; each is
    said once now. A character listed in two groups did the same.
  • Building from source as the README said stopped on a clean system: a
    library it needed was missing from the list, and six it named were
    never used. The AUR package did not build on current Arch at all;
    it does again.
  • A GIF cut short, dropped or added from the library, froze the app and
    filled the log. Its frames before the cut show, or it is refused if
    there are none.
  • With more than 256 pictures in the library, the Library tab would not
    open. It does, and a broken file in it, or dropped, says why in your
    language; a file deleted from the library folder leaves the list.
  • From the keyboard or a screen reader, the time fields took no arrow
    keys and seven lists stayed open after a choice; renaming a group
    typed in front of its name.

Changed

  • A new app id, eu.animaengine.Anima, after the project's domain,
    animaengine.eu. If you pinned animaEngine to your dock, pin it again;
    a desktop that granted its global shortcuts asks once more. Shortcuts
    bound in sway, Hyprland or river with the old D-Bus name keep working.
  • On a laptop with an NVIDIA GPU beside an integrated one, the
    NVIDIA GPU is left asleep: loading its driver woke it, and starting
    and quitting each took some 3 s longer. prime-run still draws on it.
  • Lighter with nothing moving. Characters animating at the same rate
    change frames together now: five standing still draw a third of the
    frames they did, and the compositor, which redraws the screen for each,
    does a quarter of the work.
  • On X11 with a screen scale factor above 1, the characters are
    drawn at it too, as the panel always was: at 200 % they were half the
    size they are on native Wayland.
  • Sharp on a HiDPI screen. A picture larger than 256 pixels was kept
    at 256 and, on a 200 % screen, drawn twice as large. It is kept at the
    screen's scale now, up to 512 pixels, and shows at the same size —
    on each monitor, at its own scale.
  • Messages show outside edit mode too, in the bottom-right corner,
    and clicks go through them: one raised while the panel was closed — a
    reload, a refused file, a pause from the tray — was gone before anyone
    opened it.
  • Cycle character is on N. Tab belongs to the settings panel's
    focus, where it never cycled on X11 and only once on native Wayland.
    A config that still had Tab there as it came moves to N; one set
    by hand stays.
  • A config written by a newer version no longer costs the whole
    file
    , nor does a scene, a shared file or a backup: what this version
    cannot read is left out, with a banner or a toast, and kept in the
    file for the version that wrote it.
  • Five things are on from the start, each with its switch: stepping
    aside for full-screen apps, dozing after ten minutes away and the
    welcome back, the little effects, and snapping while dragging.

Security

From an audit of 1.5 (security-audit-2026-10-15.md,
in Romanian) and the fuzzing of every new file reader:

  • Every picture is decoded within the same limits on its size and
    memory, whichever way it arrives; a GIF or WebP that claimed a huge
    frame could ask for gigabytes, and a cut-short GIF looped forever.
  • Desktop notifications escape their text: a reminder from a restored
    backup or a name from a shared scene could carry links or images to a
    server that reads markup.
  • A paste from the X11 clipboard has a deadline, and a script's output
    goes to the debug log only.
  • 23 crates left the build (URL and ICU parsing, a browser launcher) with
    a link feature the app never used; the others are at their latest
    compatible versions.

Compatibility

  • Upgrading: additive. A 1.4 config loads with every value kept —
    configs written by 1.0 and 1.4 themselves are test fixtures now.
  • Going back to 1.4 or earlier: they read a 1.5 config as long as it
    holds nothing they lack. Once it does — a character that follows
    another or plays tag, say — they start with the default scene and keep
    your file beside it as config.toml.bak-corrupt; copy it back after
    upgrading again. (Checked both ways with a build of 1.4.0.)
  • D-Bus: new methods StartFocus, StopFocus, Snooze, Wake,
    NextScene, SetMuted and ToggleMute; the old ones are unchanged.
  • Flatpak: two more read-only D-Bus names, for the idle time
    (org.gnome.Mutter.IdleMonitor) and the battery
    (org.freedesktop.UPower).
  • The frame cache is in a new format: the first start after the
    upgrade decodes each picture again, once, and replaces the old file.
  • New setting: [global] frame_rate (smooth, light,
    light_on_battery); 1.4 ignores it.
  • No change to the CLI, or to where the config and the data live; 1.5
    adds folders inside them: scenes/ beside config.toml, and demo/
    in the data directory for the first characters' pictures. See
    stability-policy.md.

Known gaps in verification

Everything in 1.5 was run in the headless test rig on both backends —
sway with software rendering, a private D-Bus and PipeWire, stand-ins
for the portals, Mutter's idle monitor and the notification server —
plus the X11 shortcuts and two monitors on a real X server, the .deb
and the AppImage built by the release scripts and run, and the unit
tests under Wine.
On the maintainer's laptop (GNOME on Wayland, an AMD integrated GPU
beside a sleeping NVIDIA one) the installed .deb ran: the shortcuts
portal took the session, the NVIDIA GPU stayed asleep, and the GPU time
of thirty and sixty frames a second was measured. Still to be checked
there, with a sound card, Orca and the AppIndicator tray: the list in
gnome-checklist-1.5.md. The Windows build
compiles and its unit tests pass under Wine; it has not run on real
Windows. The new text is machine-translated in nine of the ten
languages.

The full list is in CHANGELOG.md.