@trybullet/cli 1.3.18 → 1.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +52 -0
  2. package/package.json +6 -6
package/README.md CHANGED
@@ -137,6 +137,58 @@ npm run dist # local unsigned build (right-click → Open)
137
137
  `npm run eval:classifier` additionally checks routing quality — plan intent and
138
138
  plan-approval verdicts — against a live nano model, so it needs a provider key.
139
139
 
140
+ ## Linux
141
+
142
+ Every host difference resolves in one place, `electron/platform.js`; nothing else
143
+ in `electron/` or `src/` may hardcode a path or read `process.platform`, and
144
+ `scripts/check-platform.sh` fails the build if it does. CI runs the suite on
145
+ macOS and Ubuntu both.
146
+
147
+ ```bash
148
+ npm run dist:linux # AppImage + deb into release/
149
+ npm run release:publish linux # push to the linux update feed
150
+ ```
151
+
152
+ **Which package to hand a user**
153
+
154
+ | | `.deb` | AppImage |
155
+ |---|---|---|
156
+ | Ubuntu / Debian | **recommended** | needs setup, see below |
157
+ | Other distros | — | **recommended** |
158
+ | Updates itself | no | yes |
159
+
160
+ The split is not a preference, it is what works. Chromium's sandbox needs either
161
+ unprivileged user namespaces or a setuid helper. Ubuntu 24.04 blocks the former
162
+ (`kernel.apparmor_restrict_unprivileged_userns=1`) and an AppImage is mounted
163
+ `ro,nosuid`, so the helper can never be setuid there — the app aborts on launch
164
+ with "The SUID sandbox helper binary was found, but is not configured
165
+ correctly." A `.deb` can make the helper setuid, which `build/deb-postinst.sh`
166
+ does; read that file before touching it, because electron-builder's generated
167
+ postinst gets this wrong in a way that only breaks for the user, not the
168
+ packager. Ubuntu 24.04 also ships FUSE3, so an AppImage needs `libfuse2t64`
169
+ before it will even mount.
170
+
171
+ Running with `--no-sandbox` would paper over all of it and is deliberately not
172
+ done: the Preview panel renders pages the agent navigated to, which is exactly
173
+ what that sandbox is there to contain.
174
+
175
+ **Two Linux gaps to know about**
176
+
177
+ - **No on-device model.** node-llama-cpp kills the process while loading a model
178
+ inside Electron on Linux — SIGILL on Electron 32, SIGSEGV on 34 and 38 — while
179
+ the same model and binaries work under plain `node` on the same machine. A
180
+ native crash cannot be caught, so `platform.localEngine()` gates it off and
181
+ onboarding asks for a subscription or API key instead. Fixing it means running
182
+ the engine in a child node process and streaming over IPC.
183
+ - **`.deb` cannot self-update.** electron-updater only supports AppImage on
184
+ Linux, so Settings tells `.deb` users where to download from rather than
185
+ offering a button that cannot work. A real fix is an apt repository.
186
+
187
+ The AppImage ships CPU and Vulkan llama backends only; the CUDA ones are
188
+ excluded in `build.files` because they are 526 MB and load solely where the CUDA
189
+ runtime is already installed, which for most desktops means never. Vulkan
190
+ already covers NVIDIA, AMD, and Intel. Re-adding them is one glob.
191
+
140
192
  ## Releasing
141
193
 
142
194
  Installed copies update themselves: the app checks
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trybullet/cli",
3
- "version": "1.3.18",
3
+ "version": "1.3.21",
4
4
  "description": "The fastest coding agent — terminal edition. Same router, tools and agent loop as the Bullet desktop app, in your shell.",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://usebullet.com",
@@ -24,11 +24,11 @@
24
24
  "bin/bullet.js"
25
25
  ],
26
26
  "optionalDependencies": {
27
- "@trybullet/cli-darwin-arm64": "1.3.18",
28
- "@trybullet/cli-darwin-x64": "1.3.18",
29
- "@trybullet/cli-linux-x64": "1.3.18",
30
- "@trybullet/cli-linux-arm64": "1.3.18",
31
- "@trybullet/cli-win32-x64": "1.3.18"
27
+ "@trybullet/cli-darwin-arm64": "1.3.21",
28
+ "@trybullet/cli-darwin-x64": "1.3.21",
29
+ "@trybullet/cli-linux-x64": "1.3.21",
30
+ "@trybullet/cli-linux-arm64": "1.3.21",
31
+ "@trybullet/cli-win32-x64": "1.3.21"
32
32
  },
33
33
  "engines": {
34
34
  "node": ">=18"