From 4d999fdc5c0133cf7cb3fc4fdbdb750217f801af Mon Sep 17 00:00:00 2001 From: Gemini AI Date: Sun, 14 Dec 2025 00:56:30 +0400 Subject: [PATCH] Enhancement: 1-Click Installers & Zero-Config Auth Prep --- README.md | 42 +++++++------- install.sh | 94 +++++++++++-------------------- package-lock.json | 141 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 5 +- 4 files changed, 199 insertions(+), 83 deletions(-) diff --git a/README.md b/README.md index c23b50f..4590e8c 100644 --- a/README.md +++ b/README.md @@ -10,35 +10,40 @@ ## 👋 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. -We are proud to present two distinct experiences: **Next-Gen (Gen 5)** and **Classic (Gen 4)**. - --- -## ⚡ 1-Click Installation (Windows) -Copy and paste this into PowerShell to automatically download, install, and run OpenQode: +## ⚡ 1-Click Installation (Zero-Config) +### 🖥️ Windows (PowerShell) +Copy and paste this into 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')) ``` +### 🍎 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 -### 🖥️ Windows Users -1. **Download** the latest release or clone the repo. +### Windows +1. **Download** the latest release. 2. Double-click **`OpenQode.bat`**. *(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. 2. Run: ```bash chmod +x 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 | | **Models** | **Visual Model Selector** (`/model`) | Manual Switch via CLI | | **Thinking** | **Real-time Stats** (CPS, Tokens) | Basic Loading | -| **Output** | **Collapsible Cards** & Markdown | Linear Log | ![Context and Stats](assets/screenshots/next-gen-2.png) --- -## ⚡ Quick Start Guide -Once in Next-Gen TUI: +## ⚡ Feature: Zero-Config Authentication +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! -- **Select Model:** Type `/model` to open the visual selector. -- **Switch Agent:** Type `/agent ` (e.g., `/agent planner`). - -### 🔑 Configuration (Optional) -If you have your own API keys (e.g., for Qwen Coder models): +### 🔑 Advanced Configuration +If you have your own API keys or specialized setup: 1. Copy `config.example.cjs` to `config.cjs`. -2. Edit `config.cjs` and paste your key. -3. Restart. +2. Edit `config.cjs` to add your keys. --- diff --git a/install.sh b/install.sh index d9dccce..7807db0 100644 --- a/install.sh +++ b/install.sh @@ -1,74 +1,46 @@ #!/bin/bash -# OpenQode v1.3 Installation Script for Linux/Mac +# OpenQode One-Liner Installer for Linux/Mac -echo "" -echo "========================================================" -echo " OpenQode v1.3 Alpha - Installation" -echo " AI-Powered Coding Assistant with Qwen Integration" -echo "========================================================" -echo "" +echo -e "\033[0;36mOpenQode Auto-Installer\033[0m" +echo -e "\033[0;36m-----------------------\033[0m" -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 -echo "[1/3] Checking Node.js..." +# Check Node if ! command -v node &> /dev/null; then - echo "" - echo "ERROR: Node.js is not installed!" - 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 "" + echo -e "\033[0;31mError: Node.js is not installed.\033[0m" + echo "Please install Node.js: https://nodejs.org/" exit 1 fi -# Check Node.js version -NODE_VERSION=$(node -v | cut -d. -f1 | tr -d 'v') -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)" +TARGET_DIR="OpenQode" +REPO_URL="https://github.com/roman-ryzenadvanced/OpenQode-Public-Alpha.git" -# Install npm dependencies -echo "" -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" +if [ -d "$TARGET_DIR" ]; then + echo -e "\033[1;33mDirectory '$TARGET_DIR' already exists. Entering...\033[0m" 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 -# Ensure scripts are executable -chmod +x OpenQode.sh start.sh 2>/dev/null +cd "$TARGET_DIR" -echo "" -echo "========================================================" -echo -e "\033[1;32m Installation Complete! \033[0m" -echo "========================================================" -echo "" -echo " To start OpenQode:" -echo "" -echo -e " \033[1;36m./OpenQode.sh\033[0m" -echo "" -echo " Then select Option 5 for the Modern TUI!" -echo "" -echo "========================================================" -echo "" +if [ ! -d "node_modules" ]; then + echo -e "\033[1;33mInstalling dependencies...\033[0m" + npm install +else + echo -e "\033[0;32mDependencies already installed.\033[0m" +fi + +echo -e "\033[0;32mInstallation complete! Launching...\033[0m" +chmod +x OpenQode.sh +./OpenQode.sh diff --git a/package-lock.json b/package-lock.json index 38edd79..64df38f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.01.0", "license": "MIT", "dependencies": { + "@qwen-code/qwen-code": "latest", "blessed": "^0.1.81", "cli-truncate": "^5.1.1", "clipboardy": "^5.0.2", @@ -63,6 +64,122 @@ "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": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", @@ -3237,6 +3354,13 @@ "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": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -3261,6 +3385,17 @@ "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": { "version": "3.1.11", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.11.tgz", @@ -4198,6 +4333,12 @@ "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": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", diff --git a/package.json b/package.json index 9e34fc1..80c8fbc 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,8 @@ "remark-parse": "^11.0.0", "string-width": "^8.1.0", "strip-ansi": "^7.1.2", - "wrap-ansi": "^9.0.2" + "wrap-ansi": "^9.0.2", + "@qwen-code/qwen-code": "latest" }, "devDependencies": { "nodemon": "^3.0.1" @@ -61,4 +62,4 @@ "url": "https://github.com/roman-ryzenadvanced/openqode/issues" }, "homepage": "https://github.com/roman-ryzenadvanced/openqode#readme" -} +} \ No newline at end of file