106 Commits

Author SHA1 Message Date
genz27
54a1342e1f fix(flow): 修复 project 绑定图片上传回退 2026-04-06 11:18:56 +08:00
genz27
73af8b5107 fix(captcha): 复用 playwright chromium 并移除 DISPLAY 依赖 2026-04-06 11:18:28 +08:00
genz27
bcef0fba0f feat(docker): 切换无头浏览器模式,新增 beta 镜像构建
- browser_captcha_personal 改为 headless 模式
- Dockerfile.headed 去掉 xvfb/fluxbox 虚拟显示器依赖
- 新增 beta 分支 CI,推送 ghcr.io flow2api:beta 镜像
- .gitignore 忽略测试文件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 17:06:47 +08:00
genz27
01736a9687 fix(admin): 禁用验证码分数测试入口 2026-04-02 20:13:12 +08:00
genz27
2029b5578e feat(video): 增加 veo 3.1 lite 模型支持 2026-04-02 17:43:00 +08:00
genz27
6e5d7cb9e9 fix(personal): 修复 token 结果解析并收口恢复竞态 2026-04-02 17:17:24 +08:00
genz27
4f2c7520e1 perf(personal): 降低内置打码热路径开销 2026-04-02 16:19:04 +08:00
genz27
bf5f85ac71 perf(personal): 压缩内置打码热路径延迟 2026-04-02 16:16:10 +08:00
genz27
45f558213e fix(personal): 收口 websocket 正常关闭异常 2026-04-02 15:58:08 +08:00
genz27
4b259331e5 fix(personal): 收口 nodriver 断连并降低异常噪音 2026-04-02 15:16:59 +08:00
genz27
5702e1e182 fix(personal): 修复 token 删除外键并增强浏览器自恢复 2026-04-02 14:49:33 +08:00
comet
d37f98bdce fix: avoid impersonation for captcha API JSON requests (#110)
* fix: avoid impersonation for captcha API JSON requests

* fix: avoid impersonation for captcha API JSON requests
2026-04-02 14:11:44 +08:00
Genz
5d18293f1e chore: normalize line endings for issue fixes 2026-04-02 14:10:00 +08:00
Genz
9b83d4595c fix: stabilize personal browser startup and cache cleanup sync 2026-04-02 14:07:14 +08:00
genz27
7a86c019db fix: prefer cache_base_url for cached file urls 2026-03-31 16:44:30 +08:00
genz27
c8f13b108e Merge pull request #108 2026-03-31 14:51:05 +08:00
genz27
ae1b0d4af7 Merge pull request #109 2026-03-31 14:43:33 +08:00
genz27
475c9982da fix: harden personal browser startup and warmup fallback 2026-03-31 13:57:45 +08:00
wx-11
d36218918d 适配generationConfig 2026-03-31 12:22:05 +08:00
ladydd
69a355e3c5 feat: 添加内置模型测试页面 (/test) 2026-03-31 11:39:08 +08:00
shskjw
ef4e9b3fa0 修复外部资源地址返回0.0.0.0和默认8000端口问题 2026-03-31 00:27:37 +08:00
genz27
896e4cbb60 feat: 为 Personal 模式添加完整代理支持
- 支持 HTTP/HTTPS/SOCKS5 代理
- 支持带认证的代理(通过 Chrome 扩展)
- 代理配置优先级: 验证码代理 > 全局代理
- 自动清理临时扩展目录
- 完善代理相关日志

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 17:12:59 +08:00
genz27
0d614870af Persist captcha pool settings in database 2026-03-30 15:43:15 +08:00
genz27
a12c02c8ec Optimize captcha browser slot pooling 2026-03-30 15:43:00 +08:00
genz27
03acb4484d feat: 添加 personal 模式标签页配置和热更新支持
主要改动:
- 添加 personal_max_resident_tabs 和 personal_idle_tab_ttl_seconds 配置项
- 支持在管理页面动态修改标签页数量和空闲超时
- 实现配置热更新,无需重启服务
- 优化浏览器启动参数,窗口不占用前台
- 增强日志输出,显示标签页使用情况
- 更新配置说明,明确标签页与 project_id 的关系

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 11:02:08 +08:00
genz27
3069d2c85e 优化 personal 模式打码性能以支持高并发
主要改进:
- 支持5个并发标签页(原1个)
- 添加 LRU 淘汰策略和空闲标签页自动回收
- 优化页面加载和 reCAPTCHA 等待时间(25秒 → 12.5秒)
- 修复 browser.tabs 属性调用错误
- 改用临时目录避免浏览器目录锁定
- 添加 invalidate_token() 方法支持外部清除缓存
- 优化标签页复用逻辑,避免并发冲突
- 双重检查锁定模式减少锁竞争

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 09:35:28 +08:00
genz27
b7859dda47 fix: fallback when httpx is unavailable 2026-03-30 01:56:53 +08:00
genz27
5d8c0d41e2 feat: warm remote browser pool and tighten timeouts 2026-03-30 01:50:02 +08:00
genz27
f3eb69308d Fix remote browser JSON control-plane delivery 2026-03-29 18:49:16 +08:00
genz27
cbf9cd1038 fix: harden sqlite concurrency and media cache delivery 2026-03-25 01:46:02 +08:00
genz27
dd09e5497a refactor: use curl_cffi for remote browser control plane 2026-03-24 02:01:22 +08:00
TheSmallHanCat
848115bfab feat: 支持token顺序轮询模式 2026-03-18 23:52:22 +08:00
nhucuc9999
bacd49468b feat: add public health check endpoint
Add GET /health endpoint (no auth required) returning backend_running
status and has_active_tokens boolean for uptime monitoring.
2026-03-17 13:47:51 +07:00
genz27
db559a82c5 fix: improve gemini compatibility and cache flow
1. add Gemini /models and /v1beta/models discovery endpoints for newapi compatibility

2. persist tmp cache in Docker and lock cache_timeout=0 behavior with regression tests

3. refine image generation status flow to show captcha verification after uploads
2026-03-16 21:45:34 +08:00
genz27
748505a7d3 fix: improve gemini image rendering and log previews 2026-03-14 19:33:07 +08:00
genz27
13cace4911 fix: simplify image fallback and log summaries 2026-03-14 17:38:00 +08:00
genz27
c5796307f9 Support Gemini official generateContent format 2026-03-14 16:42:26 +08:00
TheSmallHanCat
32284574ed feat: add model name resolver for Gemini generationConfig parameter-based conversion
Add a preprocessing layer before request handling that converts simplified
model names to internal MODEL_CONFIG keys based on generationConfig parameters
(aspectRatio, imageSize).

Changes:
- New src/core/model_resolver.py: model name resolution engine
  - IMAGE_BASE_MODELS: 4 base image model aliases (gemini-2.5-flash-image,
    gemini-3.0-pro-image, gemini-3.1-flash-image, imagen-4.0-generate-preview)
  - VIDEO_BASE_MODELS: 13 base video model aliases with landscape/portrait mapping
  - Supports Gemini ratio formats (16:9, 9:16, 1:1, 4:3, 3:4) and named formats
  - Supports imageSize (2k, 4k) for compatible models
  - Graceful fallback: unsupported ratio/size degrades to defaults
  - Passthrough: existing MODEL_CONFIG keys and unknown models unchanged

- Modified src/core/models.py: extended ChatCompletionRequest
  - Added ImageConfig, GenerationConfigParam Pydantic models
  - Added generationConfig, contents optional fields
  - Enabled extra='allow' for extra_body passthrough compatibility

- Modified src/api/routes.py: integrated resolver
  - Added resolve_model_name() call before request processing
  - Added /v1/models/aliases endpoint to list available aliases

Verified: 64/64 model key mappings match MODEL_CONFIG, 15 edge case tests pass.
2026-03-14 12:12:06 +08:00
genz27
d4235256dd fix: unstick generation logs and retry TLS failures 2026-03-13 21:45:30 +08:00
genz27
eee5075cc2 fix: improve browser captcha slot allocation 2026-03-10 10:59:57 +08:00
genz27
bb42e795c3 feat: expand token project pooling and refine manage ui 2026-03-10 10:59:57 +08:00
genz27
aa68501924 feat: improve generation log status handling 2026-03-10 10:59:57 +08:00
genz27
b44c70a2e9 fix: enforce tier-based generation limits 2026-03-09 18:18:56 +08:00
genz27
8dcb50ee69 feat: support disabling cache cleanup 2026-03-09 17:27:04 +08:00
genz27
d5b0688db5 Remove local launch throttling 2026-03-08 03:15:09 +08:00
genz27
58b388df30 feat: tighten headed browser lifecycle 2026-03-08 02:52:24 +08:00
genz27
95b9219123 chore: sync changes 2026-03-08 02:24:03 +08:00
genz27
bd7f93fc58 chore: sync changes 2026-03-08 00:16:45 +08:00
genz27
c2ec39e2ed feat: keep headed browser sessions alive 2026-03-07 23:00:33 +08:00
genz27
a756954e33 fix: sync R2V landscape model key and image limits 2026-03-07 00:53:45 +08:00