Skip to content

fix: make interactive ps:exec sessions feel like heroku console - #3996

Open
tarzan wants to merge 1 commit into
heroku:mainfrom
DefactoSoftware:maarten/heroku-ps-exec-elixir-iex
Open

tarzan wants to merge 1 commit into
heroku:mainfrom
DefactoSoftware:maarten/heroku-ps-exec-elixir-iex

Conversation

@tarzan

@tarzan tarzan commented Oct 15, 2026

Copy link
Copy Markdown

Summary

Interactive ps:exec was sluggish and lost the cursor in line editors such as an Elixir remote shell. The built-in SSH client delayed single-byte writes and rewrote carriage returns. Interactive sessions now hand the terminal to system ssh, the same way heroku console does on Private Spaces, and fall back to the built-in client when ssh is not installed.

Type of Change

Breaking Changes (major semver update)

  • Add a ! after your change type to denote a change that breaks current behavior

Feature Additions (minor semver update)

  • feat: Introduces a new feature to the codebase

Patch Updates (patch semver update)

  • fix: Bug fix
  • deps: Dependency upgrade
  • revert: Revert a previous commit
  • chore: Change that does not affect production code
  • refactor: Refactoring existing code without changing behavior
  • test: Add/update/remove tests

Testing

Notes:
Unit tests cover the terminal passthrough, window size, and the choice between system ssh and the built-in client. A live dyno check still needs a rebuilt CLI.

Steps:

  1. npm test for test/unit/lib/ps-exec/ssh.unit.test.ts and test/unit/commands/ps/exec.unit.test.ts.
  2. npm run build && ./bin/run.js ps:exec -a <app>, then start the release remote shell and edit a long line.
  3. Repeat with stdin piped to confirm the built-in client is still used for non-interactive commands.

Screenshots (if applicable)

Related Issues

GitHub issue: n/a
GUS work item: n/a

Made with Cursor

@tarzan
tarzan requested a review from a team as a code owner October 15, 2026 14:00
@github-actions github-actions Bot added the size/M Medium PR (code churn < 500) label Oct 15, 2026
The built-in SSH client delayed keystrokes and rewrote carriage returns, so line editors lost the cursor. Interactive sessions now hand the terminal to system ssh, matching heroku console.

Co-authored-by: Cursor <cursoragent@cursor.com>
@tarzan
tarzan force-pushed the maarten/heroku-ps-exec-elixir-iex branch from 4ae3e02 to 3fc1e08 Compare October 17, 2026 08:51

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/M Medium PR (code churn < 500)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant