fix: bug batch may23 — Readymade dock, toggle-devmode tag, OTD blacklist, brew path#346
fix: bug batch may23 — Readymade dock, toggle-devmode tag, OTD blacklist, brew path#346castrojo wants to merge 1 commit into
Conversation
|
Warning Review limit reached
More reviews will be available in 37 minutes and 40 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThis PR updates multiple system configuration and build automation components across the Bluefin project. The changes include a branding submodule version bump, GNOME Shell app/extension removals, image detection logic refactoring in toggle-devmode, OpenTabletDriver installation improvements with udev and module management, linuxbrew path corrections, and condition matching relaxation for system upgrade decisions. ChangesSystem maintenance and configuration refinements
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
system_files/shared/usr/share/ublue-os/just/apps.just (1)
56-56:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winPre-existing bug: Uninstall removes wrong filename.
Line 39 creates
/etc/modprobe.d/blacklist-opentabletdriver.conf, but line 56 attempts to remove/etc/modprobe.d/blacklist-opentabletdriver.rules. The blacklist file will not be cleaned up during uninstall.🐛 Proposed fix
- sudo rm -f /etc/modprobe.d/blacklist-opentabletdriver.rules /etc/udev/rules.d/71-opentabletdriver.rules + sudo rm -f /etc/modprobe.d/blacklist-opentabletdriver.conf /etc/udev/rules.d/71-opentabletdriver.rules🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@system_files/shared/usr/share/ublue-os/just/apps.just` at line 56, The uninstall removes the wrong blacklist filename: creation uses "blacklist-opentabletdriver.conf" but the removal command targets "blacklist-opentabletdriver.rules"; update the sudo rm invocation that currently references "blacklist-opentabletdriver.rules" to remove "blacklist-opentabletdriver.conf" instead (leave the udev rule "71-opentabletdriver.rules" removal as-is) so the created blacklist file is actually cleaned up during uninstall.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@system_files/bluefin/usr/share/ublue-os/just/system.just`:
- Around line 23-25: Enable strict pipe failure and make jq error on
missing/null image: in the toggle-devmode block add set -o pipefail alongside
set -e, change the jq invocation that populates CURRENT_IMAGE to use jq -er so
it returns non-zero on missing/null
(.deployments[0]."container-image-reference"), and after command assignation
validate that CURRENT_IMAGE is non-empty (exit with error/log) before proceeding
to any bootc/boot switch calls; reference CURRENT_IMAGE, rpm-ostree, jq and the
existing set -e/set +e toggles when locating the code to modify.
In `@system_files/shared/usr/share/ublue-os/just/update.just`:
- Line 17: The rollback helper script ublue-rollback-helper currently uses a
strict grep like "^LockLayering=true" which misses variants with leading spaces
or spaces around '='; change its grep invocation to the same
whitespace-and-comment-tolerant regex used in update.just but matching true
(e.g. use grep -q -E -e
"^[[:space:]]*LockLayering[[:space:]]*=[[:space:]]*true([[:space:]]*(#.*)?)?$")
so that lines like "LockLayering = true" or " LockLayering=true" are detected
and the script correctly chooses the bootc switch flow; update the grep call in
ublue-rollback-helper accordingly.
---
Outside diff comments:
In `@system_files/shared/usr/share/ublue-os/just/apps.just`:
- Line 56: The uninstall removes the wrong blacklist filename: creation uses
"blacklist-opentabletdriver.conf" but the removal command targets
"blacklist-opentabletdriver.rules"; update the sudo rm invocation that currently
references "blacklist-opentabletdriver.rules" to remove
"blacklist-opentabletdriver.conf" instead (leave the udev rule
"71-opentabletdriver.rules" removal as-is) so the created blacklist file is
actually cleaned up during uninstall.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 48c1ed5d-775c-4fa5-a094-2e5ec9ad938a
📒 Files selected for processing (7)
bluefin-brandingsystem_files/bluefin/usr/share/glib-2.0/schemas/zz0-bluefin-modifications.gschema.overridesystem_files/bluefin/usr/share/ublue-os/just/00-entry.justsystem_files/bluefin/usr/share/ublue-os/just/system.justsystem_files/shared/usr/share/ublue-os/just/apps.justsystem_files/shared/usr/share/ublue-os/just/default.justsystem_files/shared/usr/share/ublue-os/just/update.just
| # Use the booted deployment reference so stable-daily images get the correct tag | ||
| # Strip transport prefix (ostree-image-signed:docker://, ostree-unverified-registry:, etc.) | ||
| CURRENT_IMAGE="$(rpm-ostree status -b --json | jq -rc '.deployments[0]."container-image-reference"' | sed -E 's|^.*://||; s|^[a-z-]+:||')" |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify robust pipeline/error handling exists in toggle-devmode
file="system_files/bluefin/usr/share/ublue-os/just/system.just"
rg -n -C2 'toggle-devmode:|set -e|set -o pipefail|CURRENT_IMAGE=.*rpm-ostree status -b --json|jq -[a-z]*e' "$file"Repository: projectbluefin/common
Length of output: 705
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file="system_files/bluefin/usr/share/ublue-os/just/system.just"
# Show the toggle-devmode block around the CURRENT_IMAGE line.
nl -ba "$file" | sed -n '10,80p'
# Find all usages of CURRENT_IMAGE in the file to see whether "null"/empty is handled.
rg -n "CURRENT_IMAGE" "$file"Repository: projectbluefin/common
Length of output: 108
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file="system_files/bluefin/usr/share/ublue-os/just/system.just"
# Show the toggle-devmode block around the CURRENT_IMAGE line.
cat -n "$file" | sed -n '10,90p'
# Find all usages of CURRENT_IMAGE in the file.
rg -n "CURRENT_IMAGE" "$file"Repository: projectbluefin/common
Length of output: 4299
Harden toggle-devmode image parsing: enable pipefail and make jq fail on missing/null container-image-reference.
toggle-devmodeusesset -ebut noset -o pipefail, so failures inrpm-ostree/jqwon’t reliably stop the pipeline;set +eis then enabled immediately after, allowing a badCURRENT_IMAGEto flow intobootc switch.jq -rcwon’t fail when.deployments[0]."container-image-reference"is null/missing, which can yieldnull/empty and produce an incorrectNEW_IMAGE.
Suggested fix
toggle-devmode:
#!/usr/bin/env bash
set -e
+ set -o pipefail
@@
- CURRENT_IMAGE="$(rpm-ostree status -b --json | jq -rc '.deployments[0]."container-image-reference"' | sed -E 's|^.*://||; s|^[a-z-]+:||')"
+ CURRENT_IMAGE="$(rpm-ostree status -b --json | jq -er '.deployments[0]."container-image-reference"' | sed -E 's|^.*://||; s|^[a-z-]+:||')"🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@system_files/bluefin/usr/share/ublue-os/just/system.just` around lines 23 -
25, Enable strict pipe failure and make jq error on missing/null image: in the
toggle-devmode block add set -o pipefail alongside set -e, change the jq
invocation that populates CURRENT_IMAGE to use jq -er so it returns non-zero on
missing/null (.deployments[0]."container-image-reference"), and after command
assignation validate that CURRENT_IMAGE is non-empty (exit with error/log)
before proceeding to any bootc/boot switch calls; reference CURRENT_IMAGE,
rpm-ostree, jq and the existing set -e/set +e toggles when locating the code to
modify.
| exit 1 | ||
| fi | ||
| if grep -q -E -e "LockLayering=false" /etc/rpm-ostreed.conf ; then | ||
| if grep -q -E -e "^[[:space:]]*LockLayering[[:space:]]*=[[:space:]]*false([[:space:]]*(#.*)?)?$" /etc/rpm-ostreed.conf ; then |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Find all scripts that check LockLayering configuration to verify pattern consistency.
# Search for LockLayering checks across the entire codebase
rg -n -C3 -P 'grep.*LockLayering' --type=sh --type=bash
# Also search for direct LockLayering references in case other patterns are used
rg -n -C3 'LockLayering' --type=sh --type=bash -g '!*.md'Repository: projectbluefin/common
Length of output: 123
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Repo root is already set by the sandbox.
# 1) Find occurrences of LockLayering in shell-like and just files.
rg -n -C3 'LockLayering' -g'*.sh' -g'*.bash' -g'*.zsh' -g'*.just' -g'*.bash*' -g'*.mk' -g'*.py' -g'*.js' -g'*.ts' -g'*.lua' -g'*.go' -g'*.rb' -g'*.c' -g'*.h' -g'*.service' -g'*.timer' || true
# 2) Narrow to grep/regex usage around LockLayering.
rg -n -C3 -P 'grep[^\\n]*LockLayering|LockLayering[^\\n]*grep|[[^\\n]*\\^LockLayering|LockLayering\\s*=\\s*true|LockLayering\\s*=\\s*false' -g'*.sh' -g'*.just' || true
# 3) Locate ublue-rollback-helper file(s).
rg -n --hidden --no-ignore -S 'ub(lue)?e-rollback-helper|rollback-helper' -g'*.sh' -g'*.just' -g'*' || true
# 4) Specifically search for the claimed strict regex in the codebase.
rg -n -C3 '^\s*LockLayering\s*=\s*true' --hidden --no-ignore || true
rg -n -C3 'LockLayering=true' --hidden --no-ignore || true
rg -n -C3 'LockLayering[[:space:]]*=[[:space:]]*true' --hidden --no-ignore || true
rg -n -C3 'LockLayering[[:space:]]*=[[:space:]]*false' --hidden --no-ignore || trueRepository: projectbluefin/common
Length of output: 3009
Harmonize LockLayering matching between update.just and ublue-rollback-helper.
system_files/shared/usr/share/ublue-os/just/update.justuses a whitespace/comment-tolerant check forLockLayering = false(^[[:space:]]*LockLayering[[:space:]]*=[[:space:]]*false...), butsystem_files/bluefin/usr/bin/ublue-rollback-helperuses a strictgrep -q "^LockLayering=true"(no tolerance for leading whitespace or spaces around=).- With
/etc/rpm-ostreed.conflines likeLockLayering = true(orLockLayering=true), rollback-helper won’t match and will incorrectly fall back torpm-ostree rebaseinstead ofbootc switch. - Update rollback-helper to use the same flexible regex pattern style as
update.just(fortrue).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@system_files/shared/usr/share/ublue-os/just/update.just` at line 17, The
rollback helper script ublue-rollback-helper currently uses a strict grep like
"^LockLayering=true" which misses variants with leading spaces or spaces around
'='; change its grep invocation to the same whitespace-and-comment-tolerant
regex used in update.just but matching true (e.g. use grep -q -E -e
"^[[:space:]]*LockLayering[[:space:]]*=[[:space:]]*true([[:space:]]*(#.*)?)?$")
so that lines like "LockLayering = true" or " LockLayering=true" are detected
and the script correctly chooses the bootc switch flow; update the grep call in
ublue-rollback-helper accordingly.
hanthor
left a comment
There was a problem hiding this comment.
The PR description explicitly states it includes changes from #324 and #300 which are not yet merged. Please rebase once those land to drop the included changes from unmerged PRs and keep only the four fixes this PR is supposed to deliver. Merging now would create a history tangle and could conflict with the in-flight reviews on #324 and #300.
🤖 Copilot Test ReportBranch: Test Results
SummaryBug batch from May 23 — multiple fixes in one PR. Touches just, gnome, brew, and policy areas. |
…ggle-devmode tag, OTD blacklist, brew path - Remove search-light from enabled-extensions (crashes GDM, causes reboots) Closes projectbluefin#324 (pfanzola) - Fix LockLayering grep to ignore commented entries in rpm-ostreed.conf Closes projectbluefin#301, picks up PR projectbluefin#300 (joshyorko) - Remove Readymade installer from dock favorites (users re-click causing confusion) Closes projectbluefin#213 - Fix toggle-devmode reading image-tag from image-info.json; now reads from rpm-ostree status -b --json so stable-daily stays on stable-daily Closes projectbluefin#149 - Fix install-opentabletdriver: cleanup old rule files, add modprobe uinput and rmmod wacom/hid_uclogic so drivers unload immediately without reboot Closes projectbluefin#340 - Fix clean-system brew path: /home/linuxbrew -> /var/home/linuxbrew, use explicit path to match update.just Assisted-by: claude-sonnet-4-5 via pi
0566254 to
fbec3b3
Compare
|
🔔 Needs 2 approvals from maintainers to enter the merge queue (can't self-approve). Both conflict issues have been resolved via rebase — branch is clean and |
Four bug fixes, all lab-verified on
titan-bluefin(KubeVirt VM, ghost testlab, 2026-05-24).Fixes
fix: remove Readymade installer from dock favorites
Closes #213
com.fyralabs.Readymade.desktopremoved fromfavorite-apps. Users were repeatedly clicking the installer icon due to a delay before it autolaunches. The installer still autolaunches on first boot — it just no longer sits in the dock permanently.fix: toggle-devmode reads correct image tag from booted deployment
Closes #149
Replaces
jq '."image-tag"' image-info.jsonwithrpm-ostree status -b --jsonto read the actual booted container image reference.image-info.jsonstoresimage-tag: "stable"even forstable-dailyimages (baked at build time), causingujust toggle-devmodeto rebasestable-daily→stable.Handles all transport prefix formats via
sed -E 's|^.*://||; s|^[a-z-]+:||':ostree-image-signed:docker://ghcr.io/...✓ostree-unverified-registry:ghcr.io/...✓fix: install-opentabletdriver — unload conflicting kernel drivers immediately
Closes #340
Adds
modprobe uinput+rmmod wacom hid_uclogicafter writing the blacklist file so drivers are unloaded in the current session without requiring a reboot. Also cleans up legacy rule files (90-/99-opentabletdriver.rules) before installing new ones.fix: clean-system brew path consistency
/home/linuxbrew/→/var/home/linuxbrew/to match the path used everywhere else (update.just, etc.). Uses explicit path to matchupdate.justguard.Lab verification
Image:
ghcr.io/ublue-os/bluefin:stable+ common fix layer (OCI overlay, no RPM builds)Platform: titan-bluefin KubeVirt VM, ghost lab (192.168.1.102), 2026-05-24
gsettings get org.gnome.shell favorite-appsrpm-ostree status -b --jsontransport prefix striprmmod wacompresentgrep rmmod /usr/share/ublue-os/just/apps.just/var/homegrep linuxbrew /usr/share/ublue-os/just/default.justAssisted-by: claude-sonnet-4-5 via pi
Summary by CodeRabbit
Bug Fixes
Chores