Commit Graph
518 Commits
Author SHA1 Message Date
Miguel Palhas 0039ab20ee chore(flake): bump maestro to c2ac3f7
CI / lint (push) Successful in 42s
CI / eval (push) Successful in 4m25s
2026-08-25 12:26:28 +01:00
Miguel Palhas 5d53b7bf35 chore(flake): bump maestro to 7cb14c7
CI / lint (push) Successful in 2m44s
CI / eval (push) Successful in 4m35s
2026-08-25 10:37:18 +01:00
Miguel Palhas 51a6696efb chore(flake): bump agent-skills to d6265b0
CI / lint (push) Successful in 57s
CI / eval (push) Successful in 3m24s
2026-08-25 10:02:56 +01:00
Miguel Palhas 05bae722f7 feat(yolo): autodeploy agent-skills too
CI / lint (push) Successful in 54s
CI / eval (push) Successful in 3m40s
Same shape as rev: a push to main bumps the input, commits the lock and
switches. The units it ships (pr-daemon, hourlog, week-review) restart without
disturbing anything interactive.
2026-08-25 10:02:55 +01:00
Miguel Palhas 5ee27b6df1 chore(flake): bump rev to 88bf55a
CI / lint (push) Successful in 42s
CI / eval (push) Successful in 3m46s
2026-08-25 10:01:01 +01:00
Miguel Palhas d2c03ed846 Merge remote-tracking branch 'origin/main' into drift
CI / lint (push) Successful in 44s
CI / eval (push) Successful in 2m33s
2026-08-25 09:55:15 +01:00
Miguel PalhasandClaude Opus 5 e08e845b38 fix(nix-autodeploy): pass the repo map as a file
systemd's Environment= strips the quotes out of inline JSON, so the listener
died on startup parsing it. A store file has no such problem.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 09:55:15 +01:00
Miguel Palhas 91e6b195cf chore(flake): bump maestro to 80a9399
CI / lint (push) Successful in 58s
CI / eval (push) Successful in 3m3s
2026-08-25 09:54:36 +01:00
Miguel Palhas 4d93e94c12 chore(flake): bump agent-skills to 0900e5f
CI / lint (push) Successful in 36s
CI / eval (push) Successful in 3m23s
2026-08-25 09:51:28 +01:00
Miguel PalhasandClaude Opus 5 c99627b3f6 feat(yolo): run rev from nix, deploy both apps by webhook
CI / lint (push) Successful in 27s
CI / eval (push) Successful in 3m31s
rev came from a working checkout: the unit ran `node server/index.ts` in
~/tea/rev, so any edit there was live, and rev-deploy rebuilt a prod directory
that no longer exists. It is a flake input now, same as maestro, and
`services.rev` owns the unit.

Adds nix-autodeploy: one endpoint both repos post to. It verifies the webhook
HMAC, bumps that flake input, commits and pushes flake.lock, then switches. The
switch runs in a transient unit, since it restarts the listener itself. maestro
is bump-and-notify only — switching would restart the daemon that owns every
interactive shell here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 09:50:58 +01:00
Miguel PalhasandClaude Opus 5 2a3ccd2442 chore(home): drop mutableFiles machinery
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 2m4s
The aoe config was the last tracked file, and it drifts the same way
settings.json did. With no consumers left, the module, its repo-path option
and the tracked aoe-config.toml go too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 08:29:09 +01:00
Miguel PalhasandClaude Opus 5 2c692550db chore(claude): stop managing settings.json
Claude Code rewrites ~/.claude/settings.json itself, so the nix copy drifted
within every session and `nh home switch` aborted on the diff. Drops the
mutableFiles entries and the two tracked JSON sources.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 08:27:39 +01:00
Miguel Palhas a23488dc52 chore(yolo): update maestro input, sync claude/aoe mutable config
CI / lint (push) Successful in 32s
CI / eval (push) Successful in 2m2s
Both mutable-managed files had drifted from what the running apps
actually wrote; bringing the live content upstream unblocked the
home-manager switch that picks up the new maestro build.
2026-08-24 16:49:41 +01:00
Miguel PalhasandClaude 2e464d2fe8 chore(konishi): leave blender CUDA off for now
CI / lint (push) Successful in 49s
CI / eval (push) Successful in 2m41s
The option stays as the switch; the build cost is the only reason.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-24 13:59:00 +01:00
Miguel PalhasandClaude 58e953a857 perf(konishi): mount root noatime
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 2m4s
Set outside hardware-configuration.nix so it survives regeneration.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-24 12:13:44 +01:00
Miguel PalhasandClaude 014dbde21d perf(konishi): fix GPU env vars for decode
GDM_BACKEND was a typo for GBM_BACKEND; nothing read it, since SDDM is
the display manager here.

