diff --git a/herdr/.config/herdr/release-notes.json b/herdr/.config/herdr/release-notes.json index 2f0b799..04ae037 100644 --- a/herdr/.config/herdr/release-notes.json +++ b/herdr/.config/herdr/release-notes.json @@ -1,5 +1,5 @@ { - "version": "0.7.5", - "body": "### Breaking Changes\n- Installed and linked plugins, including their enabled state, are now global to the current user instead of isolated by Herdr session. Plugins installed only in a named session on Herdr 0.7.3 must be installed or linked again. (#1174)\n\n### Added\n- Added a live-agent CLI facade with named `start`, atomic `prompt`, logical `send-keys`, and server-owned `wait` workflows. Agent startup targets an existing pane without changing topology, validates the requested interactive agent kind and strict agent name, and accepts native arguments after `--`.\n- Added transient declarative Agent view queries through `agent.view.set/clear`; filtered and sorted views now define sidebar, mobile, mouse, and agent-keybind navigation order.\n- Added one-shot plugin `[[startup]]` hooks for restoring plugin-owned state after server startup and live handoff.\n- Added per-token foreground, bold, and dim styling to expanded Space and Agent sidebar row layouts.\n- Added `ui.sidebar_start_collapsed` to launch Herdr with the sidebar collapsed. (#1463)\n- Added `ui.prompt_new_workspace_name` to ask for a workspace name before interactive TUI creation.\n- Added macOS support for the `HERDR_AGENT=` foreground-process hint, allowing agents hidden behind host-visible wrappers such as `nono` to use the named agent's screen manifest. (#679)\n\n### Changed\n- Agent commands now accept only a unique live agent name or the pane ID currently hosting that agent. Names are cleared when the occupant exits, is released, or is replaced. The old top-level `wait` commands were replaced by `agent wait` and `pane wait-output`, and `agent send` was replaced by `agent send-keys`.\n- The session navigator now uses connected tree glyphs, groups matches by workspace, and automatically selects the first result when a search begins. (#1611)\n\n### Fixed\n- CLI requests now return a machine-readable `protocol_mismatch` error when the client and server protocols differ, while recovery commands remain available. (#1435)\n- Linux sound notifications now terminate and reap audio players that do not exit, preventing unavailable audio from leaving CPU-bound `mpg123` processes behind. (#1622)\n- Oversized bracketed text pastes are now rejected with a client-local notification instead of disconnecting the client. (#1665)\n- Agent prompt waits now report `agent_prompt_stalled` after five seconds without an observed state change instead of waiting indefinitely after an ineffective submission.\n- `herdr config check` now reports unknown config keys with their full paths instead of treating ignored typos as valid configuration. (#1573)\n- Codex panes with customized static terminal titles now fall back to the live working footer instead of remaining idle, while OSC activity remains preferred. (#1563)\n- Grok panes now preserve working and blocked state from terminal signals and pinned background-work status instead of falling back to idle mid-turn.\n- OpenCode lifecycle reports are now serialized so out-of-order plugin events cannot leave an idle pane marked working. (#1519)\n- Kimi question prompts now report blocked until the user answers or dismisses them.\n- Pi lifecycle reporting now uses settled events, preventing transient message boundaries from publishing an idle state mid-turn.\n- The Pi, OMP, OpenCode, and Kilo Code integrations can now be installed on Windows and report lifecycle state and native session identity through Herdr's named-pipe API. (#1531)\n- Named agent prompts now honor live bracketed-paste mode before sending Enter, preserving OpenCode text such as `A != B` instead of triggering shell mode. (#1525)\n- New panes, tabs, layouts, and workspaces using `new_cwd = \"follow\"` now inherit the foreground process-group leader's working directory instead of an unrelated helper process directory. (#1472)\n- Cached pane working directories no longer trigger repeated filesystem checks, avoiding slow sidebar rendering on network filesystems such as Ceph. (#1603)\n- Windows foreground-process snapshots are now shared across panes, reducing idle CPU use in sessions with many panes. (#1158)\n- Terminal diff streams now batch contiguous writes, reducing the visible wave effect while scrolling pane history. (#283)\n- A standalone Escape arriving beside another key is now preserved as its own input instead of being combined into a fabricated Alt chord. (#541)\n- Pane viewports that were following live output now continue following after a resize.\n- Mouse selections now remain visible when `ui.copy_on_select = false` while clipboard writes stay disabled. (#1471)\n- Workspace close confirmation now shows the current workspace name instead of a stale or unrelated label. (#1364)\n- Plugin command arrays now preserve whitespace-only arguments. (#1594, #1613)\n- Plugins can now be installed or linked while no Herdr server is running. (#1670)\n- Remote attach now discovers Herdr installed in mise's canonical tool path before offering to install a sidecar binary. (#1201)\n- Noninteractive update, plugin, integration, sound, custom-command, and Git subprocesses no longer flash console windows on Windows. (#1468)\n- Live handoff now preserves installed plugins and no longer lets the next plugin installation overwrite the existing registry. (#893)\n- `herdr agent wait` now returns `agent_not_running` promptly when its target pane closes instead of waiting for the full timeout. (#1439)\n- Pane graphics streams now shut down cleanly when a client disconnect races stream teardown.", + "version": "0.8.0", + "body": "### Added\n- Added `herdr --skill` to print the agent skill bundled with the running Herdr binary.\n- Added `ui.pane_scrollbars = false` to hide terminal pane scrollbars and reclaim their reserved column. (#2167)\n- Added `ui.tab_bar_position = \"bottom\"` to place the desktop tab row below terminal panes. (#2117)\n- Added live filtering to the keybind help with `/`, Backspace, and `Ctrl+U`. (#1825, #1832, thanks @corrius)\n- Added Windows support for `experimental.switch_ascii_input_source_in_prefix` with Korean IMEs. (#1802, #1823, thanks @joonhwan)\n- Added Grok CLI session reporting and native restore with `grok --resume `. (#1800, #1807, thanks @carlesso)\n- Added Antigravity CLI session reporting and native restore with `agy --conversation `. (#1011, #1571, #2087, thanks @ludoo)\n- Added automatic text history reads for idle alternate-screen agents, with the application viewport restored after collection.\n- Added `workspace.move_block`, the `workspace.reordered` event, and atomic worktree-group reordering. (#1694)\n- Added a Simplified Chinese README. (#1990, thanks @patrick-xin)\n\n### Changed\n- Experimental options are no longer exposed in the Settings TUI and remain available through the config file.\n- Agent status indicators now use the same static workspace marks across the sidebar, navigator, and mobile views, eliminating continuous spinner rendering while agents work.\n- Hidden pane output no longer triggers unnecessary TUI rendering.\n- Windows preview downloads now include Herdr and a modern app-local ConPTY runtime in one archive. (#1533, #1644, #1828)\n- Worktree parents and children now stay packed together in the sidebar, including while groups are reordered.\n- Public documentation now separates stable, preview, and immutable versioned release snapshots.\n- Repository and installation links now use `herdrdev/herdr` after the GitHub organization migration.\n- Relicensed Herdr from AGPL-3.0-or-later to Apache-2.0.\n\n### Fixed\n- Pane applications now receive semantic light/dark query responses and live Mode 2031 updates when the host appearance changes. (#714)\n- Remote attach now falls back to `sh` when the login shell cannot perform path discovery. (#1201)\n- PTY output continues to be read while pane input is temporarily blocked. (#1295)\n- Worktree CLI help and docs no longer advertise the redundant `--json` flag; worktree commands remain JSON-only and continue accepting the flag for compatibility. (#2171)\n- OpenCode 2 preview panes now appear as OpenCode agents and use the existing OpenCode status detection. (#2169)\n- Pane text copied through VS Code Remote Tunnels now reaches the viewing machine's clipboard instead of overwriting the remote host clipboard. (#2015)\n- Windows agent detection now follows Git Bash-launched agents across emulated `exec` process boundaries. (#2107)\n- Detached Windows servers and pane processes now survive logout from the OpenSSH session that started them. (#2008)\n- Windows `agent start` now launches agents without native arguments instead of timing out on an invalid empty PowerShell argument list. (#2072)\n- Headless servers now resume restored agent sessions without waiting for a TUI client to attach. (#2064)\n- Vibe and other Kitty-keyboard pane applications now receive shifted letters and punctuation when they request associated text. (#2020)\n- Kitty-keyboard pane applications now receive printable key releases without duplicate text input. (#1746)\n- Kitty graphics remain visible during host repaints. (#1628)\n- Pane applications now receive correct XTWINOPS terminal and cell-size query responses. (#835)\n- WSL clients query the host cell size when the terminal ioctl reports no pixels, keeping graphics sharp instead of using the 8x16 fallback. (#2146, #2160, thanks @WakaTaira)\n- Linux runtimes without terminal foreground process groups can opt into child-group agent detection with `HERDR_PROCESS_DETECTION=child-groups`. (#1982)\n- Installing the Herdr agent skill with the `skills` CLI no longer copies the entire repository. (#2022)\n- Nix builds now include the bundled agent skill required by `herdr --skill`. (#1889, #1890, thanks @olafkfreund)\n- Agent prompts now wait briefly after sending text before pressing Enter, preventing prompts from remaining in agent composers without starting a turn. (#1878)\n- Empty clipboard writes from pane applications no longer erase existing clipboard contents or show a copied confirmation. (#1893)\n- Plain mouse movement no longer triggers continuous full renders while preserving Herdr menu hover and pane application mouse tracking. (#1865)\n- Extended-button drags now preserve Herdr hover state while applications receive the drag.\n- `ui.copy_on_select = false` now retains drag and double-click word selections without copying; `Ctrl+C`, or `Cmd+C` when the host terminal forwards it, copies and clears the selection. (#1782)\n- Pane and agent read responses now report `truncated: true` when older terminal rows were omitted. (#1717)\n- Pane applications that query OSC 4 palette colors now inherit the host terminal palette. (#1752)\n- Ctrl-clicking a pane URL no longer forwards an unmatched mouse release to alternate-screen applications, preventing duplicate browser tabs. (#1761)\n- Known-agent integrations now leave pane ownership to confirmed process exit, so restarting Pi with the same saved session restores lifecycle state even with custom working UI. (#1648, #1792)\n- Nested or ephemeral Codex sessions no longer replace the owning pane's resumable session. (#1789, #1927, thanks @Pimpmuckl)\n- Pi RPC, JSON, and print processes no longer claim pane lifecycle state intended for Pi TUI sessions. (#2159, thanks @rhjoh)\n- Hermes state now comes from screen detection while its plugin reports resumable session identity, avoiding stale lifecycle authority from incomplete hooks.\n- OMP integration install, status, and uninstall now respect `PI_CONFIG_DIR` when `PI_CODING_AGENT_DIR` is not set, and installation refuses extension-directory collisions with Pi. (#1696)\n- OMP integrations now preserve Windows absolute session paths for native restore. (#2092, thanks @art-wiedzmin)\n- Claude integration updates preserve existing settings key order and formatting. (#2066)\n- Physical Escape key records on native Windows now bypass raw VT report framing, so pane applications receive Escape immediately and reliably. (#1736)\n- Native Windows key presses, grouped repeats, and releases now preserve their physical lifecycle and stay with the pane that received the initial press. (#2077)\n- Windows `pane send-keys` and `agent send-keys` now deliver semantic Escape as a complete key tap, preventing a following key from being interpreted as an Alt chord.\n- Shift+Enter now reaches native Windows pane applications with its modifier intact. (#1743, #1909, thanks @Pimpmuckl)\n- Ctrl+_ input bytes now decode as Ctrl+_ instead of Ctrl+-. (#2164, #2165, thanks @Sertug17)\n- Prefix and navigate modes now recognize non-US shifted keybindings while retaining legacy US punctuation support. (#1870)\n- Closing a non-focused workspace no longer changes the focused workspace. (#1328, #1877, thanks @yianL)\n- A background workspace that closes after its last pane exits no longer moves focus or hides the current workspace. (#1621, #1912, thanks @season179)\n- Directional pane focus now keeps Navigate mode active. (#1850, #1993, thanks @we11adam)\n- Closing a workspace's last tab through the CLI or API now closes the workspace like the TUI does. (#1760, #1899, thanks @season179)\n- Linked worktree workspaces retain their labels during Git metadata refreshes.\n- Clients repaint after transient terminal resizes instead of leaving stale or missing rows.\n- Repeated workspace Git discovery and foreground-cwd checks no longer block rendering or API handling. (#1838, #2206)\n- Relative plugin commands now resolve from the plugin root. (#1949)\n- Windows installation preserves inherited `PATH` and related environment variables. (#1947)\n- Windows agent process discovery preserves the owning parent agent across wrapper processes. (#1514)\n- The Rose Pine `surface_dim` color remains visible when the outer terminal uses a matching theme. (#1946, #2002, thanks @brabli)\n- CLI socket commands now report a clear `server_not_running` error instead of a raw I/O error. (#1941, #1963, thanks @season179)\n- Non-UTF-8 CLI arguments now produce a usage error instead of panicking. (#2207, thanks @VialFlorian)\n- Copy-mode `e` now crosses long soft-wrapped CJK lines when a read window ends on a wide glyph. (#2145, thanks @kiakiraki)\n- Clients restore terminal state when they receive SIGHUP or SIGTERM. (#2041, thanks @MattJColes)\n- Windows now shows `system` notifications and completes MP3 notification sounds without leaving PowerShell players waiting for a timeout. (#1330)", "show_on_startup": true } \ No newline at end of file diff --git a/herdr_1/.config/herdr/plugins/.tmp-install-750065-1785311987680/checkout b/herdr_1/.config/herdr/plugins/.tmp-install-750065-1785311987680/checkout new file mode 160000 index 0000000..5f76bc9 --- /dev/null +++ b/herdr_1/.config/herdr/plugins/.tmp-install-750065-1785311987680/checkout @@ -0,0 +1 @@ +Subproject commit 5f76bc9eab02296e88d2707fa4c1cf0d8eabdb80 diff --git a/herdr_1/.config/herdr/plugins/github/herdr-bar-96eebe452a9c b/herdr_1/.config/herdr/plugins/github/herdr-bar-96eebe452a9c new file mode 160000 index 0000000..58c23e5 --- /dev/null +++ b/herdr_1/.config/herdr/plugins/github/herdr-bar-96eebe452a9c @@ -0,0 +1 @@ +Subproject commit 58c23e5c8d7926044f67524f403257bacdf88f6b diff --git a/herdr_1/.config/herdr/plugins/github/herdr-lazygit-b11d62e75f78 b/herdr_1/.config/herdr/plugins/github/herdr-lazygit-b11d62e75f78 new file mode 160000 index 0000000..a13e12c --- /dev/null +++ b/herdr_1/.config/herdr/plugins/github/herdr-lazygit-b11d62e75f78 @@ -0,0 +1 @@ +Subproject commit a13e12c99e5e469edd73165cabba413c2a2fd698 diff --git a/herdr_1/.config/herdr/plugins/github/herdr-spreader-f248c87aa2e2 b/herdr_1/.config/herdr/plugins/github/herdr-spreader-f248c87aa2e2 new file mode 160000 index 0000000..5f76bc9 --- /dev/null +++ b/herdr_1/.config/herdr/plugins/github/herdr-spreader-f248c87aa2e2 @@ -0,0 +1 @@ +Subproject commit 5f76bc9eab02296e88d2707fa4c1cf0d8eabdb80 diff --git a/herdr_1/.config/herdr/plugins/github/herdr-zoxide-f7b96c313637 b/herdr_1/.config/herdr/plugins/github/herdr-zoxide-f7b96c313637 new file mode 160000 index 0000000..7be842f --- /dev/null +++ b/herdr_1/.config/herdr/plugins/github/herdr-zoxide-f7b96c313637 @@ -0,0 +1 @@ +Subproject commit 7be842fe84d8d017c80e54f8d7eb7f0f6ef28c44 diff --git a/herdr_1/.config/herdr/plugins/github/osamahbeig.pane-mover-d60fe0209b83 b/herdr_1/.config/herdr/plugins/github/osamahbeig.pane-mover-d60fe0209b83 new file mode 160000 index 0000000..a9fde7a --- /dev/null +++ b/herdr_1/.config/herdr/plugins/github/osamahbeig.pane-mover-d60fe0209b83 @@ -0,0 +1 @@ +Subproject commit a9fde7a4f98f1b6c230c64e2036b387d9c8d5bc3 diff --git a/herdr_1/.config/herdr/plugins/github/sessionizer-66e03d1ff740 b/herdr_1/.config/herdr/plugins/github/sessionizer-66e03d1ff740 new file mode 160000 index 0000000..d347668 --- /dev/null +++ b/herdr_1/.config/herdr/plugins/github/sessionizer-66e03d1ff740 @@ -0,0 +1 @@ +Subproject commit d3476681feb1c71689594779b1e65f55c97c7078 diff --git a/scripts/scripts/lxc-update.sh b/scripts/scripts/lxc-update.sh new file mode 100755 index 0000000..74a6f61 --- /dev/null +++ b/scripts/scripts/lxc-update.sh @@ -0,0 +1,112 @@ +#!/bin/bash +# LXC Arch Container Cleanup Script +# Usage: sudo bash cleanup.sh [--auto] + +set -euo pipefail + +AUTO=0 +if [[ "${1:-}" == "--auto" ]]; then + AUTO=1 +fi + +ask() { + if [[ $AUTO -eq 1 ]]; then + return 0 + fi + read -rp "$1 [y/N]: " ans + [[ "$ans" =~ ^[Yy]$ ]] +} + +# --- PRE-CHECK --- +echo "=== Disk Usage (Before) ===" +df -h / +echo "" + +# 1. PACMAN / PARU CACHE +if ask "Clean pacman package cache (keeps only latest 2 versions)?"; then + if command -v paccache &>/dev/null; then + paccache -rk2 + else + echo "Installing pacman-contrib for paccache..." + pacman -S --noconfirm pacman-contrib + paccache -rk2 + fi +fi + +# 2. ORPHANED PACKAGES (pacman/paru) +echo "" +echo ">>> Checking for orphaned packages..." +orphans=$(pacman -Qdtq 2>/dev/null || true) +if [[ -n "$orphans" ]]; then + echo "Orphans found:" + echo "$orphans" + if ask "Remove orphaned packages?"; then + # shellcheck disable=SC2086 + pacman -Rns --noconfirm $orphans + fi +else + echo "No orphaned packages found." +fi + +# 3. PARU BUILD CACHE (AUR) +if command -v paru &>/dev/null; then + echo "" + if ask "Clean paru build cache (~/.cache/paru)?"; then + CACHE_DIR="${HOME}/.cache/paru" + if [[ -d "$CACHE_DIR" ]]; then + rm -rf "$CACHE_DIR/clone"/* 2>/dev/null || true + rm -rf "$CACHE_DIR/diffs"/* 2>/dev/null || true + echo "Paru cache cleaned." + fi + fi +fi + +# 4. PODMAN CLEANUP +if command -v podman &>/dev/null; then + echo "" + echo ">>> Podman cleanup..." + + dangling=$(podman images -f dangling=true -q 2>/dev/null || true) + if [[ -n "$dangling" ]]; then + echo "Dangling images found." + if ask "Remove dangling podman images?"; then + podman image prune -f + fi + else + echo "No dangling podman images." + fi + + if ask "Run full podman system prune (removes unused containers, networks, images)?"; then + podman system prune -f + fi +else + echo "Podman not installed, skipping." +fi + +# 5. JOURNAL LOGS +if ask "Vacuum systemd journal to 7 days / 100MB?"; then + journalctl --vacuum-time=7d --vacuum-size=100M +fi + +# 6. TEMP FILES +if ask "Clean /tmp and /var/tmp (files older than 3/7 days)?"; then + find /tmp -type f -atime +3 -delete 2>/dev/null || true + find /var/tmp -type f -atime +7 -delete 2>/dev/null || true + echo "Temp files cleaned." +fi + +# 7. TRIM (helpful on SSD/thin-provisioned storage) +if command -v fstrim &>/dev/null; then + if ask "Run fstrim to discard unused blocks?"; then + fstrim -av / 2>/dev/null || echo "fstrim failed or not supported by host storage" + fi +fi + +# 8. LARGE LOG CHECK +echo "" +echo ">>> Large log files (>10MB) in /var/log:" +find /var/log -type f -size +10M -exec ls -lh {} + 2>/dev/null || true + +echo "" +echo "=== Disk Usage (After) ===" +df -h /