Commit graph

370 commits

Author SHA1 Message Date
c4804e2efe Eee: permanent reverse tunnel to server
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 08:04:47 +01:00
dd5a80594e Eee: add GNOME Web
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:50:32 +01:00
a712080e2e Eee: fix i686 build failures (imagemagick, upower, iniparser)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 18:43:16 +01:00
467330c4ee Add FredOS-Eee: i686 netbook, XFCE; bump nixpkgs to 5e2305d
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 14:40:05 +01:00
c39d570d19 Mediaserver: oomd backstop, 1G min_free, tighter nix cap
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 08:30:05 +01:00
d2a4e5cebe Mediaserver: cap nix build parallelism and memory
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 08:21:32 +01:00
50ec04534e Stylix follows nixpkgs, weekly GC, drop VMs and Flatnotes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 10:03:30 +01:00
0251764327 Open MacBook screenshots in annotated Loupe 2026-09-19 09:15:23 +01:00
35959ae819 Open gaming screenshots in annotated Loupe 2026-09-18 20:49:00 +01:00
4c6d610263 Use ChatGPT Codex for launcher questions 2026-09-17 17:49:46 +01:00
02382f8446 Decommission Homepage dashboard and update history hooks 2026-09-14 15:07:40 +01:00
7145a35927 Harden deployment, authentication, firewall and media storage failure paths 2026-09-14 11:51:04 +01:00
4ae946d64e mediaserver: add tcpdump and conntrack-tools
Router host had no packet-level diagnostics, so firewall rules
couldn't be verified against actual traffic.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 13:09:51 +01:00
5398669a4b gaming: add unrar and p7zip
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 12:02:02 +01:00
c19f7b4a2b mediaserver: audible-cli + aaxtomp3 2026-08-27 14:32:39 +01:00
e6b63d4eb1 macbook: drop geary 2026-08-21 16:54:53 +01:00
1d7bc04cf5 Merge branch 'worktree-yamis-survey' 2026-08-21 14:42:47 +01:00
a155f6b37c macbook: drop terminus console font, browsh is gone
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HKWhmgRWeAafjuGV8YMrqn
2026-08-21 12:39:19 +01:00
b964eab0ea desktops: drop vlc, mission-center, woeusb, browsh+firefox, vscodium, tlp, macbook faugus
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HKWhmgRWeAafjuGV8YMrqn
2026-08-21 12:38:04 +01:00
a0cd304e53 gaming: drop geary 2026-08-21 12:22:44 +01:00
4321956410 desktops: add haruna media player 2026-08-21 09:39:42 +01:00
f55f97481c macbook: terminus 6x12 console font for browsh
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 17:27:58 +01:00
afab4a1cab macbook: drop helium, add browsh
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 16:52:47 +01:00
9447413fa1 quickshell: open wallpaper dropdown on hover-switch like other menus
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 17:50:59 +01:00
d8029c5657 macbook: raise mbpfan thresholds so the fan stays quiet at idle
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 16:53:20 +01:00
744a2c2ed4 kayla: seed chrome's GTK theme via initial_preferences next to the binary 2026-08-10 10:18:10 +01:00
9f4650b798 kayla: force chrome onto the GTK backend via --ui-toolkit 2026-08-10 10:10:48 +01:00
dfc6855a55 kayla: GTK theme for chrome via dconf + initial_preferences; add kaylavm alias 2026-08-10 09:51:24 +01:00
ea08e8fd30 kayla: hide fred from the SDDM greeter 2026-08-10 09:44:17 +01:00
2631dc907e kayla: drop Discover for Bazaar+flatpak, pin Breeze Dark palette, unmanage Chrome 2026-08-10 09:39:53 +01:00
55ca901e14 kayla: add kayla-vm variant for trying the Plasma session in a window 2026-08-10 09:26:14 +01:00
d336d31824 kayla: let her set her own wallpaper, enable openssh for remote rebuilds 2026-08-10 08:52:28 +01:00
0e1c540cca hosts: add FredOS-Kayla — plain KDE Plasma desktop for kayla 2026-08-10 08:44:52 +01:00
789c5115b4 macbook: mbpfan back with early ramp; SMC idles fan at 79C
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 09:18:06 +01:00
c385cd3713 macbook: drop nom, store auto-optimise, halve substitution jobs
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 09:08:00 +01:00
2c65cf1138 macbook: drop mascots and mbpfan; SMC already ramps
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 14:36:46 +01:00
8067676713 macbook: fan control, thermald, earlyoom; cheaper compositor
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 14:20:57 +01:00
e5fd60a5ae gaming: watchdog + sysrq so a GPU hang reboots itself 2026-08-06 21:07:49 +01:00
bc10b078c6 mediaserver-vm: offset forwarded host ports to avoid live services
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 14:08:54 +01:00
0235bc9875 flake: add mediaserver-vm host for testing services from scratch
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 14:07:34 +01:00
748a345ea9 qs-ask: log outcomes to journal; launcher: spinner while Claude answers
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 11:27:08 +01:00
ba9558ba30 qs-ask: answer bare keyword queries instead of replying UNKNOWN
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 10:46:55 +01:00
992cf8cb2e Add protonplus 2026-08-01 22:29:01 +01:00
946c631f2a hosts: drop duplicate adwaita-icon-theme (desktop.nix already installs it)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 22:25:01 +01:00
a927cf6ba9 qs-ask: name the session to drop a redundant API call
Profiled the second model call visible in modelUsage: it is
`source=generate_session_title`, inventing a title for a session that
--no-session-persistence immediately discards. It costs no wall time —
both requests dispatch ~1ms apart and run concurrently, which is why
duration_api_ms was roughly double duration_ms — but it spent 507 input
tokens against 153 for the actual question.

