Skip to content

Local-mode polish for the channel (wrappers, language, project filter, tool args) - #34

Merged
bborn merged 2 commits into
mainfrom
feat/channel-local-polish
Jun 9, 2026
Merged

Local-mode polish for the channel (wrappers, language, project filter, tool args)#34
bborn merged 2 commits into
mainfrom
feat/channel-local-polish

Conversation

@bborn

@bborn bborn commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #28/#31. Dogfooding a local-mode GM (SERVER_HOST=local) surfaced several rough edges where local mode still behaved or spoke as if there were a remote server. #31 taught the channel's runRemote to go local, but left the rest of the GM-facing surface assuming SSH/remote. This makes local mode coherent. All additive — remote-server GMs render and behave exactly as before.

What the GM hit (real dogfooding)

  • "bin/ty-remotessh local fails: there's no local host"
  • "ty_commandty receives undefined no matter what I pass"
  • "Task #4094 is on your local queue, not the remote server" — chasing a connection that doesn't exist
  • The channel surfaced other projects' task events (shared notifications.jsonl)

Fixes

# Fix
1 bin/ty-remote / bin/ssh-remote get an IS_LOCAL branch → run directly on this machine, no SSH
2 Channel instructions + ty_command/ssh_command descriptions say "this machine" in local mode (via a LOCATION constant)
3 ty_command/ssh_command use a tolerant commandArg() that accepts either param name + returns a clear error instead of running ty undefined
4 Project filter: channel baked with a PROJECTS allowlist; only surfaces this GM's own projects' events (empty list = pass all)
5 print_checklist is local-aware (daemon step instead of ssh … claude login) and the alias now includes the channel flag; CLAUDE.md gains a local-mode banner

Testing

Extended the qa/ harness — 26/26 pass. New assertions: bin wrappers run locally (no ssh local), channel language is "this machine", CLAUDE.md banner present, checklist local-aware, foreign-project events filtered, and ssh_command runs locally + tolerates the wrong param name (no undefined). Remote rendering verified unchanged.

🤖 Generated with Claude Code

bborn and others added 2 commits June 9, 2026 09:16
Dogfooding a local-mode GM surfaced several rough edges where local mode
still behaved/spoke as if there were a remote server:

- bin/ty-remote & bin/ssh-remote ran 'ssh local' (no such host) — add an
  IS_LOCAL branch that runs commands directly on this machine.
- Channel instructions + ty_command/ssh_command descriptions said 'the remote
  server' even locally, so the GM chased a connection that doesn't exist —
  now phrased as 'this machine' via a LOCATION constant.
- ty_command/ssh_command sent 'undefined' to the shell when the GM mixed up
  the args/command param names — add tolerant commandArg() + clear errors.
- The channel surfaced EVERY project's events (shared notifications.jsonl);
  add a PROJECTS allowlist so a GM only sees its own projects.
- print_checklist printed ssh/claude-login steps + a flag-less alias in local
  mode — branch on is_local_server, and include the channel flag.
- CLAUDE.md gains a local-mode banner (SERVER_IS_LOCAL/REMOTE flags).

All additive: remote-server GMs render and behave exactly as before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…er, tool args

Extends the harness to assert the local-mode polish: bin wrappers run locally
(no 'ssh local'), channel language says 'this machine', CLAUDE.md banner present,
checklist is local-aware, foreign-project events are filtered, and ssh_command
runs locally + tolerates the wrong param name (no 'ty undefined').

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bborn
bborn merged commit 3f829a8 into main Jun 9, 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