Local-mode polish for the channel (wrappers, language, project filter, tool args) - #34
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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'srunRemoteto 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-remote→ssh localfails: there's nolocalhost"ty_command→tyreceivesundefinedno matter what I pass"notifications.jsonl)Fixes
bin/ty-remote/bin/ssh-remoteget anIS_LOCALbranch → run directly on this machine, no SSHty_command/ssh_commanddescriptions say "this machine" in local mode (via aLOCATIONconstant)ty_command/ssh_commanduse a tolerantcommandArg()that accepts either param name + returns a clear error instead of runningty undefinedPROJECTSallowlist; only surfaces this GM's own projects' events (empty list = pass all)print_checklistis local-aware (daemon step instead ofssh … claude login) and the alias now includes the channel flag;CLAUDE.mdgains a local-mode bannerTesting
Extended the
qa/harness — 26/26 pass. New assertions: bin wrappers run locally (nossh local), channel language is "this machine",CLAUDE.mdbanner present, checklist local-aware, foreign-project events filtered, andssh_commandruns locally + tolerates the wrong param name (noundefined). Remote rendering verified unchanged.🤖 Generated with Claude Code