feat: initial LexAI Chrome extension scaffold
Some checks failed
CI — Test & Build / Unit Tests (push) Failing after 54s
CI — Test & Build / Build Extension (push) Has been skipped

- WXT + React 18 + TypeScript setup
- Background service worker (LLM API proxy)
- Content script (floating toolbar + text selection)
- Options page (provider/model/API key config)
- Popup UI
- Gitea Actions workflows (CI, preview, release)
- Vitest unit tests + Playwright E2E setup
- Supports: OpenAI, Anthropic, Groq, OpenRouter
This commit is contained in:
Nemo
2026-03-06 09:34:15 +08:00
commit b04076081c
20 changed files with 6254 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
name: Release — Package & Publish
on:
push:
tags:
- 'v*.*.*' # Triggers on: git tag v0.1.0 && git push --tags
jobs:
release:
name: Build & Package Release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Build extension
run: npm run build
- name: Package as ZIP (Chrome Web Store)
run: npm run zip
- name: Get version from tag
id: version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Create Gitea Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITEA_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: LexAI ${{ steps.version.outputs.VERSION }}
body: |
## LexAI ${{ steps.version.outputs.VERSION }}
### Installation
1. Download `lexai-chrome-mv3.zip` below
2. Go to `chrome://extensions`
3. Enable Developer Mode
4. Click "Load unpacked" → extract the zip first
### What's new
See CHANGELOG.md for details.
draft: false
prerelease: false
- name: Upload ZIP to Release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITEA_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: .output/lexai-*.zip
asset_name: lexai-chrome-mv3-${{ steps.version.outputs.VERSION }}.zip
asset_content_type: application/zip