boos
ba07517974
fix: 密钥管理排除站点列表缺少无账号站点
...
loadExclusionSources() 原只从 accounts 提取站点,
新增的/无关联账号的站点不显示。
增加 api.getSites() 调用,合并所有站点到排除选项。
2026-05-19 02:33:18 +08:00
boos
c8a523d973
fix: 站点管理预设选项添加 label 标签
...
SiteInitializationPreset 类型缺少 label 字段,
导致 coding plan、deepseek 等预设在下拉菜单显示空白。
给接口添加 label: string,全部 13 个预设补上中文标签。
2026-05-19 02:33:13 +08:00
boos
5890a9b4ac
feat: 添加用户端后端 API 路由
...
- 新增 GET /api/user/logs(用户 API 调用历史)
- 新增 GET /api/user/summary(用户使用统计摘要)
- stats.rs: ProxyLogRow 改为 pub 供 user 模块复用
2026-05-19 02:33:08 +08:00
boos
bf00296a90
feat: 新增普通用户界面
...
- 重构 App.tsx 路由,分离普通用户/管理员导航
(userSidebarGroups / userAuthed 状态)
- UserDashboard 重写为概览页:用量统计、最近记录、快速入口
- 新增 UsageRecords 使用记录页(分页)
- 新增 UserKeys 密钥管理页(创建/删除 sk-user- 密钥)
- 新增 UserProfile 个人资料页(修改用户名/密码)
- UserLogin 增加 onLogin 回调
- api.ts 增加 userApi 工具方法
2026-05-19 02:32:58 +08:00
boos
4f0c4959bf
Merge pull request 'feat: update logo image' ( #5 ) from feature/update-logo into refactor/rust-backend
...
Reviewed-on: #5
2026-05-18 09:24:44 +00:00
Aibo117
dbfe07c736
feat: update all logo and favicon files
...
Replace logo.png, favicon.png, favicon-64.png, and desktop-icon.png
with the new brand logo.
2026-05-18 17:23:54 +08:00
Aibo117
bde045d0cf
feat: update logo image
...
Replace the default logo with the new brand logo.
2026-05-18 17:19:15 +08:00
boos
e9595017e9
feat: support admin account login
2026-05-18 17:01:39 +08:00
boos
f986fe0377
feat: complete Rust backend UI compatibility
2026-05-18 16:55:09 +08:00
boos
f2434e725d
feat: ComfyUI video assistant SaaS plan + shared types cleanup
...
- Add plan/2026-05-18-comfyui-video-assistant-saas.md (gpt-5.5 generated)
- Add src/server/ and src/shared/ type definitions
- Update comfyui routes and api_key auth
- Remove old metapi docs, deploy/k3s, and deprecated configs
2026-05-18 11:28:20 +08:00
boos
bfdb01e542
feat: add 视频助手 nav item pointing to /comfyui-agent
2026-05-18 10:16:55 +08:00
boos
3779826a15
fix: add /api/users/login route alias for frontend compat; return JSON error for unmatched API routes instead of SPA index.html
2026-05-18 10:14:07 +08:00
boos
b89b71a95f
docs: update README tech stack and dev guide for Rust backend
...
- Rewrote 技术栈 section (Axum/Tokio/SQLx/TokenRouter)
- Rewrote 本地开发 section (cargo run + npm build)
- Added 项目结构 section describing Rust backend layout
- Added 环境变量 reference (BOOSAPI_*__* naming)
- Updated Docker Compose examples for Rust config vars
- Removed all Node.js runtime/TypeScript refs from backend docs
2026-05-18 09:37:04 +08:00
boos
0eb7c32585
fix: restore frontend source code (src/web/) that was accidentally deleted
...
Frontend source is needed for development/building the SPA.
Only Node.js runtime server code should be removed.
2026-05-18 09:33:56 +08:00
boos
5d29f03d50
refactor: purge Node.js, Rust is the one true backend
...
- Moved boosapi-rs/* to repo root
- Deleted all Node.js source (src/server/, src/web/, scripts/)
- Deleted node_modules, package.json, tsconfig, vite.config
- Updated .gitignore and AGENTS.md for Rust-only stack
- Fixed static file path for frontend dist/web/
- Dockerfile stays the same (already Rust-only)
- Kept dist/web/ for Rust static serving
2026-05-18 09:11:29 +08:00
boos
725f44699a
refactor: ComfyUI Agent with structured parsing + image gen + TTS
...
- New system prompt with 【CHARACTER】【SCENE】【TTS】【WORKFLOW】 markers
- Backend parses structured sections, auto-calls gpt-image-2 for character/scene images
- Auto-calls TTS API for dialogue lines
- Case-insensitive field parsing, robust whitespace handling
- Static file serving with SPA fallback for frontend
- No Node.js runtime dependency for serving
2026-05-18 04:02:02 +08:00
boos
56391f2193
feat: Phase 5-6 - Proxy Conductor, Token Router, Services, Dockerfile
...
- Proxy Conductor: retry/fallback/auth-refresh orchestration loop
- Token Router: exact/wildcard/regex model routing with channel selection
- Services: Cron scheduler, OAuth token refresh, Update center, Announcements
- User routes: profile + API key management
- DB queries module
- Dockerfile: multi-stage build
- Proxy routes integrated with Conductor + TokenRouter
2026-05-18 03:00:09 +08:00
boos
78d46eeddb
feat: Search routes migrated to Rust
...
- POST /api/search — cross-entity search across 6 categories
- Searches: sites, accounts, account_tokens, checkin_logs,
proxy_logs, and model_availability
- All via SQL LIKE, no external search engine dependency
- Model aggregation with deduplication
- 18/18 tests pass
2026-05-17 17:15:03 +08:00
boos
7a3a88f738
feat: Monitor (LDOH proxy) routes migrated to Rust
...
- GET/PUT /api/monitor/config — LDOH cookie management via settings table
- POST /api/monitor/session — cookie auth token
- GET /monitor-proxy/ldoh/{*path} — reverse proxy with content rewriting
- Cookie-based auth, HTML/JS/CSS path rewriting
- 18/18 tests pass
2026-05-17 17:13:28 +08:00
boos
adb349eecc
feat: Stats routes — model-by-site + site-distribution
...
- GET /api/stats/model-by-site — model usage aggregated by model name
- GET /api/stats/site-distribution — per-site usage summary
- Both query existing model_day_usage table with day-range filter
- 18/18 tests pass
2026-05-17 17:10:35 +08:00
boos
15f73a2793
fix: ComfyUI wildcard route syntax for axum 0.8+
...
- Changed to in comfyui proxy route
- Added config.toml for local dev
- Verified: Rust backend starts and serves /healthz, /api/sites,
/api/events, /api/tasks, /api/settings, /api/organizations/plans
- 18/18 tests pass
2026-05-17 17:08:36 +08:00
boos
fe1a7c2115
feat: User profile routes migrated to Rust
...
- PATCH /api/users/me — update own username
- POST /api/users/me/password — change password (verify old first)
- GET /api/users/{id} — get user profile (self or admin)
- JWT auth for all endpoints
- 18/18 tests pass
2026-05-17 17:04:54 +08:00
boos
07f427877b
feat: Background task SSE streaming endpoint
...
- Added /api/update-center/tasks/{id}/stream SSE endpoint
- Polls DB for task status updates every 1s (up to 2 min)
- Streams status + log events, ends on completion/timeout
- Added async-stream dependency
- 18/18 tests pass
2026-05-17 17:03:12 +08:00
boos
e94c6cf853
feat: Proxy extensions — audio, video, completions, embeddings
...
- Generic execute_proxy_request executor for arbitrary paths
- POST /v1/completions, /v1/embeddings
- POST /v1/audio/speech, /v1/audio/transcriptions, /v1/audio/translations
- POST /v1/videos
- All reuse existing auth + route resolution infra
- 18/18 tests pass
2026-05-17 17:01:15 +08:00
boos
84b4b16ebd
feat: Proxy extensions — /v1/completions + /v1/embeddings
...
- Added generic execute_proxy_request executor for any path suffix
- POST /v1/completions — forwards to upstream /completions
- POST /v1/embeddings — forwards to upstream /embeddings
- Both use existing auth + route resolution infra
- 18/18 tests pass
2026-05-17 16:59:43 +08:00
boos
4ac9c2385f
feat: Organizations + Invitations routes migrated to Rust
...
- New migration: organizations, organization_members, invitations tables
- New model: Organization, OrganizationMember, Invitation
- Full CRUD: list/create/get/update orgs, members, invitations
- Public invitation lookup + accept flow
- JWT auth for all protected endpoints
- Admin role verification for org management
- 18/18 tests pass
2026-05-17 16:58:27 +08:00
boos
fac1aa4a88
feat: Background tasks table + tasks route migrated to Rust
...
- New migration: background_tasks table
- New model: BackgroundTask (background_task.rs)
- GET /api/tasks with limit param
- GET /api/tasks/{id} with 404 handling
- 18/18 tests pass
2026-05-17 16:56:15 +08:00
boos
d7d3670f02
feat: User API Keys routes migrated to Rust
...
- New user_api_keys.rs route module
- JWT-authenticated CRUD on downstream_api_keys scoped to user_id
- GET/POST/PATCH/DELETE /api/user-api-keys with ownership verification
- Uses existing downstream_api_keys table with user_id FK
- Supports all fields: name, tags, enabled, expires_at, max_cost, etc.
- 18/18 tests pass
2026-05-17 13:37:17 +08:00
boos
9329248e59
feat: Site Announcements routes migrated to Rust
...
- New SiteAnnouncement model (site_announcement.rs)
- Route handlers: list (with siteId/platform/read/status filters),
mark read, mark all read, delete all
- In-memory status filtering for active/expired/dismissed (same as Node.js)
- Uses existing site_announcements table from migration
- 18/18 tests pass
2026-05-17 13:34:53 +08:00
boos
2793a7990d
feat: Checkin + Events routes migrated to Rust
...
- /api/checkin — list logs, stats, accounts, toggle, run
- /api/events — list, count, mark read, clear
- CheckinLog + Event models
- cargo check ✅ | cargo test 18/18 ✅
2026-05-17 13:29:17 +08:00
boos
af05b40799
feat: Events API routes migrated to Rust
...
- GET /api/events — list with filters (type, read, pagination)
- GET /api/events/count — unread count
- POST /api/events/{id}/read — mark one as read
- POST /api/events/read-all — mark all as read
- DELETE /api/events — clear all events
- Event model with sqlx FromRow
2026-05-17 13:28:16 +08:00
boos
8568859da6
feat: User management + JWT auth routes
...
- Admin users CRUD: /api/admin/users + /api/admin/users/{id}
- Public auth: /api/auth/register, /api/auth/login, /api/auth/me
- User model + password hashing via existing auth module
- JWT token generation and validation
- cargo check ✅ | cargo test 18/18 ✅
2026-05-17 13:24:37 +08:00
boos
7987833ba9
feat: Rust refactor — full backend rewrite (Phases 1-6)
...
Phase 1-3: Scaffold + types + auth (JWT, Argon2, API keys)
Phase 4a: Admin API (sites/accounts/tokens/downstream-keys/settings)
Phase 5: Proxy core (/v1/chat, /v1/images, /v1/models)
Phase 6: ComfyUI proxy routes migrated
- 80+ source files, all cargo check + 18 tests green
- Drop-in compatible with Node.js API surface
2026-05-17 13:20:52 +08:00
boos
ad0bb86e31
feat: ComfyUI embedded dev setup + proxy auth with downstream keys
...
- COMFYUI_BASE configurable via env var (default 127.0.0.1:8188)
- All /api/comfyui/ routes protected by downstream API Key or admin token
- docker/Dockerfile.comfyui + docker-compose.comfyui.yml for dev
- npm scripts: comfyui:install, comfyui:start, comfyui:stop
- .gitignore / .env.example updated
2026-05-17 13:04:46 +08:00
boos
2fe8d8528a
fix: ComfyUI Agent uses upstream API via env vars
...
- Read BOOSAPI_UPSTREAM_BASE/BOOSAPI_UPSTREAM_KEY from env
- Default to api.boos.lat/v1 with sk-boos4721
- Document: internal tool bypasses proxy /v1/ routing layer
- Update AGENTS.md with architecture decision
2026-05-17 04:23:20 +08:00
boos
5e3d4ee7d4
refactor: ComfyUI Agent - fix auth, upstream API, and SSE streaming
...
- Fix auth: use upstream API key (sk-boos4721) instead of local proxy
- Simplify SSE: remove nested SSE-in-SSE parsing, stream as plain text
- Fix frontend: add Authorization header from localStorage
- Fix ComfyUI nodes: default to api.boos.lat with correct API key
- All verified: frontend streaming works end-to-end with gpt-5.5
2026-05-17 04:17:12 +08:00
boos
b78b622f0c
docs: add subagent team collaboration strategy to Rust plan
...
Adds workstream map, parallel phase timing, shared contracts (AppState
extension, router composition, error type patterns), file ownership matrix,
subagent task template, git branch strategy, and coordinator workflow for
multi-agent parallel development.
2026-05-16 11:27:42 +08:00
boos
56b57f7ace
docs: add Rust backend rewrite plan
...
Phase-by-phase migration plan for replacing the Node.js/Fastify backend
with Axum + SQLx + tokio in Rust. 13 phases covering scaffold through
integration testing.
2026-05-16 11:26:12 +08:00
boos
f0188d3f68
docs: update plan with deployment doc improvements
2026-05-16 00:59:36 +08:00
boos
5bd847dd06
docs: complete Docker deployment documentation
...
- Fix all remaining metapi → boosapi references
- Full docker-compose.yml example with healthcheck
- .env file pattern with variable interpolation
- Complete environment variable reference table
- Docker Compose production checklist
- Redis/MySQL/PostgreSQL extension configs
- Resource limits example
- Nginx WebSocket support
- Admin panel IP restriction pattern
- Upgrade/rollback procedures with commands
Signed-off-by: Boos4721 <boos4721@icloud.com >
2026-05-16 00:54:54 +08:00
boos
0106dd3f5d
Full internal rename: metapi → boosapi
...
Rename all remaining internal protocol identifiers:
- x-metapi-* headers → x-boosapi-*
- metapi: reasoning prefix → boosapi:
- __metapi* runtime markers → __boosapi*
- file-metapi-* → file-boosapi-*
- METAPI_* env vars → BOOSAPI_*
- metapi_turn_state/metapi_mcp_item__ etc. → boosapi_*
- package.json name → boosapi
- Docker/deploy/k3s/docs references
46 files changed, 168 insertions, 170 deletions.
typecheck:web passes (0 new errors).
Signed-off-by: Boos4721 <boos4721@icloud.com >
2026-05-16 00:46:28 +08:00
boos
d2c16c3919
docs: add plan/ directory with 2026-05-15 dev report
...
- ComfyUI Agent conversational interface (SSE streaming)
- Metapi → BoosAPI full rebranding
- Gitea CI/CD runner on Alpine (OpenRC)
- Notification service architecture doc
Signed-off-by: Boos4721 <boos4721@icloud.com >
2026-05-16 00:37:38 +08:00
boos
0f3ff82147
fix: restore ComfyUI as workflow frontend with BoosAPI backend integration
...
ComfyUI is kept as a visual workflow editor (node-based). All actual
generation goes through BoosAPI's own API via boosapi_comfy_nodes.py
custom nodes (now defaulting to localhost:4000/v1).
Architecture:
BoosAPI (Node.js, port 4000)
├── /video-agent → iframe → ComfyUI (Python, port 8188, CPU)
│ └── custom_nodes/boosapi_comfy_nodes.py
│ └── calls BoosAPI /v1/... API
├── /comfyui-agent → chat interface (direct API calls)
└── /v1/... → API endpoints (LLM, image, TTS, video)
Signed-off-by: boos <boos@boos.lat >
2026-05-16 00:26:07 +08:00
boos
bd06698c8e
refactor: fully embed ComfyUI into BoosAPI, drop external dependency
...
- Remove comfyui.ts (external proxy to ComfyUI at :8188)
- Remove videoAgent.ts (redundant with comfyuiAgent)
- Remove ComfyUI Python process from Dockerfile (CPU-only, useless)
- Update boosapi_comfy_nodes.py default to localhost BoosAPI
- Clean up index.ts, App.tsx, desktop.ts registrations
- Sidebar: merge '视频工作台'/'视频助手' into single '视频助手' entry
Signed-off-by: boos <boos@boos.lat >
2026-05-16 00:21:18 +08:00
boos
9612bfcb3b
chore: remove .github folder
...
Signed-off-by: Boos4721 <boos4721@icloud.com >
2026-05-16 00:17:00 +08:00
boos
48eb5bddf9
chore: remove CI entirely
...
Signed-off-by: Boos4721 <boos4721@icloud.com >
2026-05-16 00:15:23 +08:00
boos
f92d0352a0
fix: lighter CI - single job, skip heavy builds, limit node memory
...
CI / Check (push) Failing after 14m24s
Signed-off-by: Boos4721 <boos4721@icloud.com >
2026-05-16 00:05:15 +08:00
boos
2f9f3614a2
fix: adapt CI for Gitea Actions, remove Docker/GitHub-specific workflows
...
CI / Test & Check (push) Failing after 1h9m26s
CI / Schema Check (SQLite) (push) Failing after 14m50s
- Rewrite ci.yml: replace GitHub Actions with run: steps, drop
Docker publish, MySQL/Postgres schema, and artifact upload jobs
- Delete codeql.yml (GitHub CodeQL, not available on Gitea)
- Delete docs-pages.yml (GitHub Pages specific)
- Delete release.yml (Docker Hub + GitHub Releases)
- Delete claude-code.md, claude-opus-4.7.md (unused)
Signed-off-by: Boos4721 <boos4721@icloud.com >
2026-05-15 22:54:30 +08:00
boos
cd42de2689
docs: add SaaS multi-tenant features and REST API overview
...
- Add SaaS multi-tenant section to both Chinese and English READMEs
- Add REST API endpoint reference table
- Add SaaS/plan highlights in subtitle and pain-point table
- Bilingual sync
Signed-off-by: Boos4721 <boos4721@icloud.com >
2026-05-15 22:35:16 +08:00
boos
7886a0ab8b
feat: add SaaS multi-tenant user management
...
CI / Detect Docs Changes (push) Has been skipped
CI / Test Core (push) Failing after 30s
CI / Build Web (push) Failing after 1m44s
CI / Typecheck (push) Failing after 57s
CI / Repo Drift Check (push) Failing after 17s
CI / Schema Check (SQLite) (push) Failing after 18s
CI / Schema Check (MySQL) (push) Failing after 18s
CI / Schema Check (Postgres) (push) Failing after 17s
CI / Build Docs (push) Has been cancelled
CI / Publish Docker Image (armv7) (push) Has been cancelled
CI / Publish Docker Manifest (push) Has been cancelled
CI / Publish Docker Image (amd64) (push) Has been cancelled
CI / Build Server (push) Has been cancelled
CI / Build Desktop (push) Has been cancelled
CI / Audit Production Dependencies (push) Has been cancelled
CI / Publish Docker Image (arm64) (push) Has been cancelled
CodeQL / Analyze (JavaScript/TypeScript) (javascript-typescript) (push) Has been cancelled
- Add organizations, organization_members, invitations, data_plans tables
- Add organizationService (CRUD, member management, plan limit check)
- Add invitationService (create, accept, cancel invitations)
- Add planService (plan limits, seed defaults)
- Add /api/organizations/* routes (org CRUD, members, invitations)
- Add /api/invitations/* routes (public invite lookup, accept)
- Seed default plans (free/pro/enterprise) on startup
Signed-off-by: Boos4721 <boos4721@icloud.com >
2026-05-15 21:25:53 +08:00