Skip to content

fix: Configurable focus target + streamlined settings/config install - #6

Open
jvasallo wants to merge 3 commits into
mgc26:mainfrom
jvasallo:feat/iterm2-focus-support
Open

fix: Configurable focus target + streamlined settings/config install#6
jvasallo wants to merge 3 commits into
mgc26:mainfrom
jvasallo:feat/iterm2-focus-support

Conversation

@jvasallo

Copy link
Copy Markdown

The daemon previously always raised Cursor's window when a session key was pressed. Add config.focus.appName so other apps work, and give iTerm2 its own AppleScript path: iTerm2's window/tab chrome title never reflects the tmux session inside it, so it matches by the attached client's tty (via tmux list-clients) instead of window title, falling back to a name-based match when no tmux session is known.

Also add bin/install-launchd.sh to generate the launchd plist from the template instead of manually editing its placeholders.

Summary

Describe the user-visible change and why it belongs in deck_neo.

Verification

  • npm test
  • npm run build
  • Documentation updated when setup or behavior changed
  • Hardware behavior checked on a Stream Deck Neo, or not applicable
  • No credentials, session data, logs, personal paths, or real private project names included

Hardware context

If this touches the device layer, include the macOS version, Stream Deck model, Elgato app state, and manual checks performed.

jvasallo and others added 2 commits August 20, 2026 00:21
The daemon previously always raised Cursor's window when a session key was
pressed. Add config.focus.appName so other apps work, and give iTerm2 its
own AppleScript path: iTerm2's window/tab chrome title never reflects the
tmux session inside it, so it matches by the attached client's tty (via
tmux list-clients) instead of window title, falling back to a name-based
match when no tmux session is known.

Also add bin/install-launchd.sh to generate the launchd plist from the
template instead of manually editing its placeholders.
Hand-editing both files was the most error-prone part of setup: the hooks
JSON for ~/.claude/settings.json had to be merged by hand into a file users
often customize, and ~/.deck-neo/config.json had no guided path at all. Add
`npm run check-hooks` (reports exactly which hooks are missing/stale, never
writes the shared settings file) and `npm run init-config` (interactively
generates config.json, since deck_neo fully owns that file). Trim the docs
to match — one example hook block instead of all seven repeated inline.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jvasallo jvasallo changed the title Make the focus target configurable; add iTerm2 support fix: Configurable focus target + streamlined settings/config install Aug 20, 2026
Two independent silent failures compounded to make +NEW look completely
broken:

- The launchd job's PATH (bin/deckneo-daemon.sh, deckneo-launch.sh) pinned
  node and Homebrew but not wherever `claude` itself lives (e.g.
  ~/.local/bin). Since `tmux new-session -d` reports success before the
  spawned command actually execs, a missing `claude` failed with zero error
  output -- the session spun up and self-destructed the instant tmux
  couldn't find it.

- Even with claude launching correctly, +NEW never opened a window for the
  new session -- it only ever creates the tmux session detached. The focus
  key can only raise an *existing* window, so for iTerm2/Terminal users
  (no Cursor-style always-open workspace) there was nothing to find.

Fixes both: adds ~/.local/bin to the pinned PATH, and -- for focus.appName
values of iTerm2 or Terminal -- opens a real window attached to the tmux
session that was just created. Both apps' window/command verbs skip
login-shell init, so a bare `tmux attach` couldn't find tmux either;
wrapping it in `zsh -lc` fixes that the same way an interactive terminal
would.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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