aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers
diff options
context:
space:
mode:
Diffstat (limited to 'docs/superpowers')
-rw-r--r--docs/superpowers/plans/2026-09-15-status-registry.md40
1 files changed, 35 insertions, 5 deletions
diff --git a/docs/superpowers/plans/2026-09-15-status-registry.md b/docs/superpowers/plans/2026-09-15-status-registry.md
index 614952c..c98769d 100644
--- a/docs/superpowers/plans/2026-09-15-status-registry.md
+++ b/docs/superpowers/plans/2026-09-15-status-registry.md
@@ -67,7 +67,7 @@ Do not re-probe these; they are measured, not assumed.
Two claims come from the documentation and have not been observed running. Record what actually happens in the task report, and add an `AGENTS.md` trap in Task 8 for whichever bites.
- `FileView` with `watchChanges: true` is documented to fire `fileChanged` on its own `setText()`. If so, the singleton sees its own writes and must not re-enter. Task 1 handles this with a value comparison rather than a re-entrancy flag; confirm the comparison is actually needed.
-- `IdleInhibitor` is documented to need a non-null `window` to do anything. Confirm that assigning the keepalive window is sufficient and that `hyprctl clients` count changes.
+- `IdleInhibitor` is documented to need a non-null `window` to do anything. Confirm that assigning the keepalive window is sufficient. The `hyprctl clients` count does not change: the inhibit lands on a layer surface, which that listing ignores, so check it behaviorally with a throwaway `hypridle -c` (Task 4 Step 4).
---
@@ -709,18 +709,33 @@ This needs the user's running shell, not the transient smoke instance. Ask the u
```bash
statusctl_path=desktop/modules/status/statusctl
+cat > /tmp/hypridle-check.conf <<'EOF'
+listener {
+ timeout = 8
+ on-timeout = touch /tmp/hypridle-fired
+}
+EOF
+rm -f /tmp/hypridle-fired
+hypridle -c /tmp/hypridle-check.conf &
+idle_pid=$!
+
bash "$statusctl_path" presentation set 1
sleep 1
echo "dnd now: $(bash "$statusctl_path" dnd get) (expect 1)"
~/bin/breaktimer.sh status
-hyprctl clients | grep -ci inhibit
+sleep 10
+test -e /tmp/hypridle-fired && echo "inhibitor FAILED: fired while presenting" || echo "inhibitor held"
+
bash "$statusctl_path" presentation set 0
sleep 1
echo "dnd now: $(bash "$statusctl_path" dnd get) (expect 0)"
~/bin/breaktimer.sh status
+sleep 10
+test -e /tmp/hypridle-fired && echo "inhibitor released, idle fired" || echo "inhibitor STUCK"
+kill "$idle_pid"
```
-Expected: `dnd now: 1`, breaktimer reports `paused`, the inhibitor count rises by one, then `dnd now: 0` and breaktimer reports `running`. Record the actual inhibitor counts in the task report; if the count does not change, the `IdleInhibitor` assumption is wrong and Task 8 gets a trap saying so.
+Expected: `dnd now: 1`, breaktimer reports `paused`, `inhibitor held`, then `dnd now: 0`, breaktimer reports `running` and `inhibitor released, idle fired`. The check is behavioral because `hyprctl clients | grep -ci inhibit` counts the per-toplevel `inhibitingIdle` field only; the inhibitor is asserted on the keepalive layer surface, which that listing does not cover, so the count never moves. Record the marker results in the task report.
- [ ] **Step 5: Commit**
@@ -1087,10 +1102,25 @@ Ask the user to click the waybar glyph and confirm the drawer's Status page swit
- [ ] **Step 4: Confirm only one inhibitor is asserted**
```bash
-hyprctl clients | grep -ci inhibit
+cat > /tmp/hypridle-check.conf <<'EOF'
+listener {
+ timeout = 8
+ on-timeout = touch /tmp/hypridle-fired
+}
+EOF
+rm -f /tmp/hypridle-fired
+hypridle -c /tmp/hypridle-check.conf &
+idle_pid=$!
+bash desktop/modules/status/statusctl presentation set 1
+sleep 10
+test -e /tmp/hypridle-fired && echo "inhibitor FAILED: fired while presenting" || echo "inhibitor held"
+bash desktop/modules/status/statusctl presentation set 0
+sleep 10
+test -e /tmp/hypridle-fired && echo "inhibitor released, idle fired" || echo "second inhibitor still held"
+kill "$idle_pid"
```
-Ask the user to run this with presentation mode off, then on. Expected: the count rises by exactly one, not two. Two would mean the built-in waybar module is still running.
+Ask the user to run this. Expected: `inhibitor held` while presentation is on, then `inhibitor released, idle fired` within a few seconds of turning it off. `second inhibitor still held` would mean the built-in waybar module is still running. `hyprctl clients | grep -ci inhibit` is not the check: a layer-surface inhibitor does not appear in that listing.
---