Commit Graph
250 Commits
Author SHA1 Message Date
周小舟andClaude Opus 5.5 fda1a5751c fix(studio): keep rendering state alive and lower encode threads
Automatic generation, platform append and retry wrote a running analysis
without the process instance, so every read marked it as 'service restarted'
while renders were still progressing. Record the instance. Real-source runs
also peaked above 500% CPU with three threads per ffmpeg stage; cap at a
quarter of the cores.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:56:40 +08:00
周小舟andClaude Opus 5.5 3b07f0a5e3 feat(studio): copy share caption and ask for a rating after download
Completed variants get a Copy caption action (title plus 'Made with AutoClip'
and the repository link) for users to paste when they post. After a
successful download, at most once per project and once a week, a card asks
whether the video is usable (three levels) and invites use-case posts in
GitHub Discussions. Analytics carry only the share target and rating enums;
no text, titles or links leave the app.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:56:36 +08:00
周小舟andClaude Opus 5.5 84f0877136 feat(studio): skip our subtitles when the source already has them
Sources such as WIRED interviews ship with captions burned into the picture,
and automatic output stacked a second, often misrecognized, track on top.
Detect burned captions locally from twelve lower-frame samples (bright glyphs
with dark outlines whose shape changes over time, so static logos do not
count). When found, automatic variants keep subtitles off and vertical crop
layouts fall back to the full frame so the original lines are not cut.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:44:11 +08:00
周小舟andClaude Opus 5.5 2c56a85312 fix(platforms): enforce only real platform length limits
The registry treated 90 s as a hard cap for Douyin, TikTok, Reels and
Xiaohongshu, so legacy export truncated or rejected complete moments even
though those platforms accept much longer uploads. Split guidance
(recommended_max_duration_sec) from the hard limit (max_duration_sec). Only
YouTube Shorts keeps a hard cap, updated from 60 s to its current 180 s;
automatic Shorts variants over it are trimmed at the last subtitle sentence
end and the card says so.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:38:56 +08:00
周小舟andClaude Opus 5.5 757bc1b565 fix(branding): keep the outro visible for its full second
Studio output uses a 1/16000 video time base while the outro was encoded with
ffmpeg defaults. Concat by stream copy kept each file's own timestamps, so the
outro's 30 frames collapsed into about 2 ms and players showed only a silent
tail. Encode the outro with the content's timescale, frame rate and audio
layout, and assert outro frames span about one second.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:27:25 +08:00
周小舟andClaude Opus 5.5 d31425ffc2 feat(i18n): translate fast-output copy and platform names
Replace Chinese placeholders for the quick-output flow in en, es, fr, ja, ko,
pt and ru. Platform names now come from one localized helper instead of the
backend's Chinese strategy labels, and generation skip reasons are translated.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:22:45 +08:00
周小舟andClaude Opus 5.5 25cb051010 fix(studio): render every automatic variant with bounded CPU
Real-source acceptance showed a 17-minute talk producing 8 variants and a
39-minute talk producing 15, but the per-project cap of three active exports
failed the whole generation on the fourth submit. Remove the cap so the source
alone decides how many outputs exist, and queue all variants on a dedicated
single-worker render executor. ffmpeg decode, filter and encode threads are
capped at a third of the cores and run at low priority so the machine stays
usable.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:22:34 +08:00
周小舟andClaude Opus 5.5 06c945bb76 feat(publish): route publishing through completed output variants
Upload-Post and Bilibili accept an optional output_variant_id and reuse the
finished immutable MP4 instead of re-exporting. Landscape variants are refused
for vertical-only targets, Bilibili only accepts bilibili variants, and the
result card links each completed variant to the publish page.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 19:55:57 +08:00
周小舟andClaude Opus 5.5 1dc9532788 feat(studio): preview completed output variants
Show completed immutable render jobs directly in the quick-output result cards while keeping queued and failed states actionable.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 19:26:45 +08:00
周小舟andClaude Opus 5.5 b213975929 feat(analytics): observe quick output outcomes
Track bounded platform generation outcomes and reuse events without content identifiers, and explain ineligible platform outputs on the results page.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 16:33:50 +08:00
周小舟andClaude Opus 5.5 3bcc7365e8 feat(studio): append and retry output variants
Reuse saved automatic drafts to produce additional platform versions without rerunning content analysis, and retry failed output variants independently from completed clips.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 16:08:11 +08:00
周小舟andClaude Opus 5.5 9d53fa60e3 feat(render): append optional AutoClip outro
Finalize automatic platform variants with a one-second Made with AutoClip outro while preserving legacy manual exports. Separate branded output caching and cover video/audio preservation with ffmpeg regressions.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 15:41:09 +08:00
周小舟andClaude Opus 5.5 a77cbdc96d feat(studio): make platform output the default flow
Let users choose destinations at import, start generation immediately, and view automatic output variants without passing through manual plan confirmation. Preserve Studio for deliberate edits.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 14:35:22 +08:00
周小舟andClaude Opus 5.5 6b196f745d feat(studio): auto-generate platform variants
Allow opted-in imports to produce isolated platform output variants and queue existing renders without the confirmation page. Preserve legacy confirmation behavior and aggregate variant terminal states.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 13:50:01 +08:00
周小舟andClaude Opus 5.5 c689954ebe feat(studio): add platform generation contract
Persist platform and branding choices in a versioned workspace contract while preserving the existing confirmation flow. Fix async analysis failures so error state survives exception cleanup.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 13:29:43 +08:00
周小舟andClaude Opus 5.5 ea66c329a3 feat: centralize platform output strategies
Add a versioned platform strategy registry, preserve legacy export presets, and expose strategy capabilities for the upcoming quick-generation flow. Record the project diagnosis and first work-package progress.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 13:13:45 +08:00
Kris K c262575211 设置页重排 + 首次引导 + 示例项目 + Studio 按镜头取景 (#232)
设置页重排 + 首次引导 + 示例项目 + Studio 按镜头取景
2026-09-30 11:30:48 +08:00
周小舟andCursor af718937f0 fix: 示例项目原片 source.mp4 加入版本库(原被 *.mp4 忽略,CI 与打包都缺文件)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 11:25:55 +08:00
周小舟andCursor 7aa4e9686f docs: CHANGELOG 记录设置重排、首次引导、示例项目与 Studio 取景改动
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 11:20:14 +08:00
周小舟andCursor 2da2399521 feat(studio): 预览播放条改为成片自身时间轴(0 到片段时长),不再暴露整段原片进度
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 11:10:15 +08:00
周小舟andCursor 65045ded5e fix(studio): 预览拖到成片范围之前自动吸回起点,脚注标出成片取用区间
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 11:02:43 +08:00
周小舟andCursor 83555a1030 feat(studio): 按镜头取景——先切镜再分类,无人物镜头改为完整画面
- 取景以镜头为单位:先用 ffmpeg 场景切换分数找硬切,轨迹点落在切点上,
  不再按固定 2.5s 采样 + 滞后消抖(切镜后最多滞后 5s 裁到空景的问题)
- 每个镜头分类:有人脸 → 对准说话人(长镜头内部仍可切换);
  多数采样无人脸(引用卡、PPT、空镜)→ fit:完整画面 + 模糊背景,不再切掉两侧文字
- 整条素材都没有人物时不改动用户选的构图
- CropPoint 增加 mode(crop|fit),渲染用 split/overlay+enable 在同一镜头链里按时间切换
- 编辑器:预览按镜头切换 contain/cover;取景行显示「镜头 n/N」,可把当前镜头单独设为
  对准人物 / 完整画面,滑块只改当前镜头,不再清掉整条轨迹
- 过滤过小的人脸;YuNet 检测器按帧尺寸复用,关掉 OpenCV 的 DNN 警告

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 10:57:11 +08:00
周小舟andCursor a19cac4392 feat: 重排 AI 设置、首次引导弹窗、示例项目与 Studio 编辑器重做
设置
- AI 模型页拆为 AI 服务 / 字幕转写 / 封面 / 高级四节,逻辑抽到 modelSettingsLogic + useModelSettings,
  ProviderFields / ModelPicker 独立组件;首次配置默认开启画面识别与 AI 封面(参考视频画面)
- 供应商分组「模型聚合站」改为「推荐」,保留赞助说明
- 首页首次进入弹出「连接 AI 服务」对话框(FirstRunSetup),未连接时导入被拦下并引导
- 修复对话框内下拉层级、Esc 误关闭

示例项目
- 内置 Sam Altman 访谈三段拼接原片 + 字幕 + 封面(backend/assets/example),
  一键创建已完成项目,携带来源链接与元数据;卡片 / 详情页标出示例与来源

Studio / 发布
- 编辑器右侧面板按 DESIGN.md 重做(DraftSettingsPanel):字幕样式改为全片四种带预览的样式,
  片头文字降为可选并用视觉缩略图选择;左侧播放器吸顶随滚动可见
- 竖屏裁切增加说话人跟随自动取景(YuNet 人脸 + 口部运动,按需安装 OpenCV 运行时),
  渲染支持逐段 crop 轨迹
- 导入确认页去掉重复的分析方式提问,控件统一 Row/Segmented;发布页文案去术语化,
  封面入口补齐并默认自动生成

其他
- 后端 ai-model-settings 文档模型、云端转写、模型目录等配套服务与测试
- 8 种语言文案同步

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 10:26:39 +08:00
周小舟andClaude Opus 5.5 9fc99136ea feat(settings): 模型里标注多模态 / 仅文字,视觉和封面生图跟随同一个服务商
- 模型下拉每项标「多模态 / 仅文字」(model_catalog.supports_vision)。能不能看画面由所选
  模型决定,不再单独配置视觉模型、不再做图片理解测试;仅文字模型自动只用字幕。
- 分析方式默认「智能选择」,选智能 / 视觉即允许需要时发送抽样画面,卡片上写明花费;
  去掉单独的「导入时视觉初筛」开关。已保存过偏好的用户保持原选择。
- 封面生图并入「模型」:默认同一服务商和 Key(通义→通义万相、Seed→Seedream、
  OpenAI→gpt-image、Infistar 可选 gpt-image / dall-e / Seedream / Flux / Imagen / 万相),
  可直接输入模型 ID;服务商没接入生图时可「用其他服务生图」就地填写,不再是死路。
  旧版单独配置的视觉 / 生图保持可用,并给出切换为跟随模型的入口。
- 设置页加「‹ 项目」返回。通义常用列表加入 qwen-vl-max / qwen-vl-plus。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 18:43:02 +08:00
周小舟andClaude Opus 5.5 c44da9c36f feat(settings): 分析方式、模型、视觉理解、转写、封面生图合成「AI 分析」一页
设置导航从 8 项减到 4 项(AI 分析 / 发布 / 应用 / 反馈),AI 分析只有一个保存。旧的
?section=model|analysis|vision|speech|cover 链接仍然有效,会滚到对应小节。

- 视觉理解默认复用文本模型(vision mode=text_model):不用再配一遍地址、Key、模型;
  文本模型不能看图时再「另选」。已保存过独立视觉配置、或 .env 配了视觉地址的老用户保持原样。
  「测试图片理解」通过后记下端点,换了模型或地址即回到未验证。
- 分析方式改成三张卡片,逐项写明效果、花费和适合的素材;视觉分析明确说明图片 token
  通常是字幕的数倍。付费视觉初筛仍需用户单独打开。
- 封面:去掉「校对模型」,改用视觉理解那一套读图校对标题(手填过的沿用);生图提供商
  与文本模型同一家(通义万相/Seedream/OpenAI 兼容含 Infistar)时自动复用 Key,且不写入封面配置。
- 转写收进「无字幕时的转写」折叠块;切片参数收进折叠块。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 18:02:27 +08:00
周小舟andClaude Opus 5.5 b7f7e11bd5 feat(settings): 提供商改为分组可搜索下拉,赞助商用独立卡片
提供商会越来越多,分段条放不下(11 个已把中文挤到两行)。改成数据驱动的下拉:
PROVIDERS 每项标 group(赞助合作 / 云端模型 / 兼容接口 / 本机运行),
选项显示名称 + 一行说明,可按名称搜索;新增一家只加一条注册项。
赞助商在下拉置顶,并在提供商下方显示发丝边卡片:一句说明 + 推广分成披露 + 注册 / 接入说明。
没有默认模型的提供商(Infistar)模型框不再显示 qwen-plus 占位。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 17:27:55 +08:00
周小舟 60c0185d6f Merge remote-tracking branch 'origin/main' into feat/infistar-provider 2026-09-29 17:20:55 +08:00
Kris K 201435daac Merge pull request #227 from zhouxiaoka/fix/p0-security-windows-import
fix: P0 安全收紧、Windows 升级文件占用、链接导入 ffmpeg 与进度
2026-09-29 17:20:24 +08:00
周小舟andClaude Opus 5.5 e25b00bc13 feat(settings): 模型设置新增赞助合作伙伴 Infistar 无限星河预设
- 后端 cloud_presets 新增 infistar:预设 https://infistar.cc/v1,独立 infistar_api_key
  (含 INFISTAR_API_KEY 环境变量);CLI / MCP 支持 --provider infistar。
- 多模型网关不内置型号名单、不预设默认模型:填好 Key 后从 /v1/models 拉取,
  选中的 gpt / deepseek / gemini 等型号不会被当成「别家型号」重置。
- 设置页选 Infistar 时显示「注册并领取体验额度」「接入说明」,并注明含推广分成;
  新增 sponsor_link_opened 事件(只记录入口,不含个人信息)。八语文案同步。
- 接入说明补充新版一步选择的流程,保留旧版手动填写方式。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 17:12:12 +08:00
周小舟andClaude Opus 5.5 e9f6d44bbd ci(windows): 冒烟脚本强制 UTF-8 输出,CI 控制台 cp1252 打印中文会崩
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 17:04:53 +08:00
周小舟andClaude Opus 5.5 0529d5e15a ci(windows): 修复冒烟读注册表安装目录带引号;抽出共用脚本,可复用已有安装包重跑
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 16:47:04 +08:00
周小舟andClaude Opus 5.5 00909092fd docs(release): 没有 Windows 真机时的三层验收:CI 冒烟、Mac 上的 Windows 虚拟机、Pre-release 测试者
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 16:16:22 +08:00
周小舟 055895cc70 Merge remote-tracking branch 'origin/main' into fix/p0-security-windows-import 2026-09-29 16:15:41 +08:00
周小舟andClaude Opus 5.5 d0a520366f ci(windows): 安装包覆盖升级 + 安装后运行时冒烟,替代暂缺的 Windows 真机
windows-latest 上先静默装上一个正式版,起一个残留 python.exe 占住 _asyncio.pyd,
再静默覆盖安装本次构建:安装器必须结束残留进程且写入新文件。随后用安装目录自带的
Python 跑 verify_windows_install.py:内置 ffmpeg 生成/切片/探测(含中文文件名)、
yt-dlp 拿到内置 ffmpeg、桌面后端 /health 与项目列表、来源守卫放行 tauri.localhost。
tag 发版的 release job 依赖这个冒烟通过。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 16:14:10 +08:00
Kris K 3d1985aa33 Merge pull request #228 from zhouxiaoka/chore/release-process
chore(release): 先发 Pre-release,冒烟和观察期后再转正;重写发版清单
2026-09-29 16:06:59 +08:00
周小舟andClaude Opus 5.5 cf4f3ab7e0 chore(release): 打 tag 先出 Pre-release,冒烟和观察期后再转正
- desktop-build.yml 的 release job 改为 prerelease + make_latest=false;应用内更新读
  releases/latest/download/latest.json,Pre-release 不会推给用户。官网通知移到转正时。
- 新增 promote-release.yml:promote 转正并通知官网;halt 把坏版本撤回 Pre-release,
  让应用内更新和官网退回上一个好版本。
- 重写 RELEASE_CHECKLIST.md:问题分级、每周一版、热修从出问题的 tag 拉分支、
  双平台真机冒烟、观察期、坏版本止血流程。CLAUDE.md 加入发版约束。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 16:01:23 +08:00
周小舟andClaude Opus 5.5 f6ca9e6347 test: 测试改用临时数据库,修正 pytest.ini 节名
默认库路径相对 cwd,test_repositories 的 reset_database() 会清空开发者本机 data/autoclip.db。
pytest.ini 的 [tool:pytest] 在 ini 文件里无效,整份配置此前被忽略。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 15:50:40 +08:00
周小舟andClaude Opus 5.5 a673c8227c fix(import): 链接导入使用内置 ffmpeg,下载阶段显示真实进度
yt-dlp 不读 AUTOCLIP_FFMPEG_PATH,桌面包的 ffmpeg 不在 PATH 上,Windows 合并音视频失败。
旧 YouTube/B 站下载与字幕兜底都传 ffmpeg_location 并统一合并为 mp4。
旧链路进度在 30→60 之间按真实字节推进;Studio 下载在「准备素材」后显示百分比。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 15:50:40 +08:00
周小舟andClaude Opus 5.5 026e0ef9ff fix(windows): 覆盖安装前结束旧版本残留的后端进程 (#224)
NSIS PREINSTALL/PREUNINSTALL 钩子按安装目录结束 python/ffmpeg/ffprobe,
旧版没有 Job Object,升级时残留进程会锁住 _asyncio.pyd。
应用内更新先停后端再安装,安装失败则重新拉起后端。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 15:50:40 +08:00
周小舟andClaude Opus 5.5 1267e2b1a9 fix(security): 其他网页不能再读取本地后端的 API Key 或发起写请求
CORS 由 * + credentials 收紧为 AutoClip 自家来源;带 Origin 的写请求必须同源或在白名单内,
表单/multipart 简单请求也会被拦;桌面模式只接受本机 Host,防 DNS 重绑定。
调试路由默认不挂载,web 入口默认只听 127.0.0.1。Docker 局域网访问用 AUTOCLIP_ALLOWED_ORIGINS。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 15:50:40 +08:00
周小舟 65748b35d9 docs: balance portrait screenshot size in feature cards 2026-09-29 12:41:49 +08:00
周小舟 dd816a88cd docs: arrange feature screenshots in bordered cards 2026-09-29 12:41:01 +08:00
周小舟 1de5593462 docs: illustrate every README feature in eight languages 2026-09-29 12:26:38 +08:00
周小舟 24e2125876 docs: show community achievement badges in README header 2026-09-29 12:07:19 +08:00
周小舟 878883f1e5 docs: preview multilingual README with sponsor and current UI screenshots 2026-09-29 11:48:59 +08:00
Kris K 609e3fb31c docs: 精简 README 产品介绍与入门流程,同步八语文案 (#226)
* docs: simplify README copy and onboarding across eight languages

* docs: invite sponsorship in all README translations
2026-09-28 20:04:56 +08:00
Kris K ad996131f4 fix: 修复 Studio 处理、监控与 Windows 导入预览 (#221)
* fix: accept shared YouTube links and recover valid timeline segments

* docs: record project review and reproducible recovery gaps

* fix: isolate timeline retries and recover rejected Studio imports

* docs: audit Studio analytics and Sentry coverage for 1.4

* fix: cover Studio telemetry and caught workflow failures

* fix: finish Windows Proactor cleanup after peer resets

Fixes PYTHON-FASTAPI-3

* docs: record Windows reset fix validation

* fix: clean Windows backend descendants and repair import thumbnails

* fix: offer explicit compatible source previews in Studio

* fix: keep compatible preview recovery available and document validation
2026-09-28 10:17:40 +08:00
e8eb4ed2f8 docs: sync user-facing copy with v1.4.0 dual analysis (#219)
Subtitle analysis stays the default. Optional game visual analysis,
confirm-before-cut, and sampled-frame privacy wording now match the
v1.4.0 release without claiming ad results or a fully verified Windows install.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>
2026-09-27 17:20:11 +08:00
Kris K 0241198ca0 Merge pull request #218 from zhouxiaoka/codex/release-1.4.0
chore: release v1.4.0
v1.4.0
2026-09-27 15:11:45 +08:00
周小舟 450f667ade ci: verify shipped macOS runtime before release upload 2026-09-27 15:07:15 +08:00