Skip to content

Releases: MinutesBack/multi-tofu

Multi-Tofu 0.5.2

Choose a tag to compare

@JMax92 JMax92 released this 30 Aug 03:55

Fixes rotation when multiple Dofus clients report themselves as frontmost. Multi-Tofu now tracks the exact active client before moving to the next or previous character. The release is a universal macOS build for Apple Silicon and Intel.

Multi-Tofu 0.5.1

Choose a tag to compare

@JMax92 JMax92 released this 28 Aug 01:42

Fixes the class portraits showing upside down in the new party panel. Wheel style was unaffected. Update from 0.5.0 keeps your Accessibility grant.

Multi-Tofu 0.5.0

Choose a tag to compare

@JMax92 JMax92 released this 28 Aug 00:38

A new switcher style, styled after the Dofus group panel.

Party panel

Alongside the radial wheel, there is now a party-panel style you can pick in Settings. A slim vertical frame pinned to the left, dark with bronze and gold trim so it sits in the game the way the group frame does. It shows your characters in rotation order, each in a framed class portrait, a crown on your leader, and the key to jump to that character on the right. Hold your wheel key, sweep down the list, release to switch. Pull the cursor away to cancel without switching.

Pick the look in Settings next to the wheel toggle. The radial wheel is still there for anyone who prefers it.

Also

Either style now appears with a single client open, not just two or more.

Install

Unzip, drag Multi-Tofu into Applications, right click and Open the first time. Updating from 0.4.x keeps your Accessibility grant.

Multi-Tofu 0.4.1

Choose a tag to compare

@JMax92 JMax92 released this 27 Aug 23:03

A quiet fix. Multi-Tofu stops flashing to the front while the Ankama Launcher is open.

What was wrong

Two things stacked up. The optional launcher watcher ran every time the Ankama Launcher rewrote its cache, which is constant while it is open, and each time it re-activated an already-running Multi-Tofu and pulled it to the front. On top of that, the app opened Settings on every launch whether or not you had already set it up.

What changed

The watcher now checks whether Multi-Tofu is already running before doing anything. It starts the app once when the launcher opens and stays silent after that. If you use it, reinstall it so the new behaviour takes effect: ./tools/watch_ankama.sh remove then ./tools/watch_ankama.sh install.

Settings now opens on launch only while setup is unfinished, meaning Accessibility is not yet granted, or when you turn the option on yourself. Once it is set up, Multi-Tofu sits quietly in the menu bar and stays there.

Install

Unzip, drag Multi-Tofu into Applications, right click and Open the first time. Updating from 0.4.0 keeps your Accessibility grant, since the app is signed with a stable identity now.

Multi-Tofu 0.4.0

Choose a tag to compare

@JMax92 JMax92 released this 27 Aug 20:30

Hiding, a crowned logo, and a way out of a stale Accessibility permission.

The permission that looked granted and was not

The banner in Settings only redrew when the list of clients changed, so with no client open it kept saying Accessibility was off long after you had granted it. The permission is now polled in both directions and the banner refreshes on its own while the window is open.

The deeper problem it was hiding: every build of an app signed without a paid Apple developer account gets a new signature, so macOS treats an update as a different app. The row left in System Settings looks switched on and no longer matches. There is now a Fix access button next to the banner that resets the record and relaunches, which is the only thing that makes macOS ask again.

Hide the other clients

A new option, off by default. Switch it on and every client except the one in front disappears while you play. They keep running and come back the moment you switch to them. Turning the option off gives them back, and so does quitting Multi-Tofu, so you can never end up with invisible clients.

Smaller things

  • Command Q quits and Command W closes the Settings window. A menu bar app draws no menu bar, but AppKit still reads key equivalents from the main menu, and there was none.
  • The permission alert is a sheet, so it opens in front of the Settings window instead of behind it.
  • The Settings header put two columns of checkboxes side by side and overlapped itself in French, where every label runs about a third longer. One per line now.
  • New icon: a crowned tofu leading a flock.

Install

Unzip, drag Multi-Tofu into Applications, right click and Open the first time. If you are updating from an earlier version and the shortcuts stop working, open Settings and use Fix access.

Multi-Tofu 0.3.0

Choose a tag to compare

@JMax92 JMax92 released this 27 Aug 19:45

Having it running when you play, plus the performance work from 0.2.4.

Starting it automatically

macOS has no trigger for "start this app when that other app starts". launchd watches paths, mounts and queues, not application launches, and an app can only be told about launches once it is already running. So there are two honest routes, and Multi-Tofu now supports both.

Start at login. A checkbox in Settings, registered through SMAppService so it shows up in System Settings > General > Login Items where you can revoke it. It costs nothing while you are not playing: with no Dofus client running, a scan never reaches the accessibility layer at all.

Or watch the launcher's files. Both the Ankama Launcher and the game write to their own directories on startup, and launchd can watch those.

./tools/watch_ankama.sh install
./tools/watch_ankama.sh remove

It starts the app in the background so nothing steals focus, and launching it twice is harmless because a second instance refuses to start.

