Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/verify-libghostty-vt-node/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ S=.agents/skills/verify-libghostty-vt-node/scripts

## Requirements

- The toolchain that `mise.toml` pins: Node `26.12.1` and Zig `0.15.2` on `PATH`. `mise install` installs them. If `mise exec` fails on your host, put the two install directories on `PATH` directly, for example `~/.local/share/mise/installs/node/26.12.1/bin` and `~/.local/share/mise/installs/zig/0.15.2`.
- The toolchain that `mise.toml` pins: Node `26.12.1` and Zig `0.17.0` on `PATH`. `mise install` installs them. If `mise exec` fails on your host, put the two install directories on `PATH` directly, for example `~/.local/share/mise/installs/node/26.12.1/bin` and `~/.local/share/mise/installs/zig/0.17.0`.
- A C++17 compiler and Python for `node-gyp`.
- A checkout that mise trusts. In an untrusted copy, a mise shim that a build step calls fails with `Config files in .../mise.toml are not trusted`, and `launch.sh` exits `1`.
- The network on the first launch: `npm ci`, the Ghostty clone in `npm run build:libghostty`, and the dependency install in the consumer project.
Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/verify-libghostty-vt-node/scripts/launch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ lib_dir="${LIBGHOSTTY_VT_PREFIX:-$ROOT/vendor/libghostty-vt}"
lib_stamp="$lib_dir/.verify-libghostty-vt-node.sha256"
lib_inputs="$( { cat scripts/build-libghostty-vt.sh; env | grep -E '^(GHOSTTY_|LIBGHOSTTY_VT_)' | sort || true; } | sha_stdin)"
if [[ ! -f "$lib_dir/lib/libghostty-vt.a" || "$(cat "$lib_stamp" 2>/dev/null)" != "$lib_inputs" ]]; then
step "npm run build:libghostty (missing, or built from other inputs: needs zig 0.15.2 and the network)"
step "npm run build:libghostty (missing, or built from other inputs: needs zig 0.17.0 and the network)"
run npm run build:libghostty
echo "$lib_inputs" > "$lib_stamp"
fi
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ This bootstrap was written against:
- libghostty Doxygen: <https://libghostty.tip.ghostty.org/>
- Node-API docs: <https://nodejs.org/api/n-api.html>

The build now pins Ghostty `v1.4.0` (`83fb95624b0439ee660c2679b43b38c8b63769cd`), which needs Zig 0.17.0.
Comment thread
ThomasK33 marked this conversation as resolved.

The binding talks to `libghostty-vt` directly through the C API. It has no runtime dependency on `go-libghostty`.

