Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
c42cf8e
fix: 修复各个代码文件中对action参数的调用
genz27 Jan 27, 2026
deb4314
fix: 统一视频模型命名为官方格式
genz27 Jan 27, 2026
80ee8d7
Update docker-compose.yml
genz27 Jan 27, 2026
749a764
fix: 修复打码配置热加载和模型转换问题
genz27 Jan 27, 2026
0f621e0
Merge branch 'main' of https://github.com/TheSmallHanCat/flow2api
genz27 Jan 27, 2026
6e0803d
feat: 添加插件自动启用配置字段
TheSmallHanCat Jan 28, 2026
56f75f1
Update URL for batch async video upsampling
Zluo003 Jan 28, 2026
a570ba7
fix: 修复单帧图生视频 model_key 转换逻辑
CrewS Feb 1, 2026
f444c6e
Merge pull request #60 from CrewS/fix/i2v-single-frame-model-key
genz27 Feb 3, 2026
b633567
Merge pull request #57 from Zluo003/patch-1
genz27 Feb 3, 2026
8358864
feat: 添加浏览器打码依赖自动安装和Docker环境检测
genz27 Feb 4, 2026
5817830
feat: 添加浏览器打码依赖自动安装和Docker环境检测
genz27 Feb 4, 2026
260483d
refactor: 将有头浏览器打码从 patchright 改为 playwright
genz27 Feb 4, 2026
27c62df
chore: 移除 .lh 缓存目录并添加到 .gitignore
genz27 Feb 4, 2026
f23cd7d
feat: 新增模型与请求体变化并同步README
genz27 Feb 27, 2026
e5ef238
1.修复新模型参考图BUG
genz27 Feb 27, 2026
cb50ea0
feat: 新增验证码分数测试并优化浏览器打码流程
genz27 Feb 28, 2026
7ecc44f
优化基于负载的令牌并发调度
genz27 Mar 2, 2026
da72ff4
性能优化:日志按需加载与 Token/统计链路优化
genz27 Mar 3, 2026
cc6036a
修复: 浏览器打码500自愈与后台启动
genz27 Mar 3, 2026
6d4cb8b
feat: 支持token级打码代理并完善有头Docker双镜像发布
genz27 Mar 3, 2026
d4bb151
fix: sync R2V request body with upstream V2 payload
genz27 Mar 6, 2026
e3a2615
feat: 优化远程打码并发调度与观测能力
genz27 Mar 6, 2026
a756954
fix: sync R2V landscape model key and image limits
genz27 Mar 6, 2026
c2ec39e
feat: keep headed browser sessions alive
genz27 Mar 7, 2026
bd7f93f
chore: sync changes
genz27 Mar 7, 2026
95b9219
chore: sync changes
genz27 Mar 7, 2026
f401f83
feat: improve local headed browser scheduling
genz27 Mar 7, 2026
d98f309
chore: ignore headed browser pid files
genz27 Mar 7, 2026
58b388d
feat: tighten headed browser lifecycle
genz27 Mar 7, 2026
d5b0688
Remove local launch throttling
genz27 Mar 7, 2026
8dcb50e
feat: support disabling cache cleanup
genz27 Mar 9, 2026
b44c70a
fix: enforce tier-based generation limits
genz27 Mar 9, 2026
aa68501
feat: improve generation log status handling
genz27 Mar 9, 2026
bb42e79
feat: expand token project pooling and refine manage ui
genz27 Mar 9, 2026
eee5075
fix: improve browser captcha slot allocation
genz27 Mar 9, 2026
d423525
fix: unstick generation logs and retry TLS failures
genz27 Mar 13, 2026
3228457
feat: add model name resolver for Gemini generationConfig parameter-b…
youyao666 Mar 14, 2026
9f1cafe
Merge pull request #83 from youyao666/feat/model-name-resolver
genz27 Mar 14, 2026
c579630
Support Gemini official generateContent format
genz27 Mar 14, 2026
26dd6f2
Merge pull request #84 from TheSmallHanCat/pr-83
genz27 Mar 14, 2026
13cace4
fix: simplify image fallback and log summaries
genz27 Mar 14, 2026
748505a
fix: improve gemini image rendering and log previews
genz27 Mar 14, 2026
97d20e7
fix: correct directory name typo in README local deployment instructions
Mar 16, 2026
606e1d4
Merge pull request #87 from fahimanwer/fix/readme-typo
genz27 Mar 16, 2026
db559a8
fix: improve gemini compatibility and cache flow
genz27 Mar 16, 2026
bacd494
feat: add public health check endpoint
pdtkts Mar 17, 2026
ce38bdb
Merge pull request #90 from pdtkts/main
genz27 Mar 17, 2026
848115b
feat: 支持token顺序轮询模式
TheSmallHanCat Mar 18, 2026
dd09e54
refactor: use curl_cffi for remote browser control plane
genz27 Mar 23, 2026
cbf9cd1
fix: harden sqlite concurrency and media cache delivery
genz27 Mar 24, 2026
f3eb693
Fix remote browser JSON control-plane delivery
genz27 Mar 29, 2026
5d8c0d4
feat: warm remote browser pool and tighten timeouts
genz27 Mar 29, 2026
b7859dd
fix: fallback when httpx is unavailable
genz27 Mar 29, 2026
3069d2c
优化 personal 模式打码性能以支持高并发
genz27 Mar 30, 2026
03acb44
feat: 添加 personal 模式标签页配置和热更新支持
genz27 Mar 30, 2026
671a40e
Delete tests directory
genz27 Mar 30, 2026
a12c02c
Optimize captcha browser slot pooling
genz27 Mar 30, 2026
0d61487
Persist captcha pool settings in database
genz27 Mar 30, 2026
d150c04
feat: personal proxy support and global socks5h protocol
432539 Mar 30, 2026
896e4cb
feat: 为 Personal 模式添加完整代理支持
genz27 Mar 30, 2026
a8fce3e
chore: 将端口从 8088 改回 8000
genz27 Mar 30, 2026
def4d7e
Merge pull request #104 from 432539/feat/personal-proxy-support
genz27 Mar 30, 2026
9423f2e
chore: 本地配置端口改回 8000
genz27 Mar 30, 2026
94e8134
docs: 更新管理页面代理配置提示信息
genz27 Mar 30, 2026
d209fe7
feat: Add dedicated proxy configuration for Personal mode in admin UI
genz27 Mar 30, 2026
3b76631
refactor: Merge Personal mode pool size and max tabs into one row
genz27 Mar 30, 2026
ef4e9b3
修复外部资源地址返回0.0.0.0和默认8000端口问题
shskjw Mar 30, 2026
704bc64
Merge pull request #107 from shskjw/main
genz27 Mar 31, 2026
69a355e
feat: 添加内置模型测试页面 (/test)
ladydd Mar 31, 2026
d362189
适配generationConfig
Mar 31, 2026
475c998
fix: harden personal browser startup and warmup fallback
genz27 Mar 31, 2026
ae1b0d4
Merge pull request #109
genz27 Mar 31, 2026
c8f13b1
Merge pull request #108
genz27 Mar 31, 2026
0272d07
fix: secure test page defaults and fallback catalog
genz27 Mar 31, 2026
65920a3
Merge pull request #108
genz27 Mar 31, 2026
7a86c01
fix: prefer cache_base_url for cached file urls
genz27 Mar 31, 2026
9b83d45
fix: stabilize personal browser startup and cache cleanup sync
genz27 Apr 2, 2026
5d18293
chore: normalize line endings for issue fixes
genz27 Apr 2, 2026
d37f98b
fix: avoid impersonation for captcha API JSON requests (#110)
zy6p Apr 2, 2026
5702e1e
fix(personal): 修复 token 删除外键并增强浏览器自恢复
genz27 Apr 2, 2026
4b25933
fix(personal): 收口 nodriver 断连并降低异常噪音
genz27 Apr 2, 2026
45f5582
fix(personal): 收口 websocket 正常关闭异常
genz27 Apr 2, 2026
bf5f85a
perf(personal): 压缩内置打码热路径延迟
genz27 Apr 2, 2026
4f2c752
perf(personal): 降低内置打码热路径开销
genz27 Apr 2, 2026
6e5d7cb
fix(personal): 修复 token 结果解析并收口恢复竞态
genz27 Apr 2, 2026
2029b55
feat(video): 增加 veo 3.1 lite 模型支持
genz27 Apr 2, 2026
6be3bd7
feat(admin): 增加测试页面导航入口
genz27 Apr 2, 2026
01736a9
fix(admin): 禁用验证码分数测试入口
genz27 Apr 2, 2026
bcef0fb
feat(docker): 切换无头浏览器模式,新增 beta 镜像构建
genz27 Apr 3, 2026
53565ec
Beta (#116)
genz27 Apr 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions .github/workflows/docker-publish-beta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Build and Push Beta Docker Image

on:
push:
branches:
- beta
workflow_dispatch:

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-and-push-beta:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

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

- name: Log in to Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=beta

- name: Build and push Docker image (beta)
uses: docker/build-push-action@v5
with:
context: .
file: Dockerfile.headed
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,scope=beta
cache-to: type=gha,mode=max,scope=beta
77 changes: 77 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Build and Push Docker Image

on:
push:
branches:
- main
tags:
- 'v*'
pull_request:
branches:
- main
workflow_dispatch:

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-and-push:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- variant: standard
dockerfile: Dockerfile
image_suffix: ""
cache_scope: standard
- variant: headed
dockerfile: Dockerfile.headed
image_suffix: -headed
cache_scope: headed
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

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

- name: Log in to Container Registry
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels)
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}${{ matrix.image_suffix }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest,enable={{is_default_branch}}

- name: Build and push Docker image (${{ matrix.variant }})
uses: docker/build-push-action@v5
with:
context: .
file: ${{ matrix.dockerfile }}
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,scope=${{ matrix.cache_scope }}
cache-to: type=gha,mode=max,scope=${{ matrix.cache_scope }}
11 changes: 10 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ logs.txt
# IDE
.vscode/
.idea/
.lh/
*.swp
*.swo
*~
Expand All @@ -54,7 +55,15 @@ logs.txt
*.cache

browser_data
browser_data_rt

data
tmp/
config/setting.toml
config/setting_warp.toml
config/setting_warp.toml
config/setting_warp_example.toml

# 测试文件
test_*
tests/__pycache__/
*.har
35 changes: 2 additions & 33 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,9 @@ FROM python:3.11-slim

WORKDIR /app

# 使用清华镜像源加速 apt (Debian bookworm)
RUN sed -i 's|deb.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/debian.sources \
&& sed -i 's|security.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/debian.sources

# 安装 Playwright 所需的系统依赖
RUN apt-get update && apt-get install -y \
libnss3 \
libnspr4 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libxkbcommon0 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libasound2 \
libpango-1.0-0 \
libcairo2 \
&& rm -rf /var/lib/apt/lists/*

# 安装 Python 依赖(使用清华 PyPI 镜像)
# 安装 Python 依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt \
-i https://pypi.tuna.tsinghua.edu.cn/simple/ \
--trusted-host pypi.tuna.tsinghua.edu.cn

# 设置 Playwright 下载镜像(使用 npmmirror)
ENV PLAYWRIGHT_DOWNLOAD_HOST=https://registry.npmmirror.com/-/binary/playwright

# 安装 Playwright 浏览器
RUN playwright install chromium
RUN pip install --no-cache-dir --root-user-action=ignore -r requirements.txt

COPY . .

Expand Down
22 changes: 22 additions & 0 deletions Dockerfile.headed
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM python:3.11-slim

WORKDIR /app

ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
ALLOW_DOCKER_HEADED_CAPTCHA=true \
PLAYWRIGHT_BROWSERS_PATH=0

# 在镜像构建阶段预装 Playwright Chromium,供 personal/browser 模式复用
COPY requirements.txt ./

RUN pip install --no-cache-dir --root-user-action=ignore -r requirements.txt \
&& python -m playwright install --with-deps chromium

COPY . .
COPY docker/entrypoint.headed.sh /usr/local/bin/entrypoint.headed.sh
RUN sed -i 's/\r$//' /usr/local/bin/entrypoint.headed.sh && chmod +x /usr/local/bin/entrypoint.headed.sh

EXPOSE 8000

CMD ["/usr/local/bin/entrypoint.headed.sh"]
Loading