Firefox/Zen decode in a separate RDD process whose sandbox denies
/dev/nvidia*, so nvidia-vaapi-driver never initialised there and all
playback fell back to software. Confirmed on the running session: the
GPU process held 26 nvidia fds, both RDD processes held zero.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-24 12:13:44 +01:00
Miguel PalhasandClaude 48c33fdbb5 perf(zsh): rebuild completion dump once a day
compinit security-checked and rebuilt the dump on every shell start, the
largest fixed cost before fzf-tab, atuin, zoxide, direnv and starship
load. Verified both branches yield the same 1980 completions.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-24 12:13:38 +01:00
Miguel PalhasandClaude c11acc8b88 feat(blender): optional CUDA build
Off by default: it is only useful on an NVIDIA host, and no binary cache
serves it (cuda-maintainers was measured to change nothing), so enabling
it rebuilds Blender, OpenUSD, OpenSubdiv and OpenImageDenoise.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-24 12:13:38 +01:00
Miguel PalhasandClaude 3d372cd155 feat(mpv): hardware decode with per-host hwdec
mpv shipped as a bare package with no config, so every host decoded video
in software. hwdec is the only vendor-specific part, so it is an option:
auto-safe everywhere, overridden on NVIDIA hosts.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-24 12:13:38 +01:00
Miguel Palhas 0d2a4cb86f chore(agent-skills): bump input to 0f131f0
CI / lint (push) Successful in 34s
CI / eval (push) Successful in 1m58s
Review sessions post findings on the PR instead of rev, entry paths
follow the checkout out of ~/tea/yolo, and the session's forge token is
named so reviewers stop reaching for the daemon's.
2026-08-22 19:16:30 +01:00
Miguel PalhasandClaude Opus 5 fc88ed82fd chore(agent-skills): bump input, drop two dokploy deny rules
CI / lint (push) Successful in 32s
CI / eval (push) Successful in 2m22s
Picks up sandboxed PR review sessions. The two dokploy entries were
already gone from the live settings file, so the mutable-file check
aborted every switch until nix matched it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 14:03:49 +01:00
Miguel PalhasandClaude Opus 5 fb01826479 chore(maestro): track the maestro flake from main
CI / lint (push) Successful in 35s
CI / eval (push) Successful in 2m14s
The nix branch landed, so the ?ref pin is no longer needed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 11:03:07 +01:00
Miguel PalhasandClaude Opus 5 d932409986 feat(maestro): run the daemon and web UI on yolo
CI / eval (push) Successful in 2m39s
CI / lint (push) Successful in 42s
Adds the maestro flake as an input and imports its Home Manager module.
yolo enables both user services; web binds 0.0.0.0:8081 because aoe-web
already holds 8080 on this host.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-22 10:55:47 +01:00
Miguel Palhas 7c7aa0a7d9 fix(aoe-web): drop removed --auth flag
CI / lint (push) Successful in 36s
CI / eval (push) Successful in 2m12s
2026-08-22 09:47:26 +01:00
Miguel Palhas f99e0d4a8f chore(claude): default model opus[1m] 2026-08-22 09:44:56 +01:00
Miguel Palhas d41572a51c chore(flake): bump agent-of-empires (npmDepsHash fix) 2026-08-22 09:39:17 +01:00
Miguel Palhas 0f059c02c8 chore(flake): bump agent-of-empires 2026-08-22 09:19:15 +01:00
Miguel PalhasandClaude Fable 5 11f6ad5a3d feat(yolo): install claude-agent-acp for aoe structured sessions
CI / lint (push) Successful in 32s
CI / eval (push) Successful in 1m52s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 20:47:20 +01:00
Miguel PalhasandClaude Fable 5 1ce7046994 fix(aoe-web): pin TMUX_TMPDIR and KillMode=process
CI / lint (push) Successful in 42s
CI / eval (push) Successful in 2m38s
Shells set TMUX_TMPDIR to the runtime dir; the unit did not, so the
daemon ran a second tmux server under /tmp. Every boot resumed duplicate
agents there, the dashboard diverged from the TUI, and polling the
invisible sessions fired an error push per session. Same fix pr-daemon
got.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 20:32:36 +01:00
Miguel PalhasandClaude Fable 5 42fa03ec0e feat: switch aoe to git.naps.pt/yolo fork
CI / lint (push) Successful in 33s
CI / eval (push) Successful in 2m8s
Fork carries two patches on v1.14.1+: worktree_info on plain add
(grouping) and reaping agent processes that survive tmux teardown.
Also brings upstream the settings drift the mutable-file guard caught:
fable model, secret-guard hook chain, verbose, confirm_delete.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 19:55:22 +01:00
Miguel PalhasandClaude Fable 5 1b52576097 fix: rev-deploy must skip unit install — units are hm symlinks
CI / lint (push) Successful in 36s
CI / eval (push) Successful in 1m52s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 15:04:48 +01:00
Miguel PalhasandClaude Fable 5 522eda7644 fix(smb): restrict hosts allow to wg subnet 10.10/16
CI / lint (push) Successful in 35s
CI / eval (push) Successful in 2m4s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 10:21:39 +01:00
Miguel PalhasandClaude Fable 5 25ca90f134 docs(smb): wg subnet is 10.10, not 10.0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 10:21:03 +01:00
Miguel PalhasandClaude Fable 5 ccf0b2c35d fix(smb): widen hosts allow to 10/8 for wg clients
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 10:20:19 +01:00
Miguel PalhasandClaude Fable 5 2532100b26 feat(smb): export yolo home, mount at ~/yolo
Guest samba share of /home/naps62 on yolo, limited to the private
nets via hosts allow. arrakis and konishi mount it with the same
lazy automount used for the NAS media share.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 10:17:34 +01:00
Miguel PalhasandClaude Opus 5 9b4a2b44dc feat(opencode): allow bash on yolo only
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 2m1s
Global config keeps bash at "ask", which stalls every unattended opencode
session on git and grep. yolo runs the PR daemon's reviewers, so the prompt
is a deadlock there rather than a gate.

