Repository navigation
Releases: y3owk1n/mimi
Releases · y3owk1n/mimi
Release list
Mimi Nightly
The nightly workflow builds this pre-release from the latest commit on main.
Warning
This is a nightly build, not a tagged release. It can include unfinished changes and regressions. Install a tagged release if you need mimi to keep working day to day.
Build details
- Commit:
e5c0bb1 - Branch:
main - Full SHA:
e5c0bb1743fa4c73c82c59cef467d46684a61b61
Artifacts
mimi-darwin-arm64.zipfor macOS on Apple Siliconmimi-darwin-amd64.zipfor macOS on Intel
Feedback
If a nightly breaks something, include the commit above when you file an issue. It tells us which change to look at.
v0.21.1
0.21.1 (2026-10-13)
Bug Fixes
- action: switch off enhanced accessibility while resizing or moving a window (#421) (62bc311)
- native: log a failed enhanced interface write only when the setting stayed (#422) (6f2c319)
- tiling: switch off enhanced accessibility while placing windows without animation (#419) (22075a0)
Documentation
v0.21.0
0.21.0 (2026-10-10)
Features
- cli: cycle spaces on one display with --same-display (#400) (e33fd98)
- cli: focus a window on another space with focus_window --number (#401) (ee1fdaf)
- cli: print status and doctor as JSON with --json (#402) (64aaf31)
- cli: report how a config reload went (#399) (8007016)
- cli: report the frontmost window in full from query window (#394) (c703e71)
- cli: take --number on resize_window and the move actions (#396) (b07d616)
- hooks: pass the window's number to window hooks (#395) (0a8db18)
- hooks: report the closed window's number on window_closed (#397) (87c040b)
- hooks: watch every event kind while hooks tail is connected (#398) (eb5d10c)
Bug Fixes
- border,action: detect Mission Control and App Expose properly (#361) (f470f1f)
- build: fill the Info.plist versions in just bundle and the nix build (#385) (7ef416b)
- build: stamp the man pages with the release version (#408) (3b7f32e)
- cli: list every subcommand in the query and action help (#409) (9ff5dab)
- cli: make -v print debug logs (#378) (5f790aa)
- cli: make the apply_frames example pick out a layout's frames (#410) (32cff0f)
- cli: print command results on stdout (#407) (bf484fe)
- config: keep a 0 drop zone or stack bar size instead of the default (#406) (063887c)
- config: reject a hook title filter that is not a regular expression (#372) (074fbf2)
- config: reject an unknown field in a [[hooks]] table entry (#404) (51b0fdd)
- config: stop mimi config init replacing an existing config (#373) (81ffc16)
- daemon: never follow a link when emptying the captured logs (#388) (91044dd)
- daemon: refuse to start a second daemon and stop signalling stale PIDs (#370) (5e5b18b)
- daemon: warn about each subscriber's first dropped event (#380) (ae42aa3)
- doctor: suggest a layout command that works when the layout check fails (#412) (47630a1)
- hooks,tiling: kill everything a hook or layout started when it times out (#366) (ea566c7)
- hooks: leave mimi_PID empty when the event has no app (#405) (1c07df6)
- hooks: stop a window title running as code inside a quoted hook variable (#364) (19b1c30)
- logging: make the event log opt-in and rotate it (#381) (15d757e)
- observe: read whether window observers are enabled under the lock (#389) (363589e)
- service: make mimi services stop keep the service stopped (#371) (b2b462c)
- space: stop a cross-display space switch clicking into the target display (#368) (33a5a45)
- space: stop a space switch reporting success when it posted no swipe (#367) (d4069fb)
- status,doctor: report the daemon's own Accessibility grant (#379) (a85ac25)
- tiling: report a resident layout that exited as a layout failure (#392) (44e56b9)
- tiling: rewrite a refused frame through the serializer (#390) (00c8edb)
- tiling: stop a layout pass delaying hooks and borders until it ends (#365) (04507e7)
- tiling: write the learned minimums through a renamed temp file (#391) (d6632f0)
- window: report no active window instead of a frame error for an app with none (#369) (e68daf9)
Performance Improvements
- tiling: reuse window titles when reading frames back (#376) (b7f0303)
- tiling: stop waiting on new windows the rules keep out (#374) (5cc4f2f)
- tiling: stop writing frames to windows already at them (#375) (e6dc6f9)
Improvements
Documentation
- bring the architecture, hook, and troubleshooting docs in line with the code (#393) (e4c227b)
- correct the docs and skills against the code before the beta release (#413) (941ea9d)
- readme: mark mimi as beta (#403) (ea8fcec)
- tiling: note that drag previews run a oneshot layout up to 25 times a second (#377) (479a33e)
v0.20.3
0.20.3 (2026-10-07)
Bug Fixes
- border: keep the focused border off a floating picture in picture window (#359) (a70d6e1)
- observe: tile the first window of an app that was slow to accept the observer (#356) (72bea91)
- space: switch spaces on macOS 27 when natural scrolling is off (#354) (367fe06)
- tiling: forget a window's minimum size once it takes a smaller frame (#351) (4bf00ef)
- tiling: keep a native tab group in place when its tabs switch (#355) (c0672c6)
- tiling: leave browser extension popups untiled (#358) (c024b84)
- tiling: recognize a new native tab while its frame is still settling (#357) (5d51a7f)
v0.20.2
0.20.2 (2026-10-03)
Bug Fixes
- config: keep reloading after the config file is deleted and recreated (#342) (e070a84)
- config: report misspelled keys instead of ignoring them (#343) (fbed2e8)
- ipc: stop the daemon spinning when it cannot accept connections (#345) (70cb524)
- space: find the cursor's display when SkyLight cannot read the cursor (#344) (d8d519a)
- space: judge a window-to-space move by where the window lands (#346) (bda6330)
- tiling: keep Safari's video full-screen window out of the layout (#332) (7556650)
- tiling: keep the layout when the Dock switches spaces (#334) (ac82793)
Performance Improvements
- border: keep each border to thin strips around its window (#335) (0e9fc2e)
- border: stop resizes leaving the daemon's memory high (#336) (6d8d87f)
Improvements
- log: log what failed silently and quiet the drag noise (#341) (c011642)
- log: put daemon logs at the right level and wording (#338) (0a04e1b)
- log: readable one-line console logs (#337) (87b5f8b)
- native: log the native failures that were silent (#340) (ce44559)
- native: route native logs through the daemon logger (#339) (d840fb4)
v0.20.1
v0.20.0
0.20.0 (2026-09-17)
TLDR:
- added
mimi doctorfor some troubleshooting - added
mimi hooks <list|fire|tail>for better hooks management - added
displayinformation in window and workspace hooks - added hooks for light or dark mode switches
- added hooks for screen locked and unlocked
- added hooks for display connected or disconnected
- hooks stdin changes from
/dev/nulltojson - update example to support custom paddings on top of usable/visible screen size
- more robust window drag and drop logic and ui
- add
modifierskeys into tiling input to enable more robust use cases likealtand drop makes it float or some sort - borders are now resync when closing a window with
xorcmd+w - some other small fixes
Features
- cli: add mimi doctor to run the troubleshooting checks (#304) (3c65173)
- cli: add mimi hooks list and mimi hooks fire (#313) (010d205)
- cli: add mimi hooks tail to stream the daemon's events (#317) (5fbf9e0)
- cli: check every layout answers a sample input in mimi doctor (#306) (0b57cb6)
- cli: report the daemon's build in mimi status and mimi doctor (#305) (7d1f59f)
- hooks: filter window and workspace hooks by display (#318) (07db30b)
- hooks: fire on_appearance_changed when light or dark mode switches (#308) (ed86d41)
- hooks: fire on_screen_locked and on_screen_unlocked (#309) (fc5cebb)
- hooks: give every hook the event as JSON on stdin (#312) (b07d8d0)
- hooks: tell on_display_changed hooks which displays are connected (#310) (8395b0f)
- tiling: change the padding at runtime with mimi tiling cmd padding (#302) (e8fd9e0)
- tiling: keep a display edge clear with PADDING in rules.py (#300) (24da94c)
- tiling: mark the window a drop would act on while dragging (#314) (20bcc5d)
- tiling: tell the layout which modifier keys a drag was held with (#315) (658c13e)
- tiling: tile a floated window again with an option-drag (#320) (f05d0c8)
Bug Fixes
- border: drop the border of a window closed with Command-W (#303) (a8320d3)
- space: fail a space switch the Dock did not take (#307) (3137dec)
- tiling: leave focus on a window a rule keeps out after a close (#321) (0bc6805)
- tiling: let a floated window tile again after togglefloat (#319) (ad8a0cb)
Documentation
v0.19.0
0.19.0 (2026-09-15)
TLDR:
- added support for border placement via
border.placement = <inside | outside> - added support to hide border if only 1 window in the space via
border.hide_when_single - rewritten border to draw on window server's window instead of appkit
- more border related fixes that interfaces macOS systems
- ensure
focus_follow_mousebehave properly - adds 2 layer of detection before settling with a minimum window size to prevent weird bugs
Features
- border: draw the border inside the window with placement = "inside" (#292) (c99bcb5)
- border: skip the border for a window alone on its space (#293) (6a7274b)
Bug Fixes
- border: hide borders with their windows in Mission Control and Show Desktop (#291) (b662a26)
- border: keep an inside border above a window its app raises (#295) (11fc6b9)
- border: stop an inside border flashing on every click (#296) (32b095b)
- border: stop an inside border flashing when its window is clicked (#299) (ec12358)
- border: stop the border flashing and drifting while a window resizes (#297) (6e439ad)
- focus: follow the mouse between two windows of one application (#298) (7c3dd53)
- mouse: stop focus_follows_mouse focusing the window under a menu or panel (#294) (68a6c0f)
- tiling: stop learning a window minimum from a clamped frame (#289) (5d79f5d)
v0.18.0
0.18.0 (2026-09-14)
TLDR:
- added
mimi action focus_display <number> - added hooks for
on_system_sleep,on_system_wake,on_display_changed - added
mimi action close_window --number <id> - added
mimi action minimize_window --number <id>andmimi action unminimize_window --number <id> - added
mimi action fullscreen_window --number <id> - added relative resize for
action resize_window - added
mimi query spacesandmimi query displays - added
focus_on_mouse - move rules from script to config with more built-in supports, e.g. app in certain space or display, managed or unmanaged and more
- support multiple layout on different space or display
- better minimum size window detection
Features
- action,hooks: focus a display, and hook sleep, wake and display changes (#281) (62f7c7e)
- action,query: list the windows in the Dock, and restore one by number (#283) (4d06869)
- action: close, minimize and full-screen a window, and resize by a delta (#280) (3a74140)
- mouse: give keyboard focus to the window the pointer rests on (#282) (6a30901)
- query: list every space, and say which space and display a window is on (#278) (f172639)
- rules: open a window on a chosen space or display (#285) (49a4645)
- rules: place the windows already open when the daemon starts (#286) (2a6dbae)
- tiling: keep windows out of every layout with rules in config.toml (#279) (1b60385)
- tiling: run a different layout on a chosen display or space (#284) (b94e441)
Bug Fixes
v0.17.0
0.17.0 (2026-09-14)
TLDR:
- added
mimi-ask,mimi-setup-configandmimi-setup-layoutto help in managing your mimi configs and layouts - now mimi's tiling engine and layouts respects windows minimum size, for screen that is small, this is the best effort to tile them properly be it in bsp or strip. Nothing mimi can do due to the fact that those window sizes are fixed at minimum by the window itself.