@8gi-foundation/8gent-code 0.20.13 → 0.20.14
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.
- package/CHANGELOG.md +8 -0
- package/README.md +4 -4
- package/bin/8gent-run.js +7 -0
- package/bin/node-version.js +6 -1
- package/dist/cli.js +1 -1
- package/dist/node/cli.js +1 -1
- package/dist/node/tui.js +9 -5
- package/dist/tui.js +9 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,14 @@ versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.20.14] - 2026-10-22
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- Android Termux and proot install path, Node version commands, signal exit ([#4747](https://github.com/8gi-foundation/8gent-code/pull/4747))
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- tui: built-in slash commands run before the skill scan loads and after it fails ([#4745](https://github.com/8gi-foundation/8gent-code/pull/4745))
|
|
19
|
+
|
|
12
20
|
## [0.20.13] - 2026-10-22
|
|
13
21
|
|
|
14
22
|
### Fixed
|
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
<p align="center">
|
|
23
23
|
<a href="https://www.apache.org/licenses/LICENSE-2.0"><img src="https://img.shields.io/badge/License-Apache_2.0-E8610A?style=for-the-badge&labelColor=1A1612" alt="Apache 2.0 License" /></a>
|
|
24
|
-
<a href="https://8gent.dev"><img src="https://img.shields.io/badge/version-0.20.
|
|
24
|
+
<a href="https://8gent.dev"><img src="https://img.shields.io/badge/version-0.20.14-2D8A56?style=for-the-badge&labelColor=1A1612" alt="v0.20.14" /></a>
|
|
25
25
|
<a href="https://eight-vessel.fly.dev"><img src="https://img.shields.io/badge/daemon-Fly.io_Amsterdam-E8610A?style=for-the-badge&labelColor=1A1612" alt="Daemon" /></a>
|
|
26
26
|
</p>
|
|
27
27
|
|
|
@@ -159,7 +159,7 @@ That's it. 8gent uses an adaptive provider router with 16 model providers (plus
|
|
|
159
159
|
|
|
160
160
|
**No model yet?** On a machine with no local model and no key, the chat area shows a short card with both ways to connect one: install Ollama and run `ollama pull qwen3.5`, or run `8gent keys` to add `OPENROUTER_API_KEY` to `~/.8gent/keys.env` and then use `/provider openrouter` with `/model auto:free`. `/provider` lists every option. The card goes away once a model is reachable.
|
|
161
161
|
|
|
162
|
-
**Pick your platform:** [macOS](docs/install/macos.md), [Windows](docs/install/windows.md), [Linux](docs/install/linux.md). Every provider, flag and environment variable is in [docs/install/providers.md](docs/install/providers.md). One-line binary installers (no Bun or Node needed) are in [docs/user/install.md](docs/user/install.md).
|
|
162
|
+
**Pick your platform:** [macOS](docs/install/macos.md), [Windows](docs/install/windows.md), [Linux](docs/install/linux.md), [Android (Termux, kali and arch proots)](docs/install/android-termux.md). Every provider, flag and environment variable is in [docs/install/providers.md](docs/install/providers.md). One-line binary installers (no Bun or Node needed) are in [docs/user/install.md](docs/user/install.md).
|
|
163
163
|
|
|
164
164
|
**Ollama is optional.** To run on llama.cpp's `llama-server` instead, set `EIGHT_LOCAL_SERVER=llama-server` and start with `8gent --provider=llama-server`. 8gent then never contacts Ollama. See [docs/guides/llama-server.md](docs/guides/llama-server.md).
|
|
165
165
|
|
|
@@ -222,9 +222,9 @@ tar xzf 8gent-<version>-linux-amd64.tar.gz && sudo mv 8gent-*/bin/8gent /usr/loc
|
|
|
222
222
|
|
|
223
223
|
> Binaries are code-signed only on releases where the maintainer's certificates are configured (see [SIGNING.md](SIGNING.md)). Unsigned downloads run fine but may prompt Gatekeeper (macOS) or SmartScreen (Windows) - allow them through, or build your own with `bun run build:binaries`.
|
|
224
224
|
|
|
225
|
-
### npm
|
|
225
|
+
### npm
|
|
226
226
|
|
|
227
|
-
The npm package
|
|
227
|
+
The npm package tracks the GitHub release: `npm install -g @8gi-foundation/8gent-code` installs the current version. It runs on Bun, or on Node 22.5 or newer when Bun is not installed. On Android (Termux, kali or arch proot) follow [docs/install/android-termux.md](docs/install/android-termux.md).
|
|
228
228
|
|
|
229
229
|
### Build binaries from source
|
|
230
230
|
|
package/bin/8gent-run.js
CHANGED
|
@@ -88,4 +88,11 @@ if (result.error && result.error.code === "ENOENT") {
|
|
|
88
88
|
);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
// Killed by a signal (status null, e.g. SIGILL in a proot): say so and fail, never a silent 0.
|
|
92
|
+
if (result.status === null && result.signal) {
|
|
93
|
+
console.error(
|
|
94
|
+
`8gent: the runtime was killed by ${result.signal}.${wantNode ? "" : " Try EIGHT_RUNTIME=node 8gent to use the Node build."}`,
|
|
95
|
+
);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
91
98
|
process.exit(result.status ?? 0);
|
package/bin/node-version.js
CHANGED
|
@@ -5,5 +5,10 @@ export function nodeTooOld(version) {
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
export function tooOldMessage(version) {
|
|
8
|
-
return
|
|
8
|
+
return [
|
|
9
|
+
`8gent needs Node 22.5 or newer (found ${version}). Install Node 22 or Bun.`,
|
|
10
|
+
" Debian / Kali: curl -fsSL https://deb.nodesource.com/setup_22.x -o /tmp/nodesource.sh && bash /tmp/nodesource.sh && apt-get install -y nodejs",
|
|
11
|
+
" Arch: pacman -Syu --noconfirm nodejs npm",
|
|
12
|
+
" Any Linux: install nvm (https://github.com/nvm-sh/nvm), then: nvm install 22",
|
|
13
|
+
].join("\n");
|
|
9
14
|
}
|
package/dist/cli.js
CHANGED
|
@@ -597524,7 +597524,7 @@ function nodeExecPath(execPath = process.execPath, env = process.env, exists = e
|
|
|
597524
597524
|
|
|
597525
597525
|
// bin/8gent.ts
|
|
597526
597526
|
refuseIfNested();
|
|
597527
|
-
var VERSION5 = "0.20.
|
|
597527
|
+
var VERSION5 = "0.20.14";
|
|
597528
597528
|
var RELAUNCH_EXIT_CODE = 75;
|
|
597529
597529
|
var MODULE_DIR = path158.dirname(fileURLToPath7(import.meta.url));
|
|
597530
597530
|
var EXEC_DIR = path158.dirname(process.execPath);
|
package/dist/node/cli.js
CHANGED
|
@@ -617700,7 +617700,7 @@ function nodeExecPath(execPath = process.execPath, env = process.env, exists = e
|
|
|
617700
617700
|
|
|
617701
617701
|
// bin/8gent.ts
|
|
617702
617702
|
refuseIfNested();
|
|
617703
|
-
var VERSION5 = "0.20.
|
|
617703
|
+
var VERSION5 = "0.20.14";
|
|
617704
617704
|
var RELAUNCH_EXIT_CODE = 75;
|
|
617705
617705
|
var MODULE_DIR = path158.dirname(fileURLToPath8(import.meta.url));
|
|
617706
617706
|
var EXEC_DIR = path158.dirname(process.execPath);
|
package/dist/node/tui.js
CHANGED
|
@@ -33286,7 +33286,7 @@ var init_permissions = __esm(() => {
|
|
|
33286
33286
|
var require_package = __commonJS(function(exports2, module2) {
|
|
33287
33287
|
module2.exports = {
|
|
33288
33288
|
name: "@8gi-foundation/8gent-code",
|
|
33289
|
-
version: "0.20.
|
|
33289
|
+
version: "0.20.14",
|
|
33290
33290
|
private: false,
|
|
33291
33291
|
engines: {
|
|
33292
33292
|
node: ">=22.5"
|
|
@@ -620694,6 +620694,9 @@ function safeLoadTemplates() {
|
|
|
620694
620694
|
function getBuiltInSlashCommands() {
|
|
620695
620695
|
return BUILT_IN_SLASH_COMMANDS;
|
|
620696
620696
|
}
|
|
620697
|
+
function getBuiltInSlashRegistry() {
|
|
620698
|
+
return mergeSlashEntries(buildBuiltInEntries(), [], []);
|
|
620699
|
+
}
|
|
620697
620700
|
async function getSlashRegistry() {
|
|
620698
620701
|
return mergeSlashEntries(buildBuiltInEntries(), await buildSkillEntries(), buildPromptEntries());
|
|
620699
620702
|
}
|
|
@@ -621149,8 +621152,9 @@ function CommandInput({
|
|
|
621149
621152
|
const [historyIndex, setHistoryIndex] = import_react55.useState(-1);
|
|
621150
621153
|
const draftRef = import_react55.useRef("");
|
|
621151
621154
|
const [showSlashHelp, setShowSlashHelp] = import_react55.useState(false);
|
|
621152
|
-
const [
|
|
621153
|
-
const [
|
|
621155
|
+
const [initialRegistry] = import_react55.useState(getBuiltInSlashRegistry);
|
|
621156
|
+
const [slashRegistryEntries, setSlashRegistryEntries] = import_react55.useState(initialRegistry.entries);
|
|
621157
|
+
const [slashByToken, setSlashByToken] = import_react55.useState(initialRegistry.byToken);
|
|
621154
621158
|
const builtInSlashGhosts = import_react55.useMemo(() => buildBuiltInSlashGhostSuggestions(), []);
|
|
621155
621159
|
const extraSlashContext = import_react55.useMemo(() => [
|
|
621156
621160
|
...builtInSlashGhosts,
|
|
@@ -621183,8 +621187,8 @@ function CommandInput({
|
|
|
621183
621187
|
}
|
|
621184
621188
|
} catch {
|
|
621185
621189
|
if (!cancelled) {
|
|
621186
|
-
setSlashRegistryEntries(
|
|
621187
|
-
setSlashByToken(
|
|
621190
|
+
setSlashRegistryEntries(initialRegistry.entries);
|
|
621191
|
+
setSlashByToken(initialRegistry.byToken);
|
|
621188
621192
|
}
|
|
621189
621193
|
}
|
|
621190
621194
|
})();
|
package/dist/tui.js
CHANGED
|
@@ -29981,7 +29981,7 @@ var init_permissions = __esm(() => {
|
|
|
29981
29981
|
var require_package = __commonJS(function(exports2, module2) {
|
|
29982
29982
|
module2.exports = {
|
|
29983
29983
|
name: "@8gi-foundation/8gent-code",
|
|
29984
|
-
version: "0.20.
|
|
29984
|
+
version: "0.20.14",
|
|
29985
29985
|
private: false,
|
|
29986
29986
|
engines: {
|
|
29987
29987
|
node: ">=22.5"
|
|
@@ -597659,6 +597659,9 @@ function safeLoadTemplates() {
|
|
|
597659
597659
|
function getBuiltInSlashCommands() {
|
|
597660
597660
|
return BUILT_IN_SLASH_COMMANDS;
|
|
597661
597661
|
}
|
|
597662
|
+
function getBuiltInSlashRegistry() {
|
|
597663
|
+
return mergeSlashEntries(buildBuiltInEntries(), [], []);
|
|
597664
|
+
}
|
|
597662
597665
|
async function getSlashRegistry() {
|
|
597663
597666
|
return mergeSlashEntries(buildBuiltInEntries(), await buildSkillEntries(), buildPromptEntries());
|
|
597664
597667
|
}
|
|
@@ -598114,8 +598117,9 @@ function CommandInput({
|
|
|
598114
598117
|
const [historyIndex, setHistoryIndex] = import_react55.useState(-1);
|
|
598115
598118
|
const draftRef = import_react55.useRef("");
|
|
598116
598119
|
const [showSlashHelp, setShowSlashHelp] = import_react55.useState(false);
|
|
598117
|
-
const [
|
|
598118
|
-
const [
|
|
598120
|
+
const [initialRegistry] = import_react55.useState(getBuiltInSlashRegistry);
|
|
598121
|
+
const [slashRegistryEntries, setSlashRegistryEntries] = import_react55.useState(initialRegistry.entries);
|
|
598122
|
+
const [slashByToken, setSlashByToken] = import_react55.useState(initialRegistry.byToken);
|
|
598119
598123
|
const builtInSlashGhosts = import_react55.useMemo(() => buildBuiltInSlashGhostSuggestions(), []);
|
|
598120
598124
|
const extraSlashContext = import_react55.useMemo(() => [
|
|
598121
598125
|
...builtInSlashGhosts,
|
|
@@ -598148,8 +598152,8 @@ function CommandInput({
|
|
|
598148
598152
|
}
|
|
598149
598153
|
} catch {
|
|
598150
598154
|
if (!cancelled) {
|
|
598151
|
-
setSlashRegistryEntries(
|
|
598152
|
-
setSlashByToken(
|
|
598155
|
+
setSlashRegistryEntries(initialRegistry.entries);
|
|
598156
|
+
setSlashByToken(initialRegistry.byToken);
|
|
598153
598157
|
}
|
|
598154
598158
|
}
|
|
598155
598159
|
})();
|