From 2ee7a2a61ac71a55a909d660663731c65ba112e2 Mon Sep 17 00:00:00 2001 From: caigee-cmd <210803857+caigee-cmd@users.noreply.github.com> Date: Thu, 29 Oct 2026 18:23:13 +0800 Subject: [PATCH] docs(changelog): polish unreleased notes for v0.7.21 Consolidate InflightLiveCard / WorkBuddy / API-key / Access / transport / TTFB fragments into one bilingual numbered list so validate passes and the release body reads cleanly. --- .../unreleased/access-affectui-flat-shell.md | 7 ------ .../overview-inflight-copy-icons.md | 7 ------ .../overview-inflight-elapsed-shimmer.md | 7 ------ .../overview-inflight-glow-enrich.md | 9 -------- .../unreleased/overview-inflight-hairline.md | 7 ------ .../unreleased/overview-inflight-mock-card.md | 22 ------------------- .../overview-inflight-outcome-fly-pulse.md | 7 ------ .../overview-inflight-slot-concurrency.md | 7 ------ .../overview-inflight-slot-polish.md | 7 ------ changelog/unreleased/release-highlights.md | 17 ++++++++++++++ changelog/unreleased/stream-first-byte-60s.md | 7 ------ .../transport-failure-no-cooldown.md | 7 ------ .../unreleased/usage-and-logs-by-api-key.md | 7 ------ .../workbuddy-client-export-import.md | 7 ------ 14 files changed, 17 insertions(+), 108 deletions(-) delete mode 100644 changelog/unreleased/access-affectui-flat-shell.md delete mode 100644 changelog/unreleased/overview-inflight-copy-icons.md delete mode 100644 changelog/unreleased/overview-inflight-elapsed-shimmer.md delete mode 100644 changelog/unreleased/overview-inflight-glow-enrich.md delete mode 100644 changelog/unreleased/overview-inflight-hairline.md delete mode 100644 changelog/unreleased/overview-inflight-mock-card.md delete mode 100644 changelog/unreleased/overview-inflight-outcome-fly-pulse.md delete mode 100644 changelog/unreleased/overview-inflight-slot-concurrency.md delete mode 100644 changelog/unreleased/overview-inflight-slot-polish.md create mode 100644 changelog/unreleased/release-highlights.md delete mode 100644 changelog/unreleased/stream-first-byte-60s.md delete mode 100644 changelog/unreleased/transport-failure-no-cooldown.md delete mode 100644 changelog/unreleased/usage-and-logs-by-api-key.md delete mode 100644 changelog/unreleased/workbuddy-client-export-import.md diff --git a/changelog/unreleased/access-affectui-flat-shell.md b/changelog/unreleased/access-affectui-flat-shell.md deleted file mode 100644 index 356e5663..00000000 --- a/changelog/unreleased/access-affectui-flat-shell.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Access chat Flat dial-back: soft hist wash (~33% `surface-secondary`, no theme muddy mixes); stage continuous with page (transparent); quieter AppSidebar selected/hover; softer user bubble and composer strip (elevation only in composer well); Raw inspector/field rim aligned. Overview / modal solid-glass `.card` untouched — no affectui npm / warm palette. - -### 中文 - -- Access 聊天 Flat 回拨:历史轨柔和冷洗(约 33% `surface-secondary`,去掉主题泥色混合);舞台与页面连续(透明);选中/悬停回到 AppSidebar 语汇;用户气泡与作曲 strip 软化(抬升只在作曲井);Raw inspector/字段描边对齐。Overview / 弹层 solid-glass `.card` 不动 — 不引入 affectui npm / 暖色盘。 diff --git a/changelog/unreleased/overview-inflight-copy-icons.md b/changelog/unreleased/overview-inflight-copy-icons.md deleted file mode 100644 index 387e4277..00000000 --- a/changelog/unreleased/overview-inflight-copy-icons.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Overview InflightLiveCard: account slots show ProviderMark next to the name (same marks as Accounts / supplier tiles, blended with solid-glass — no contrasting wash); idle slots fade icon+name. Shortened captions (Waiting / Slots / P95 / Empty; hint to Slots · in-flight · cooldown). Done/Failed are icon-first with aria-label/title. Elapsed + shimmer unchanged. - -### 中文 - -- Overview「实时进行中」:账号槽位名旁复用 ProviderMark(与账号页/供应商卡片同款,贴合 solid-glass 底、无对比色洗底);空闲槽图标+名称淡化。文案收紧(等待/槽位/P95/暂无;副标题改为「槽位 · 进行中 · 冷却」)。完成/失败改为图标优先(aria-label/title 保留可读)。耗时与流光未改。 diff --git a/changelog/unreleased/overview-inflight-elapsed-shimmer.md b/changelog/unreleased/overview-inflight-elapsed-shimmer.md deleted file mode 100644 index 203dea0e..00000000 --- a/changelog/unreleased/overview-inflight-elapsed-shimmer.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Overview InflightLiveCard busy slots show **real elapsed** seconds from pool `InFlightSince` → `/api/live` `workers[].started_at` (client ticks ~150ms; falls back to first-seen busy time if the field is absent). Progress bar is an **indeterminate** solid-glass shimmer — no fake % toward completion. Idle stays 空闲; rate-limit amber unchanged; GSAP fly in/out kept. - -### 中文 - -- Overview「实时进行中」忙碌槽位显示真实已耗时(Pool `InFlightSince` → `/api/live` `started_at`,前端约 150ms 滴答;无字段时用首次见到忙碌的时刻)。进度条改为不确定流光,不再用假百分比。空闲仍为「空闲」;限流琥珀不变;GSAP 飞入/飞出保留。 diff --git a/changelog/unreleased/overview-inflight-glow-enrich.md b/changelog/unreleased/overview-inflight-glow-enrich.md deleted file mode 100644 index 039cd30a..00000000 --- a/changelog/unreleased/overview-inflight-glow-enrich.md +++ /dev/null @@ -1,9 +0,0 @@ -### English - -- Overview InflightLiveCard: richer busy-slot shimmer (brighter surface highlight + stronger chart-1 bands), opaque queue→slot fly with kind-tinted trail glow (~3 afterimages), fuller kind pastels / busy edge / soft chart-1 slot glow. Still project tokens only; no orange panel wash. Provider icons + short copy kept. -- Overview InflightLiveCard: busy→idle fly-outs route by per-job outcome — `/api/live` drains `recent_completions` from the request recorder (plus `last_error_kind` fallback). HTTP/API/upstream failures land on Failed (X), not Done (Check). Mock tick emits the same `completions` list so same-tick mixed finishes stay correct. - -### 中文 - -- Overview「实时进行中」:忙碌槽流光提亮(更亮高光 + 更浓 chart-1 色带);队列飞入槽位保持不透明胶囊 + kind 色拖尾光晕(约 3 道残影);kind 粉彩与忙碌描边略加饱和,忙碌槽轻柔 chart-1 外辉。仍仅用项目 token,无大面积橙色洗底。ProviderMark 与精简文案保留。 -- Overview「实时进行中」:busy→idle 飞出按单次请求结果路由——`/api/live` 从请求 recorder 抽干 `recent_completions`(并以 `last_error_kind` 兜底)。HTTP/API/上游失败落入 Failed(X),不再误进 Done(勾)。Mock 同 tick 也产出 `completions`,混合完成不再全进成功槽。 diff --git a/changelog/unreleased/overview-inflight-hairline.md b/changelog/unreleased/overview-inflight-hairline.md deleted file mode 100644 index 9dc0e468..00000000 --- a/changelog/unreleased/overview-inflight-hairline.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Overview InflightLiveCard: drop nested solid-glass / stacked inset rings on queue pills, account slots, job pills, Done·Failed chips, and depth chrome. Distinguish by wash + color (busy tint, kind pastels, success/danger); at most one soft hairline per small item. Keep shimmer glow, fail→Failed routing, ProviderMark, shortened copy. No large orange wash. - -### 中文 - -- Overview「实时进行中」:去掉队列胶囊、账号槽、任务 pill、Done/Failed、深度图上的嵌套 solid-glass / 叠描边。靠洗底 + 颜色区分(忙碌冷色、kind 粉彩、成功/失败色);小项最多一根极细描边。保留流光、失败飞 Failed、ProviderMark、精简文案。无大面积橙色洗底。 diff --git a/changelog/unreleased/overview-inflight-mock-card.md b/changelog/unreleased/overview-inflight-mock-card.md deleted file mode 100644 index f2a38d7b..00000000 --- a/changelog/unreleased/overview-inflight-mock-card.md +++ /dev/null @@ -1,22 +0,0 @@ -### English - -- Overview adds a read-only「Live now」summary card (Phase 1 mock): Waiting → account-slot bars → Done/Failed, depth chart with amber rate-limit bands, GSAP/CSS motion aligned to **public** AffectUI Agent Queue demo timings; queue pills and account slots reuse project **solid-glass** (top-edge rim + light contact shadow, not frosted/gray wells); amber only for rate-limit/cooldown; no pause/cancel/concurrency; `/live` not built yet. -- `/api/live` extends with a read-only projection: `workers` from AccountView/Pool in-flight, `rate_limits` from DownUntil/ModelCooldowns, `sticky` from SessionAffinity.Stats — no new cooldown state machine, no `/api/inflight*`, no SQLite. Shape matches Stage-3 mock swap. - -### 中文 - -- Overview 增加只读「实时进行中」摘要卡(阶段 1 示意):等待 → 账号槽位进度条 → 完成/失败、带琥珀限流色带的深度图;等待队列项与账号槽位复用项目 **solid-glass**(顶边高光 + 轻阴影,非磨砂/灰底);琥珀仅用于限流/冷却;无暂停/取消/并发调节;尚未做 `/live`。 -- `/api/live` 扩展只读投影:`workers` 来自 AccountView/Pool 进行中、`rate_limits` 来自 DownUntil/ModelCooldowns、`sticky` 来自 SessionAffinity.Stats — 不新建冷却状态机、不新增 `/api/inflight*`、不碰 SQLite;字段形状对齐阶段 3 与 mock 互换。 - -- Stage-1 mock live loop: waiting pills get a subtle 流光; running bars keep stronger sheen+glow; jobs FLIP/fly queue→worker and worker→Done/Failed (AffectUI public Motion prose; GSAP + solid-glass ghosts). Depth series scrolls; rate-limit bars stay amber-frozen. Entrance timings unchanged (520/420/560ms, ease 0.22,1,0.36,1). -- 阶段 1 mock 活环:等待队列轻流光、进行中条更强扫光/前沿光晕;任务从队列飞入账号槽、完成后飞入 Done/Failed;深度图滚动;限流槽琥珀冻结。入场时长与公开 demo 一致。 - - -- Motion gaps filled (GSAP only): queue vacancy FLIP after fly-out 560ms; worker receive/occupy on land; priority glide-past (mock `priority`); CountUp on metrics/Done·Failed; depth chart continuous glide + eased Y peak; retry slides back to queue when mock emits. AffectUI overflow: first 3 queue pills + kind-colored overflow dots (slide up on shrink); workers rail shows ≤4 busy/rate-limited slots. solid-glass kept; no chart-3 orange wash. -- 动效缺口补齐(仅 GSAP):飞出后队列合缝 FLIP;落槽占用;高优插队滑过;指标 CountUp;深度图连续滑移;失败可重试滑回队列。溢出:队列仅前 3 条 pill + 色点堆;槽位最多 4 条 busy/限流。solid-glass 不变,无橙色洗底。 - -- Stage-3 wire: Overview「实时进行中」**默认收起**,不消费 live 投影;点 LiveStrip「当前并发」或卡片 toggle 才展开。展开后把 `/api/live` 的 `workers` / `rate_limits` / `sticky` 映射到槽位与限流色带;mock 活环仅在 live 不可用时作空演示兜底。jobs 级明细仍示意,待请求级 API。 -- Stage-3: InflightLiveCard **collapsed by default** (no live consume until expand from concurrency strip or toggle). Open → project `/api/live` workers/rate_limits/sticky; mock tick only if live missing. Request-level jobs still demo until a real inflight API. - -- Fix: real `/api/live` projection no longer spreads mock totals/throughput/p95/depth — idle live shows zeros; depthSeries from live samples only; mock tick only when live is null. -- 修复:真实 `/api/live` 投影不再带入 mock 的完成/失败/吞吐/P95/深度;空闲 live 显示 0;深度仅用真实采样;仅 live 为 null 时跑 mock 活环。 diff --git a/changelog/unreleased/overview-inflight-outcome-fly-pulse.md b/changelog/unreleased/overview-inflight-outcome-fly-pulse.md deleted file mode 100644 index 95303f33..00000000 --- a/changelog/unreleased/overview-inflight-outcome-fly-pulse.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Overview InflightLiveCard: Done/Failed fly-outs settle slightly short of the outcome control (no dive into the button). On fly `onComplete`, the matching Done/Failed hairline gets 1–2 soft GSAP border pulses (success/danger tokens only — no orange wash). Concurrency slots, glow, fail routing, ProviderMark, and short copy kept. - -### 中文 - -- Overview「实时进行中」:飞向完成/失败时略提前落点(不到按钮中心)。飞行 `onComplete` 时对应控件细描边用 GSAP 轻脉冲 1–2 下(仅 success/danger token,无橙色洗底)。并发格、流光、失败路由、ProviderMark 与精简文案保留。 diff --git a/changelog/unreleased/overview-inflight-slot-concurrency.md b/changelog/unreleased/overview-inflight-slot-concurrency.md deleted file mode 100644 index dc3078f4..00000000 --- a/changelog/unreleased/overview-inflight-slot-concurrency.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Overview InflightLiveCard: each account slot bar is divided into N equal cells from that account’s max concurrency (`max_inflight`); occupied cells follow live `in_flight` (wash + elapsed shimmer). One concurrency → one full-width cell. Idle cells stay faint; hairline wash only — keep glow, fail→Failed, ProviderMark, short copy. - -### 中文 - -- Overview「实时进行中」:账号槽进度条按该账号最大并发(`max_inflight`)均分成 N 格;占用格跟 live `in_flight`(洗底 + 耗时流光)。并发为 1 时一整条。空闲格淡色;仅洗底/细描边——保留流光、失败飞 Failed、ProviderMark、精简文案。 diff --git a/changelog/unreleased/overview-inflight-slot-polish.md b/changelog/unreleased/overview-inflight-slot-polish.md deleted file mode 100644 index ba5e8173..00000000 --- a/changelog/unreleased/overview-inflight-slot-polish.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Overview InflightLiveCard: account slots slightly roomier (py-2, h-2.5 track, 11px labels, gap-2); softer pastel kind pills (chart-1/5/6); richer mint/coral Done·Failed; lighter rate-limit amber wash; busy slots get a cool chart-1 fill + edge so idle solid-glass stays clearer. Still ≤4 slots; no orange panel wash. - -### 中文 - -- Overview「实时进行中」账号槽位略加大呼吸感(py-2、进度条 h-2.5、文案 11px、槽间距 gap-2);kind 色点/胶囊用更柔的 chart 粉彩;完成/失败略加深薄荷/珊瑚;限流琥珀洗底变轻;忙碌槽用冷色 chart-1 填充与描边,空闲仍 solid-glass。仍最多 4 槽;无大面积橙色洗底。 diff --git a/changelog/unreleased/release-highlights.md b/changelog/unreleased/release-highlights.md new file mode 100644 index 00000000..43ce353f --- /dev/null +++ b/changelog/unreleased/release-highlights.md @@ -0,0 +1,17 @@ +### English + +- 1. Overview adds a collapsible「Live now」card: expand from the concurrency strip to see live account slots (ProviderMark, concurrency cells, real elapsed + shimmer), queue→slot / Done·Failed fly-outs, and amber rate-limit bands from `/api/live` (`workers` / `rate_limits` / `sticky`). Idle live shows zeros; mock demo only when live is unavailable. +- 2. Accounts batch import accepts official WorkBuddy client export packs (`exportType: WorkBuddy-accounts`, nested `{account, auth}`); `workbuddy.cn` maps to the CN region like `codebuddy.cn`. +- 3. Logs and Usage can filter by API key: request logs record which named console key issued each call, and `GET /api/logs/requests|stats|usage` plus `GET /api/usage/cost` accept `api_key=` (console-key traffic stays unattributed). +- 4. Access chat Flat polish: softer history-rail wash, stage continuous with the page, quieter sidebar selected/hover, softer user bubble and composer — Overview / modal solid-glass untouched. +- 5. Connection-level failures (dial, TLS handshake, reset) no longer cool the account or fail over: the client gets the transport error and the account stays routable (avoids single-account「all accounts are cooling down」loops). +- 6. Qoder and WorkBuddy stream first-byte default is now 60s (`QODER_STREAM_TTFB_MS` / `WORKBUDDY_STREAM_TTFB_MS`, was 30s) so thinking-model cold starts get longer before failover; set either env to keep the old deadline. + +### 中文 + +- 1. Overview 新增可折叠「实时进行中」卡:从并发条展开后,按 `/api/live` 投影展示账号槽(ProviderMark、并发格、真实耗时与流光)、队列→槽位 / 完成·失败飞出,以及琥珀限流色带。空闲 live 显示 0;仅 live 不可用时跑 mock 演示。 +- 2. 账号批量导入支持 WorkBuddy 官方客户端导出包(`exportType: WorkBuddy-accounts`、嵌套 `{account, auth}`),并将 `workbuddy.cn` 识别为国内区(与 `codebuddy.cn` 一致)。 +- 3. 日志页与用量页支持按 API 密钥筛选:请求日志记录具名控制台密钥;`GET /api/logs/requests|stats|usage` 与 `GET /api/usage/cost` 接受 `api_key=<密钥 id>`(控制台密钥流量不计名)。 +- 4. Access 聊天 Flat 回拨:历史轨柔和冷洗、舞台与页面连续、侧栏选中/悬停更安静、用户气泡与作曲区软化——Overview / 弹层 solid-glass 不动。 +- 5. 连接层失败(拨号、TLS 握手、连接重置)不再给账号记冷却、也不再换号:客户端直接收到链路错误,账号保持可路由(避免单账号「所有账号都在冷却」死循环)。 +- 6. Qoder / WorkBuddy 流式首字节默认时限改为 60 秒(`QODER_STREAM_TTFB_MS` / `WORKBUDDY_STREAM_TTFB_MS`,原 30 秒),思考模型冷启动可多等一会再切号;设对应环境变量可恢复旧时限。 diff --git a/changelog/unreleased/stream-first-byte-60s.md b/changelog/unreleased/stream-first-byte-60s.md deleted file mode 100644 index 52f4d516..00000000 --- a/changelog/unreleased/stream-first-byte-60s.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- The default first-byte deadline for Qoder and WorkBuddy streams is now 60s (`QODER_STREAM_TTFB_MS`, `WORKBUDDY_STREAM_TTFB_MS`; both were 30s). A slow thinking-model cold start gets longer before the request fails over to the next account. Set either variable to keep the old deadline. - -### 中文 - -- Qoder 和 WorkBuddy 流式请求的默认首字节时限改为 60 秒(`QODER_STREAM_TTFB_MS`、`WORKBUDDY_STREAM_TTFB_MS`,原先都是 30 秒)。思考模型冷启动更慢时,请求会多等一会儿再切换到下一个账号。想保持原来的时限,设置对应的环境变量即可。 diff --git a/changelog/unreleased/transport-failure-no-cooldown.md b/changelog/unreleased/transport-failure-no-cooldown.md deleted file mode 100644 index 9a3d4255..00000000 --- a/changelog/unreleased/transport-failure-no-cooldown.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- A connection-level failure (dial, TLS handshake, reset) no longer puts the account into a cooldown, and no longer fails over. The request never reached the upstream, so the account stays routable and the client gets the transport error back. Previously one handshake timeout parked a healthy account for 15s, which turned a single-account route into `all accounts are cooling down` for every request that followed. - -### 中文 - -- 连接层失败(拨号、TLS 握手、连接重置)不再给账号记冷却,也不再换号。请求根本没到上游,账号保持可路由,客户端直接收到链路错误。此前一次握手超时会把健康账号锁 15 秒,单账号路由上随后每条请求都会变成「所有账号都在冷却」。 \ No newline at end of file diff --git a/changelog/unreleased/usage-and-logs-by-api-key.md b/changelog/unreleased/usage-and-logs-by-api-key.md deleted file mode 100644 index 3a31e4e5..00000000 --- a/changelog/unreleased/usage-and-logs-by-api-key.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Logs and Usage pages can filter by API key: request logs record which named console API key issued each request, and `GET /api/logs/requests`, `GET /api/logs/stats`, `GET /api/logs/usage` and `GET /api/usage/cost` accept `api_key=`. Requests made with the console key stay unattributed. - -### 中文 - -- 日志页和用量页支持按 API 密钥筛选:请求日志记录每次请求使用的是哪把具名控制台密钥,`GET /api/logs/requests`、`GET /api/logs/stats`、`GET /api/logs/usage` 和 `GET /api/usage/cost` 接受 `api_key=<密钥 id>`。使用控制台密钥的请求不计入任何具名密钥。 diff --git a/changelog/unreleased/workbuddy-client-export-import.md b/changelog/unreleased/workbuddy-client-export-import.md deleted file mode 100644 index 8613ac61..00000000 --- a/changelog/unreleased/workbuddy-client-export-import.md +++ /dev/null @@ -1,7 +0,0 @@ -### English - -- Accounts batch import accepts official WorkBuddy client export packs (`exportType: WorkBuddy-accounts`, nested `{account, auth}`), and treats `workbuddy.cn` as the CN region (same as `codebuddy.cn`). - -### 中文 - -- 账号批量导入支持 WorkBuddy 官方客户端导出包(`exportType: WorkBuddy-accounts`、嵌套 `{account, auth}`),并将 `workbuddy.cn` 识别为国内区(与 `codebuddy.cn` 一致)。