Release notes
Changelog
Why this starts at 1.0.0. The Mac build has its own longer history and is further along in its
numbering (currently v1.1.0). Windows starts its own version line at 1.0.0 rather than pretending to a past it
doesn't have. The two builds share an engine design and a license key, not a version number.
Mac changelog →
Unreleased
In progress
Work since 1.0.0, not yet cut into a numbered build: Loopr moves onto the same shared twoplus11 design system as the rest of the fleet, and a pass of keyboard-focus fixes lands on top of it.
The shared twoplus11 look
- Loopr now draws from the same design system as every other twoplus11 app, on both platforms. The accent,
neutrals, text tiers, corner radii, spacing, type scale and the footer are generated once and vendored in
(
tp11_theme.py), instead of each app keeping its own copy that slowly drifts from the others. - The accent is a slightly different teal as a result. It is no longer picked by eye: each variant is walked until it measurably meets its contrast target, so the primary button is provably legible behind white text rather than assumed to be.
- The footer is the fleet's standard set, in the fleet's order (License, Updates, Help, Review, Tip, Shortcuts), and each one is now labelled rather than a bare icon.
- Checking for updates shows that it is working: the button's glyph spins while the check is in flight instead of appearing to do nothing.
Accessibility (WCAG 2.1 AA)
- Keyboard focus is visible on every control again. Four inputs (the delay box, both sliders, and the licence and per-frame delay fields) switched the focus ring off to make room for their own styling, which also removed the only indication of where the keyboard is. The delay slider is the sharpest case: it is adjusted with the arrow keys.
- A skip link jumps past the sidebar controls straight to the stage.
- The shortcut list is complete and grouped. It named only some of the keys Loopr actually
handles; moving a frame with
Ctrl+arrows, theHome/Endset andEscapewere undiscoverable unless you read the source. - Small accent-coloured text and the selected-frame outline were re-checked against the surfaces they actually sit on, not just against white.
1.0.0
Beta
July 29, 2026
First Windows release. Feature-complete against macOS Loopr 1.0.0, with the platform work done natively rather than translated. (The Mac build has since moved on to 1.1.0 with reverse/ping-pong playback, palette capping, sorting the strip, and splitting an existing GIF into its frames, a few additions that haven't landed here yet.)
The app
- Drop in still images, reorder them, and export a looping GIF. Offline, free, no watermark. Same pure-Pillow encoder as the Mac build, so output is byte-for-byte equivalent; no ffmpeg or other external binary is bundled.
- Per-frame delay editing, plus a global delay/FPS control with Apply to all frames.
- Play / pause preview with true per-frame timing, and frame-by-frame stepping.
- Loop count (infinite, 1×, 3×, 5×), output size scale, and background (clear / white / black) for mismatched frame sizes.
- The preview shows exactly what you'll export: transparent, white, or black behind each frame, matching your Background choice.
- Available in 13 languages. Auto-matches your Windows display language, switchable any time.
- Free for personal use, forever. A business license covers commercial use.
Windows-native behaviour
- Mica backdrop, rounded corners and a themed title bar via DWM, in place of the Mac build's Cocoa vibrancy.
- Appearance toggle: System / Light / Dark. The native title bar repaints with it, so a light app never sits under a dark caption.
- Segoe UI Variable type ramp (Text for UI copy, Display for headings).
- Export GIF is always on screen. It used to sit at the bottom of the scrolling settings list, below the fold at the app's own default window size. You had to scroll the sidebar to find the one button that does the thing. It is now pinned above the footer.
- Corner radii come from a single scale, so chips, cards and dialogs stay in proportion to each other.
- Add a folder… imports a whole numbered sequence in one gesture, the common case when frames come out of a render or burst capture.
- Ctrl-based shortcuts (
Ctrl+O,Ctrl+Shift+O,Ctrl+E,Ctrl+V) and F1 for the shortcut list. - Paste images copied in File Explorer (CF_HDROP), and "Show in folder" on export via
explorer /select. - Exports default to your real Downloads folder, resolved through
FOLDERID_Downloads: a Downloads redirected to OneDrive or a second drive is honoured instead of assuming%USERPROFILE%\Downloads. - Prefs live in
%APPDATA%\Loopr\prefs.json. - The language picker shows language tags (EN, PT-BR, ZH), not flag emoji: Windows renders regional-indicator pairs as bare letters, and a flag is the wrong signifier for a language regardless.
Accessibility (WCAG 2.1 AA)
- The filmstrip is fully keyboard-operable. Reordering was drag-and-drop only, which made
ordering (a primary function) unreachable without a mouse. It is now a proper listbox: arrows move the
selection,
Ctrl+arrows move the frame,Home/Endjump or send it to either end,Deleteremoves. A roving tabindex keeps the whole strip to one tab stop. - Reorders and removals are announced through a live region; they change no visible text, so a screen reader would otherwise miss them entirely.
- Every dialog traps and restores focus, marks the background
inert, and closes one layer at a time onEscape. - The stage preview's alt text names the file and its position, rather than a static caption identical on every frame.
- Contrast fixed on the three loudest controls. Export, the selected loop count and Play were filled with the bright gradient and painted white on top of it, which measured well under a 4.5:1 requirement. They now use a teal ramp at brand-dark values that keeps the same sweep and clears contrast in both colour schemes.
- Loop count and Background announce their selection. Both were groups of plain buttons, so a screen reader read four identical unselected controls and never said which one was active. The loop chips also read as bare punctuation ("∞", "1×") and now have real names in all 13 languages.
- Buying a licence is reachable from the keyboard.
- The per-frame delay popover is a proper dialog: it has a name, Escape closes it from anywhere inside, and focus returns to the frame you opened it from.
- Verified clean by axe-core (WCAG 2.0/2.1 A + AA) across ten UI states in both colour schemes, plus static checks for the things axe cannot see (keyboard reachability, focus return, announcements, and contrast over a gradient, which axe reports as "incomplete" rather than a failure) that run in the normal test suite.
- Honours
prefers-reduced-motionand Windows High Contrast (forced-colors).
Known in this beta
- SmartScreen may still warn on first download despite the signature; reputation builds per file. See the install notes.