Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
9481927
chore: bump version to 0.0.1 and update updater url
GofMan5 Jan 30, 2026
94f3722
chore: update navbar version to 0.0.1 and ci/cd config
GofMan5 Jan 30, 2026
9702de7
fix: build errors (unused imports) and add debug logs
GofMan5 Jan 30, 2026
0013d13
release: v5.0.0 🚀
GofMan5 Jan 30, 2026
373fded
release: v5.0.1 - API stability fixes, dynamic User-Agent, Flash budg…
GofMan5 Jan 30, 2026
60c0e26
chore: mark upstream commits as reviewed (cherry-picked needed changes)
GofMan5 Jan 30, 2026
ec644b9
release: v5.0.2 - VALIDATION_REQUIRED handling, Debug Console, UI imp…
GofMan5 Jan 31, 2026
6abf84b
docs: redesign README.md - clean English version with v5.0.2 features
GofMan5 Jan 31, 2026
3259f01
release: v5.0.3 - IP Security Management, Navbar redesign, Settings A…
GofMan5 Jan 31, 2026
1596699
refactor: FSD architecture migration v5.0.4
GofMan5 Jan 31, 2026
3418b6d
refactor: complete FSD migration for all pages (v5.0.4)
GofMan5 Jan 31, 2026
7395a1a
chore: sync version to 5.0.4 in tauri.conf.dev.json
GofMan5 Jan 31, 2026
8989f15
feat: redesign Dashboard UI (v5.0.4)
GofMan5 Jan 31, 2026
0ece9f4
fix: FREE filter logic and dropdown click-outside behavior
GofMan5 Feb 1, 2026
77797b6
refactor: FSD migration - Debug Console, Settings/Security redesign, …
GofMan5 Feb 1, 2026
a878a36
refactor: migrate Toast to FSD structure (src/shared/ui/toast/)
GofMan5 Feb 1, 2026
ee6a717
refactor: migrate Pagination, ModalDialog, HelpTooltip to FSD (src/sh…
GofMan5 Feb 1, 2026
2ed8eed
refactor: complete FSD architecture migration
GofMan5 Feb 1, 2026
32b35a8
feat: redesign account dialogs & fix drag-and-drop
GofMan5 Feb 1, 2026
3176daa
feat: redesign Toast and ModalDialog components
GofMan5 Feb 1, 2026
0e775d3
docs: remove changelog from README
GofMan5 Feb 1, 2026
3838102
feat: move Console to More menu as dedicated page
GofMan5 Feb 1, 2026
0d5b5ce
feat: optimize Console page with virtualization and conditional visib…
GofMan5 Feb 1, 2026
935119a
feat: security tab redesign, gemini verification, v5.0.4 release
GofMan5 Feb 1, 2026
4b0c77f
refactor(backend): split monolithic commands/mod.rs into domain modules
GofMan5 Feb 1, 2026
647e368
refactor(proxy): split monolithic server.rs into modular structure
GofMan5 Feb 1, 2026
f965d4a
refactor(handlers): split monolithic openai.rs into modular structure
GofMan5 Feb 1, 2026
a58a06b
refactor(handlers): split monolithic claude.rs into modular structure
GofMan5 Feb 1, 2026
a358c47
refactor(mappers): split monolithic request.rs into modular structure
GofMan5 Feb 1, 2026
4887fbf
refactor(proxy): split monolithic token_manager.rs into modular struc…
GofMan5 Feb 1, 2026
e6dee9d
refactor(common): split monolithic json_schema.rs into modular structure
GofMan5 Feb 1, 2026
306cf8e
refactor(modules): split monolithic process.rs into modular structure
GofMan5 Feb 1, 2026
a4e3589
refactor(mappers): split monolithic streaming.rs into modular structure
GofMan5 Feb 1, 2026
5300785
refactor(handlers): split monolithic messages.rs into modular structure
GofMan5 Feb 1, 2026
c17cc76
refactor(modules): split monolithic account.rs into modular structure
GofMan5 Feb 1, 2026
9c18f69
fix: restore missing functionality after refactoring audit
GofMan5 Feb 2, 2026
1c611dd
chore: remove unused imports (cargo fix --allow-dirty)
GofMan5 Feb 2, 2026
1e2fc40
fix: restore missing functionality from second audit round
GofMan5 Feb 2, 2026
2aac6cb
fix: restore missing functionality from third audit round
GofMan5 Feb 2, 2026
fd274a0
fix: restore preferred account logic, validation_blocked and pending_…
GofMan5 Feb 2, 2026
41d2d8d
fix: add set/get_preferred_account commands and restore missing token…
GofMan5 Feb 2, 2026
796104f
fix: restore streaming retry loop, reset_time extraction, model norma…
GofMan5 Feb 2, 2026
4541331
fix: sync frontend security API with backend commands and types (audi…
GofMan5 Feb 2, 2026
24d23b5
fix: restore token_manager logic from Original, sync frontend API par…
GofMan5 Feb 2, 2026
586e09f
fix: restore warmup model whitelist in quota.rs (audit round 9)
GofMan5 Feb 2, 2026
b68825a
feat: add P2C algorithm, graceful shutdown, and missing v4.0.13 featu…
GofMan5 Feb 2, 2026
8efe36d
fix: add client_ip support, IpTokenStats and security commands (audit…
GofMan5 Feb 2, 2026
73d3e34
fix: complete backend audit sync with Original v4.0.13 (rounds 13-17)
GofMan5 Feb 2, 2026
c1c1933
chore: bump version to 5.0.5
GofMan5 Feb 2, 2026
fed3a98
feat: adjust quota color thresholds (<=60% = yellow)
GofMan5 Feb 2, 2026
846b1e0
feat: add Security Stats tab with IP token usage analytics
GofMan5 Feb 2, 2026
ba60404
fix: center AddIpDialog modal and match project design system
GofMan5 Feb 2, 2026
062672d
perf: improve server stability with connection limiting and HTTP/2
GofMan5 Feb 2, 2026
e26c89d
fix: improve token selection logic and async I/O
GofMan5 Feb 2, 2026
5485499
feat: add P2C scheduling mode and quality improvements
GofMan5 Feb 2, 2026
4b5627d
fix: prevent deleted accounts from resurrecting via index validation
GofMan5 Feb 2, 2026
c1cf3c7
feat: add dedicated Traffic Logs page with auto-refresh
GofMan5 Feb 2, 2026
4a44c55
chore: update fallback version to 5.0.5 in UI
GofMan5 Feb 2, 2026
431b21a
fix: replace auto-update with GitHub releases link
GofMan5 Feb 2, 2026
d46f9d9
fix: use openUrl instead of open from tauri-plugin-opener
GofMan5 Feb 3, 2026
53b28c7
fix: update security test function signatures to match security_db API
GofMan5 Feb 3, 2026
2cc7936
chore: remove proxy tests from CI/CD build
GofMan5 Feb 3, 2026
312f1d5
ci: remove Rust tests from release workflow
GofMan5 Feb 3, 2026
b905ff1
fix: add missing imports for Linux/macOS builds (System, load_manual_…
GofMan5 Feb 3, 2026
b99bd61
feat: block verification_needed accounts from proxy + add VERIFY badg…
GofMan5 Feb 3, 2026
bb8b138
refactor(token_manager): decompose selection.rs into modular structure
GofMan5 Feb 3, 2026
9859622
refactor(commands): decompose proxy.rs into modular structure
GofMan5 Feb 3, 2026
27a70b8
fix(selection): filter zero quota accounts, fix P2C rate limit check,…
GofMan5 Feb 3, 2026
595f6cd
fix: TokenManager instance mismatch + fuzzy model matching (v5.0.6)
GofMan5 Feb 3, 2026
2ce911a
chore: release v5.0.7 - Smart Jitter & Dynamic Backoff
GofMan5 Feb 3, 2026
ae91147
chore: force trigger v5.0.7 release
GofMan5 Feb 3, 2026
cd1e050
chore(release): v5.0.8 - Fix Warmup 502, Signatures & Thundering Herd
GofMan5 Feb 3, 2026
01019ac
fix(proxy): improve account switch compatibility and warmup stability
GofMan5 Feb 7, 2026
50d6370
fix(proxy): harden account filtering and retry stability
GofMan5 Feb 7, 2026
11a1c90
fix(proxy): harden headless startup and admin security boundaries
GofMan5 Feb 7, 2026
14a7733
fix(mappers): isolate thinking signatures by session and harden Gemin…
GofMan5 Feb 7, 2026
e6ade7e
feat(opencode): add selective OpenCode sync integration for web and d…
GofMan5 Feb 7, 2026
3d63ffc
chore(git): mark upstream as merged (ours)
GofMan5 Feb 7, 2026
3e09004
fix(proxy): replace random project id fallback with stable recovery
GofMan5 Feb 11, 2026
68d8ed5
chore(release): bump version to 5.1.0
GofMan5 Feb 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
291 changes: 66 additions & 225 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,50 @@ on:
tags:
- "v*"
workflow_dispatch:
inputs:
version:
description: "Version to release (e.g., 5.1.0)"
required: false
type: string

permissions:
contents: write

env:
# Extract version from tag or input
VERSION: ${{ github.event.inputs.version || github.ref_name }}

jobs:
build-tauri:
# Sync version before build (only on workflow_dispatch with version input)
prepare:
runs-on: ubuntu-latest
if: github.event.inputs.version != ''
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Sync version across all files
run: node scripts/sync-version.js set ${{ github.event.inputs.version }}

- name: Commit and tag
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -A
git diff --staged --quiet || git commit -m "chore: bump version to ${{ github.event.inputs.version }}"
git tag -a "v${{ github.event.inputs.version }}" -m "Release v${{ github.event.inputs.version }}"
git push origin HEAD --tags

release:
needs: [prepare]
if: always() && (needs.prepare.result == 'success' || needs.prepare.result == 'skipped')
permissions:
contents: write
strategy:
Expand All @@ -27,9 +68,12 @@ jobs:
args: ""

runs-on: ${{ matrix.platform }}

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.version && format('v{0}', github.event.inputs.version) || github.ref }}

- name: Install dependencies (Linux)
if: startsWith(matrix.platform, 'ubuntu')
Expand All @@ -53,232 +97,29 @@ jobs:
run: npm install

- name: Build the app
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
run: npm run tauri build -- ${{ matrix.args }}

# 3. 处理 macOS 架构重命名冲突 (解决 422 Already Exists)
- name: Rename macOS assets for architecture
if: matrix.platform == 'macos-latest'
run: |
# 识别架构
if [[ "${{ matrix.args }}" == *"--target aarch64-apple-darwin"* ]]; then
ARCH="aarch64"
elif [[ "${{ matrix.args }}" == *"--target x86_64-apple-darwin"* ]]; then
ARCH="x64"
elif [[ "${{ matrix.args }}" == *"--target universal-apple-darwin"* ]]; then
ARCH="universal"
else
ARCH="unknown"
fi

echo "Detected architecture: $ARCH"

# 进入产物目录
cd src-tauri/target/*/release/bundle/macos/

# 重命名 .app.tar.gz 和 .sig
if [ -f "Antigravity Tools.app.tar.gz" ]; then
mv "Antigravity Tools.app.tar.gz" "Antigravity Tools_${ARCH}.app.tar.gz"
mv "Antigravity Tools.app.tar.gz.sig" "Antigravity Tools_${ARCH}.app.tar.gz.sig"
echo "Renamed assets to append Arch: $ARCH"
fi

# 更新对应的 updater.json (指向重命名后的文件)
UPDATER_JSON="../../../updater/install.json"
if [ ! -f "$UPDATER_JSON" ]; then
UPDATER_JSON=$(find ../../../updater -name "*.json" | head -n 1)
fi

if [ -f "$UPDATER_JSON" ]; then
echo "Updating $UPDATER_JSON to use renamed assets..."
sed -i '' "s/Antigravity%20Tools.app.tar.gz/Antigravity%20Tools_${ARCH}.app.tar.gz/g" "$UPDATER_JSON"
fi

# 1. 上传 updater.json 到 Artifacts (供后续合并使用)
- name: Upload updater json
uses: actions/upload-artifact@v4
with:
name: updater-json-${{ matrix.platform }}-${{ strategy.job-index }}
path: src-tauri/target/**/release/bundle/updater/*.json
if-no-files-found: warn

# 2. 直接上传安装包到 GitHub Release (避免 artifact 下载超时)
- name: Upload Release Assets
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
name: "Antigravity Tools ${{ github.ref_name }}"
body: "See the assets to download this version and install."
draft: false
tagName: ${{ env.VERSION }}
releaseName: "Antigravity Tools ${{ env.VERSION }}"
releaseBody: |
## 🚀 Antigravity Tools ${{ env.VERSION }}

### 📦 Installation
- **Windows**: Download `.msi` or `.exe` installer
- **macOS**: Download `.dmg` (Universal) or platform-specific build
- **Linux**: Download `.deb` or `.AppImage`

### 🔄 Auto-Update
Existing installations will be notified automatically.

---
[Full Changelog](https://github.com/${{ github.repository }}/compare/...v${{ env.VERSION }})
releaseDraft: false
prerelease: false
files: |
src-tauri/target/**/release/bundle/dmg/*.dmg
src-tauri/target/**/release/bundle/deb/*.deb
src-tauri/target/**/release/bundle/appimage/*.AppImage
src-tauri/target/**/release/bundle/msi/*.msi
src-tauri/target/**/release/bundle/nsis/*.exe
src-tauri/target/**/release/bundle/rpm/*.rpm
src-tauri/target/**/release/bundle/macos/*.app.tar.gz
src-tauri/target/**/release/bundle/macos/*.app.tar.gz.sig
src-tauri/target/**/release/bundle/dmg/*.sig
src-tauri/target/**/release/bundle/deb/*.sig
src-tauri/target/**/release/bundle/appimage/*.sig
src-tauri/target/**/release/bundle/msi/*.sig
src-tauri/target/**/release/bundle/nsis/*.sig
src-tauri/target/**/release/bundle/rpm/*.sig

publish-release:
needs: build-tauri
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4

# 只下载 updater.json 相关的小文件
- name: Download updater artifacts
uses: actions/download-artifact@v4
with:
pattern: updater-json-*
path: all-updaters
merge-multiple: true

- name: Extract Release Notes
run: |
VERSION="${{ github.ref_name }}"
echo "Extracting release notes for version $VERSION"

# Extract the section, remove leading 4 spaces dedent
awk -v ver="$VERSION" '
BEGIN { capture=0 }
# Match start line: " * **v4.1.0..."
$0 ~ "^[[:space:]]*\\*[[:space:]]+\\*\\*" ver { capture=1; next }
# Match next version line to stop: " * **v..."
capture && $0 ~ "^[[:space:]]*\\*[[:space:]]+\\*\\*v" { capture=0; exit }
capture { print }
' README.md | sed 's/^ //' > release_notes.md

# If no notes found, add a default message
if [ ! -s release_notes.md ]; then
echo "See the assets to download this version and install." > release_notes.md
fi

echo "Release Notes Content:"
cat release_notes.md

- name: Merge updater JSONs
run: |
echo "Merging updater.json files..."
echo "{}" > merged_updater.json

# 查找所有下载下来的 json 并合并
find all-updaters -name "*.json" -type f | while read json_file; do
if jq -e . "$json_file" >/dev/null 2>&1; then
echo "Merging valid JSON: $json_file..."
jq -s '.[0] * .[1]' merged_updater.json "$json_file" > temp.json && mv temp.json merged_updater.json
else
echo "Skipping invalid JSON: $json_file"
cat "$json_file"
fi
done

echo "Merged JSON content:"
cat merged_updater.json

mv merged_updater.json updater.json

- name: Upload merged updater.json
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
body_path: release_notes.md
files: updater.json
# 确保不覆盖已存在的其他 assets (softprops/action-gh-release 默认是追加)

docker-build-amd64:
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' && (github.repository == 'lbjlaq/Antigravity-Manager' || vars.ENABLE_DOCKER_PUSH == 'true')
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push (AMD64)
uses: docker/build-push-action@v6
with:
context: .
file: docker/Dockerfile
platforms: linux/amd64
push: true
tags: |
${{ github.repository_owner }}/antigravity-manager:latest-amd64
${{ github.repository_owner }}/antigravity-manager:${{ github.ref_name }}-amd64
build-args: |
USE_MIRROR=false

docker-build-arm64:
runs-on: ubuntu-24.04-arm
if: github.event_name != 'pull_request' && (github.repository == 'lbjlaq/Antigravity-Manager' || vars.ENABLE_DOCKER_PUSH == 'true')
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push (ARM64)
uses: docker/build-push-action@v6
with:
context: .
file: docker/Dockerfile
platforms: linux/arm64
push: true
tags: |
${{ github.repository_owner }}/antigravity-manager:latest-arm64
${{ github.repository_owner }}/antigravity-manager:${{ github.ref_name }}-arm64
build-args: |
USE_MIRROR=false

docker-manifest:
needs: [docker-build-amd64, docker-build-arm64]
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' && (github.repository == 'lbjlaq/Antigravity-Manager' || vars.ENABLE_DOCKER_PUSH == 'true')
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Create and push manifest
run: |
docker buildx imagetools create -t ${{ github.repository_owner }}/antigravity-manager:latest \
${{ github.repository_owner }}/antigravity-manager:latest-amd64 \
${{ github.repository_owner }}/antigravity-manager:latest-arm64

docker buildx imagetools create -t ${{ github.repository_owner }}/antigravity-manager:${{ github.ref_name }} \
${{ github.repository_owner }}/antigravity-manager:${{ github.ref_name }}-amd64 \
${{ github.repository_owner }}/antigravity-manager:${{ github.ref_name }}-arm64
args: ${{ matrix.args }}
tauriScript: npm run tauri
updaterJsonKeepUniversal: true
9 changes: 6 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Logs
logs
/logs
.logs
*.log
npm-debug.log*
Expand Down Expand Up @@ -35,6 +35,10 @@ src-tauri/.env
.env.*
environment/

# Tauri signing keys (NEVER COMMIT!)
.tauri-keys/
*.key

# Python virtual environments and test files
.venv*/
venv/
Expand All @@ -43,6 +47,5 @@ __pycache__/
*.pyc

# Reference projects (for development only)

CLIProxyAPI/
DOCKER_DEPLOYMENT.md
pnpm-lock.yaml
Loading