Performance, from 0.2.4

The keyboard tap was also watching every mouse move, because the wheel needs the pointer. An event tap sees the whole session event stream and mouse moves are the highest volume events on it. Mouse tracking is now a separate listen-only tap that exists only while the wheel is on screen. At rest the app touches no mouse events at all.

Also

The build no longer fights iCloud, which was making code signing fail at random, and the bundle version is read from the package rather than a hardcoded 0.1.0 that every earlier release reported.

Upgrading

Replacing the app drops the Accessibility grant. Switch Multi-Tofu back on in System Settings > Privacy & Security > Accessibility.

Multi-Tofu 0.2.4

Choose a tag to compare

@JMax92 JMax92 released this 27 Aug 19:36

Performance and packaging. No new features.

The wheel gets its own mouse tap

The keyboard tap was also watching every mouse move, because the wheel needs the pointer position. An event tap sees the entire session event stream, and mouse moves are the highest volume events on it, so that meant per-event work on every movement whether or not the wheel was on screen.

Mouse tracking is now a separate listen-only tap, created when the wheel appears and torn down when it closes. At rest the app touches no mouse events at all. This is the one part of a tool like this that can make a whole machine feel sluggish, so it should cost nothing when idle.

Also

The single instance lock was keyed to the machine rather than to the configuration, so a second setup could not run alongside the first.

The build no longer fights iCloud. Staging moved out of the project folder. An iCloud file provider re-stamps extended attributes onto the bundle faster than they can be stripped, and codesign refuses to sign over them, which made signing fail at random.

The bundle version is real. It is read from the package now, rather than the hardcoded 0.1.0 that every release so far has been reporting in its Info.plist.

Upgrading

Replacing the app drops the Accessibility grant. Switch Multi-Tofu back on in System Settings > Privacy & Security > Accessibility.

Multi-Tofu 0.2.3

Choose a tag to compare

@JMax92 JMax92 released this 27 Aug 19:14

Cosmetic cleanup and a documentation catch-up.

Fixed

Two dead buttons. The reorder arrows beside each character never rendered their glyphs, and the number field had already replaced what they did. They were two blank grey squares. Removed, and the character columns close up.

The build could produce an unsigned app. PlistBuddy and PyInstaller both leave extended attributes behind and codesign refuses to sign over them. The build now cleans and retries, and verifies the signature before reporting success.

Documentation

The landing page and all four readmes now cover everything shipped in 0.2.x, including opening on launch and the one key one action rule. The settings screenshot is regenerated from the current build, showing roles, teams, a leader and the position fields.

Upgrading

Replacing the app drops the Accessibility grant. Switch Multi-Tofu back on in System Settings > Privacy & Security > Accessibility. No restart, it picks up within two seconds.

Multi-Tofu 0.2.2

Choose a tag to compare

@JMax92 JMax92 released this 27 Aug 19:06

Fixes the freeze when recording the peek shortcut, plus three related annoyances.

Fixed

Recording the peek shortcut froze the app. The list of shortcut buttons and the list the click handler indexed into were written down separately, and the handler still had five entries after peek made it six. Clicking peek's button raised an IndexError inside an AppKit action. The order now lives in one constant that both sides read, and the record handlers no longer let an exception escape.

Opening the app showed nothing. A menu bar app that opens to no window at all reads as a failed launch. Settings now opens when you start it, with a switch in Settings to turn that off.

Two copies of the app on disk. The build kept a staging copy after I stopped deleting it. That is a second Dock icon, a second Spotlight result, and a good way to grant Accessibility to the copy you are not running. One bundle now.

Two actions could share one key. Whichever the app checked first won and the other silently never fired. Recording a key that another action holds now frees it there, and a config that already clashes says so in the status line.

Upgrading

Replacing the app drops the Accessibility grant. Switch Multi-Tofu back on in System Settings > Privacy & Security > Accessibility. No restart, it picks up within two seconds.

If your next and previous ended up on the same key, re-record one of them and the other is freed automatically.

Multi-Tofu 0.2.1

Choose a tag to compare

@JMax92 JMax92 released this 27 Aug 18:52

Fixes a freeze reported against 0.2.0.

The bug

Recording a shortcut in Settings and then changing the language locked the app up.

The key capture callback ran inside the event tap, which lives on the main run loop, and it called the App Nap check, which shelled out to defaults read with a five second timeout per bundle id. That blocked the whole app, and macOS disabled the event tap on top of it, so the shortcuts stopped too.

The fix

App Nap state is now read and written through CFPreferences in process, 0.5ms rather than up to ten seconds. The capture callback hands its work to the next run loop pass, the same rule the other shortcuts already followed. And touching any other control abandons a recording in progress, so a capture can never fire into a control that has been rebuilt underneath it.

A regression test reproduces the exact sequence and asserts the run loop keeps ticking throughout. It runs in CI.

Upgrading

Replacing the app drops the Accessibility grant, as always. Switch Multi-Tofu back on in System Settings > Privacy & Security > Accessibility. No restart, it picks up within two seconds.