@mmmbuto/qwen-code-termux 0.6.402 → 0.6.404-termux
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/README.md +8 -6
- package/dist/cli.js +13 -15
- package/package.json +4 -10
- package/scripts/postinstall.cjs +1 -0
- package/scripts/prepare-package.js +4 -10
- package/scripts/prepare-termux.cjs +33 -0
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# 🤖 Qwen Code – Termux Edition
|
|
2
2
|
|
|
3
3
|
Android/Termux optimized fork of Qwen Code CLI. Installs cleanly on Termux
|
|
4
|
-
|
|
4
|
+
with a native ARM64 PTY prebuild and mobile‑friendly fallbacks.
|
|
5
5
|
|
|
6
6
|
[](https://www.npmjs.com/package/@mmmbuto/qwen-code-termux)
|
|
7
7
|
[](https://www.npmjs.com/package/@mmmbuto/qwen-code-termux)
|
|
@@ -14,7 +14,7 @@ by skipping native modules and using mobile‑friendly fallbacks.
|
|
|
14
14
|
**Optimized Termux edition** of `QwenLM/qwen-code`.
|
|
15
15
|
|
|
16
16
|
- **Termux‑First:** Android filesystem and shell fallbacks.
|
|
17
|
-
- **Lightweight:**
|
|
17
|
+
- **Lightweight:** PTY via `@mmmbuto/node-pty-android-arm64`, no keychain deps.
|
|
18
18
|
- **Up‑to‑Date:** Tracks upstream Qwen Code.
|
|
19
19
|
|
|
20
20
|
## Installation (Termux)
|
|
@@ -24,7 +24,7 @@ pkg update && pkg upgrade -y
|
|
|
24
24
|
pkg install nodejs-lts -y
|
|
25
25
|
npm install -g @mmmbuto/qwen-code-termux
|
|
26
26
|
|
|
27
|
-
qwen --version # expected: 0.6.
|
|
27
|
+
qwen --version # expected: 0.6.404-termux
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Build from source:
|
|
@@ -32,7 +32,7 @@ Build from source:
|
|
|
32
32
|
```bash
|
|
33
33
|
git clone https://github.com/DioNanos/qwen-code-termux.git
|
|
34
34
|
cd qwen-code-termux
|
|
35
|
-
npm install
|
|
35
|
+
npm install
|
|
36
36
|
npm run build && npm run bundle
|
|
37
37
|
node dist/cli.js --version
|
|
38
38
|
```
|
|
@@ -78,11 +78,13 @@ export OPENAI_MODEL="gpt-4o" # optional
|
|
|
78
78
|
- **OAuth:** browser launch via `termux-open-url` with Android fallback.
|
|
79
79
|
- **Clean UX:** desktop‑centric warnings suppressed on Termux.
|
|
80
80
|
- **Defaults:** banner hidden by default on Termux (toggle in settings).
|
|
81
|
+
- **PTY:** prebuilt `@mmmbuto/node-pty-android-arm64` for interactive shells.
|
|
81
82
|
|
|
82
83
|
## Documentation & Fixes
|
|
83
84
|
|
|
84
85
|
- **Test Suite**: [`QWEN_TEST_SUITE.md`](./QWEN_TEST_SUITE.md)
|
|
85
|
-
- **Test Report**: [`QWEN_TEST_REPORT_v0.6.
|
|
86
|
+
- **Test Report**: [`QWEN_TEST_REPORT_v0.6.404-termux.md`](./QWEN_TEST_REPORT_v0.6.404-termux.md)
|
|
87
|
+
(latest report; 0.6.404-termux)
|
|
86
88
|
- **Patches**: [`docs/patches/README.md`](./docs/patches/README.md)
|
|
87
89
|
- **Termux Fixes**: [`docs/patches/TERMUX_FIXES.md`](./docs/patches/TERMUX_FIXES.md)
|
|
88
90
|
|
|
@@ -153,7 +155,7 @@ npm install -g @mmmbuto/qwen-code-termux@latest
|
|
|
153
155
|
|
|
154
156
|
### Versions
|
|
155
157
|
|
|
156
|
-
- **latest / stable**: 0.6.
|
|
158
|
+
- **latest / stable**: 0.6.403-termux
|
|
157
159
|
|
|
158
160
|
## Benchmark Results
|
|
159
161
|
|
package/dist/cli.js
CHANGED
|
@@ -155008,7 +155008,7 @@ __export(geminiContentGenerator_exports, {
|
|
|
155008
155008
|
createGeminiContentGenerator: () => createGeminiContentGenerator
|
|
155009
155009
|
});
|
|
155010
155010
|
function createGeminiContentGenerator(config2, gcConfig) {
|
|
155011
|
-
const version2 = "0.6.
|
|
155011
|
+
const version2 = "0.6.404-termux";
|
|
155012
155012
|
const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
|
|
155013
155013
|
const baseHeaders = {
|
|
155014
155014
|
"User-Agent": userAgent2
|
|
@@ -160084,18 +160084,16 @@ var init_getPty = __esm({
|
|
|
160084
160084
|
"use strict";
|
|
160085
160085
|
init_esbuild_shims();
|
|
160086
160086
|
getPty = /* @__PURE__ */ __name(async () => {
|
|
160087
|
+
const isAndroid2 = process.platform === "android" || process.env["PREFIX"]?.includes("com.termux");
|
|
160088
|
+
if (!isAndroid2) {
|
|
160089
|
+
return null;
|
|
160090
|
+
}
|
|
160087
160091
|
try {
|
|
160088
|
-
const
|
|
160089
|
-
const module2 = await import(
|
|
160090
|
-
return { module: module2, name: "
|
|
160092
|
+
const mmmbuto = "@mmmbuto/node-pty-android-arm64";
|
|
160093
|
+
const module2 = await import(mmmbuto);
|
|
160094
|
+
return { module: module2, name: "mmmbuto-node-pty" };
|
|
160091
160095
|
} catch (_e2) {
|
|
160092
|
-
|
|
160093
|
-
const nodePty = "node-pty";
|
|
160094
|
-
const module2 = await import(nodePty);
|
|
160095
|
-
return { module: module2, name: "node-pty" };
|
|
160096
|
-
} catch (_e22) {
|
|
160097
|
-
return null;
|
|
160098
|
-
}
|
|
160096
|
+
return null;
|
|
160099
160097
|
}
|
|
160100
160098
|
}, "getPty");
|
|
160101
160099
|
}
|
|
@@ -170278,7 +170276,7 @@ var init_shellExecutionService = __esm({
|
|
|
170278
170276
|
error: error2,
|
|
170279
170277
|
aborted: abortSignal.aborted,
|
|
170280
170278
|
pid: ptyProcess.pid,
|
|
170281
|
-
executionMethod: ptyInfo?.name ?? "node-pty"
|
|
170279
|
+
executionMethod: ptyInfo?.name ?? "mmmbuto-node-pty"
|
|
170282
170280
|
});
|
|
170283
170281
|
});
|
|
170284
170282
|
});
|
|
@@ -356998,7 +356996,7 @@ __name(getPackageJson, "getPackageJson");
|
|
|
356998
356996
|
// packages/cli/src/utils/version.ts
|
|
356999
356997
|
async function getCliVersion() {
|
|
357000
356998
|
const pkgJson = await getPackageJson();
|
|
357001
|
-
return "0.6.
|
|
356999
|
+
return "0.6.404-termux";
|
|
357002
357000
|
}
|
|
357003
357001
|
__name(getCliVersion, "getCliVersion");
|
|
357004
357002
|
|
|
@@ -365081,7 +365079,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
|
|
|
365081
365079
|
|
|
365082
365080
|
// packages/cli/src/generated/git-commit.ts
|
|
365083
365081
|
init_esbuild_shims();
|
|
365084
|
-
var GIT_COMMIT_INFO2 = "
|
|
365082
|
+
var GIT_COMMIT_INFO2 = "7bfdc96f";
|
|
365085
365083
|
|
|
365086
365084
|
// packages/cli/src/utils/systemInfo.ts
|
|
365087
365085
|
async function getNpmVersion() {
|
|
@@ -416299,7 +416297,7 @@ var GeminiAgent = class {
|
|
|
416299
416297
|
name: APPROVAL_MODE_INFO[mode].name,
|
|
416300
416298
|
description: APPROVAL_MODE_INFO[mode].description
|
|
416301
416299
|
}));
|
|
416302
|
-
const version2 = "0.6.
|
|
416300
|
+
const version2 = "0.6.404-termux";
|
|
416303
416301
|
return {
|
|
416304
416302
|
protocolVersion: PROTOCOL_VERSION,
|
|
416305
416303
|
agentInfo: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmmbuto/qwen-code-termux",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.404-termux",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=20.0.0"
|
|
6
6
|
},
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"url": "git+https://github.com/DioNanos/qwen-code-termux.git"
|
|
14
14
|
},
|
|
15
15
|
"config": {
|
|
16
|
-
"sandboxImageUri": "ghcr.io/mmmbuto/qwen-code-termux:0.6.
|
|
16
|
+
"sandboxImageUri": "ghcr.io/mmmbuto/qwen-code-termux:0.6.404-termux"
|
|
17
17
|
},
|
|
18
18
|
"scripts": {
|
|
19
19
|
"start": "cross-env node scripts/start.js",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"typecheck": "npm run typecheck --workspaces --if-present",
|
|
50
50
|
"check-i18n": "npm run check-i18n --workspace=packages/cli",
|
|
51
51
|
"preflight": "npm run clean && npm ci && npm run format && npm run lint:ci && npm run build && npm run typecheck && npm run test:ci",
|
|
52
|
-
"prepare": "
|
|
52
|
+
"prepare": "node scripts/prepare-termux.cjs",
|
|
53
53
|
"prepare:package": "node scripts/prepare-package.js",
|
|
54
54
|
"release:version": "node scripts/version.js",
|
|
55
55
|
"telemetry": "node scripts/telemetry.js",
|
|
@@ -116,13 +116,7 @@
|
|
|
116
116
|
"simple-git": "^3.28.0"
|
|
117
117
|
},
|
|
118
118
|
"optionalDependencies": {
|
|
119
|
-
"@
|
|
120
|
-
"@lydell/node-pty-darwin-arm64": "1.1.0",
|
|
121
|
-
"@lydell/node-pty-darwin-x64": "1.1.0",
|
|
122
|
-
"@lydell/node-pty-linux-x64": "1.1.0",
|
|
123
|
-
"@lydell/node-pty-win32-arm64": "1.1.0",
|
|
124
|
-
"@lydell/node-pty-win32-x64": "1.1.0",
|
|
125
|
-
"@lydell/node-pty-linux-arm64": "1.2.0-beta.2"
|
|
119
|
+
"@mmmbuto/node-pty-android-arm64": "1.1.0"
|
|
126
120
|
},
|
|
127
121
|
"lint-staged": {
|
|
128
122
|
"*.{js,jsx,ts,tsx}": [
|
package/scripts/postinstall.cjs
CHANGED
|
@@ -114,16 +114,10 @@ const isTermuxBuild =
|
|
|
114
114
|
!!process.env['TERMUX_VERSION'] ||
|
|
115
115
|
!!(process.env['PREFIX'] && process.env['PREFIX'].includes('com.termux'));
|
|
116
116
|
const optionalDependencies = isTermuxBuild
|
|
117
|
-
?
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
'@lydell/node-pty-darwin-x64': '1.1.0',
|
|
122
|
-
'@lydell/node-pty-linux-x64': '1.1.0',
|
|
123
|
-
'@lydell/node-pty-win32-arm64': '1.1.0',
|
|
124
|
-
'@lydell/node-pty-win32-x64': '1.1.0',
|
|
125
|
-
'node-pty': '^1.0.0',
|
|
126
|
-
};
|
|
117
|
+
? {
|
|
118
|
+
'@mmmbuto/node-pty-android-arm64': '1.1.0',
|
|
119
|
+
}
|
|
120
|
+
: undefined;
|
|
127
121
|
|
|
128
122
|
// Create a clean package.json for the published package
|
|
129
123
|
const distPackageJson = {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const os = require('node:os');
|
|
8
|
+
const { spawnSync } = require('node:child_process');
|
|
9
|
+
|
|
10
|
+
const isTermux =
|
|
11
|
+
os.platform() === 'android' ||
|
|
12
|
+
process.env.TERMUX_VERSION ||
|
|
13
|
+
(process.env.PREFIX && process.env.PREFIX.includes('com.termux'));
|
|
14
|
+
|
|
15
|
+
if (isTermux) {
|
|
16
|
+
process.exit(0);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
20
|
+
|
|
21
|
+
let result = spawnSync(npmCmd, ['exec', 'husky'], {
|
|
22
|
+
stdio: 'inherit',
|
|
23
|
+
env: process.env,
|
|
24
|
+
});
|
|
25
|
+
if (result.status !== 0) {
|
|
26
|
+
process.exit(result.status === null ? 1 : result.status);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
result = spawnSync(npmCmd, ['run', 'bundle'], {
|
|
30
|
+
stdio: 'inherit',
|
|
31
|
+
env: process.env,
|
|
32
|
+
});
|
|
33
|
+
process.exit(result.status === null ? 1 : result.status);
|