Skip to content

feat(herdr): add the Herdr app, its tracked config and machine sync - #390

Merged
odsod merged 6 commits into
mainfrom
herdr-app
Nov 3, 2026
Merged

odsod merged 6 commits into
mainfrom
herdr-app

Conversation

@odsod

@odsod odsod commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

The Herdr app (a separate program on herdr-core) goes into provisioning,
together with the config this repo wants to keep for it. App configs that the
apps also write are now seeded by mise merge = "missing" dotfiles instead of
custom check and resolve scripts.

  • http:herdr-app and http:herdr-core are mise tools in mise.toml, pinned
    in mise.lock with sha256 checksums from the upstream release manifests.
    herdr-core sees its mise install path and leaves updates to mise. The app
    still updates itself in place until fix: identify package-managed apps in update settings herdrdev/herdr-app#459 (fixes
    Settings says a Nix-installed Herdr updates with git herdrdev/herdr-app#136) ships; AGENTS.md tracks that, Can't disable auto update herdrdev/herdr-app#207
    and Publish herdr-app release binaries as GitHub Releases herdrdev/herdr-app#395. The launcher entry is a static dotfile.
  • herdr/setup-machines.sh fills both the TUI and the app's hc machine list
    from Tailscale with one loop. It never passes --install, which would copy
    hc onto the peer.
  • Codex, antigravity and the Herdr app's settings.json and keys.json are
    merge = "missing" dotfiles: mise sets only the repo keys a live file lacks,
    and the app owns them after that. config:check, resolve, the per-app check
    and resolve tasks and tasks/apply.sh are gone; apply is an inline run list
    of mise bootstrap --yes, mise reshim and clean.
  • herdr/app/themes/nord.json and herdr/app/mods/prefix/ add the theme and a
    tmux-style prefix hint adapted from herdr.dev/mods/herdrdev/tmux-prefix.
  • Smaller fixes: KWin shadow rule for herdr-app; fish refreshes desktop env
    in app panes and skips the doubled blank line on an app pane's first prompt.

Test plan

  • mise run check
  • merge = "missing": a key changed live (font_size) survives
    mise dot apply, and a key removed live (telemetry) comes back
  • mise lock --global http:herdr-core http:herdr-app records the manifest
    sha256 for the Linux targets
  • Uninstall and reinstall both tools from the lock; hc, the shims and the
    icon resolve into the mise installs; mise outdated is clean
  • herdr-app check mods/prefix; herdr-app status reports no errors
  • mise run herdr:sync-machines (TUI list current; the app peer needs hc
    installed there first)
  • mise bootstrap --dry-run: all dotfiles and edits applied
  • kreadconfig6 --file kwinrulesrc --group herdr-app shows the shadow rule

desktop-env-refresh skipped app panes: herdr-core sets HC_TERMINAL_ID in
them, while only the TUI sets HERDR_ENV.

- Gate the refresh on either variable.
- Keeps clipboard and display env fresh in long-lived app panes.
@odsod
odsod force-pushed the herdr-app branch 2 times, most recently from 7b41db0 to 39e5aa3 Compare November 3, 2026 17:11
odsod added 2 commits November 3, 2026 18:27
App panes already pad the top of the terminal, so the prompt's own blank
line doubled the gap.

- Skip the blank line only on the first prompt of an app pane.
- Set the flag from fish_preexec, so a repaint of that prompt keeps it.
- Later prompts keep the gap: it separates them from command output.
The layout draws its own titlebar, so KWin wraps the window in a frame
that covers it.

- Add a herdr-app rule beside the other shadow-only rules.
- Match the Wayland app_id the app sets for itself.
The Herdr app is a separate program on herdr-core: its terminals live in
hc, not in the TUI's server, and the two share no agents.

- http:herdr-app and http:herdr-core are mise tools, pinned in mise.lock
  with sha256 from the upstream release manifests.
- herdr-core leaves updates to mise. The app still updates itself until
  herdrdev/herdr-app#459 ships; AGENTS.md tracks the issues.
- The launcher entry is a static dotfile, herdr/app/herdr-app.desktop.
- herdr/setup-machines.sh fills the TUI and hc machine lists from
  Tailscale with one loop.
@odsod
odsod force-pushed the herdr-app branch 2 times, most recently from e739e02 to b47c1f5 Compare November 3, 2026 17:38
odsod added 2 commits November 3, 2026 18:43
Codex and antigravity write their own config files, so mise seeds them
with merge = "missing" [dotfiles] entries instead of custom scripts.

- mise sets only the repo keys a live file lacks; the app owns them after
  that, so there is no drift to check.
- The codex:* and antigravity:* check and resolve tasks, resolve and
  config:check are gone.
- tasks/apply.sh is gone: apply is an inline run list of mise bootstrap,
  mise reshim and the clean task.
The app writes settings.json and keys.json itself, so they are
merge = "missing" dotfiles: the repo seeds the keys it sets, and the app
keeps zoom, window state, its shipped bindings and later changes.

- herdr/app/settings.json holds the quiet, dark, Iosevka and Inter setup.
- herdr/app/keys.json adds the ctrl+u prefix bindings.
- The Nord theme and the prefix mod, a tmux-style hint adapted from the
  upstream example, ride along as dotfiles next to the TUI files.
@odsod
odsod merged commit a8ccb45 into main Nov 3, 2026
1 check passed
@odsod
odsod deleted the herdr-app branch November 3, 2026 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant