Enhancement: 1-Click Installers & Zero-Config Auth Prep

This commit is contained in:
Gemini AI
2025-12-14 00:56:30 +04:00
Unverified
parent 1b3edad0d2
commit 4d999fdc5c
4 changed files with 199 additions and 83 deletions

View File

@@ -10,35 +10,40 @@
## 👋 Welcome to OpenQode ## 👋 Welcome to OpenQode
OpenQode is a powerful Terminal User Interface (TUI) that brings advanced AI coding capabilities directly to your command line. Whether you're debugging via SSH, coding on a cloud server, or just love the terminal, OpenQode is designed for you. OpenQode is a powerful Terminal User Interface (TUI) that brings advanced AI coding capabilities directly to your command line. Whether you're debugging via SSH, coding on a cloud server, or just love the terminal, OpenQode is designed for you.
We are proud to present two distinct experiences: **Next-Gen (Gen 5)** and **Classic (Gen 4)**.
--- ---
## ⚡ 1-Click Installation (Windows) ## ⚡ 1-Click Installation (Zero-Config)
Copy and paste this into PowerShell to automatically download, install, and run OpenQode:
### 🖥️ Windows (PowerShell)
Copy and paste this into PowerShell:
```powershell ```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/roman-ryzenadvanced/OpenQode-Public-Alpha/main/install.ps1')) Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/roman-ryzenadvanced/OpenQode-Public-Alpha/main/install.ps1'))
``` ```
### 🍎 macOS / 🐧 Linux (Bash)
Copy and paste this into your terminal:
```bash
curl -sL https://raw.githubusercontent.com/roman-ryzenadvanced/OpenQode-Public-Alpha/main/install.sh | bash
```
*(These scripts automatically download source, install dependencies, and launch the assistant)*
--- ---
## 📦 Manual Installation ## 📦 Manual Installation
### 🖥️ Windows Users ### Windows
1. **Download** the latest release or clone the repo. 1. **Download** the latest release.
2. Double-click **`OpenQode.bat`**. 2. Double-click **`OpenQode.bat`**.
*(First run will automatically install dependencies)* *(First run will automatically install dependencies)*
3. Choose **Option 5** for the Next-Gen Experience!
### 🍎 macOS / 🐧 Linux Users ### Linux / Mac
1. Open terminal in the folder. 1. Open terminal in the folder.
2. Run: 2. Run:
```bash ```bash
chmod +x OpenQode.sh chmod +x OpenQode.sh
./OpenQode.sh ./OpenQode.sh
``` ```
3. Choose **Option 5**.
--- ---
@@ -53,24 +58,21 @@ We recommend starting with **Next-Gen (Option 5)**!
| **Interactivity**| **Interactive Menus** (Arrow Keys Selection) | Command-based only | | **Interactivity**| **Interactive Menus** (Arrow Keys Selection) | Command-based only |
| **Models** | **Visual Model Selector** (`/model`) | Manual Switch via CLI | | **Models** | **Visual Model Selector** (`/model`) | Manual Switch via CLI |
| **Thinking** | **Real-time Stats** (CPS, Tokens) | Basic Loading | | **Thinking** | **Real-time Stats** (CPS, Tokens) | Basic Loading |
| **Output** | **Collapsible Cards** & Markdown | Linear Log |
![Context and Stats](assets/screenshots/next-gen-2.png) ![Context and Stats](assets/screenshots/next-gen-2.png)
--- ---
## ⚡ Quick Start Guide ## ⚡ Feature: Zero-Config Authentication
Once in Next-Gen TUI: OpenQode attempts to use your existing Qwen CLI authentication.
- Using standard **Option 5**, simply follow the prompts.
- If it's your first time, you may need to authenticate via browser.
- The assistant is designed to be "Hassle Free"!
- **Chat:** Just type your question! ### 🔑 Advanced Configuration
- **Select Model:** Type `/model` to open the visual selector. If you have your own API keys or specialized setup:
- **Switch Agent:** Type `/agent <name>` (e.g., `/agent planner`).
### 🔑 Configuration (Optional)
If you have your own API keys (e.g., for Qwen Coder models):
1. Copy `config.example.cjs` to `config.cjs`. 1. Copy `config.example.cjs` to `config.cjs`.
2. Edit `config.cjs` and paste your key. 2. Edit `config.cjs` to add your keys.
3. Restart.
--- ---

View File

@@ -1,74 +1,46 @@
#!/bin/bash #!/bin/bash
# OpenQode v1.3 Installation Script for Linux/Mac # OpenQode One-Liner Installer for Linux/Mac
echo "" echo -e "\033[0;36mOpenQode Auto-Installer\033[0m"
echo "========================================================" echo -e "\033[0;36m-----------------------\033[0m"
echo " OpenQode v1.3 Alpha - Installation"
echo " AI-Powered Coding Assistant with Qwen Integration"
echo "========================================================"
echo ""
cd "$(dirname "$0")" # Check Git
if ! command -v git &> /dev/null; then
echo -e "\033[0;31mError: Git is not installed.\033[0m"
echo "Please install Git (e.g., sudo apt install git or brew install git)"
exit 1
fi
# Check Node.js # Check Node
echo "[1/3] Checking Node.js..."
if ! command -v node &> /dev/null; then if ! command -v node &> /dev/null; then
echo "" echo -e "\033[0;31mError: Node.js is not installed.\033[0m"
echo "ERROR: Node.js is not installed!" echo "Please install Node.js: https://nodejs.org/"
echo ""
echo "Install Node.js:"
echo " Ubuntu/Debian: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs"
echo " macOS: brew install node"
echo " Or download from: https://nodejs.org/"
echo ""
exit 1 exit 1
fi fi
# Check Node.js version TARGET_DIR="OpenQode"
NODE_VERSION=$(node -v | cut -d. -f1 | tr -d 'v') REPO_URL="https://github.com/roman-ryzenadvanced/OpenQode-Public-Alpha.git"
if [ "$NODE_VERSION" -lt 20 ]; then
echo ""
echo -e "\033[0;33mWARNING: Node.js v20+ is recommended! You have v${NODE_VERSION}.\033[0m"
echo "Some features may not work correctly."
echo ""
fi
echo " Found: $(node --version)"
# Install npm dependencies if [ -d "$TARGET_DIR" ]; then
echo "" echo -e "\033[1;33mDirectory '$TARGET_DIR' already exists. Entering...\033[0m"
echo "[2/3] Installing dependencies..."
echo " (This may take a minute...)"
npm install --legacy-peer-deps
if [ $? -ne 0 ]; then
echo "ERROR: npm install failed!"
echo "Try: npm install --legacy-peer-deps"
exit 1
fi
echo " Done!"
# Check Qwen CLI (optional)
echo ""
echo "[3/3] Checking Qwen CLI (optional)..."
if ! command -v qwen &> /dev/null; then
echo " Qwen CLI not found (optional - Modern TUI doesn't need it)"
echo " To install: npm install -g @anthropic/qwen-code"
else else
echo " Qwen CLI already installed!" echo -e "\033[1;33mCloning repository...\033[0m"
git clone "$REPO_URL" "$TARGET_DIR"
if [ $? -ne 0 ]; then
echo -e "\033[0;31mClone failed.\033[0m"
exit 1
fi
fi fi
# Ensure scripts are executable cd "$TARGET_DIR"
chmod +x OpenQode.sh start.sh 2>/dev/null
echo "" if [ ! -d "node_modules" ]; then
echo "========================================================" echo -e "\033[1;33mInstalling dependencies...\033[0m"
echo -e "\033[1;32m Installation Complete! \033[0m" npm install
echo "========================================================" else
echo "" echo -e "\033[0;32mDependencies already installed.\033[0m"
echo " To start OpenQode:" fi
echo ""
echo -e " \033[1;36m./OpenQode.sh\033[0m" echo -e "\033[0;32mInstallation complete! Launching...\033[0m"
echo "" chmod +x OpenQode.sh
echo " Then select Option 5 for the Modern TUI!" ./OpenQode.sh
echo ""
echo "========================================================"
echo ""

141
package-lock.json generated
View File

@@ -9,6 +9,7 @@
"version": "1.01.0", "version": "1.01.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@qwen-code/qwen-code": "latest",
"blessed": "^0.1.81", "blessed": "^0.1.81",
"cli-truncate": "^5.1.1", "cli-truncate": "^5.1.1",
"clipboardy": "^5.0.2", "clipboardy": "^5.0.2",
@@ -63,6 +64,122 @@
"node": ">=0.1.90" "node": ">=0.1.90"
} }
}, },
"node_modules/@lydell/node-pty": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@lydell/node-pty/-/node-pty-1.1.0.tgz",
"integrity": "sha512-VDD8LtlMTOrPKWMXUAcB9+LTktzuunqrMwkYR1DMRBkS6LQrCt+0/Ws1o2rMml/n3guePpS7cxhHF7Nm5K4iMw==",
"license": "MIT",
"optional": true,
"optionalDependencies": {
"@lydell/node-pty-darwin-arm64": "1.1.0",
"@lydell/node-pty-darwin-x64": "1.1.0",
"@lydell/node-pty-linux-arm64": "1.1.0",
"@lydell/node-pty-linux-x64": "1.1.0",
"@lydell/node-pty-win32-arm64": "1.1.0",
"@lydell/node-pty-win32-x64": "1.1.0"
}
},
"node_modules/@lydell/node-pty-darwin-arm64": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@lydell/node-pty-darwin-arm64/-/node-pty-darwin-arm64-1.1.0.tgz",
"integrity": "sha512-7kFD+owAA61qmhJCtoMbqj3Uvff3YHDiU+4on5F2vQdcMI3MuwGi7dM6MkFG/yuzpw8LF2xULpL71tOPUfxs0w==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@lydell/node-pty-darwin-x64": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@lydell/node-pty-darwin-x64/-/node-pty-darwin-x64-1.1.0.tgz",
"integrity": "sha512-XZdvqj5FjAMjH8bdp0YfaZjur5DrCIDD1VYiE9EkkYVMDQqRUPHYV3U8BVEQVT9hYfjmpr7dNaELF2KyISWSNA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@lydell/node-pty-linux-arm64": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@lydell/node-pty-linux-arm64/-/node-pty-linux-arm64-1.1.0.tgz",
"integrity": "sha512-yyDBmalCfHpLiQMT2zyLcqL2Fay4Xy7rIs8GH4dqKLnEviMvPGOK7LADVkKAsbsyXBSISL3Lt1m1MtxhPH6ckg==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@lydell/node-pty-linux-x64": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@lydell/node-pty-linux-x64/-/node-pty-linux-x64-1.1.0.tgz",
"integrity": "sha512-NcNqRTD14QT+vXcEuqSSvmWY+0+WUBn2uRE8EN0zKtDpIEr9d+YiFj16Uqds6QfcLCHfZmC+Ls7YzwTaqDnanA==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@lydell/node-pty-win32-arm64": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@lydell/node-pty-win32-arm64/-/node-pty-win32-arm64-1.1.0.tgz",
"integrity": "sha512-JOMbCou+0fA7d/m97faIIfIU0jOv8sn2OR7tI45u3AmldKoKoLP8zHY6SAvDDnI3fccO1R2HeR1doVjpS7HM0w==",
"cpu": [
"arm64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@lydell/node-pty-win32-x64": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@lydell/node-pty-win32-x64/-/node-pty-win32-x64-1.1.0.tgz",
"integrity": "sha512-3N56BZ+WDFnUMYRtsrr7Ky2mhWGl9xXcyqR6cexfuCqcz9RNWL+KoXRv/nZylY5dYaXkft4JaR1uVu+roiZDAw==",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@qwen-code/qwen-code": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@qwen-code/qwen-code/-/qwen-code-0.5.0.tgz",
"integrity": "sha512-PUVwBwDJTR00KrBR4ZdGV85HTUfOavE0XOPHHoz3C9XTMpUquiMl+aE4zefgZ+QRgYso1cTR687VDRsdnqz4hw==",
"dependencies": {
"tiktoken": "^1.0.21"
},
"bin": {
"qwen": "cli.js"
},
"engines": {
"node": ">=20.0.0"
},
"optionalDependencies": {
"@lydell/node-pty": "1.1.0",
"@lydell/node-pty-darwin-arm64": "1.1.0",
"@lydell/node-pty-darwin-x64": "1.1.0",
"@lydell/node-pty-linux-x64": "1.1.0",
"@lydell/node-pty-win32-arm64": "1.1.0",
"@lydell/node-pty-win32-x64": "1.1.0",
"node-pty": "^1.0.0"
}
},
"node_modules/@sec-ant/readable-stream": { "node_modules/@sec-ant/readable-stream": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
@@ -3237,6 +3354,13 @@
"thenify-all": "^1.0.0" "thenify-all": "^1.0.0"
} }
}, },
"node_modules/nan": {
"version": "2.24.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.24.0.tgz",
"integrity": "sha512-Vpf9qnVW1RaDkoNKFUvfxqAbtI8ncb8OJlqZ9wwpXzWPEsvsB1nvdUi6oYrHIkQ1Y/tMDnr1h4nczS0VB9Xykg==",
"license": "MIT",
"optional": true
},
"node_modules/negotiator": { "node_modules/negotiator": {
"version": "0.6.3", "version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -3261,6 +3385,17 @@
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/node-pty": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.0.0.tgz",
"integrity": "sha512-wtBMWWS7dFZm/VgqElrTvtfMq4GzJ6+edFI0Y0zyzygUSZMgZdraDUMUhCIvkjhJjme15qWmbyJbtAx4ot4uZA==",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"dependencies": {
"nan": "^2.17.0"
}
},
"node_modules/nodemon": { "node_modules/nodemon": {
"version": "3.1.11", "version": "3.1.11",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.11.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.11.tgz",
@@ -4198,6 +4333,12 @@
"node": ">=0.8" "node": ">=0.8"
} }
}, },
"node_modules/tiktoken": {
"version": "1.0.22",
"resolved": "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.22.tgz",
"integrity": "sha512-PKvy1rVF1RibfF3JlXBSP0Jrcw2uq3yXdgcEXtKTYn3QJ/cBRBHDnrJ5jHky+MENZ6DIPwNUGWpkVx+7joCpNA==",
"license": "MIT"
},
"node_modules/to-regex-range": { "node_modules/to-regex-range": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",

View File

@@ -45,7 +45,8 @@
"remark-parse": "^11.0.0", "remark-parse": "^11.0.0",
"string-width": "^8.1.0", "string-width": "^8.1.0",
"strip-ansi": "^7.1.2", "strip-ansi": "^7.1.2",
"wrap-ansi": "^9.0.2" "wrap-ansi": "^9.0.2",
"@qwen-code/qwen-code": "latest"
}, },
"devDependencies": { "devDependencies": {
"nodemon": "^3.0.1" "nodemon": "^3.0.1"
@@ -61,4 +62,4 @@
"url": "https://github.com/roman-ryzenadvanced/openqode/issues" "url": "https://github.com/roman-ryzenadvanced/openqode/issues"
}, },
"homepage": "https://github.com/roman-ryzenadvanced/openqode#readme" "homepage": "https://github.com/roman-ryzenadvanced/openqode#readme"
} }