refactor(branding): rename app to EasyCLIProxyAPI
This commit is contained in:
1 parent
cd9432fa73
commit
8b687f5fe0
16 files changed
+32
-37
No files matched your search
@@ -137,7 +137,7 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "stem=Easy_CLIProxyAPI-${version}-${{ matrix.display_os }}-${{ matrix.arch }}" >> "$GITHUB_OUTPUT"
|
echo "stem=EasyCLIProxyAPI-${version}-${{ matrix.display_os }}-${{ matrix.arch }}" >> "$GITHUB_OUTPUT"
|
||||||
- name: Install Linux dependencies
|
- name: Install Linux dependencies
|
||||||
if: matrix.os == 'linux'
|
if: matrix.os == 'linux'
|
||||||
run: |
|
run: |
|
||||||
@@ -223,7 +223,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
prerelease="$MANUAL_PRERELEASE"
|
prerelease="$MANUAL_PRERELEASE"
|
||||||
release_args=(--title "Easy_CLIProxyAPI $RELEASE_TAG" --generate-notes)
|
release_args=(--title "EasyCLIProxyAPI $RELEASE_TAG" --generate-notes)
|
||||||
if [[ "$GITHUB_REF_TYPE" == "tag" ]]; then
|
if [[ "$GITHUB_REF_TYPE" == "tag" ]]; then
|
||||||
release_args+=(--verify-tag)
|
release_args+=(--verify-tag)
|
||||||
if [[ "$RELEASE_TAG" == *-* ]]; then
|
if [[ "$RELEASE_TAG" == *-* ]]; then
|
||||||
|
|||||||
+3
-5
@@ -5,21 +5,19 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="src/assets/logo.jpg" width="112" alt="Easy_CLIProxyAPI Logo">
|
<img src="src/assets/logo.jpg" width="112" alt="EasyCLIProxyAPI Logo">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h1 align="center">Easy_CLIProxyAPI</h1>
|
<h1 align="center">EasyCLIProxyAPI</h1>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
私たちの目標は、トークンを free(無料ではなく、自由という意味)にすることです。<br>
|
私たちの目標は、トークンを free(無料ではなく、自由という意味)にすることです。<br>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> このリポジトリは正式版です。より先進的で実験的な機能については、[lzt404/Easy_CLIProxyAPI](https://github.com/lzt404/Easy_CLIProxyAPI) をご覧ください。
|
|
||||||
|
|
||||||
## 概要
|
## 概要
|
||||||
|
|
||||||
Easy_CLIProxyAPI は、[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) をベースにしたポータブルツールです。コア、OAuth アカウント、API 接続、モデルルーティング、認証ファイル、クォータ情報、使用履歴、エージェントクライアント設定をグラフィカルなインターフェースから管理できます。
|
EasyCLIProxyAPI は、[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) をベースにしたポータブルツールです。コア、OAuth アカウント、API 接続、モデルルーティング、認証ファイル、クォータ情報、使用履歴、エージェントクライアント設定をグラフィカルなインターフェースから管理できます。
|
||||||
|
|
||||||
本アプリケーションは Tauri、React、Rust で構築されています。
|
本アプリケーションは Tauri、React、Rust で構築されています。
|
||||||
|
|
||||||
|
|||||||
@@ -5,21 +5,19 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="src/assets/logo.jpg" width="112" alt="Easy_CLIProxyAPI Logo">
|
<img src="src/assets/logo.jpg" width="112" alt="EasyCLIProxyAPI Logo">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h1 align="center">Easy_CLIProxyAPI</h1>
|
<h1 align="center">EasyCLIProxyAPI</h1>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
Our goal is to make tokens free—as in freedom.<br>
|
Our goal is to make tokens free—as in freedom.<br>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> This repository contains the official release. For more aggressive experimental features, visit [lzt404/Easy_CLIProxyAPI](https://github.com/lzt404/Easy_CLIProxyAPI).
|
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
Easy_CLIProxyAPI is a portable tool built on [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI). It provides a graphical interface for managing the core, OAuth accounts, API providers, model routing, authentication files, quota information, usage records, and agent client configurations.
|
EasyCLIProxyAPI is a portable tool built on [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI). It provides a graphical interface for managing the core, OAuth accounts, API providers, model routing, authentication files, quota information, usage records, and agent client configurations.
|
||||||
|
|
||||||
The application is built with Tauri, React, and Rust.
|
The application is built with Tauri, React, and Rust.
|
||||||
|
|
||||||
|
|||||||
+3
-5
@@ -5,21 +5,19 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="src/assets/logo.jpg" width="112" alt="Easy_CLIProxyAPI Logo">
|
<img src="src/assets/logo.jpg" width="112" alt="EasyCLIProxyAPI Logo">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h1 align="center">Easy_CLIProxyAPI</h1>
|
<h1 align="center">EasyCLIProxyAPI</h1>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
我们的目标是实现 token free(free 在这里的意思是自由)。<br>
|
我们的目标是实现 token free(free 在这里的意思是自由)。<br>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> 当前仓库为正式版本,如需更为激进的实验性功能,请前往 [lzt404/Easy_CLIProxyAPI](https://github.com/lzt404/Easy_CLIProxyAPI)。
|
|
||||||
|
|
||||||
## 项目简介
|
## 项目简介
|
||||||
|
|
||||||
Easy_CLIProxyAPI 是基于 [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) 的便携工具,提供图形化界面管理内核、OAuth 账号、API 接入、模型路由、认证文件、配额查询、使用记录和智能体客户端配置。
|
EasyCLIProxyAPI 是基于 [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) 的便携工具,提供图形化界面管理内核、OAuth 账号、API 接入、模型路由、认证文件、配额查询、使用记录和智能体客户端配置。
|
||||||
|
|
||||||
软件基于 Tauri、React 和 Rust 构建。
|
软件基于 Tauri、React 和 Rust 构建。
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ $ErrorActionPreference = 'Stop'
|
|||||||
$RootDir = $PSScriptRoot
|
$RootDir = $PSScriptRoot
|
||||||
$AppBin = Join-Path $RootDir 'src-tauri\target\release\cpa-gui.exe'
|
$AppBin = Join-Path $RootDir 'src-tauri\target\release\cpa-gui.exe'
|
||||||
$BinDir = Join-Path $RootDir 'bin-work'
|
$BinDir = Join-Path $RootDir 'bin-work'
|
||||||
$BinOut = Join-Path $BinDir 'Easy_CLIProxyAPI.exe'
|
$BinOut = Join-Path $BinDir 'EasyCLIProxyAPI.exe'
|
||||||
$PreparePortable = Join-Path $RootDir 'scripts\prepare-portable.mjs'
|
$PreparePortable = Join-Path $RootDir 'scripts\prepare-portable.mjs'
|
||||||
|
|
||||||
Set-Location -LiteralPath $RootDir
|
Set-Location -LiteralPath $RootDir
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ cd "$ROOT_DIR"
|
|||||||
BUILD_JOBS="${CARGO_BUILD_JOBS:-20}"
|
BUILD_JOBS="${CARGO_BUILD_JOBS:-20}"
|
||||||
APP_BIN="$ROOT_DIR/src-tauri/target/release/cpa-gui"
|
APP_BIN="$ROOT_DIR/src-tauri/target/release/cpa-gui"
|
||||||
BIN_DIR="$ROOT_DIR/bin-work"
|
BIN_DIR="$ROOT_DIR/bin-work"
|
||||||
BIN_OUT="$BIN_DIR/Easy_CLIProxyAPI"
|
BIN_OUT="$BIN_DIR/EasyCLIProxyAPI"
|
||||||
|
|
||||||
if ! command -v bun >/dev/null 2>&1; then
|
if ! command -v bun >/dev/null 2>&1; then
|
||||||
echo "bun is not installed or not in PATH."
|
echo "bun is not installed or not in PATH."
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Easy_CLIProxyAPI</title>
|
<title>EasyCLIProxyAPI</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ $ErrorActionPreference = 'Stop'
|
|||||||
|
|
||||||
$RootDir = $PSScriptRoot
|
$RootDir = $PSScriptRoot
|
||||||
$BinDir = Join-Path $RootDir 'bin-work'
|
$BinDir = Join-Path $RootDir 'bin-work'
|
||||||
$AppBin = Join-Path $BinDir 'Easy_CLIProxyAPI.exe'
|
$AppBin = Join-Path $BinDir 'EasyCLIProxyAPI.exe'
|
||||||
|
|
||||||
if (-not (Test-Path -LiteralPath $AppBin -PathType Leaf)) {
|
if (-not (Test-Path -LiteralPath $AppBin -PathType Leaf)) {
|
||||||
Write-Host "Executable not found: $AppBin"
|
Write-Host "Executable not found: $AppBin"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
APP_BIN="$ROOT_DIR/bin-work/Easy_CLIProxyAPI"
|
APP_BIN="$ROOT_DIR/bin-work/EasyCLIProxyAPI"
|
||||||
|
|
||||||
if [ ! -x "$APP_BIN" ]; then
|
if [ ! -x "$APP_BIN" ]; then
|
||||||
echo "Executable not found: $APP_BIN"
|
echo "Executable not found: $APP_BIN"
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ if (existsSync(checksumsPath)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
await mkdir(output, { recursive: true });
|
await mkdir(output, { recursive: true });
|
||||||
const outputBinary = join(output, targetOS === 'windows' ? 'Easy_CLIProxyAPI.exe' : 'Easy_CLIProxyAPI');
|
const outputBinary = join(output, targetOS === 'windows' ? 'EasyCLIProxyAPI.exe' : 'EasyCLIProxyAPI');
|
||||||
const legacyOutputBinary = join(output, targetOS === 'windows' ? 'cpa-gui.exe' : 'cpa-gui');
|
const legacyOutputBinary = join(output, targetOS === 'windows' ? 'cpa-gui.exe' : 'cpa-gui');
|
||||||
await rm(legacyOutputBinary, { force: true });
|
await rm(legacyOutputBinary, { force: true });
|
||||||
await copyFile(binary, outputBinary);
|
await copyFile(binary, outputBinary);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../gen/schemas/desktop-schema.json",
|
"$schema": "../gen/schemas/desktop-schema.json",
|
||||||
"identifier": "default",
|
"identifier": "default",
|
||||||
"description": "Default permissions for the main Easy_CLIProxyAPI window.",
|
"description": "Default permissions for the main EasyCLIProxyAPI window.",
|
||||||
"windows": ["main"],
|
"windows": ["main"],
|
||||||
"permissions": ["core:event:allow-listen", "core:event:allow-unlisten"]
|
"permissions": ["core:event:allow-listen", "core:event:allow-unlisten"]
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,8 @@ const RELEASE_PAGE_URL: &str = "https://github.com/router-for-me/CLIProxyAPI/rel
|
|||||||
const RELEASE_ATOM_URL: &str = "https://github.com/router-for-me/CLIProxyAPI/releases.atom";
|
const RELEASE_ATOM_URL: &str = "https://github.com/router-for-me/CLIProxyAPI/releases.atom";
|
||||||
const RELEASE_DOWNLOAD_PREFIX: &str =
|
const RELEASE_DOWNLOAD_PREFIX: &str =
|
||||||
"https://github.com/router-for-me/CLIProxyAPI/releases/download/";
|
"https://github.com/router-for-me/CLIProxyAPI/releases/download/";
|
||||||
const APP_RELEASE_PAGE_URL: &str = "https://github.com/lzt404/Easy_CLIProxyAPI/releases/latest";
|
const APP_RELEASE_PAGE_URL: &str =
|
||||||
|
"https://github.com/router-for-me/EasyCLIProxyAPI/releases/latest";
|
||||||
const CORE_INSTALL_PROGRESS_EVENT: &str = "core-install-progress";
|
const CORE_INSTALL_PROGRESS_EVENT: &str = "core-install-progress";
|
||||||
const CORE_STATUS_EVENT: &str = "core-status-changed";
|
const CORE_STATUS_EVENT: &str = "core-status-changed";
|
||||||
const CORE_METADATA_FILE: &str = "cpa-gui-meta.json";
|
const CORE_METADATA_FILE: &str = "cpa-gui-meta.json";
|
||||||
@@ -56,9 +57,9 @@ const USER_AGENT: &str = concat!(
|
|||||||
" (+https://github.com/router-for-me/CLIProxyAPI)"
|
" (+https://github.com/router-for-me/CLIProxyAPI)"
|
||||||
);
|
);
|
||||||
const APP_USER_AGENT: &str = concat!(
|
const APP_USER_AGENT: &str = concat!(
|
||||||
"Easy_CLIProxyAPI/",
|
"EasyCLIProxyAPI/",
|
||||||
env!("CARGO_PKG_VERSION"),
|
env!("CARGO_PKG_VERSION"),
|
||||||
" (+https://github.com/lzt404/Easy_CLIProxyAPI)"
|
" (+https://github.com/router-for-me/EasyCLIProxyAPI)"
|
||||||
);
|
);
|
||||||
static CORE_CONFIG_FILE_LOCK: Mutex<()> = Mutex::new(());
|
static CORE_CONFIG_FILE_LOCK: Mutex<()> = Mutex::new(());
|
||||||
static AGENT_CONFIG_FILE_LOCK: Mutex<()> = Mutex::new(());
|
static AGENT_CONFIG_FILE_LOCK: Mutex<()> = Mutex::new(());
|
||||||
@@ -823,7 +824,7 @@ struct GithubAsset {
|
|||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
fn health_check() -> &'static str {
|
fn health_check() -> &'static str {
|
||||||
"Easy_CLIProxyAPI Rust backend is ready"
|
"EasyCLIProxyAPI Rust backend is ready"
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
@@ -2932,7 +2933,7 @@ fn build_claude_desktop_meta(existing: Option<&str>) -> Result<String, String> {
|
|||||||
});
|
});
|
||||||
entries.push(serde_json::json!({
|
entries.push(serde_json::json!({
|
||||||
"id": CLAUDE_DESKTOP_PROFILE_ID,
|
"id": CLAUDE_DESKTOP_PROFILE_ID,
|
||||||
"name": "Easy CLIProxyAPI"
|
"name": "EasyCLIProxyAPI"
|
||||||
}));
|
}));
|
||||||
root.insert(
|
root.insert(
|
||||||
"appliedId".to_string(),
|
"appliedId".to_string(),
|
||||||
@@ -2969,7 +2970,7 @@ fn build_codex_agent_config(
|
|||||||
.and_then(Item::as_table)
|
.and_then(Item::as_table)
|
||||||
.cloned()
|
.cloned()
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
provider["name"] = value("Easy CLIProxyAPI");
|
provider["name"] = value("EasyCLIProxyAPI");
|
||||||
provider["base_url"] = value(base_url);
|
provider["base_url"] = value(base_url);
|
||||||
provider["wire_api"] = value("responses");
|
provider["wire_api"] = value("responses");
|
||||||
provider["experimental_bearer_token"] = value(api_key);
|
provider["experimental_bearer_token"] = value(api_key);
|
||||||
@@ -3088,7 +3089,7 @@ fn build_opencode_agent_config(
|
|||||||
MANAGED_AGENT_PROVIDER_ID.to_string(),
|
MANAGED_AGENT_PROVIDER_ID.to_string(),
|
||||||
serde_json::json!({
|
serde_json::json!({
|
||||||
"npm": "@ai-sdk/openai-compatible",
|
"npm": "@ai-sdk/openai-compatible",
|
||||||
"name": "Easy CLIProxyAPI",
|
"name": "EasyCLIProxyAPI",
|
||||||
"options": {
|
"options": {
|
||||||
"baseURL": base_url,
|
"baseURL": base_url,
|
||||||
"apiKey": api_key
|
"apiKey": api_key
|
||||||
@@ -5444,7 +5445,7 @@ fn configure_child_lifetime(command: &mut Command) {
|
|||||||
|
|
||||||
if libc::getppid() != parent_process_id {
|
if libc::getppid() != parent_process_id {
|
||||||
return Err(io::Error::other(
|
return Err(io::Error::other(
|
||||||
"Easy_CLIProxyAPI exited before the core process started",
|
"EasyCLIProxyAPI exited before the core process started",
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "Easy_CLIProxyAPI",
|
"productName": "EasyCLIProxyAPI",
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"identifier": "com.cpa.gui",
|
"identifier": "com.cpa.gui",
|
||||||
"build": {
|
"build": {
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"windows": [
|
"windows": [
|
||||||
{
|
{
|
||||||
"label": "main",
|
"label": "main",
|
||||||
"title": "Easy_CLIProxyAPI",
|
"title": "EasyCLIProxyAPI",
|
||||||
"width": 1200,
|
"width": 1200,
|
||||||
"height": 810,
|
"height": 810,
|
||||||
"minWidth": 900,
|
"minWidth": 900,
|
||||||
|
|||||||
+1
-1
@@ -128,7 +128,7 @@ function AppContent() {
|
|||||||
<div className="sidebar-brand" title="CLI Proxy API GUI">
|
<div className="sidebar-brand" title="CLI Proxy API GUI">
|
||||||
<img src={appLogo} alt="" className="brand-mark brand-logo" />
|
<img src={appLogo} alt="" className="brand-mark brand-logo" />
|
||||||
<div>
|
<div>
|
||||||
<strong>Easy CLIProxyAPI</strong>
|
<strong>EasyCLIProxyAPI</strong>
|
||||||
<span>Desktop Console</span>
|
<span>Desktop Console</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export class AppErrorBoundary extends Component<Props, State> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
componentDidCatch(error: Error, info: ErrorInfo) {
|
componentDidCatch(error: Error, info: ErrorInfo) {
|
||||||
console.error('Easy_CLIProxyAPI 渲染异常', error, info.componentStack);
|
console.error('EasyCLIProxyAPI 渲染异常', error, info.componentStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ type AppUpdateInfo = {
|
|||||||
releaseUrl: string;
|
releaseUrl: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const APP_RELEASE_URL = 'https://github.com/lzt404/Easy_CLIProxyAPI/releases/latest';
|
const APP_RELEASE_URL = 'https://github.com/router-for-me/EasyCLIProxyAPI/releases/latest';
|
||||||
|
|
||||||
let latestAutoCheckStarted = false;
|
let latestAutoCheckStarted = false;
|
||||||
let cachedLatest: CoreLatest | null = null;
|
let cachedLatest: CoreLatest | null = null;
|
||||||
|
|||||||
Reference in new issue
Block a user