21 Commits
Author SHA1 Message Date
周小舟 d3e3cb1a84 fix(1.5): complete output acceptance and align CLI/MCP 2026-10-01 20:00:45 +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
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
周小舟 126aa40675 chore: prepare v1.4.0 release and document acceptance scope 2026-09-27 15:04:28 +08:00
周小舟 f630c72d92 fix: preserve signed runtime resources in 1.4 RC candidate 2026-09-27 14:21:52 +08:00
Kris K 58a4972850 chore: release v1.3.5 (#196) 2026-09-26 01:11:07 +08:00
Kris K d1fe99dcc6 chore: release v1.3.4 (#179)
Bump to 1.3.4 and roll CHANGELOG (five user-facing fixes). Tag v1.3.4 after merge to trigger Desktop Build.
2026-09-24 11:39:06 +08:00
Kris K dc94849d69 fix: 公开 SavedDownload 以便桌面命令通过编译 (#178) 2026-09-24 11:06:35 +08:00
周小舟 e37f5be637 fix: macOS 桌面端切片生成后可以播放和下载
打包后的页面在 tauri://localhost,播放和下载却请求根路径 /api/v1,打不到本机后端。播放改为内联响应,下载改由壳写入「下载」文件夹。

Fixes #166
2026-09-23 16:16:58 +08:00
Cursor AgentandKris K 743a29bb3a chore: release v1.3.3
滚动版本号和 CHANGELOG。FAQ / HANDOFF 按本版已带上 Whisper 与项目列表修复来写。

Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>
2026-09-23 04:48:43 +00:00
Cursor AgentandKris K af2012a085 chore: release v1.3.2
滚动版本号和 CHANGELOG。README / FAQ 按本版已经带上发布页和自动封面来写,不再说下一版才有。

Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>
2026-09-22 15:20:30 +00:00
Kris K f4957c5236 Release v1.3.1: eight-language UI, README and observability (#106)
* feat: prepare v1.3.1 documentation and observability release

* feat: add eight-language desktop interface and tray

* fix: complete v1.3.1 locale and privacy integration

* fix: provide shared version metadata to Docker frontend build
2026-09-21 23:24:58 +08:00
Cursor AgentandKris K 2a393f88fb chore: release v1.3.0
Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>
2026-09-20 19:39:13 +00:00
992239aacb build(desktop): Windows x64 packaging script + workflow, share PBS steps with macOS (#93)
- scripts/lib/desktop_build_common.sh: platform-neutral steps extracted from
  build_macos_arm.sh (PBS download with mirrors, pip install, backend copy via
  shutil instead of rsync, import completeness check, zip extraction via
  zipfile instead of unzip, frontend build). file_size() now uses wc -c: GNU
  stat -f %z 'succeeds' with filesystem info, which broke the size guard on
  Linux / Git Bash
- scripts/build_macos_arm.sh: same steps in the same order, now calling the lib
- scripts/build_windows_x64.sh: PBS x86_64-pc-windows-msvc runtime, BtbN static
  ffmpeg/ffprobe (gyan.dev fallback), portable-runtime import smoke test,
  cargo tauri build --bundles nsis
- src-tauri/tauri.windows.conf.json: declares resources/{python,backend,ffmpeg}
  and the nsis target (Tauri merges it only when building on Windows; macOS
  keeps post-build injection)
- backend_manager.rs: python.exe / Scripts\python.exe / ffmpeg.exe lookups,
  PYTHONUTF8=1 (backend prints emoji to a piped stdout), AUTOCLIP_APP_DIR set
  to <platform data dir>/AutoClip (identical to the old macOS default),
  CREATE_NO_WINDOW so python.exe does not pop a console
- desktop-build.yml: windows-latest job in Git Bash, LF-forced checkout,
  per-platform artifacts, single release job that attaches whatever built

Not executed on Windows here (no Windows runner in this environment); shared lib
verified end-to-end on Linux with the x86_64-unknown-linux-gnu PBS build, Rust
side passes cargo check.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>
2026-09-06 22:34:54 +08:00
5f8a24d9d6 v1.2.1 hotfix: make the Docker / local-script paths complete a full run (#88 ×7, #53) (#89)
* fix(docker): make the documented docker-compose path actually run

- .dockerignore: allow docker-entrypoint.sh / docker-dev-entrypoint.sh, which
  Dockerfile COPYs; excluding them made every 'docker build' fail (#1 #4 #9
  #47 #50 #88)
- add .gitattributes forcing LF on shell scripts so Windows clones can start
  the container (#73 #88)
- base image python:3.9-slim -> python:3.11-slim; current yt-dlp no longer
  supports 3.9 and only yields 360p via the android fallback (#88)
- celery worker in docker-compose / dev compose / start_autoclip.sh now
  consumes the queues task_routes actually targets
  (-Q celery,processing,video,notification,upload); without it tasks piled up
  in 'processing' and were never executed (#88)
- the four compose services share one image tag so it is built once
- docs: Python 3.10+ requirement, Linux bind-mount permission note

Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>

* fix(backend): remove machine-specific paths and the Redis probe that failed every Docker project

- task_submission_utils: the queue-depth log after a successful send_task used
  redis.Redis(host='localhost') inside the try block, so under docker-compose
  (Redis at redis:6379) every project was marked failed right after being
  queued. Probe now uses REDIS_URL and only warns on failure (#88)
- youtube.py: yt-dlp was invoked via a hardcoded /Users/zhoukk venv path with
  a hardcoded cwd, so /parse returned 500 on every other machine. Use
  sys.executable -m yt_dlp with the data directory as cwd (#88)
- youtube.py: requesting five subtitle languages at once triggers HTTP 429 and
  aborts the download; default to zh-Hans,zh,en, overridable with
  AUTOCLIP_YT_SUBTITLE_LANGS (#88)
- llm_providers._build_full_input: JSON-serialise list/tuple input instead of
  str() so the scoring step no longer breaks on list payloads (#53)
- fix_project_thumbnails.py / SettingsPage.tsx: drop remaining hardcoded
  developer paths (the settings page was writing them into users'
  settings.json)
- delete backend/api/v1/youtube_improved.py (unreferenced)
- add regression tests for the submission path and input serialisation

Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>

* ci: add docker-compose smoke job

Builds the image, starts redis + api + worker, and asserts: API health,
yt-dlp importable on the image's Python, Redis reachable through REDIS_URL
from the app container, and the worker consuming every routed queue
(celery, processing, video, notification, upload). Guards the failure modes
from #88 that nothing in CI previously exercised.

Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>

* chore: bump desktop version to 1.2.1 and stop hardcoding app_version in the backend

Cargo.toml was still 1.1.0 while tauri.conf.json said 1.2.0. Align both (and
Cargo.lock) at 1.2.1. The Rust launcher now passes CARGO_PKG_VERSION to the
backend as AUTOCLIP_APP_VERSION so /settings reports the real version instead
of a fixed "1.0.0".

Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>

* docs: 1.2.1 changelog; refresh HANDOFF with current status, PR/issue triage and plan

CHANGELOG 1.2.0 had absorbed old unreleased web-side items wholesale; keep
them but label them as historical. Fix the compare/release links that still
pointed at your-username.

Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>
2026-09-06 21:58:05 +08:00
周小舟andClaude Opus 4.8 6280d23555 chore: release v1.2.0
Bump desktop app version 1.1.0 -> 1.2.0 and cut CHANGELOG [未发布] into
[1.2.0]. First release carrying PostHog analytics.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 20:04:53 +08:00
周小舟andClaude Opus 4.8 ea8245462d release: v1.1.0 — first genuinely working desktop release
- Bump version 1.0.0 → 1.1.0 (tauri.conf.json, Cargo.toml, Cargo.lock); the
  build script now derives the DMG name from tauri.conf.json so it won't drift.
- RELEASE_NOTES.md + CHANGELOG.md: document v1.1.0 (zero-dependency desktop
  install, end-to-end clip pipeline, black-screen / stuck-list / retry-spam /
  stuck-pipeline fixes, opt-in faster-whisper, Gemini→google-genai, CI unify +
  repo cleanup).
- Drop two stale doc links to files removed in the cleanup
  (QUICK_START_GUIDE, SYSTEM_REBUILD_GUIDE).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 13:01:06 +08:00
周小舟andClaude Opus 4.8 73fa9b3257 fix: bundle self-contained ffmpeg+ffprobe and wire backend to use them
The desktop build started the backend fine on the build machine but would
fail on any clean Mac: video processing needs ffmpeg/ffprobe and neither was
usable for distribution.

Three compounding bugs, all fixed:

1. backend_manager.rs never set AUTOCLIP_FFMPEG_PATH, so the backend fell
   back to `shutil.which("ffmpeg")` — i.e. the build machine's homebrew
   ffmpeg. Now the launcher exports AUTOCLIP_FFMPEG_PATH / AUTOCLIP_FFPROBE_PATH
   pointing at the bundled binaries (resources/ffmpeg/{ffmpeg,ffprobe}).

2. The build bundled only ffmpeg, not ffprobe (the backend needs both).

3. The bundled ffmpeg was homebrew's dynamic build (412KB, 57 /opt/homebrew
   dylib deps) — dead on any machine without homebrew. The build now downloads
   the STATIC arm64 ffmpeg+ffprobe (48MB each, zero non-system deps) from
   osxexperts.net, cached under build/ffmpeg-cache, with a build-time assert
   that fails if any homebrew dep reappears.

Also exclude stray *.rdb from the bundled backend source.

Verified end-to-end: full build → App+DMG; app launches with /opt/homebrew
stripped from PATH (clean-machine sim), backend starts, HTTP server responds;
bundled ffmpeg/ffprobe run under an empty environment.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 13:45:57 +08:00
周小舟andClaude Opus 4.8 5298b057f0 chore: prune dead build scripts; land working PBS desktop build
Cleanup + lock in the python-build-standalone (PBS) desktop build that
actually produced a working macOS arm64 DMG.

- Remove 20 zero-reference legacy build/test/verify scripts (dead
  PyInstaller-era experiments, none referenced by CI, docs, or live scripts)
- backend_manager.rs: add PBS python runtime lookup (resources/python/bin/python3)
- tauri.conf.json: devUrl→:3000, clear beforeBuildCommand, resources=[]
  (resources injected post-build to dodge macOS extended-attr Permission denied)
- build_macos_arm.sh: rewritten as the canonical PBS build route
- .gitignore: also ignore src-tauri/resources/python/ (338M runtime, build output)
- Drop stale .venv_deps_installed marker; add HANDOFF.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 13:36:39 +08:00
周小舟andClaude Opus 4.7 b50a29c025 feat: fix macOS desktop build for v1.0.0 release
- Remove backend binary platform suffix (keep as autoclip-backend)
- Fix FFmpeg path (ffmpeg-unified -> ffmpeg to match tauri.conf.json)
- Remove non-existent data/ from PyInstaller spec
- Make venv optional in build script (support CI and bare environments)
- Empty beforeBuildCommand (build_macos_arm.sh handles everything)
- Simplify tauri.conf.json resources to ffmpeg + autoclip-backend

Build verified:
- App bundle: 54MB (12MB Tauri + 41MB backend + 412KB ffmpeg)
- DMG: 50MB
- All resources correctly bundled in Contents/Resources/resources/

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 16:40:52 +08:00
Kris K 593cc62bd5 fix: desktop client, CI fixes, and backend (#61)
Squashed merge of fix/problem-fixes-from-main.

- Desktop client (Tauri v2) wiring + packaging
- CI workflow updates (Python 3.11, Rust toolchain, Tauri CLI, WebKit deps)
- Backend test fix (test_missing_api_key respects CI-injected env var)
- build_backend.py: support CI without venv + Windows-safe ASCII output

Desktop build workflows (Linux/Windows/macOS) still failing — tracked in #65.
2026-05-28 15:48:49 +08:00