--name qs-ask removes it: one request instead of two, 660 input tokens
down to 153 per question. No latency change, 77% less input token spend,
which is what actually matters when the budget is a subscription rate
limit rather than a bill.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:56:36 +01:00
aee59ff0b2 qs-ask: disable thinking — 2.4x faster, same answers
Profiled where the ~6s actually went, and it was not where I assumed.
Haiku defaults to extended thinking, so it spent 225 output tokens and
1.9s deliberating before emitting an 80-character answer about the height
of a tower. MAX_THINKING_TOKENS=0: 43 output tokens, time-to-first-text
2657ms -> 1122ms, wall clock 5.7s -> ~2.4s, answer unchanged.

Two things measured NOT to be the bottleneck, recorded in the comment so
nobody optimises them later: process startup (0.12s boot plus 28ms to
fire the request, so a warm/persistent process saves nothing) and prompt
size (184 input tokens, no bloat to trim).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:49:44 +01:00
309c54d31b qs-ask: answer via Claude Code on the subscription, not an API key
No API key and no separate billing: qs-ask now shells out to `claude -p`,
which draws on the existing subscription already authenticated on this
host. The trade is latency — Claude Code boots a Node process per
question, ~6s measured against the raw API's ~1s — so the launcher now
races Wikipedia and Claude instead of chaining them. Wikipedia fills the
card in under a second and Claude supersedes it on arrival; chaining
would have left the card blank for six seconds on every question.

Isolation, verified: --safe-mode drops CLAUDE.md, skills, hooks, plugins
and MCP while leaving auth working, which matters for correctness and not
just speed — the global CLAUDE.md here asks for caveman-mode replies and
that would have leaked into answers. --no-session-persistence writes no
transcript, and a dedicated empty cwd keeps launcher questions out of any
project's history or auto-memory. Confirmed no project namespace, no
transcript and no memory write after a run.

Not --bare, which looks right and is a trap: its auth is strictly
ANTHROPIC_API_KEY, so it cannot use the subscription at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:34:50 +01:00
dbed82bab4 qs-ask: report why it went quiet on stderr
Silence on stdout is the launcher's fall-back-to-Wikipedia signal, so it
has to stay clean — but that made a misconfigured key indistinguishable
from a working fallback. Every reason now prints on stderr, which the
launcher discards and a human running qs-ask by hand can read.

Drops curl -f so a 4xx body's own error message ("API key is invalid.")
surfaces instead of just an exit code, and guards the specific mistake of
pasting the sk-ant-... placeholder literally.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:21:05 +01:00
958dc9b333 quickshell: Claude-backed launcher answers via the mediaserver
Adds qs-ask on the mediaserver — the Anthropic key lives there and nowhere
else, so neither desktop holds a credential and there's one place to
rotate it. The launcher pipes the question over the same SSH path the
server monitor already uses; the query goes over stdin because
`ssh host cmd arg` would re-parse arg through the remote shell.

Claude answers first, Wikipedia is the fallback. The script is the
feature gate: with no key it exits silently, which is the same signal as
a failed call or an UNKNOWN reply, so the Wikipedia path stays the
default with zero configuration. The card names whichever answered.

Haiku 4.5, no thinking and no effort (effort errors on Haiku) — a
one-sentence fact needs no reasoning tokens. ~$0.0005 per query.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 17:14:04 +01:00
e68d2d6464 macbook: cap nix download concurrency to stop wl wifi drops 2026-07-29 17:24:25 +01:00