Skip to content

AI/ML API as a cloud provider preset (re-ported onto 1.5.6) - #2

Open
Lookoff-AIMLAPI wants to merge 298 commits into
mainfrom
feat/aimlapi-provider-1.5.6
Open

Lookoff-AIMLAPI wants to merge 298 commits into
mainfrom
feat/aimlapi-provider-1.5.6

Conversation

@Lookoff-AIMLAPI

Copy link
Copy Markdown
Member

Replaces #1, which was cut from v1.3.3. Upstream has moved 297 commits since (now 1.5.6) and a merge produced eight conflicts, three of them against files upstream deleted — the first-run wizard, the settings page's provider table and apiConfigCheck. This is the same integration rebuilt against the current tree.

What changed versus #1

  • The frontend provider table moved to features/settings/providers.ts with grouped, searchable options. We land in the cloud group — deliberately not sponsor, which is for affiliate partners (Infistar, 88API) and we are not one.
  • The first-run wizard and apiConfigCheck are gone upstream, so those three edits simply drop out. Smaller diff.
  • Model discovery was rebuilt upstream around connections with capability flags. Ours now feeds it the truth: _aimlapi_records maps our type field onto the supported_endpoint_types vocabulary _records already understands, and merges rows by id so a model listed once per endpoint family keeps its chat route.

Measured against the live gateway (2026-10-07)

  • 980 /models rows collapse to 809 ids: 380 analysis-capable, 131 image-capable, 304 correctly excluded (speech, video, embeddings, OCR). Under the old name-guessing path those 304 reached the picker and failed on first use.
  • POST /v1/images/generations answers 200 with the standard {data:[{url}]} shape, which is the only reason image capability is claimed at all, so AI covers work.
  • ASR is deliberately not claimed: there is no adapter for our transcription route and asr_catalog would list the models as known-but-unsupported.

The probe fix is still needed. test_connection asks for max_tokens=1, which reasoning models cannot finish, so a valid key reports "connection failed". Measured: openai/gpt-6-luna — this preset's default — 400s at 1 token and answers at 10; gpt-6.1-sol, claude-sonnet-5.5 and gemini-3.8-flash answer at 1. The probe now asks 256.

Verification. Live: the request lands on api.aimlapi.com/v1/chat/completions with the attribution headers and the registered partner id, the completion returns, test_connection() is true, the dropdown resolves to 355 chat models. Backend 1485 passed; 23 failures in test_studio / test_publish_export / test_packaging_render are byte-identical on unmodified upstream (local ffmpeg), checked in a clean worktree. Frontend typecheck, lint and all 8 i18n tests clean.

zhouxiaoka and others added 30 commits September 27, 2026 14:35
feat: create subtitle promotional drafts without visual calls
…evidence

feat: base low-cost import recommendations on local subtitle evidence
fix: preserve signed runtime resources in 1.4 RC candidate
…ounds

fix: bound visual scans and preserve valid highlight candidates
…pect

fix: match automatic promo aspect at confirmation
…shift-publish-c766

docs: README header Trendshift card + shorten publish row
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>
* 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
* docs: simplify README copy and onboarding across eight languages

* docs: invite sponsorship in all README translations
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>
NSIS PREINSTALL/PREUNINSTALL 钩子按安装目录结束 python/ffmpeg/ffprobe,
旧版没有 Job Object,升级时残留进程会锁住 _asyncio.pyd。
应用内更新先停后端再安装,安装失败则重新拉起后端。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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>
默认库路径相对 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>
- 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>
chore(release): 先发 Pre-release,冒烟和观察期后再转正;重写发版清单
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>
…se 测试者

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- 后端 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>
…dows-import

fix: P0 安全收紧、Windows 升级文件占用、链接导入 ffmpeg 与进度
zhouxiaoka and others added 29 commits October 4, 2026 01:17
…process-timeouts

fix: classify local media process timeouts
…le-overlay

fix: preserve original subtitles under interview decorations
…alization

fix: preserve privacy choice during delayed settings reads
…4-final-repairs

fix: close installed-package acceptance regressions
…efault-invocation

Fix CRT regression default script lookup on Windows
…ailure-recovery

fix(studio): recover task state after metadata read denial
…e-main

Preserve cloud ASR failure identity and reject unsupported company-leader copy
…tance-v2

fix: preserve multiple original acceptance evidence sources
* Allow a named owner waiver for unexecuted acceptance rows

Waived rows stay distinct from passed: pending/failed/skipped still block,
executed rows keep the existing checks, and the internal receipt lists every
waived row. Adds the owner-waived 1.5.4 internal acceptance manifest.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Bind the 1.5.4 internal manifest to the provenance file hash

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs: record the owner-waived 1.5.4 release scope and watch signals

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(release): restore the annotated tag before reading internal acceptance

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add the owner-waived 1.5.5 internal acceptance manifest

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add the owner-waived v1.5.5 release acceptance manifest

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
…#255)

Most discovery still lands on GitHub. Point that traffic at the current
product page before the download and case-library links.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Kris K <zhouxiaoka@users.noreply.github.com>
…ning fails

1.5.4 made every automatic run fail when the optional visual screening
call failed, so interviews and podcasts that subtitles could cut failed
with provider_error. Only an explicit visual choice now stops the run.

Co-authored-by: Cursor <cursoragent@cursor.com>
…esktop Celery

Keep optional auto screening on the subtitle route, block imports that cannot run, record failure_stage/http_status/route, send installer smoke through Studio import, and treat studio.json generation as the project-list source of truth.

Co-authored-by: Cursor <cursoragent@cursor.com>
…houxiaoka#295)

Ship 1.5.6: ready imports, failure taxonomy, desktop without Celery
Re-port of the integration onto 1.5.6. The original branch was cut from
v1.3.3 and upstream has moved 297 commits since; the first-run wizard, the
settings page's provider table and apiConfigCheck no longer exist, so a merge
would have been eight conflicts, three of them against deleted files. This is
the same integration rebuilt against the current tree instead.

What lands:

- `aimlapi` cloud preset beside the other gateways, reaching the new
  `features/settings/providers.ts` picker in the `cloud` group (not `sponsor`:
  that group is for affiliate partners and we are not one), the CLI
  (`--provider aimlapi`), `autoclip providers`, env fallbacks and the eight
  locale catalogues.
- Attribution headers on requests to the gateway, gated on the exact hostname
  `api.aimlapi.com`, so the same OpenAIProvider serving OpenRouter, Ollama and
  vLLM never receives them.
- Model discovery that reads our `type` field. The new registry asks each
  provider's `/models` and guesses capability from the name when the payload
  says nothing; ours says everything, in `type`. `_aimlapi_records` maps it to
  the `supported_endpoint_types` vocabulary `_records` already branches on, and
  merges rows by id so a model listed once per endpoint family keeps its chat
  route. Measured against the live list: 980 rows collapse to 809 ids, of which
  380 are analysis-capable and 131 image-capable, and the 304 excluded are the
  speech, video, embedding and OCR rows that used to reach the picker and fail
  on first use.
- Image generation is claimed only because it was verified: POST /v1/images/generations
  answers 200 with the standard `{data:[{url}]}` shape, so AI covers work.
  ASR is deliberately not claimed - there is no adapter for our transcription
  route, and `asr_catalog` would list the models as known-but-unsupported.

Also re-applies the connectivity-probe fix. The probe asks for `max_tokens=1`,
which reasoning models cannot finish, so the settings page reports a failure for
a valid key. Measured 2026-10-07: `openai/gpt-6-luna` - this preset's default -
400s at 1 token and answers at 10; gpt-6.1-sol, claude-sonnet-5.5 and
gemini-3.8-flash answer at 1. The probe now asks 256.

Verified live: the request lands on api.aimlapi.com/v1/chat/completions carrying
the attribution headers including the registered partner id, the completion
comes back, `test_connection()` is true and the dropdown resolves to 355 chat
models. Backend 1485 passed; the 23 failures in test_studio / test_publish_export
/ test_packaging_render are byte-identical on unmodified upstream (ffmpeg on this
machine). Frontend typecheck, lint and the 8 i18n tests are clean.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants