alright so it’s been a minute since the last update. spent a bunch more time going through orvix looking for stuff that’s broken, and honestly found more than i expected given how much i already fixed last time.
found a really annoying pattern this round. a bunch of settings have a “this number has to be smaller than that number or it breaks” rule, and i never actually checked for that anywhere. if your release threshold ends up higher than your trigger threshold, a pinch or grab fires and then immediately releases itself on the next frame, so you get a click but can never actually hold it or drag anything, no crash no error, it just doesn’t work. same deal with the calibration box, if min and max on an axis ever get flipped your cursor just starts moving backwards on that axis with zero explanation. the tilt deadzone had the same issue, could turn a smooth speed ramp into an instant jump to max speed. and there’s a “freeze the cursor so clicks don’t drift” feature that could get silently disabled if two of its settings were misordp as a crash, they just make the app feelsubtly broken, which is honestly worse. fixed all of them so bad values get corrected automatically instead of
just trusting the config file blindly.
two actual bad ones too. if you hand edit ym or volume step to 0, the app straight upfreezes the next time you do that gesture, stuck in a loop that can never finish, only way out is force quitting.
separately, a bad enough cutoff value in thuld cause a real divide by zero and crash the whole thing mid session. both way worse than the silent stuff above since the app just dies with no warning.
this one took a while to track down: there’s exactly one way the tracking loop is supposed to end on its own
without an error, which is the sensor conne session. turns out that looked identical toyou just pressing stop yourself, in literally every part of the app. so if your sensor dropped, it’d silently die
and say “stopped” like nothing happened insng broke. fixed it everywhere, then found the funniest bug of the batch: right after fixing the error message for the menu bar version, there was leftover code
resetting the status back to “stopped” imme fix i’d just made. that one made me laugh.
feels like every session i find a new way tuck down. this time: starting a grab whilealready mid pinch could leave the button held down forever, quitting the app didn’t wait for shutdown to actually
finish so it could kill things mid cleanup, events don’t carry a screen position, andthe code was throwing away any event without one, silently dropping the release too.
other stuff: calibration and live tracking could both start at once and step on each other’s state, same with
loading a profile mid calibration, so i add. a broken config file used to crash theterminal app, the calibration tool, and one of the visualizers even though the menu bar version already handled it
gracefully, now they all fall back the same leaking the sensor connection on close.volume control has no timeout and runs right in the main gesture loop, so a stray permission popup could freeze
the whole app. ctrl-c in the terminal versitead of exiting clean. the radial menu wascaching your screen size once and never updating it, so unplugging a monitor left it positioned wrong for the rest
of the session, found basically the same bua different variable. and i found a variable named like it held pixels that was actually always holding millimeters, with a comment literally admitting it was
wrong, so i renamed it.
also cleaned up a pile of stale docs, caught myslef making a bad fix and reverted it before it did damage, anddeleted a config setting that turned out completely dead.