Merges like claude-settings.json: home/yolo/opencode.json holds only the
override, so agents, commands and skills still come from common. Reviewers
run on branches under review, so this drops that prompt too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 11:25:08 +01:00
Miguel PalhasandClaude Opus 5 503b3baeb4 chore: bump claude-code to 2.1.237
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 2m1s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 10:30:24 +01:00
Miguel Palhas 7bdff2ff98 chore: bump remaining flake inputs
CI / eval (push) Successful in 1m50s
CI / lint (push) Successful in 29s
2026-08-19 23:06:55 +01:00
Miguel Palhas 9794335ad6 chore: bump nixpkgs, home-manager, hardware
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 2m5s
2026-08-19 22:51:40 +01:00
Miguel Palhas 4a1e9aeaa8 fix(tmux): use csi-u extended keys format
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m45s
2026-08-19 22:45:21 +01:00
Miguel Palhas cd3b271e10 chore: remove ferdium
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 1m46s
2026-08-19 22:42:30 +01:00
Miguel Palhas 3eb0a098a2 chore: ignore worktree dirs
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 1m54s
2026-08-19 22:40:04 +01:00
Miguel Palhas 77d8803a8f refactor: scope workstation apps 2026-08-19 22:38:19 +01:00
Miguel PalhasandClaude Opus 5 ba5b618e49 refactor(yolo): take the agent-skills units from their own module
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m57s
pr-daemon, hourlog and week-review are defined by the agent-skills
home-manager module now, next to the scripts they run; this host just
enables them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 22:20:44 +01:00
Miguel PalhasandClaude Opus 5 7580edb82c fix(pr-daemon): pin TMUX_TMPDIR to the runtime dir
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m53s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 19:06:33 +01:00
Miguel PalhasandClaude Opus 5 88abb49340 fix(pr-daemon): KillMode=process
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m53s
Agent tmux sessions the daemon starts live in its cgroup; a restart was
killing every session it had created.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 19:03:51 +01:00
Miguel Palhas 9c536f87f6 Merge branch 'pr-daemon'
CI / lint (push) Successful in 30s
CI / eval (push) Successful in 1m52s
2026-08-19 18:54:33 +01:00
Miguel PalhasandClaude Opus 5 88915d9cfd feat(hyprland): restore media-key OSD with swayosd
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 1m53s
The XF86 binds survived the noctalia -> eww switch, but the popup they
drew did not, so volume and brightness changed with no feedback. swayosd
replaces it: swayosd-client both applies the change and draws the OSD.

Also fixes two binds that pointed at binaries no host installs any more:
XF86AudioMicMute called volumectl (avizo, removed) and the brightness
keys called brightnessctl, which only arrakis has.

Commands are referenced by store path because Hyprland execs binds with
the PATH the session was started with.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 18:35:27 +01:00
Miguel PalhasandClaude Opus 5 94e24f9277 feat(yolo): run the PR daemon as a user service
Watches GitHub and Gitea PRs and routes them to aoe sessions. Lives here
rather than in agent-skills' nix module for the same reason the timers
do: it belongs to one box.

Config and tokens are outside the store, so the unit refuses to start
without them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 18:30:56 +01:00
Miguel PalhasandClaude Opus 5 51c852b5ef chore: bump claude-code to 2.1.235
CI / lint (push) Successful in 29s
CI / eval (push) Successful in 1m51s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 16:46:09 +01:00