Install the desktop before anything allowed to fail, and let Terra be installed twice
Two bugs, one story: ./install on a machine that had been half set up before produced no Hyprland at all, and said so in one line among twenty minutes of scrollback. Terra bootstraps itself with --repofrompath, which defines a throwaway repo id just long enough to install terra-release. Run it again on a machine that already has terra-release and dnf5 refuses the whole transaction -- the throwaway id collides with the real one. That step sits above everything, so set -e ended the stage before a single package was considered. It is skipped now when terra-release is already installed. The rest is the reason one failed repo cost the desktop. Hyprland was installed near the bottom of the stage, below a codec swap, two group updates and a GStreamer glob, any one of which can fail for reasons outside this repository. It now installs directly after the packages it needs and before anything optional, and everything fragile below it runs through a soft helper that logs and continues rather than ending the run. What was stepped over is listed at the end, because tolerating a failure only beats aborting on it if somebody is told. A missing Hyprland is still fatal, and now says so in words. Also removes the leftover disabled solopasha/hyprland COPR, which would mix with lionheartp's the moment anyone enabled it while debugging. Fixes the usage widget reading 1500%: the endpoint reports percentages, not 0..1 fractions. Clamped as well, and the widget answers a click now -- it set interactive:false, which disables the mouse area its own handler needed.
This commit is contained in:
@@ -54,7 +54,7 @@ CREDS
|
||||
cat >"$stub/curl" <<STUB
|
||||
#!/usr/bin/env bash
|
||||
printf '%s\n' "\$*" >>"$work/curl-argv"
|
||||
printf '%s\n' '{"five_hour":{"utilization":0.42,"resets_at":"2026-08-22T14:00:00Z"},"seven_day":{"utilization":0.71,"resets_at":"2026-08-27T00:00:00Z"},"rate_limit_tier":"default_claude_max_5x"}'
|
||||
printf '%s\n' '{"five_hour":{"utilization":42,"resets_at":"2026-08-22T14:00:00Z"},"seven_day":{"utilization":71,"resets_at":"2026-08-27T00:00:00Z"},"rate_limit_tier":"default_claude_max_5x"}'
|
||||
STUB
|
||||
chmod +x "$stub/curl"
|
||||
|
||||
@@ -108,10 +108,40 @@ uncommented "$collector" | grep -qE '>[[:space:]]*"?\$?\{?CREDENTIALS' \
|
||||
|
||||
# ── The reading it produced ─────────────────────────────────────────────────
|
||||
|
||||
# The endpoint already reports percentages. Treating them as 0..1 fractions and
|
||||
# multiplying is how the bar came to read 1500%.
|
||||
[[ "$(jq -r '.usage.fiveHour.used' "$output")" == "42" ]] \
|
||||
|| note 'the five-hour utilisation was not converted to a percentage'
|
||||
|| note "the five-hour reading is $(jq -r '.usage.fiveHour.used' "$output") for a reported 42%"
|
||||
[[ "$(jq -r '.usage.week.used' "$output")" == "71" ]] \
|
||||
|| note 'the weekly utilisation was not converted to a percentage'
|
||||
|| note "the weekly reading is $(jq -r '.usage.week.used' "$output") for a reported 71%"
|
||||
|
||||
# Nothing the widget shows may fall outside the range a percentage has, whatever
|
||||
# the endpoint says. A readout that can print 1500% is one you learn to ignore.
|
||||
cat >"$stub/curl" <<'STUB'
|
||||
#!/usr/bin/env bash
|
||||
printf '%s\n' '{"five_hour":{"utilization":1500},"seven_day":{"utilization":-4}}'
|
||||
STUB
|
||||
chmod +x "$stub/curl"
|
||||
run
|
||||
[[ "$(jq -r '.usage.fiveHour.used' "$output")" == "100" ]] \
|
||||
|| note 'an out-of-range reading was not clamped to 100'
|
||||
[[ "$(jq -r '.usage.week.used' "$output")" == "0" ]] \
|
||||
|| note 'a negative reading was not clamped to 0'
|
||||
|
||||
cat >"$stub/curl" <<'STUB'
|
||||
#!/usr/bin/env bash
|
||||
printf '%s\n' '{"five_hour":{"utilization":42,"resets_at":"2026-08-22T14:00:00Z"},"seven_day":{"utilization":71,"resets_at":"2026-08-27T00:00:00Z"},"rate_limit_tier":"default_claude_max_5x"}'
|
||||
STUB
|
||||
chmod +x "$stub/curl"
|
||||
|
||||
# ── It answers a click ──────────────────────────────────────────────────────
|
||||
#
|
||||
# Pill's MouseArea is gated on `interactive`, so a widget that sets it false and
|
||||
# connects onSecondaryActivated has a handler nothing can ever reach.
|
||||
uncommented "$widget" | grep -q 'interactive: false' \
|
||||
&& note 'the widget disables Pill''s mouse area, so its click handlers never fire'
|
||||
uncommented "$widget" | grep -q 'onActivated' \
|
||||
|| note 'left-clicking the widget does nothing'
|
||||
|
||||
# An endpoint that answers with something else must degrade, not crash.
|
||||
cat >"$stub/curl" <<'STUB'
|
||||
|
||||
Reference in New Issue
Block a user