## API
Expand Down Expand Up @@ -63,8 +65,6 @@ All dimensions are validated as positive integers. Using a terminal after `dispo

`snapshot()` reports the cursor position (`cursorRow`, `cursorCol`) and its DECTCEM visibility (`cursorVisible`, toggled by `ESC[?25h` and `ESC[?25l`). With `includeCells: true`, each cell reports its text, width, optional `foreground` and `background` colors, and these SGR attributes: `bold`, `faint`, `italic`, `underline`, `inverse`, `invisible`, and `strikethrough`. An attribute is present only when it is set. `inverse` is the raw SGR 7 flag: `foreground` and `background` are not swapped, so consumers apply reverse video with their own default colors.

The pinned Ghostty ignores the DECSTR soft reset (`ESC[!p`). After it, a hidden cursor stays hidden and SGR attributes stay set. Programs that reset with `ESC c` (RIS) are unaffected.

### Mouse encoding

`encodeMouse` returns a `Buffer` containing the terminal input bytes for one
Expand Down Expand Up @@ -191,7 +191,7 @@ Manual dispatch and direct `v*.*.*` tag pushes are available for recovery, but m

The native layer currently uses these verified `libghostty-vt` C APIs:

- terminal lifecycle and stream processing: `ghostty_terminal_new`, `ghostty_terminal_vt_write`, `ghostty_terminal_resize`, `ghostty_terminal_free`
- terminal lifecycle and stream processing: `ghostty_terminal_new`, `ghostty_terminal_set`, `ghostty_terminal_vt_write`, `ghostty_terminal_resize`, `ghostty_terminal_free`
- metadata and state: `ghostty_terminal_get`, `ghostty_build_info`
- mode-aware mouse input: `ghostty_mouse_encoder_*`, `ghostty_mouse_event_*`
- plain/HTML debug formatting: `ghostty_formatter_terminal_new`, `ghostty_formatter_format_alloc`
Expand Down
4 changes: 3 additions & 1 deletion dogfood/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Dogfood Proof Bundle

`dogfood/bootstrap/` records the commands and local outputs from the repository bootstrap. The bundle is intentionally plain text so a reviewer can inspect what was attempted without reproducing the environment first.
`dogfood/bootstrap/` records the commands and local outputs from the repository bootstrap, rerun after each Ghostty pin change. The bundle is intentionally plain text so a reviewer can inspect what was attempted without reproducing the environment first.

To rerun it, run `dogfood/regenerate.sh` from a checkout with the `mise.toml` toolchain. It runs `commands.sh` step by step and rewrites the output files and `environment.txt`.

Expected files:

Expand Down
66 changes: 7 additions & 59 deletions dogfood/bootstrap/build-libghostty-output.txt
Original file line number Diff line number Diff line change
@@ -1,63 +1,11 @@
$ npm run build:libghostty

> @coder/libghostty-vt-node@0.1.0 build:libghostty
> @coder/libghostty-vt-node@0.1.0-beta.1 build:libghostty
> scripts/build-libghostty-vt.sh

From https://github.com/ghostty-org/ghostty
* branch 48ccec182a932c2ec04c344d45a5fc553861cb13 -> FETCH_HEAD
HEAD is now at 48ccec182 ci: fix vouch-check-issue to checkout the template file (#12412)
Building libghostty-vt at Ghostty commit 48ccec182a932c2ec04c344d45a5fc553861cb13
error: undefined symbol: __availability_version_check
note: referenced by /Users/thomask33/.cache/zig/o/8cfa15f510d85730135433e2f42ddfd8/libcompiler_rt.a(libcompiler_rt_zcu.o):___isPlatformVersionAtLeast
error: undefined symbol: _abort
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.abort
error: undefined symbol: _arc4random_buf
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_crypto.tlcsprng.tlsCsprngFill
error: undefined symbol: _bzero
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_hash_map.HashMapUnmanaged(usize,*debug.SelfInfo.Module__struct_3895,hash_map.AutoContext(usize),80).initMetadatas
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_hash_map.HashMapUnmanaged([]const u8,u64,hash_map.StringContext,80).initMetadatas
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_hash_map.HashMapUnmanaged([]const u8,debug.SelfInfo.Module__struct_3895.OFileInfo,hash_map.StringContext,80).initMetadatas
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_Build.Watch.FsEvents.wait
note: referenced 14 more times
error: undefined symbol: _clock_gettime
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.clock_gettime
error: undefined symbol: _dispatch_queue_create
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_Build.Watch.FsEvents.init
error: undefined symbol: _dispatch_semaphore_create
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_Build.Watch.FsEvents.init
error: undefined symbol: _dispatch_semaphore_signal
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_Build.Watch.FsEvents.eventCallback
error: undefined symbol: _dispatch_semaphore_wait
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_Build.Watch.FsEvents.wait
error: undefined symbol: _dispatch_time
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_Build.Watch.FsEvents.wait
error: undefined symbol: _exit
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.exit
error: undefined symbol: _fcopyfile
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_fs.File.Writer.sendFile
error: undefined symbol: _fork
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.fork
error: undefined symbol: _free
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_heap.CAllocator.alignedFree
error: undefined symbol: _getcwd
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.getcwd
error: undefined symbol: _getenv
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.getenvZ
error: undefined symbol: _isatty
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.isatty
error: undefined symbol: _malloc_size
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_heap.CAllocator.alignedAllocSize
error: undefined symbol: _posix_memalign
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_heap.CAllocator.alignedAlloc
error: undefined symbol: _realpath$DARWIN_EXTSN
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.realpathZ
error: undefined symbol: _sigaction
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.sigaction
error: undefined symbol: _sigemptyset
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.sigemptyset
error: undefined symbol: _sysctlbyname
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.sysctlbynameZ
error: undefined symbol: _waitpid
note: referenced by .zig-cache/o/0ef0335be7a527a9e3eb98418e651f74/build_zcu.o:_posix.waitpid
error: failed to build libghostty-vt from Ghostty 48ccec182a932c2ec04c344d45a5fc553861cb13
Verify that Zig 0.15.2 can build a simple project on this machine and that the platform SDK is discoverable.
On macOS, check `xcrun --show-sdk-path` and the Xcode command line tools selected by `xcode-select -p`.
* branch 83fb95624b0439ee660c2679b43b38c8b63769cd -> FETCH_HEAD
HEAD is now at 83fb95624 Bump version to 1.4.0
Building libghostty-vt at Ghostty commit 83fb95624b0439ee660c2679b43b38c8b63769cd
Installed libghostty-vt into /home/coder/.mux/src/libghostty-vt-node/tough-seals-think/vendor/libghostty-vt
exit=0
65 changes: 29 additions & 36 deletions dogfood/bootstrap/build-native-output.txt
Original file line number Diff line number Diff line change
@@ -1,57 +1,50 @@
$ npm run build:native

> @coder/libghostty-vt-node@0.1.0 build:native
> @coder/libghostty-vt-node@0.1.0-beta.1 build:native
> node-gyp rebuild

gyp info it worked if it ends with ok
gyp info using node-gyp@12.3.0
gyp info using node@25.9.0 | darwin | arm64
gyp info find Python using Python version 3.14.4 found at "/opt/homebrew/opt/python@3.14/bin/python3.14"
gyp info using node-gyp@12.4.0
gyp info using node@26.12.1 | linux | x64
gyp info find Python using Python version 3.14.4 found at "/usr/bin/python3"

gyp info spawn /opt/homebrew/opt/python@3.14/bin/python3.14
gyp info spawn /usr/bin/python3
gyp info spawn args [
gyp info spawn args '/Users/thomask33/Projects/libghostty-vt-node/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args '/home/coder/.mux/src/libghostty-vt-node/tough-seals-think/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/Users/thomask33/Projects/libghostty-vt-node/build/config.gypi',
gyp info spawn args '/home/coder/.mux/src/libghostty-vt-node/tough-seals-think/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/Users/thomask33/Projects/libghostty-vt-node/node_modules/node-gyp/addon.gypi',
gyp info spawn args '/home/coder/.mux/src/libghostty-vt-node/tough-seals-think/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/Users/thomask33/Library/Caches/node-gyp/25.9.0/include/node/common.gypi',
gyp info spawn args '/home/coder/.cache/node-gyp/26.12.1/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/Users/thomask33/Library/Caches/node-gyp/25.9.0',
gyp info spawn args '-Dnode_gyp_dir=/Users/thomask33/Projects/libghostty-vt-node/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/Users/thomask33/Library/Caches/node-gyp/25.9.0/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/Users/thomask33/Projects/libghostty-vt-node',
gyp info spawn args '-Dnode_root_dir=/home/coder/.cache/node-gyp/26.12.1',
gyp info spawn args '-Dnode_gyp_dir=/home/coder/.mux/src/libghostty-vt-node/tough-seals-think/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/home/coder/.cache/node-gyp/26.12.1/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/home/coder/.mux/src/libghostty-vt-node/tough-seals-think',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]
@coder/libghostty-vt-node: missing header ghostty/vt.h

Expected a local libghostty-vt installation. Either:
1. run `npm run build:libghostty`, or
2. set LIBGHOSTTY_VT_PREFIX=/path/to/prefix, or
3. set LIBGHOSTTY_VT_INCLUDE_DIR and LIBGHOSTTY_VT_STATIC_LIB.

Checked include dir: /Users/thomask33/Projects/libghostty-vt-node/vendor/libghostty-vt/include
Checked static lib: /Users/thomask33/Projects/libghostty-vt-node/vendor/libghostty-vt/lib/libghostty-vt.a
gyp: Call to 'node scripts/resolve-libghostty-vt.mjs include' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.<anonymous> (/Users/thomask33/Projects/libghostty-vt-node/node_modules/node-gyp/lib/configure.js:317:18)
gyp ERR! stack at ChildProcess.emit (node:events:509:20)
gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:294:12)
gyp ERR! System Darwin 25.4.0
gyp ERR! command "/Users/thomask33/.local/share/mise/installs/node/25.9.0/bin/node" "/Users/thomask33/Projects/libghostty-vt-node/node_modules/.bin/node-gyp" "rebuild"
gyp ERR! cwd /Users/thomask33/Projects/libghostty-vt-node
gyp ERR! node -v v25.9.0
gyp ERR! node-gyp -v v12.3.0
gyp ERR! $npm_package_name @coder/libghostty-vt-node
gyp ERR! $npm_package_version 0.1.0
gyp ERR! not ok
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/coder/.mux/src/libghostty-vt-node/tough-seals-think/build'
CC(target) Release/obj.target/nothing/node_modules/node-addon-api/nothing.o
rm -f Release/obj.target/node_modules/node-addon-api/nothing.a Release/obj.target/node_modules/node-addon-api/nothing.a.ar-file-list; mkdir -p `dirname Release/obj.target/node_modules/node-addon-api/nothing.a`
ar crs Release/obj.target/node_modules/node-addon-api/nothing.a @Release/obj.target/node_modules/node-addon-api/nothing.a.ar-file-list
COPY Release/nothing.a
CXX(target) Release/obj.target/libghostty_vt_node/native/addon.o
CXX(target) Release/obj.target/libghostty_vt_node/native/libghostty_vt_shim.o
CXX(target) Release/obj.target/libghostty_vt_node/native/terminal.o
SOLINK_MODULE(target) Release/obj.target/ghostty_vt_node.node
COPY Release/ghostty_vt_node.node
make: Leaving directory '/home/coder/.mux/src/libghostty-vt-node/tough-seals-think/build'
gyp info ok
exit=0
2 changes: 1 addition & 1 deletion dogfood/bootstrap/commands.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ set -u

npm install
npm run build
npm test
npm run build:libghostty
npm run build:native
npm test
npm run smoke
npm pack --dry-run
node -e "import('./dist/index.js').then((m)=>console.log(JSON.stringify(m.getNativeInfo(), null, 2))).catch((err)=>{ console.log(JSON.stringify({ ok: false, error: err.message, cause: err.cause ? String(err.cause.message || err.cause) : undefined }, null, 2)); process.exitCode = 0; })"
17 changes: 7 additions & 10 deletions dogfood/bootstrap/environment.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
date=2026-04-24T14:06:15Z
cwd=/Users/thomask33/Projects/libghostty-vt-node
node=v25.9.0
npm=11.12.1
zig=0.15.2
platform=Darwin Mac.fritz.box 25.4.0 Darwin Kernel Version 25.4.0: Thu Mar 19 19:31:56 PDT 2026; root:xnu-12377.101.15~1/RELEASE_ARM64_T6030 arm64
xcode_path=/Applications/Xcode.app/Contents/Developer
sdkroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
ghostty_commit=48ccec182a932c2ec04c344d45a5fc553861cb13
go_libghostty_commit=542c76ff595ad533348e23aac74489ad095e0b36
date=2026-10-30T01:39:42Z
node=v26.12.1
npm=11.20.0
zig=0.17.0
platform=Linux 6.8.0-139-generic x86_64
ghostty_commit=83fb95624b0439ee660c2679b43b38c8b63769cd
git_head=834fc2d9d467a5af04f196a8d9491e2b77544b33
8 changes: 5 additions & 3 deletions dogfood/bootstrap/native-info.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"ok": false,
"error": "Failed to load @coder/libghostty-vt-node native addon. Build it with `npm run build:native`, or use an npm package that includes a matching prebuild. If building locally, provide libghostty-vt with `npm run build:libghostty` or LIBGHOSTTY_VT_PREFIX.",
"cause": "No native build was found for platform=darwin arch=arm64 runtime=node abi=141 uv=1 armv=8 libc=glibc node=25.9.0\n loaded from: /Users/thomask33/Projects/libghostty-vt-node\n"
"napiVersion": 10,
"ghosttyVersion": "0.1.0-dev",
"packageVersion": "0.1.0-beta.1",
"platform": "linux",
"arch": "x64"
}
49 changes: 29 additions & 20 deletions dogfood/bootstrap/npm-pack-output.txt
Original file line number Diff line number Diff line change
@@ -1,38 +1,47 @@
$ npm pack --dry-run
npm notice
npm notice 📦 @coder/libghostty-vt-node@0.1.0
npm notice package: @coder/libghostty-vt-node@0.1.0-beta.1
npm notice Tarball Contents
npm notice 968B CHANGELOG.md
npm notice 1.1kB LICENSE
npm notice 5.6kB README.md
npm notice 16.9kB README.md
npm notice 1.2kB binding.gyp
npm notice 418B dist/index.d.ts
npm notice 376B dist/index.d.ts.map
npm notice 3.2kB dist/index.js
npm notice 3.1kB dist/index.js.map
npm notice 648B dist/index.d.ts
npm notice 485B dist/index.d.ts.map
npm notice 8.6kB dist/index.js
npm notice 7.7kB dist/index.js.map
npm notice 325B dist/loader.d.ts
npm notice 334B dist/loader.d.ts.map
npm notice 2.0kB dist/loader.js
npm notice 1.7kB dist/loader.js.map
npm notice 1.7kB dist/types.d.ts
npm notice 1.9kB dist/types.d.ts.map
npm notice 3.3kB dist/types.d.ts
npm notice 3.1kB dist/types.d.ts.map
npm notice 44B dist/types.js
npm notice 102B dist/types.js.map
npm notice 346B native/addon.cc
npm notice 2.3kB native/libghostty_vt_shim.cc
npm notice 549B native/libghostty_vt_shim.hh
npm notice 19.6kB native/terminal.cc
npm notice 1.8kB native/terminal.hh
npm notice 1.5kB package.json
npm notice 18.3kB native/README.md
npm notice 35.5kB native/terminal.cc
npm notice 2.1kB native/terminal.hh
npm notice 2.0kB package.json
npm notice 12.7MB prebuilds/linux-x64/@coder+libghostty-vt-node.node
npm notice 3.8kB scripts/assemble-prebuilds.mjs
npm notice 2.9kB scripts/build-libghostty-vt.sh
npm notice 2.7kB scripts/create-release-tag.mjs
npm notice 11.2kB scripts/README.md
npm notice 1.8kB scripts/resolve-libghostty-vt.mjs
npm notice 755B scripts/verify-prebuilds.mjs
npm notice 1.9kB scripts/resolve-npm-publish-tag.mjs
npm notice 1.5kB scripts/verify-prebuilds.mjs
npm notice Tarball Details
npm notice name: @coder/libghostty-vt-node
npm notice version: 0.1.0
npm notice filename: coder-libghostty-vt-node-0.1.0.tgz
npm notice package size: 14.9 kB
npm notice unpacked size: 54.8 kB
npm notice shasum: 3f0dcbb66cc2931a58ee4954b68d00717b2e4d9e
npm notice integrity: sha512-GA2ucjo7iJW24[...]bQWFxo7mLm8KA==
npm notice total files: 24
npm notice version: 0.1.0-beta.1
npm notice filename: coder-libghostty-vt-node-0.1.0-beta.1.tgz
npm notice package size: 3.7 MB
npm notice unpacked size: 12.9 MB
npm notice shasum: 745acaff5d026b0ffa6dd5fca645c2134867e848
npm notice integrity: sha512-zphUs2JiLK6LS[...]zSI7BzBU3xt6Q==
npm notice total files: 31
npm notice
coder-libghostty-vt-node-0.1.0.tgz
coder-libghostty-vt-node-0.1.0-beta.1.tgz
exit=0
Loading
Loading