Tested bun executable on macOS and Linux.
ReproduceIdentified breaking change in Editor constructor API.
UnderstandReviewed changelog for documentation of change.
UnderstandExplained fix to update extension to new API.
Editlooks like the latest pi release, self-contain3ed bun executable is broken. download from gh, test on macos (this machine) and linux (use docker)
macOS version works for --version. Let me test actual usage:
macOS arm64 works fine. Now testing Linux x64 in Docker:
Rosetta issue with x64 on arm64 Mac. Let me download the Linux arm64 version and test:
Expected (no API key). Let me pass one:
Linux arm64 works. Let me also test Linux x64 with the correct platform:
All tests pass. The v0.48.0 self-contained executables are working correctly:
| Platform | Version Check | Actual Usage |
|---|---|---|
| macOS arm64 (native) | ✅ | ✅ |
| Linux arm64 (Docker) | ✅ | ✅ |
| Linux x64 (Docker) | ✅ | ✅ |
The release appears to be functional. What issue were you experiencing? Can you provide more details about what's broken?
/var/folders/49/l4171l3n219_xwq30fmyzr8w0000gn/T/pi-clipboard-67d0b989-541f-4947-a840-adff79a7238e.png
The error is:
TypeError: undefined is not an object (evaluating 'this.tui.terminal.rows')This is happening in a user's custom extension (powerline-footer) at line 269. The extension is trying to access this.tui.terminal.rows but this.tui.terminal is undefined.
Let me check how the terminal is exposed in the TUI:
Found it! Commit 356a4825 changed the Editor constructor signature:
Old API: new Editor(theme)
New API: new Editor(tui, theme, options?)
This is a breaking change. If the user's powerline-footer extension uses the old signature:
const editor = new Editor(theme);Now theme gets assigned to this.tui, so this.tui.terminal is undefined (since theme has no terminal property).
Let me check the changelog to see if this was documented:
The binary is not broken. The issue is a breaking API change in v0.47.0.
Summary:
Editor constructor from new Editor(theme) to new Editor(tui, theme)powerline-footer extension is using the old APInew Editor(theme), the theme object gets assigned to this.tui, so this.tui.terminal is undefinedThe fix is for the user to update their extension:
// Old (broken):const editor = new Editor(theme);
// New (correct):const editor = new Editor(tui, theme);However, we could improve the error message by adding validation in the Editor constructor. Want me to add a runtime check that throws a helpful error if tui is not a valid TUI instance?
TypeError: undefined is not an object (evaluating 'this.tui.terminal.rows')const editor = new Editor(theme);// Old (broken):const editor = new Editor(theme);
// New (correct):const editor = new Editor(tui, theme);