Commit Graph
2527 Commits
Author SHA1 Message Date
Ryan Yin 0802b5a3d1 feat(kubevirt): cap host journald at 10G 2026-09-20 22:42:03 +08:00
Ryan Yin fb522af5c0 feat(kubevirt): cap journald disk usage on all VMs 2026-09-20 22:22:50 +08:00
Ryan Yin 68bea13405 docs(kubevirt): document boot+reboot for KubeVirt hosts 2026-09-20 22:22:47 +08:00
Ryan Yin 4e66a6de57 chore: remove insecure modelscope package 2026-09-20 21:36:23 +08:00
Ryan Yin 9bb608a577 fix(idols-aquamarine): migrate journald.extraConfig to settings.Journal 2026-09-20 21:36:21 +08:00
Ryan Yin 69f60095ae fix(networking): drop shoukei static address
shoukei is a laptop using DHCP and never consumes hostsAddr.shoukei.
Its 192.168.5.108 collided with k3s-prod-1-master-1 and produced a wrong
ssh Host shoukei entry.
2026-09-20 20:26:17 +08:00
Ryan Yin 5613e00b6c chore: noctalia - adjust osd position 2026-09-20 13:52:31 +08:00
Ryan Yin 51d5fab0bd flake.lock: Update
Flake lock file updates:

• Updated input 'mysecrets':
    'git+ssh://git@github.com/ryan4yin/nix-secrets.git?ref=refs/heads/main&rev=490e3aca901fa703083822ee64a65f0a1f4529af&shallow=1' (2026-06-12)
  → 'git+ssh://git@github.com/ryan4yin/nix-secrets.git?ref=refs/heads/main&rev=8cd11a98a258410e3af03a2bf3bfeff2201fa5f8&shallow=1' (2026-09-20)
2026-09-20 11:37:05 +08:00
Ryan Yin b1276082ea refactor(noctalia): move theme mode into the declarative config
The Settings UI stored `theme.mode` in ~/.local/state/noctalia/settings.toml, so it was not versioned. Pin it in the config baseline; the [location] sunrise/sunset schedule still drives light/dark.
2026-09-20 10:54:34 +08:00
Ryan Yin e93cb9793d fix(noctalia): keep the bar readable in light mode
At background_opacity 0.2 the light-mode surface disappears into dark wallpapers, so the dark light-mode text sits on a dark bar. Raise it to 0.61 to keep contrast while staying slightly translucent.
2026-09-20 10:35:48 +08:00
Ryan Yin 063c31cc30 refactor(noctalia): hot-reload config via out-of-store symlink
`programs.noctalia.settings` deploys the TOML as a store symlink, so every edit needs a `home-manager switch`. Deploy the baseline from the config layer with `mkOutOfStoreSymlink` instead: Noctalia hot-reloads config-layer files and never rewrites them, so edits apply live while Settings UI changes stay in ~/.local/state/noctalia/settings.toml (which loads last) and out of the repo.

Update the docs and host-specific comments to match the two-layer model.
2026-09-20 10:35:48 +08:00
ryan4yin | 二花 efb5c08696 Merge pull request #274 from ryan4yin/fix/nixpak-pulse-audio
fix(nixpak): repair sandboxed audio and deduplicate mounts
2026-09-20 09:43:21 +08:00
Ryan Yin 7bd873e414 fix(firefox): share MPRIS artwork, trash and host config paths
The sandbox remaps XDG_DATA_HOME/XDG_CONFIG_HOME, so paths Firefox exposes to
or shares with the host ended up isolated. Bind the MPRIS artwork dir and the
real trash rw, and mimeapps.list, user-dirs.dirs and the shared NSS cert store
ro.

