Skip to content

feat(herdr): Herdr Desktop setup, RefactorIA layout and multi-monitor screens - #82

Merged
barbatdev merged 5 commits into
mainfrom
chore/herdr-desktop-setup
Oct 30, 2026
Merged

barbatdev merged 5 commits into
mainfrom
chore/herdr-desktop-setup

Conversation

@barbatdev

@barbatdev barbatdev commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • npm (npm/npmrc): global packages go to ${HOME}/.local (portable across macOS and Linux homes).
  • Herdr Desktop install (install.sh, herdr/desktop/settings.json): links the RefactorIA theme, seeds settings.json with seed_file (Herdr rewrites it), and installs font-inter for the UI font.
  • RefactorIA layout (herdr/desktop/layouts/refactoria.json, herdr/desktop/mods/refactoria-{spaces,agents}): clones of the shipped main layout and spaces/agents mods. Machine group headers (This computer, remote machines) render as cards; text sizes are unified (13 for names, 12 elsewhere, 10.5 inside small badges). Only main.js and mod.json are versioned; Herdr generates the .d.ts and jsconfig.json.
  • herdr-screens (fish/functions/herdr-screens.fish): opens extra Herdr Desktop screens (default up to 4), one per monitor. Each screen uses its own ~/.config/herdr-app-N home (own position, selection and zoom), shares the same herdr-core terminals, symlinks theme/layout/mods to the repo and copies settings.json once.
  • Pi / gentle-shell theme (pi/themes/refactoria.json): every variable now maps to a RefactorIA token, a semantic role from docs/refactoria-branding.md (error #FF6B8A, success #58E6A8, warning #FFC857, info #8CC8FF) or the shared ANSI palette, replacing leftover Tailwind values. The accent-spark amber (#FFB547) moves from warning to small details: custom message labels and bash mode. Text colors reach 4.5:1 on dark-900; dim is 4.19:1 on dark-700 and is only used on the page background.

Verification

  • bash -n install.sh, fish -n on the new function, scripts/check-install-symlinks.sh passes; ./install.sh --dry-run lists the new steps.
  • herdr-screens opened screens 2–4; all four report layout refactoria with no errors in herdr-app status, and herdr-app ls returns the same spaces in each.
  • Layout and mods reviewed visually.
  • Not covered: Herdr Desktop ignores the terminal font setting for installed fonts (Beard, FiraCode, Menlo), so the beard glyph and ligatures do not render there; settings.json keeps the Beard font for when that works. Auto-update behaviour with four running screens is untested.

🤖 Generated with Claude Code

https://claude.ai/code/session_01A9D7ph123Jn8iB1eGbr8Nz

barbatdev and others added 4 commits October 30, 2026 10:10
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A9D7ph123Jn8iB1eGbr8Nz
…ed text sizes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A9D7ph123Jn8iB1eGbr8Nz
@barbatdev

Copy link
Copy Markdown
Owner Author

Fleet review (glm)

Lens: requirements + adversarial. Dotfiles PR without a linked issue; the PR body's own Summary/Verification serve as the spec. The install.sh MANAGED_LINKS additions all point at files that exist on the head branch (verified herdr/desktop/themes/refactoria.json via the GitHub API; layouts/mods/settings are added in this diff), the fish function's $shared list exactly mirrors the MANAGED_LINKS set, and argument validation on herdr-screens handles empty, non-numeric, and out-of-range counts. No blocking defects found; two robustness suggestions and one question below.

Suggestion (2)

  • layout.switch fires once on first status success and failures are swallowed (fish/functions/herdr-screens.fish:43): The readiness loop breaks after the first successful herdr-app status, then runs layout.switch with all output discarded. If status starts answering before layouts/mods are fully loaded, the switch can fail and the break happens regardless of the switch's result, leaving the screen on the default main layout with only the 'opened screen N' message and no retry.
  • font-inter detection only checks the user font directory (install.sh:441): The presence check is ls "$HOME/Library/Fonts"/Inter-Regular.*, but Homebrew font casks can install into the system font directory (/Library/Fonts) depending on the machine's fontdir configuration. On such a machine the check never matches and brew install --cask font-inter runs on every install; Homebrew exits 0 with an 'already installed' warning, so it is noise, not breakage.

Question (1)

  • Global prefix change orphans previously installed global packages (npm/npmrc:3): Setting prefix=${HOME}/.local redirects all future npm install -g output. Packages previously installed under the old prefix (e.g. Homebrew's or /usr/local) stop resolving for new installs and any that were symlinked into PATH under the old prefix's bin directory will shadow or conflict with the new location. The PR body documents the portability intent but not the migration of existing installs.

Verdict: ready to merge

@barbatdev
barbatdev merged commit f42b7eb into main Oct 30, 2026
1 check passed
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