Finding
system_files/shared/usr/share/ublue-os/just/apps.just, recipe install-opentabletdriver.
The install branch writes the module blacklist to a .conf file:
echo -ne "blacklist hid_uclogic\nblacklist wacom\n" | sudo tee /etc/modprobe.d/blacklist-opentabletdriver.conf
The uninstall branch removes a .rules file that was never created:
sudo rm -f /etc/modprobe.d/blacklist-opentabletdriver.rules /etc/udev/rules.d/71-opentabletdriver.rules
blacklist-opentabletdriver.conf is never deleted. modprobe.d only reads
*.conf, so the blacklist written at install time survives the uninstall and
keeps loading suppressed across reboots.
Impact
A user who runs ujust install-opentabletdriver and then chooses the
Uninstall path ends up with OpenTabletDriver gone and the in-kernel
hid_uclogic and wacom drivers still blacklisted. Their tablet stops working
with no remaining OpenTabletDriver install to explain why, and nothing in the
recipe output hints at the leftover file. Recovery requires knowing to delete
/etc/modprobe.d/blacklist-opentabletdriver.conf by hand and regenerating the
initramfs.
The udev half of that same rm -f line is correct — only the modprobe filename
is wrong — which makes the failure easy to miss in review.
Recommendation
Change the uninstall branch to remove the file the install branch actually
writes:
sudo rm -f /etc/modprobe.d/blacklist-opentabletdriver.conf /etc/udev/rules.d/71-opentabletdriver.rules
Consider whether the uninstall should also trigger an initramfs regeneration so
the modules load again without a manual step.
Test status
PR #1064 adds tests/test_apps_just.bats, which includes a regression guard
named install-opentabletdriver: uninstall targets the wrong modprobe filename (regression guard). It pins the current buggy behaviour (asserting the
.conf file survives uninstall) and carries an inline comment saying to flip
the assertion when this issue is fixed. Whoever fixes the recipe should invert
that test in the same change.
Per hold-gated quality scope, #1064 does not modify the recipe itself — this
issue tracks the production fix.
Priority
- Impact: medium — user-visible hardware breakage, but only on the uninstall path
- Effort: low — one filename in one line
Filed by quality agent (hold-gated mode).
🐝 Hive Agent: quality | Instance: hosted-projectbluefin-knuckle-gjvq | SHA: unknown
— hive: agent=quality backend=copilot model=claude-opus-5
Finding
system_files/shared/usr/share/ublue-os/just/apps.just, recipeinstall-opentabletdriver.The install branch writes the module blacklist to a
.conffile:The uninstall branch removes a
.rulesfile that was never created:blacklist-opentabletdriver.confis never deleted.modprobe.donly reads*.conf, so the blacklist written at install time survives the uninstall andkeeps loading suppressed across reboots.
Impact
A user who runs
ujust install-opentabletdriverand then chooses theUninstall path ends up with OpenTabletDriver gone and the in-kernel
hid_uclogicandwacomdrivers still blacklisted. Their tablet stops workingwith no remaining OpenTabletDriver install to explain why, and nothing in the
recipe output hints at the leftover file. Recovery requires knowing to delete
/etc/modprobe.d/blacklist-opentabletdriver.confby hand and regenerating theinitramfs.
The udev half of that same
rm -fline is correct — only the modprobe filenameis wrong — which makes the failure easy to miss in review.
Recommendation
Change the uninstall branch to remove the file the install branch actually
writes:
Consider whether the uninstall should also trigger an initramfs regeneration so
the modules load again without a manual step.
Test status
PR #1064 adds
tests/test_apps_just.bats, which includes a regression guardnamed
install-opentabletdriver: uninstall targets the wrong modprobe filename (regression guard). It pins the current buggy behaviour (asserting the.conffile survives uninstall) and carries an inline comment saying to flipthe assertion when this issue is fixed. Whoever fixes the recipe should invert
that test in the same change.
Per hold-gated quality scope, #1064 does not modify the recipe itself — this
issue tracks the production fix.
Priority
Filed by quality agent (hold-gated mode).
🐝 Hive Agent:
quality| Instance:hosted-projectbluefin-knuckle-gjvq| SHA:unknown— hive: agent=quality backend=copilot model=claude-opus-5