Skip to content

0.0.82

Choose a tag to compare

@github-actions github-actions released this 22 Sep 13:38
· 76 commits to main since this release
eb42153

Any path in terminal output is now a link

Print a filename, a relative path, an absolute path or a path:line anywhere in a terminal — from a build log, grep -n, a stack trace, or an agent saying what it just edited — and it opens in the side panel, at the right line.

Bare filenames count too, extensionless ones included: Makefile, LICENSE, README. The consequence is deliberate — in a project with a file named plan, the word "plan" becomes a link.

What decides the underline is not what the text looks like, it is whether the file can actually be opened. Every candidate is checked in the main process first — the path is resolved on disk, run past the same denylist the file panel already enforces, and rejected if it is a directory, a device, larger than the panel's ceiling, or binary. Only what survives becomes a link. The alternative — underline on shape, fail on click — teaches you that an underline means nothing, and that is the defect this is built against.

Relative paths resolve against the session's own recorded working directory, in the main process. The renderer sends the session id and the matched text, and never learns where a session lives; it gets an absolute path back only for a file that has already been accepted. A remote session is refused, because its paths name files on another host. A shell opened inside the file panel resolves through the session that owns it.

Existing file:// links and http URLs are untouched — they keep their current handlers.

One table of setting defaults

The main process and the settings panel each carried their own defaults, and they disagreed on three settings. The visible one: IDE emulation showed as on while sessions were being started with it off, because the panel defaulted it to true and the process that spawns the session defaulted it to false. Permission mode and the visible-session count diverged the same way.

There is now one table, public/setting-defaults.js, read by both. A control that shows you a value now shows the value a new session will actually get.

Also in this release

  • The Changes panel's file watchers are released when the window closes, instead of leaking.
  • The sidebar no longer scrolls invisibly under the status bar.
  • The PTY debug lines are built only when debug logging is on.
  • docs/automation.md now says that a trigger chain's timeout_ms is one budget for the whole chain rather than one per step, and how to read a truncated chain's steps[] — deriving the resume point from steps_completed sends the first command twice.
  • docs/testing-a-pr.md covers testing a packaged build, and the hot-reloader trap that makes an edit inside the app's own repository look like a bug in the app.

Full changelog: v0.0.81...v0.0.82