recently-used.xbel stays isolated: GTK writes it atomically, which a
single-file rw bind would break.
2026-09-20 02:11:58 +08:00
Ryan Yin 140a6d6288 feat(noctalia): hide the media widget when idle 2026-09-20 02:00:31 +08:00
Ryan Yin 47bf47f41d chore(desktop): drop duplicate applets and tune the noctalia bar 2026-09-20 01:35:20 +08:00
Ryan Yin 0403fbda87 feat(noctalia): restore bar system monitors and a dated clock
Add cpu, ram, disk and network up/down sysmon widgets to the bar start lane,
matching the old v4 SystemMonitor. Set the clock to ISO date, full English
weekday and 24h time (e.g. "2026-09-19 Saturday 16:06").
2026-09-19 16:15:38 +08:00
Ryan Yin ccaed6beff chore(i18n): keep only China-specific locale overrides
English stays the default (LANG=en_US.UTF-8). Drop the Chinese overrides for
LC_TIME, LC_NUMERIC, LC_ADDRESS, LC_NAME, LC_TELEPHONE and LC_IDENTIFICATION:
LC_NUMERIC matches en_US, the others are effectively unused, and LC_TIME forced
Chinese date and weekday names.

Keep zh_CN only where the en_US default is wrong for China: metric units, A4
paper and CNY.
2026-09-19 16:15:35 +08:00
Ryan Yin 8866a3bd92 docs(agents): document deploy recipes, host naming and conventions
- clarify 'just niri' (<hostname>-niri) vs 'just local' (bare hostname)
- note where overlays/hardening packages live
- note the Noctalia config location and host-specific <host>.toml overrides
2026-09-19 15:33:21 +08:00
Ryan Yin 7dba3b7fd7 chore: drop the redundant CLAUDE.md symlink
CLAUDE.md was just a symlink to AGENTS.md; AGENTS.md is the single source of agent guidance.
2026-09-19 15:32:18 +08:00
Ryan Yin 4d8fec5fa9 docs: rewrite the root README
Refresh the repository overview after the move to Noctalia v5:

- fix the component table: Noctalia as the desktop shell, native screenshots, systemd-networkd/NetworkManager, Zed & VS Code as GUI editors, Zellij as a multiplexer
- correct the deploy instructions (niri hosts use 'just niri'; 'just local' matches the bare hostname) and the Nvidia link
- update the NixOS badge to 26.11 and add a short validation section
2026-09-19 15:30:37 +08:00
Ryan Yin 98fbf010b8 docs: fix broken links and editor references in readmes
- root README: VS Code config moved from home/linux/gui/base/editors.nix to vscode.nix
- READMEs now list both GUI editors (Zed, the primary one, plus VS Code)
- base README: xdg is a directory now, nvidia.nix no longer exists, editors.nix -> vscode.nix
- idols-ai README: disko-fs-media.nix -> disko-fs-data.nix (/persistent/data)
- secrets README: password-store moved from home/base/desktop to home/base/tui
- drop unused link definitions (AstroNvim, wl-clipboard, Catppuccin)
- fix a pre-existing typo flagged by the typos hook (keeped -> kept)
2026-09-19 15:23:09 +08:00
ryan4yin | 二花 34f2ef05f1 Merge pull request #273 from ryan4yin/feat/noctalia-v5
feat(noctalia): upgrade to the native v5 shell
2026-09-19 15:12:24 +08:00
Ryan Yin 001d180b22 feat(noctalia): upgrade to the native v5 shell
Noctalia v5 is the native C++/Wayland rewrite; the Quickshell-based v4 line (pkgs.noctalia-shell) is EOL and its JSON config is not migrated upstream.

- use the upstream home-manager programs.noctalia module (present at our pinned HM revision) instead of the hand-rolled package + symlink module: it installs pkgs.noctalia, validates config.toml at build time via checkConfig, and supports customPalettes; drop the v4 Qt/Qt6ct session setup
- replace the v4 settings.json/plugins.json with a minimal shared config.toml (font, Catppuccin shell palette, templates off, screenshot annotation, accessibility/bar scale, night light, wallpaper, location/weather); host-specific bits live in per-host files (shoukei's eDP-1 backlight in noctalia/host-shoukei.toml), which merge after config.toml. Application theming stays with catppuccin/nix
- treat config.toml as the single source of truth: do NOT persist ~/.local/state/noctalia and set setup_wizard_enabled = false, so UI tweaks are promoted back into the repo instead of accumulating in app-owned state
- port niri keybinds to 'noctalia msg ...', update spawn-at-startup and the backdrop layer namespace, fix the broken 'octalia-shell' media-previous bind, and replace the grim/slurp/satty screenshot stack with Noctalia's native region/fullscreen/annotate commands (drop the unused packages)
- drop the now-redundant swaybg and swaylock (Noctalia owns the wallpaper and lock screen, the latter authenticating against the PAM 'login' service) and its PAM entry; keep wlogout as an emergency fallback
- update hypridle's lock commands and the matching eval test
- refresh the noctalia docs
2026-09-19 15:07:54 +08:00
Ryan Yin 2dff4f062b fix(networking): disable systemd-resolved mDNS when avahi is enabled
networkd enables systemd-resolved by default, and resolved's own mDNS responder conflicts with avahi (duplicate answers, avahi logs 'Detected another mDNS stack running on this host'). Keep avahi for DNS-SD (cups-browsed depends on it) and turn resolved's mDNS off.
2026-09-19 13:54:19 +08:00
Ryan Yin 5d9b117442 fix(agents): keep opencode inline config quoting intact
home.sessionVariables writes export NAME="value" without escaping embedded double quotes, so the JSON {"share":"disabled"} reached opencode as the shell word {share:disabled} and failed config parsing. Emit the export with sessionVariablesExtra instead.
2026-09-19 13:54:15 +08:00
Ryan Yin 33383414a2 fix(niri): match outputs by EDID to survive connector renumbering
The 2026-09 nixpkgs update changed DRM probe order, renaming the Intel connectors DP-1 -> DP-4 and HDMI-A-2 -> HDMI-A-3. The connector-name based output and open-on-output rules stopped matching, which dropped monitor scale/mode/position and sent every named workspace to the first output. Match by make/model/serial instead, which is stable across connector renumbering.
2026-09-19 13:26:24 +08:00
Ryan Yin 7242892355 fix(hardening): refresh wechat source hashes
Tencent replaced the file behind the versionless CDN URLs, so the pinned hashes stopped matching. Refresh the x86_64 and aarch64 hashes with nix store prefetch-file.
2026-09-19 13:26:20 +08:00
Ryan Yin a465853b6a flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/ec1a8fdf74ed3f276148ee106299a2ba0e65d51f?narHash=sha256-XL2qfqmocfsvuEGyomZg4nOZfkuSe8vZtrOX99I%2Bb6I%3D' (2026-08-22)
  → 'github:nix-community/home-manager/17903129f47656fa4d07e78ad87f6592ff4f2527?narHash=sha256-voJJ5IZR4w2149u2Jm/j2zifeWROlpZQ%2BJzmCQwjgn8%3D' (2026-09-18)
• Updated input 'lanzaboote/rust-overlay':
    'github:oxalica/rust-overlay/f60c1b57ff805a46b5175c76fc981fb4f81efbcc?narHash=sha256-r4LDUF%2BzmJnkftvCVkCrUhSJazsf6EVJF%2BV2l4/MYbI%3D' (2026-08-23)
  → 'github:oxalica/rust-overlay/8534567325bd8a8d2928e6afd81e0a87d19efd3c?narHash=sha256-9mWUnReOUXfKjZuJAL/bAFH3LUyECTRtXgSNVjRw3UY%3D' (2026-06-21)
• Updated input 'llm-agents':
    'github:numtide/llm-agents.nix/e320800dd9dc2b156bfa77fbeeb00e9e7295f3a9?narHash=sha256-ykJRnaTqcTxPrUTdhVwpd3nLT3p%2BPvitmhbxZbgo5HI%3D' (2026-09-10)
  → 'github:numtide/llm-agents.nix/34081a176242cbccd62f19978f32abfff933813f?narHash=sha256-5QvQZFsM/xcZRVUGuv56QU3d0RQZcqR9axikxGf1KLE%3D' (2026-09-19)
• Updated input 'llm-agents/nixpkgs':
    'github:NixOS/nixpkgs/5052d7ccbcfb7e4ae1586cb2ecf95a2e3707dce9?narHash=sha256-PJCTsE4I20CrJJPcye9/z6brRFysG5%2Baygr/dZK097k%3D' (2026-09-09)
  → 'github:NixOS/nixpkgs/c7def046b9a883d46974757852106483d741586f?narHash=sha256-6RSEDHIWQtesQKWSu5qRai8L2h4KgCgMEfJHstW99G4%3D' (2026-09-14)
• Updated input 'nix-gaming':
    'github:fufexan/nix-gaming/daa997a8979f01a0defcc2065ba824c65bb461f6?narHash=sha256-BXGiZoNdYzfs5ZqsSlSvNvMgcL4%2Bje67BRUoyXY%2Bfjw%3D' (2026-08-23)
  → 'github:fufexan/nix-gaming/5928fa386f57488e918a7d1b282f8daf3e103d02?narHash=sha256-bhzBYZm4whYF6/I7zkS1UxBNSbj5RNVysK6gYzl5weo%3D' (2026-09-18)
• Updated input 'nix-gaming/flake-parts':
    'github:hercules-ci/flake-parts/427bf4bd9435fdf21321c8cc628c24efc14c0f7a?narHash=sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw%3D' (2026-08-01)
  → 'github:hercules-ci/flake-parts/31729ca8cbdb4fa927b34e5f4353e6a83f39e993?narHash=sha256-glZLQlzIn1fXH6PazR2iUmTo7kzzyYSshrWhLS9TqCU%3D' (2026-09-03)
• Updated input 'nix-gaming/flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/0e79af5e3d4dcfcd676ab5ba3f95d2e3352e078c?narHash=sha256-OmshNvn2vupOFpYinLUu%2B1Dnpu4n7Q5N3ggGVNHpkUI%3D' (2026-07-26)
  → 'github:nix-community/nixpkgs.lib/596e2e3940e09b2abbeb03f75fa1828c57fcd72c?narHash=sha256-DTQSMxzDWmT0zhguthvegnVkn7CFqGCv4IHCzk5ZUpM%3D' (2026-08-30)
• Updated input 'nix-gaming/git-hooks':
    'github:cachix/git-hooks.nix/809414f0cdadf82cf11b06c2b29ba9b3168b3297?narHash=sha256-O2tBn84NNuHrnqNVxx/XqsXwfYvS1YwBh%2B7CBnbCYsk%3D' (2026-08-22)
  → 'github:cachix/git-hooks.nix/27555e2624241fb116b49095df4caaee85a25691?narHash=sha256-nt%2BlUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y%3D' (2026-09-01)
• Updated input 'nixos-apple-silicon':
    'github:nix-community/nixos-apple-silicon/53798a0eb0fa4c8cfaeca7bdc5b4ad22ed210c95?narHash=sha256-zRPYCn5RJWxr9uyUwNIQjPsTFcIFRwuRnI91dqvGA0k%3D' (2026-08-16)
  → 'github:nix-community/nixos-apple-silicon/57a14ae9be0eaf7bf66e95490ed2d7c6f4bd4c9e?narHash=sha256-QIPbA%2BdtbY6OFeREyisXu/QsrNhT1jNr4DT7rHWKImE%3D' (2026-09-19)
• Updated input 'nixpak':
    'github:nixpak/nixpak/333bd8c7ca0c014e61be1933b3c131c9dfa20218?narHash=sha256-eh6isB4Gt3Wry1fPqRI1qKWySjDbalvaBwToG82jcR4%3D' (2026-07-26)
  → 'github:nixpak/nixpak/853aa37cf5b5ced298752cc644ffb07cabb741bf?narHash=sha256-KwHZMqTRy9OFaT1Z/Lx6jZsPoWXKDS1OXCc80SsmOyk%3D' (2026-09-17)
• Updated input 'nixpak/flake-parts':
    'github:hercules-ci/flake-parts/17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e?narHash=sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w%2B6NWK9yA%3D' (2026-07-01)
  → 'github:hercules-ci/flake-parts/31729ca8cbdb4fa927b34e5f4353e6a83f39e993?narHash=sha256-glZLQlzIn1fXH6PazR2iUmTo7kzzyYSshrWhLS9TqCU%3D' (2026-09-03)
• Updated input 'nixpak/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/86c7c78a840b44b1a0a5cbc7e9baa0154c0d0f3f?narHash=sha256-vy0EiuiLRKWbXYOqdEKoy5ImlbHcdMC52x9BcC/MwQ8%3D' (2026-06-15)
  → 'github:hercules-ci/hercules-ci-effects/6c58de7236d1cd634deea07bd15d52c7ce470bd3?narHash=sha256-fknJsE4XnFjUfo87T9jyZ15ivJZB/varWvsJMYk0BNY%3D' (2026-09-15)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/2c423e03bbafcff28bfadc6781a4a8257f205cb5?narHash=sha256-dt4WdcvsA8/RCe%2BVZZwqU0X%2BXMM3wBbGCWA0/sFWzGo%3D' (2026-08-22)
  → 'github:nixos/nixpkgs/e554fab72f81915600f3f449b786fd9af40439a5?narHash=sha256-ZKhUe/2IJUq1JhKxKMu8rbkgSGmPP2ZCqlIPn40aGCM%3D' (2026-09-17)
• Updated input 'nixpkgs-blender':
    'github:nixos/nixpkgs/c2c93465e2871183025a30c52d19b6804311526f?narHash=sha256-8cgQR83UlOCuSkmKvOQcHTiRrSknUqTUbnRM7ai4obI%3D' (2026-08-23)
  → 'github:nixos/nixpkgs/20b1ddd1aa5ace70c9468305030aa4f9ef79671b?narHash=sha256-B44WL6h0XoLjJ41bUPJk0X5SDinLCII//6EcBLXKiJ0%3D' (2026-09-19)
• Updated input 'nixpkgs-darwin':
    'github:nixos/nixpkgs/a831408e6378bc02ebf8cc09b52c96ca86f6bab4?narHash=sha256-NcYt9QJfpJiF1lAyN8BDPB4EeScbPU%2BEwQqPiBElrpU%3D' (2026-08-22)
  → 'github:nixos/nixpkgs/a32edd7654519351e48e80372a928df336394670?narHash=sha256-RjR8AyvGlWuw16XRj7C1YDEw4E27ciuyPeB2nDMzgTU%3D' (2026-09-17)
• Updated input 'nixpkgs-master':
    'github:nixos/nixpkgs/c2c93465e2871183025a30c52d19b6804311526f?narHash=sha256-8cgQR83UlOCuSkmKvOQcHTiRrSknUqTUbnRM7ai4obI%3D' (2026-08-23)
  → 'github:nixos/nixpkgs/20b1ddd1aa5ace70c9468305030aa4f9ef79671b?narHash=sha256-B44WL6h0XoLjJ41bUPJk0X5SDinLCII//6EcBLXKiJ0%3D' (2026-09-19)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/5880666fd9eb563038431edb35c2d0aa595884e6?narHash=sha256-OURZPknrTjQrlNyxPdqzyqmU/81Wes1CUP/Ft1Rv/YI%3D' (2026-08-20)
  → 'github:nixos/nixpkgs/ecc58f32d1069a3e3f8a991e2233d365689f748d?narHash=sha256-vrwAiXmz%2B0hs/IWXZalFG/Ws6xQRcW%2BgClUDlfvcfjQ%3D' (2026-09-17)
• Updated input 'nixvim':
    'github:nix-community/nixvim/b397fb9f6950d57355d62bb92457d223464e0115?narHash=sha256-Hj/nkhKDv0aJly1PAUstrhrgEYn1mVSkLIYMh90r/Pc%3D' (2026-08-16)
  → 'github:nix-community/nixvim/0043fc97e267fee06ac0d858399ff6fac4242a92?narHash=sha256-JNsVNLux4emA7/BeZYzzAKnBaPnkatpaf/Fwf7PQT4E%3D' (2026-09-13)
• Updated input 'nixvim/flake-parts':
    'github:hercules-ci/flake-parts/427bf4bd9435fdf21321c8cc628c24efc14c0f7a?narHash=sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw%3D' (2026-08-01)
  → 'github:hercules-ci/flake-parts/31729ca8cbdb4fa927b34e5f4353e6a83f39e993?narHash=sha256-glZLQlzIn1fXH6PazR2iUmTo7kzzyYSshrWhLS9TqCU%3D' (2026-09-03)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/809414f0cdadf82cf11b06c2b29ba9b3168b3297?narHash=sha256-O2tBn84NNuHrnqNVxx/XqsXwfYvS1YwBh%2B7CBnbCYsk%3D' (2026-08-22)
  → 'github:cachix/git-hooks.nix/59f4ca0d063a1a3ec722c88b51a33004862e5379?narHash=sha256-PFD1nxptCXJyJoiYO1gf/5Vv43yqGpHtMC6LUhl9/pQ%3D' (2026-09-15)
2026-09-19 12:28:19 +08:00
ryan4yin | 二花 cd4253476c Merge pull request #272 from ryan4yin/fix/system-audit-bugs
fix: resolve audited system component bugs
2026-09-19 12:15:27 +08:00
Ryan Yin f23d5d4245 docs(monitoring): note dead-man switch and backup freshness TODOs 2026-09-19 12:14:20 +08:00
Ryan Yin a8ea040c32 fix(trash): persist the cleanup timer
trash-empty lacked Persistent=true, so a host that was off or suspended at the scheduled time never ran the purge and trash retention silently stopped.
2026-09-19 12:11:18 +08:00
Ryan Yin 3318103f8a chore(guix): remove the unused Guix integration
Guix was enabled on every desktop host, but shoukei had no /gnu mount (store and state lived on the tmpfs root) and it was not used. Drop the module, the modules.guix option, the @guix subvolume and the /var/guix preservation entry.
2026-09-19 12:11:15 +08:00
Ryan Yin fc8b9e5ba0 chore(aquamarine): disable the broken restic backup
The restic job needs three agenix secrets that do not exist yet (restic-password, ssh-key-for-restic-backup and an rclone config for the smb-downloads remote). Comment it out until they are provisioned so it does not fail silently every night.
2026-09-19 12:11:11 +08:00
Ryan Yin d78f6badd4 fix(aquamarine): repair monitoring config
Load both *.yml and *.yaml alert rule files: the Loki rules were named .yaml while only *.yml was loaded, so they silently never ran. Fix the Grafana domain typo (writefo.fun -> writefor.fun). Comment out the postgres-playground datasource, which used the Grafana admin password for a role that has no password and could never authenticate.
2026-09-19 12:11:07 +08:00
Ryan Yin ff961c1bc9 fix(flake): make the eval-tests check a derivation
checks.<system>.eval-tests returned a boolean, so nix flake check failed with "not a derivation". Wrap the evalTests result in a runCommand so flake check actually evaluates it.
2026-09-19 12:11:03 +08:00
ryan4yin | 二花 f8d12ada24 feat(btrbk): make snapshots explicit, guarded, and stored in @snapshots (#271)
* feat(btrbk): make snapshots explicit and guarded

Replace the always-on, hardcoded module with modules.btrbk options (enable/volume/subvolume/snapshotDir/target/onCalendar), and assert the btrfs top-level subvolume is mounted so a missing mount fails evaluation instead of silently failing at runtime.

Store snapshots in the @snapshots subvolume (snapshot_dir=@snapshots) rather than next to the live subvolume, make the off-host target explicit and off by default, and document that local snapshots are not off-host backups.

Enable the feature explicitly on idols-ai, shoukei and the three kubevirt hosts; qemu-guest now disables it through the option. Add eval tests for shoukei and ai.

* feat(monitoring): alert on btrbk snapshot failure

Add HostBtrbkSnapshotFailed on node_systemd_unit_state for btrbk-btrbk.service, so a broken snapshot schedule alerts instead of only surfacing in the journal.
2026-09-19 11:43:11 +08:00
Ryan Yin e7f984745b fix(home): autostart Chrome on aarch64 Linux 2026-09-19 09:51:08 +08:00
Ryan Yin 501c6af220 chore(agents): remove rtk integration
RTK compresses only shell output and independent evaluations show little to no end-to-end cost reduction. Drop the package and its install snippets; runtime artifacts were uninstalled separately.
2026-09-19 09:47:52 +08:00
Ryan Yin cc1655a059 docs(agents): normalize gating terms and drop duplicate clauses
Use one wording per gating family: exact target and scope, recovery path or safety guard, and explicit authorization. Remove the home-directory instance from workspace access and the repeated approval gate from the breaking-change bullet. Sync the high-impact eval scenario wording.
2026-09-19 08:50:17 +08:00
Ryan Yin 0ddf3f4471 docs(agents): add i-have-adhd skill to optional global set 2026-09-19 08:31:08 +08:00
Ryan Yin 02346df157 docs(agents): gate irreversible operations and generalize preview validity
State the destructive-and-high-impact section as a principle: irreversible operations need explicit authorization, destructive or force operations form a separate categorical gate, and unpublished history rewrites are exempt at section level. Generalize infrastructure preview invalidation to any input change, and add an irreversible-action eval scenario.
2026-09-19 08:26:41 +08:00
Ryan Yin f260d17d3b docs(agents): refine user-edit and test-double rules
Generalize the revert rule to protect any content the user changed or removed, and require confirmation before touching it. Replace the mock ban with a scope rule: checks must not be faked or weakened, and test doubles may replace only what a check does not verify. Sync the matching eval scenario.
2026-09-19 07:52:16 +08:00
Ryan Yin d80efddd17 fix(agents): leave Codex config unmanaged 2026-09-18 21:20:33 +08:00
Ryan Yin d47710ebe2 fix(agents): merge Codex privacy settings 2026-09-18 21:20:33 +08:00
Ryan Yin 8c62b5433d chore(agents): remove Cursor integrations 2026-09-18 21:20:33 +08:00
Ryan Yin bcee9f2ac8 feat(agents): add Crush and disable usage tracking 2026-09-18 21:20:33 +08:00
Ryan Yin 23258a06d4 feat(agents): add Pi and OMP 2026-09-18 21:20:33 +08:00
Ryan Yin 46266dd8ea chore(agents): remove Claude integrations 2026-09-18 21:20:33 +08:00
Ryan Yin 7a30581dde chore: bump pyclipsync to v0.1.3 2026-09-17 02:25:47 +08:00
Ryan Yin b10b059d1f chore: add microsoft-edge, chromium and brave-origin
Install microsoft-edge on x86_64 Linux via Home Manager and on macOS via
a brew cask. Enable the chromium and brave-origin Home Manager options
alongside google-chrome, dropping the google-chrome aarch64 fallback to
chromium since google-chrome supports aarch64-linux.

Persist the Brave Origin and microsoft-edge profile directories on the
ephemeral-root hosts.
2026-09-16 18:51:23 +08:00