Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
7a43159
feat(overview): Stage-1 mock「实时进行中」摘要卡(只读)
caigee-cmd Oct 29, 2026
f03e428
polish(overview): align InflightLiveCard motion to public AffectUI demo
caigee-cmd Oct 29, 2026
5cfbc2b
polish(overview): clearer InflightLiveCard color hierarchy
caigee-cmd Oct 29, 2026
3cff100
polish(overview): warmer InflightLiveCard wells + recharts depth curve
caigee-cmd Oct 29, 2026
c6cde62
fix(overview): cooler InflightLiveCard surfaces — drop chart-3 washes
caigee-cmd Oct 29, 2026
7701907
feat(overview): /api/live projection + InflightLiveCard glass & Affec…
caigee-cmd Oct 29, 2026
a5e38de
feat(overview): fill InflightLiveCard motion gaps + AffectUI overflow
caigee-cmd Oct 29, 2026
19b2be0
docs(overview): refresh InflightLiveCard shots after motion/overflow …
caigee-cmd Oct 29, 2026
a270ed3
fix(overview): strengthen queue→slot flyGhost to opaque pill + trail
caigee-cmd Oct 29, 2026
d9075f8
feat(overview): wire InflightLiveCard to /api/live, collapsed by default
caigee-cmd Oct 29, 2026
0e8275d
fix(overview): 空闲 live 不再渗入 mock 完成/吞吐/P95/深度
caigee-cmd Oct 29, 2026
5e09a72
merge: sync main into feat/overview-live-inflight-mock (#438)
caigee-cmd Oct 29, 2026
e4ef1a0
fix(overview): InflightLiveCard 真实耗时 + 不确定流光条
caigee-cmd Oct 29, 2026
deeaa08
style(overview): InflightLiveCard 槽位略加大 + 粉彩层级
caigee-cmd Oct 29, 2026
db110a3
style(overview): InflightLiveCard 槽位 ProviderMark + 文案收紧
caigee-cmd Oct 29, 2026
9db3927
style(overview): InflightLiveCard 流光与粉彩提饱和
caigee-cmd Oct 29, 2026
b787aed
fix(overview): InflightLiveCard 失败飞出 Failed 而非 Done
caigee-cmd Oct 29, 2026
dcd5ba9
style(overview): InflightLiveCard 去嵌套线框改洗底+细描边
caigee-cmd Oct 29, 2026
37a896f
feat(overview): InflightLiveCard 槽位按账号并发均分格
caigee-cmd Oct 29, 2026
07566bb
style(overview): InflightLiveCard 完成/失败飞出提前落点 + 描边轻脉冲
caigee-cmd Oct 29, 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
7 changes: 7 additions & 0 deletions changelog/unreleased/overview-inflight-copy-icons.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### 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 保留可读)。耗时与流光未改。
7 changes: 7 additions & 0 deletions changelog/unreleased/overview-inflight-elapsed-shimmer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### 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 飞入/飞出保留。
9 changes: 9 additions & 0 deletions changelog/unreleased/overview-inflight-glow-enrich.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
### 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`,混合完成不再全进成功槽。
7 changes: 7 additions & 0 deletions changelog/unreleased/overview-inflight-hairline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### 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、精简文案。无大面积橙色洗底。
22 changes: 22 additions & 0 deletions changelog/unreleased/overview-inflight-mock-card.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
### 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 活环。
7 changes: 7 additions & 0 deletions changelog/unreleased/overview-inflight-outcome-fly-pulse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### 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 与精简文案保留。
7 changes: 7 additions & 0 deletions changelog/unreleased/overview-inflight-slot-concurrency.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### 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、精简文案。
7 changes: 7 additions & 0 deletions changelog/unreleased/overview-inflight-slot-polish.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### 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 槽;无大面积橙色洗底。
89 changes: 89 additions & 0 deletions docs/assets/overview-inflight-mock/affectui-public-motion-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Agent Queue — publicly readable Motion / structure notes

Extracted 2026-10-29 from the **public docs page** and its marketing/demo chunks.
**Do not copy Pro component source into cli2api.** Apply equivalent GSAP/CSS with project tokens.

## Locked (Pro)

| Asset | Status |
|-------|--------|
| `https://www.affectui.com/r/agent-queue.json` | HTTP 401 — Bearer access key required |
| `assets/component-DkFrPebu.js` / `component.clean-*.js` | Serves `var e="";export{e as default}` (empty stub) |
| Registry install via shadcn | Pro gate |

## Publicly readable

| Asset | What it gives |
|-------|----------------|
| Page HTML + `assets/index-*.js/css` | Catalog entry, lazy chunk names, marketing copy |
| `assets/docs-OUFUpYq4.js` | Full public docs object: props, a11y, responsive, **Motion prose** |
| `assets/demo-CRKNaMKk.js` (and `.clean`) | Live preview: **CSS keyframes, `--ui-agq-ease`, timing constants, class structure** |
| Reference PNGs (light / pinned / rate-limited) | Layout feel |
| handoff-spec.md | Stage plan + earlier Motion paraphrase |

### Docs Motion prose (public)

- New jobs drop in at the back; high-priority lands then glides past
- Front job → free worker → growing bar with **sheen + glowing front edge**
- Done: green beat, flies into Done; Failed: **shakes red** (or retry slides back)
- Rate limit: bars **stop + amber**, countdown; depth climbs then drains
- Numbers ease; chart scale glides; sleeps off-screen / idle
- `prefers-reduced-motion`: appear in place
- Wide: Queue | Workers | Done/Failed; `<600px` stacks

### Demo timing constants (public)

```
s = 560 // layout / bar grow glide (ms)
c = 1100 // front-edge glow period
l = 1500 // sheen / sweep period
u = 520 // drop-in
d = 200 // short fades
f = 520 // flash/drop companion
```

### Public easing

```
--ui-agq-ease: cubic-bezier(0.22, 1, 0.36, 1);
```

(Note: earlier handoff paraphrase cited `cubic-bezier(0.32, 0.72, 0.24, 1)` — **demo CSS uses 0.22, 1, 0.36, 1**. Prefer the public demo value.)

### Public keyframes (names + from-state only — reimplement, don’t paste Pro file)

| Name | From | Duration / use |
|------|------|----------------|
| `ui-agq-drop` | opacity 0; translateY(-10px) scale(0.6) | **520ms** ease, backwards |
| `ui-agq-slot` | opacity 0; translateX(-8px) | **420ms** ease |
| `ui-agq-grow` | clip-path: inset(0 100% 0 0 round 8px) | **560ms** ease, backwards |
| `ui-agq-sweep` | background-position → | **1500ms** linear infinite (sheen) |
| `ui-agq-glow` | filter opacity ~0.45 | **1100ms** ease-in-out **alternate** |
| `ui-agq-shake` | translateX(-3px) @20% | **420ms** ease (with drop on fail flash) |
| `ui-agq-calm` | opacity 0 | 300ms |
| `ui-agq-pulse` | opacity mid 0.35 | 1400ms ease-in-out infinite |
| `ui-agq-pop` | scale 0.9 | — |
| `ui-agq-open` | translateY(-4px) scale(0.97) | 200ms |
| `ui-agq-hit` | — | 700ms ease-out + 380ms delay |
| `ui-agq-ping` | — | 1600ms ease-out infinite |

### Progress bar (public CSS idea)

```
clip-path: inset(0 calc((1 - var(--p)) * 100%) 0 0 round 8px);
transition: clip-path 260ms linear, …;
```

Sheen via `::before` sweep; glow via `::after` at the front edge.

### Class / token structure (names only)

Root `.ui-agq` with CSS variables `--ui-agq-*` (kind tints llm/tool/agent/human, warn/ok/error, depth, ease).
Jobs `.ui-agq__job` with `data-shape` (bar / square / …), `data-flash`, workers rail, bins Done/Failed, chart bands.

### cli2api mapping (read-only Stage 1)

- Reimplement timings/easing above with **GSAP + small CSS keyframes**
- Colors: **cold project tokens** only (`foreground` / `surface` / `warning` / `success` / `danger`; chart hues only for kind chips if needed)
- No Pause / Cancel / concurrency stepper / promote
- No Pro source file, no `.ui-agq` wholesale CSS copy
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/overview-inflight-mock/card-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 38 additions & 0 deletions docs/assets/overview-inflight-mock/motion-gap-work-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# InflightLiveCard motion gaps — work notes
时间:2026-10-29 15:43 Asia/Shanghai · tip 7701907 · PR #435

## 改动量:**中**

不引入 Motion / framer-motion(项目无该 dep;已有 gsap ^3.15)。

## Reuse(已有)

| 已有 | 用途 |
|------|------|
| `flyGhost` + `rectCache` + `queueEase` 560ms | 队列→槽 / 槽→Done·Failed 飞牌 |
| GSAP + CustomEase `inflightQueue` (0.22,1,0.36,1) | 全部 layout / grow |
| SlotBar `data-slot-fill` clip-path grow | 落槽进度条入场(已有,补 land 时序) |
| `CountUp` (`overview/CountUp.tsx`,RAF ease) | 指标/Done·Failed 数字缓动 |
| `tickMockInflight` + solid-glass tokens | mock 环 + 表面规范(无 orange wash) |

## 缺口 → 做法

1. **Queue vacancy FLIP** — fly-out 后对剩余 `data-wait-id` 用 rectCache First→Last,GSAP x/y 560ms queueEase 合缝
2. **Worker receive/occupy on land** — fly 完成再淡入槽位 pill + 延迟 clip grow;落点轻微 brightness pulse
3. **priority glide-past** — mock 加 `priority?: 'high'|'normal'`;高优 enqueue 后插到队前,FLIP 滑过
4. **CountUp wire** — Metric / Outcome 接 CountUp(int / ms);后缀 `/min`、`/slots` 静态
5. **chart continuous glide** — DepthChart 稳定 x 索引 + 更长线性 scroll 感;peak domain 缓变
6. **retry → queue** — mock 失败约一半同 id 回 queued(不 +failed);flyGhost worker→queue + drop-in

## 不做

- 不加 Motion dep
- 不改 solid-glass / 不引入 chart-3 orange wash
- 不 merge / 不 release

## + AffectUI overflow UX(steering)

7. **QUEUE overflow** — 仅前 N=3 条 pill;其余按 kind 色小方点堆叠;队缩时点上滑晋升为 pill(FLIP + drop),可顶到最上 pill 位。去掉灰色 pad 虚点。
8. **WORKERS overflow** — 只展示前 ~4 个 busy/rateLimited 优先槽,不铺满全部账号;计数仍用 summary.busyWorkers/workerSlots。

改动量仍为 **中**(同 reuse 表;overflow 为渲染裁剪 + 点位 FLIP)。
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading