Commit Graph

1758 Commits

Author SHA1 Message Date
c45ec4d38a jellyfin: alert on failure 2026-05-12 22:08:18 -04:00
9afcb8f892 flare: update image patch 2026-05-12 12:12:22 -04:00
9417716e68 zen: properly setup bypass paywall extention
All checks were successful
Build and Deploy / mreow (push) Successful in 1m34s
Build and Deploy / yarn (push) Successful in 1m5s
Build and Deploy / muffin (push) Successful in 1m5s
2026-05-12 09:38:47 -04:00
51a6d53582 Reapply "valkey: disable check phase to fix build"
All checks were successful
Build and Deploy / mreow (push) Successful in 58s
Build and Deploy / yarn (push) Successful in 1m3s
Build and Deploy / muffin (push) Successful in 3m56s
This reverts commit ea0f9884d3.
2026-05-12 02:16:31 -04:00
9d4b420326 systemd: remove patch
Some checks failed
Build and Deploy / mreow (push) Successful in 59s
Build and Deploy / yarn (push) Successful in 1m4s
Build and Deploy / muffin (push) Failing after 16m36s
2026-05-12 00:55:15 -04:00
ea0f9884d3 Revert "valkey: disable check phase to fix build"
This reverts commit 355b6aa065.
2026-05-12 00:54:09 -04:00
355b6aa065 valkey: disable check phase to fix build
Some checks failed
Build and Deploy / mreow (push) Successful in 1m0s
Build and Deploy / yarn (push) Successful in 1m5s
Build and Deploy / muffin (push) Failing after 2m12s
2026-05-12 00:48:59 -04:00
bd12ce2a0b zenpower: fix clang build
Some checks failed
Build and Deploy / mreow (push) Successful in 1m13s
Build and Deploy / yarn (push) Successful in 11m32s
Build and Deploy / muffin (push) Failing after 16m33s
2026-05-11 23:58:24 -04:00
e10bc2d87f yarn: remove games drive 2026-05-11 23:51:37 -04:00
836b852cfb fh5: fix fh5-car-table derivation to include dotnet7 2026-05-11 22:48:52 -04:00
c99ee61605 ghostty: disable calt font thing
Some checks failed
Build and Deploy / mreow (push) Failing after 1h46m6s
Build and Deploy / yarn (push) Failing after 1m12s
Build and Deploy / muffin (push) Has been cancelled
2026-05-11 21:53:26 -04:00
fcfd7839a5 update
Some checks failed
Build and Deploy / muffin (push) Has been cancelled
Build and Deploy / yarn (push) Has been cancelled
Build and Deploy / mreow (push) Has been cancelled
2026-05-11 21:50:03 -04:00
168e1bf1c7 update
Some checks failed
Build and Deploy / mreow (push) Failing after 1h29m46s
Build and Deploy / yarn (push) Failing after 1m2s
Build and Deploy / muffin (push) Failing after 36s
2026-05-10 00:34:50 -04:00
d50760d638 pi: move completely to openrouter 2026-05-09 13:25:46 -04:00
33d8de0c82 update
All checks were successful
Build and Deploy / mreow (push) Successful in 1h38m14s
Build and Deploy / yarn (push) Successful in 1m23s
Build and Deploy / muffin (push) Successful in 1m12s
2026-05-08 12:26:49 -04:00
8cc8943adb update
All checks were successful
Build and Deploy / muffin (push) Successful in 1m18s
Build and Deploy / mreow (push) Successful in 2m38s
Build and Deploy / yarn (push) Successful in 1m14s
2026-05-08 01:05:56 -04:00
95199b9627 update
All checks were successful
Build and Deploy / mreow (push) Successful in 18m23s
Build and Deploy / yarn (push) Successful in 1m14s
Build and Deploy / muffin (push) Successful in 1m11s
2026-05-07 18:00:25 -04:00
3865ceac0f fh5 things
All checks were successful
Build and Deploy / mreow (push) Successful in 7m57s
Build and Deploy / yarn (push) Successful in 1m11s
Build and Deploy / muffin (push) Successful in 1m3s
2026-05-07 17:33:35 -04:00
9a276a633a lact: reduce undervolt 2026-05-07 17:33:15 -04:00
cfd62ea4ac flare: update patches 2026-05-07 17:32:58 -04:00
7cf27f0cda forza-trigger: remove RPM-stuck workaround + bump hysteresis to 120
Two separate causes of stationary trigger pulsing, both fixed:

1. Hysteresis too short. 30 packets (0.5s) was shorter than FH5's
   stationary oscillation period (~1s per state in start-grid/pause
   screen contexts). Bumped to 120 (2s at 60Hz).

2. RPM-stuck workaround removed entirely. Cosmii's RPM_ACCUMULATOR
   (legacy_Program.cs:89-109) forced is_race_on false after 3.3s of
   constant RPM + zero power. While stationary in-race (idle RPM
   constant, power near zero), this would trip, causing a false
   menu transition. Engine idle flutter on power could reset and
   re-trigger it, producing a slow oscillation with clicks on each
   edge. FH5 has been observed to correctly clear is_race_on between
   races (confirmed via live strace), so the workaround is unnecessary.

   Removed: RPM_ACCUMULATOR_TRIGGER_RACE_OFF constant, is_race_on's
   debounce logic, DaemonState.last_rpm and .rpm_accumulator fields.
   is_race_on is now a one-liner: return bool(is_race_on field).

Tests: 57/57 pass. TestIsRaceOn simplified from 4 to 3 tests.
DaemonState reset test no longer checks removed fields.
2026-05-07 17:29:40 -04:00
5798caef37 forza-trigger: hysteresis on is_race_on (real fix for between-race clicks)
Strace post-deploy showed the daemon flipping every other packet between
in-race state (mode 0x21 FEEDBACK + LED green) and out-of-race state
(mode 0x05 OFF + LED black). 8 writes, 8 transitions in 5s — every
HID OUT report a state change.

Root cause: FH5 emits packets where the is_race_on field alternates
True/False at packet rate during menu/loading/transition states.
Cosmii's RPM_ACCUMULATOR debounce only handles the 'flag stuck True
when we're really in a menu' case (quirk #1); it does nothing for
'flag flipping at packet rate' (quirk #2).

Fix: split the read from the hysteresis. is_race_on now returns the
raw flag with quirk #1 applied. commit_in_race applies a packet-count
hysteresis (IN_RACE_HYSTERESIS_PACKETS = 30 ≈ 0.5s at 60Hz) — only
after N consecutive packets of the new value does the committed
in-race state flip. Alternation just keeps the pending counter
oscillating near 0; it never reaches threshold and the run-loop sees
a stable state.

Architecture: hysteresis in a separate function (not in is_race_on)
because the run-loop must update state.last_in_race AFTER side
effects, not before — otherwise the elif transition-detection
breaks. is_race_on stays pure read; commit_in_race is the gatekeeper;
run-loop sets state.last_in_race once at end of packet handling.

Tests grew 54→58. New TestCommitInRace covers:
  - stable input (no pending growth)
  - worst-case alternation (never commits)
  - N consecutive packets commit
  - matching raw resets pending counter

TestIsRaceOn renamed to reflect new (narrower) responsibility.
2026-05-07 15:11:35 -04:00
b9cdc6a9b7 forza-trigger: stop per-packet writes between races (fix periodic clicks)
User reports periodic clicks and LED color changes on the controller
"between races". Theory: out-of-race, the run loop was calling
reset_triggers(controller) AND apply_lightbar(controller, ...) on
every Forza packet (60Hz). Even though both call sites land in
library code that nominally dedupes "same state" writes, in practice
any state change anywhere — including the lightbar dropping a green
channel value as RPM coasts down to idle — triggers a full HID OUT
report rewrite. The OUT report carries the trigger configuration too;
the controller firmware reacts on receipt and produces an audible
click each time.

Fix: out-of-race path becomes edge-triggered. On the in-race → menu
transition we run state.reset() + reset_all() once (turning both
triggers off and the lightbar to (0,0,0)). Subsequent menu packets
make no controller calls at all until in_race flips back to True.
First in-race packet then re-engages handlers and the RPM-driven
lightbar.

Side effect: the menu-mode car-class lightbar coloring is gone — the
bar stays black between races. If we want it back later, it should
be one-shot on the menu transition (NOT updated per-packet). For now
keep it simple: in-race only.

Build clean; tests unchanged (54/54 still pass — they exercise
handlers directly, not the run loop).
2026-05-07 15:00:59 -04:00
c4c9dd7e50 forza-trigger: patch dualsense-controller for vibration freq propagation
All checks were successful
Build and Deploy / mreow (push) Successful in 1m6s
Build and Deploy / yarn (push) Successful in 1m7s
Build and Deploy / muffin (push) Successful in 1m6s
Live strace on yarn during gameplay revealed the daemon was correctly
calling effect.vibration(freq=35) on slip events, but the OUT report
on the wire showed mode=0x26 (VIBRATION) with byte 31 (param9 =
frequency) = 0. The controller firmware treats freq=0 as "no
oscillation" — trigger sits silent in vibration mode. That's why the
user reported "doesn't react to slipping or anything" even after the
pedal-off early-return fix.

Root cause is in dualsense-controller 0.3.1 itself:
  - WriteStates.__init__ registers individual write-states for trigger
    effect params 1-7 only. params 8/9/10 are not registered.
  - update_out_report copies from per-state values to the OutReport,
    again only params 1-7.
  - The OutReport dataclass DEFINES params 1-10 (with defaults of 0)
    and Usb01OutReport.to_bytes writes all 10 to the wire.
  - effect.vibration() puts frequency in param9 — silently dropped.
  - Same hits effect.machine() (params 8,9,10) and effect.galloping()
    (param10). effect.feedback/weapon/bow only use params 1-7 so
    they happen to work.

Fix is a small upstream-style patch added under patches/dualsense-
controller/ and wired into the dualsense-controller derivation in
hosts/yarn/forza-trigger/python-packages.nix via the patches attr:
in update_out_report, after the param7 assignments, read param8/9/10
directly from the parent TriggerEffect state value (which already
carries them correctly from the call site through _set_value).

Verified post-patch by source-reading the installed library:
  out_report.left_trigger_effect_param9 = self.left_trigger_effect.value.param9
  out_report.right_trigger_effect_param9 = self.right_trigger_effect.value.param9
  (and 4 more for left/right param8/10)

Build-sandbox tests (54/54) pass via the forza-trigger-tests build
gate; full yarn NixOS closure builds clean.

Filing upstream against yesbotics/dualsense-controller-python is the
follow-up; until then this is a local patch.
2026-05-07 14:38:12 -04:00
11d283585c forza-trigger: drop pedal-off early-returns (root cause of "no reaction")
Live diagnostic on yarn revealed the daemon was receiving 324-byte FH5
packets correctly (5.7MB on the systemd socket; strace showed steady
recvfrom + write to /dev/hidraw7) but writing trigger mode 0x05
(no-resistance) on nearly every tick. Cause: `accel` and `brake` are
0 most of the time during normal play (off-throttle on straight
sections, off-brake when not braking). Both handlers had:

  if accel/255 <= THROTTLE_INPUT_THRESHOLD: effect.off(); return
  if brake/255 <= BRAKE_INPUT_THRESHOLD:    effect.off(); return

Every off-pedal packet set the trigger to OFF. Brief pedal-on moments
set vibration. The result: rapidly oscillating off↔vibration state,
imperceptible at 60 Hz packet rate.

These early-returns were holdovers from the previous Race-Element 1:1
port (variant A), which IS designed to be silent unless slipping.
Variant D's whole point is "always feels something" — Cosmii has no
pedal-off gate, and its baseline branch produces feedback even at
brake=0/accel=0 with strength clamped to MIN.

Fix: remove both early-returns. Foot-off-pedal flows through the
baseline branch and produces feedback(strength=MIN_*_RESISTANCE). The
user feels light constant resistance instead of silence. Trigger only
returns to physical-rest when out-of-race (run-loop's reset_triggers).

Also drop the now-dead BRAKE_INPUT_THRESHOLD / THROTTLE_INPUT_THRESHOLD
constants. Two tests renamed and updated to assert MIN-strength
baseline feedback instead of effect.off() on zero pedal.

54/54 tests pass. Build clean.
2026-05-07 14:18:47 -04:00
e159f4d90f dualsense: possibly fix weird vibrations
All checks were successful
Build and Deploy / mreow (push) Successful in 1m1s
Build and Deploy / yarn (push) Successful in 1m6s
Build and Deploy / muffin (push) Successful in 1m25s
2026-05-07 01:27:53 -04:00
03c3d01c66 forza-trigger: things 2026-05-07 01:27:49 -04:00
0568a571a1 update
All checks were successful
Build and Deploy / mreow (push) Successful in 11m49s
Build and Deploy / yarn (push) Successful in 1m6s
Build and Deploy / muffin (push) Successful in 1m17s
2026-05-06 18:53:36 -04:00
78d6aa01d5 flare: update patches and upstream source 2026-05-06 15:21:53 -04:00
f1321d2223 pi: fix pyghidra_mcp_projects folder generation
All checks were successful
Build and Deploy / mreow (push) Successful in 2m48s
Build and Deploy / yarn (push) Successful in 1m11s
Build and Deploy / muffin (push) Successful in 2m42s
2026-05-06 13:09:53 -04:00
f1e4f8480e niri: fix sleep 2026-05-06 13:09:36 -04:00
b21f9799a5 caddy: fix plugin hash???
Some checks failed
Build and Deploy / mreow (push) Successful in 53s
Build and Deploy / yarn (push) Successful in 55s
Build and Deploy / muffin (push) Failing after 22m41s
2026-05-06 10:32:58 -04:00
b90c0b614c update
Some checks failed
Build and Deploy / mreow (push) Successful in 3m13s
Build and Deploy / yarn (push) Successful in 1m4s
Build and Deploy / muffin (push) Failing after 1m13s
2026-05-06 09:58:09 -04:00
717a836be2 update
Some checks failed
Build and Deploy / mreow (push) Successful in 5m53s
Build and Deploy / yarn (push) Successful in 1m2s
Build and Deploy / muffin (push) Failing after 3m34s
2026-05-06 00:51:00 -04:00
d61433019d firefly-iii-data-importer: allow exit status 73 for no imports done 2026-05-06 00:50:56 -04:00
52e902c23c update
Some checks failed
Build and Deploy / mreow (push) Successful in 1h48m22s
Build and Deploy / yarn (push) Failing after 3h23m42s
Build and Deploy / muffin (push) Successful in 2m51s
2026-05-05 17:34:54 -04:00
3da843c3ff fix secrets
Some checks failed
Build and Deploy / mreow (push) Successful in 56s
Build and Deploy / yarn (push) Successful in 53s
Build and Deploy / muffin (push) Failing after 33s
2026-05-05 12:40:11 -04:00
92d49571b9 pi: fix python env
Some checks failed
Build and Deploy / mreow (push) Successful in 1m14s
Build and Deploy / yarn (push) Successful in 57s
Build and Deploy / muffin (push) Failing after 32s
2026-05-05 03:22:22 -04:00
c1f1959aa1 firefly-iii-data-importer: fix allowlist
All checks were successful
Build and Deploy / mreow (push) Successful in 1m14s
Build and Deploy / yarn (push) Successful in 56s
Build and Deploy / muffin (push) Successful in 1m13s
2026-05-05 02:21:31 -04:00
4c45874401 firefly-iii-data-importer: rotate PAT
All checks were successful
Build and Deploy / mreow (push) Successful in 49s
Build and Deploy / yarn (push) Successful in 54s
Build and Deploy / muffin (push) Successful in 1m8s
2026-05-05 02:07:54 -04:00
8ba6decc1f firefly-iii-data-importer: init
All checks were successful
Build and Deploy / mreow (push) Successful in 1m38s
Build and Deploy / yarn (push) Successful in 55s
Build and Deploy / muffin (push) Successful in 1m40s
2026-05-05 02:05:16 -04:00
82213c2917 firefly-iii: init
All checks were successful
Build and Deploy / mreow (push) Successful in 1m14s
Build and Deploy / yarn (push) Successful in 55s
Build and Deploy / muffin (push) Successful in 1m58s
2026-05-05 01:40:29 -04:00
b248f3592f pi: drop redundant pkgs.ghidra from home.packages
All checks were successful
Build and Deploy / mreow (push) Successful in 2m58s
Build and Deploy / yarn (push) Successful in 1m3s
Build and Deploy / muffin (push) Successful in 1m5s
The pyghidra-mcp wrapper bakes in GHIDRA_INSTALL_DIR via makeWrapperArgs
referencing pkgs.ghidra, which makes ghidra a runtime closure dep.
Adding pkgs.ghidra explicitly to home.packages caused buildEnv to merge
*two* ghidra-12.0.4 store paths (one from pyghidra's propagatedBuildInputs,
one from the explicit list) and fail with a path collision on
GPL/DMG/LICENSE.txt.

Drop the explicit add. The agent-driven workflow doesn't need the GUI;
manual exploration via 'nix run nixpkgs#ghidra' is one command away if
ever wanted.
2026-05-04 20:36:24 -04:00
ea6ef4a446 arr: more things
Some checks failed
Build and Deploy / mreow (push) Failing after 2m59s
Build and Deploy / muffin (push) Has been cancelled
Build and Deploy / yarn (push) Has been cancelled
2026-05-04 20:33:27 -04:00
05b2741ec0 pi: generic-ize ghidra skill (drop game-specific examples) 2026-05-04 20:33:14 -04:00
feae0f8002 pi: package pyghidra-mcp + wire as OMP MCP server
Adds two inline Python derivations to home/progs/pi.nix:

  - ghidrecomp 0.5.9 (clearbluejar/ghidrecomp) — required by pyghidra-mcp,
    not in nixpkgs.
  - pyghidra-mcp 0.2.2 (clearbluejar/pyghidra-mcp) — headless MCP server
    that exposes Ghidra's analysis primitives (decompile, disassemble,
    list_strings, get_xrefs_to, etc.) over Model Context Protocol stdio.

The wrapper bakes in GHIDRA_INSTALL_DIR=${pkgs.ghidra}/lib/ghidra so
pyghidra discovers the Ghidra install at runtime without env munging.

Wires into OMP via:
  - home.packages: pyghidra-mcp + pkgs.ghidra (GUI for occasional manual
    exploration alongside the agent-driven flow).
  - ~/.omp/agent/mcp.json: registers a 'ghidra' MCP server that spawns
    pyghidra-mcp on stdio when any of its tools are invoked.
  - ~/.omp/agent/skills/ghidra/SKILL.md: tells the agent when to reach
    for Ghidra (static binary RE) vs. usbmon (dynamic capture) vs. the
    built-in tools, and gives the canonical exploration workflow.

Replaces the previously-recommended LaurieWired/GhidraMCP, which has
been stale since June 2025. clearbluejar/pyghidra-mcp is actively
maintained (last commit 3 days ago), pure-Python via pyghidra+jpype, and
multi-binary capable in a single session.

Verified: pi.nix parses, the yarn NixOS closure evaluates, both
derivations build, and the wrapped binary's --help works (Ghidra runtime
discovered correctly via GHIDRA_INSTALL_DIR).
2026-05-04 20:28:13 -04:00
9ef9389672 *arr: fix (?)
All checks were successful
Build and Deploy / mreow (push) Successful in 1m7s
Build and Deploy / yarn (push) Successful in 52s
Build and Deploy / muffin (push) Successful in 1m16s
2026-05-04 20:25:04 -04:00
a95f614dd9 qbt: adjust settings
All checks were successful
Build and Deploy / mreow (push) Successful in 1m11s
Build and Deploy / yarn (push) Successful in 51s
Build and Deploy / muffin (push) Successful in 1m8s
2026-05-04 15:09:52 -04:00
c3139fd659 update
All checks were successful
Build and Deploy / mreow (push) Successful in 4m7s
Build and Deploy / yarn (push) Successful in 1m7s
Build and Deploy / muffin (push) Successful in 1m13s
2026-05-04 14:49:35 -04:00
6501fe2ddb forza-trigger: rewrite 2026-05-04 14:47:00 -04:00