From 5b44d353169d80737a08d5946489cdc9b9428407 Mon Sep 17 00:00:00 2001 From: kang Date: Tue, 19 May 2026 10:02:32 +0800 Subject: [PATCH] fix: add cloud local asr fallback --- .memory/worklog.json | 4410 ++++++++++++++++---------------- Dockerfile.api | 2 +- RULES.md | 2 + api/main.py | 67 +- api/requirements.txt | 1 + deploy/.env.production.example | 5 + docs/source-analysis.html | 5 +- 7 files changed, 2268 insertions(+), 2224 deletions(-) diff --git a/.memory/worklog.json b/.memory/worklog.json index a18104e..ab1dafc 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -1,3210 +1,3206 @@ { - "entries" : [ + "entries": [ { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-16 16:46 (~2)", - "ts" : "2026-05-16T08:48:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-16 17:25 (~1)", + "ts": "2026-05-16T09:28:08Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "8d39539", - "message" : "auto-save 2026-05-16 16:51 (~1)", - "ts" : "2026-05-16T16:51:42+08:00", - "type" : "commit" + "files_changed": 1, + "hash": "476d6fd", + "message": "auto-save 2026-05-16 17:29 (~1)", + "ts": "2026-05-16T17:29:36+08:00", + "type": "commit" }, { - "files_changed" : 1, - "hash" : "da46de9", - "message" : "auto-save 2026-05-16 16:56 (~1)", - "ts" : "2026-05-16T16:57:10+08:00", - "type" : "commit" + "files_changed": 1, + "hash": "92435c0", + "message": "auto-save 2026-05-16 17:36 (~1)", + "ts": "2026-05-16T17:36:36+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-16 16:56 (~1)", - "ts" : "2026-05-16T08:58:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-16 17:36 (~1)", + "ts": "2026-05-16T09:38:08Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "eedfceb", - "message" : "auto-save 2026-05-16 17:02 (~1)", - "ts" : "2026-05-16T17:02:38+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "c689fbf", + "message": "chore: add gitea repository metadata", + "ts": "2026-05-16T17:44:13+08:00", + "type": "commit" }, { - "files_changed" : 1, - "hash" : "a1979cb", - "message" : "auto-save 2026-05-16 17:07 (~1)", - "ts" : "2026-05-16T17:08:06+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "d84ea9d", + "message": "auto-save 2026-05-16 17:45 (~2)", + "ts": "2026-05-16T17:45:11+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-16 17:07 (~1)", - "ts" : "2026-05-16T09:08:08Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "9d1268b", + "message": "docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T17:46:22+08:00", + "type": "commit" }, { - "files_changed" : 1, - "hash" : "5f27130", - "message" : "auto-save 2026-05-16 17:13 (~1)", - "ts" : "2026-05-16T17:13:37+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T09:48:08Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "3b5f9b5", - "message" : "auto-save 2026-05-16 17:13 (~1)", - "ts" : "2026-05-16T17:14:28+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T09:58:08Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "1d3b1ab", - "message" : "auto-save 2026-05-16 17:14 (~1)", - "ts" : "2026-05-16T17:14:42+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T10:08:08Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-16 17:14 (~1)", - "ts" : "2026-05-16T09:18:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T10:18:08Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "cfb79fd", - "message" : "auto-save 2026-05-16 17:20 (~1)", - "ts" : "2026-05-16T17:20:39+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T10:28:08Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "14ee9f3", - "message" : "auto-save 2026-05-16 17:25 (~1)", - "ts" : "2026-05-16T17:26:09+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T10:38:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-16 17:25 (~1)", - "ts" : "2026-05-16T09:28:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T10:48:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "476d6fd", - "message" : "auto-save 2026-05-16 17:29 (~1)", - "ts" : "2026-05-16T17:29:36+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T10:58:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "92435c0", - "message" : "auto-save 2026-05-16 17:36 (~1)", - "ts" : "2026-05-16T17:36:36+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T11:08:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-16 17:36 (~1)", - "ts" : "2026-05-16T09:38:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T11:18:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "c689fbf", - "message" : "chore: add gitea repository metadata", - "ts" : "2026-05-16T17:44:13+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T11:28:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "d84ea9d", - "message" : "auto-save 2026-05-16 17:45 (~2)", - "ts" : "2026-05-16T17:45:11+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T11:38:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "9d1268b", - "message" : "docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T17:46:22+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T11:48:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T09:48:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T11:58:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T09:58:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T12:08:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T10:08:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T12:18:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T10:18:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T12:28:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T10:28:08Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T12:38:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T10:38:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T12:48:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T10:48:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T12:58:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T10:58:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T13:08:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T11:08:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T13:18:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T11:18:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T13:28:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T11:28:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T13:38:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T11:38:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T13:48:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T11:48:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T13:58:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T11:58:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T14:08:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T12:08:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T14:18:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T12:18:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T14:28:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T12:28:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T14:38:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T12:38:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T14:48:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T12:48:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T14:58:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T12:58:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T15:08:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T13:08:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T15:18:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T13:18:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T15:28:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T13:28:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T15:38:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T13:38:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T15:48:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T13:48:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T15:58:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T13:58:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T16:08:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T14:08:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T16:18:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T14:18:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T16:28:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T14:28:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T16:38:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T14:38:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T16:48:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T14:48:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T16:58:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T14:58:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T17:08:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T15:08:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T17:18:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T15:18:15Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T17:28:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T15:28:15Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T17:38:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T15:38:15Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T17:48:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T15:48:15Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T17:58:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T15:58:15Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T18:08:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T16:08:15Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T18:18:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T16:18:15Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T18:28:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T16:28:16Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T18:38:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T16:38:16Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T18:48:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T16:48:16Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T18:58:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T16:58:16Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T19:08:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T17:08:16Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T19:18:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T17:18:16Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T19:28:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T17:28:16Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T19:38:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T17:38:16Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T19:48:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T17:48:16Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T19:58:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T17:58:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T20:08:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T18:08:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T20:18:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T18:18:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T20:28:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T18:28:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T20:38:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T18:38:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T20:48:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T18:48:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T20:58:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T18:58:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T21:08:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T19:08:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T21:18:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T19:18:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T21:28:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T19:28:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T21:38:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T19:38:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T21:48:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T19:48:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T21:58:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T19:58:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T22:08:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T20:08:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T22:18:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T20:18:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T22:28:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T20:28:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T22:38:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T20:38:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T22:48:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T20:48:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T22:58:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T20:58:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T23:08:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T21:08:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T23:18:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T21:18:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T23:28:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T21:28:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T23:38:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T21:38:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T23:48:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T21:48:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-16T23:58:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T21:58:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T00:08:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T22:08:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T00:18:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T22:18:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T00:28:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T22:28:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T00:38:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T22:38:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T00:48:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T22:48:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T00:58:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T22:58:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T01:08:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T23:08:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T01:18:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T23:18:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T01:28:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T23:28:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T01:38:22Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T23:38:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T01:48:22Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T23:48:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T01:58:22Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-16T23:58:21Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T02:08:22Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T00:08:21Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T02:18:22Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T00:18:21Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T02:28:22Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T00:28:21Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T02:38:22Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T00:38:21Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", + "ts": "2026-05-17T02:48:22Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T00:48:21Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "a30a9de", + "message": "auto-save 2026-05-17 10:56 (+1, ~2)", + "ts": "2026-05-17T10:56:31+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T00:58:21Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 10:56 (+1, ~2)", + "ts": "2026-05-17T02:58:22Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T01:08:21Z", - "type" : "session-heartbeat" + "files_changed": 5, + "hash": "31b8738", + "message": "auto-save 2026-05-17 11:01 (~5)", + "ts": "2026-05-17T11:01:54+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T01:18:21Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "2e19f4b", + "message": "refactor: replace flow nodes with ad recreation board", + "ts": "2026-05-17T11:05:39+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T01:28:21Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: replace flow nodes with ad recreation board", + "ts": "2026-05-17T03:08:23Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T01:38:22Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: replace flow nodes with ad recreation board", + "ts": "2026-05-17T03:18:23Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T01:48:22Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "201abc6", + "message": "auto-save 2026-05-17 11:23 (~3)", + "ts": "2026-05-17T11:23:22+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T01:58:22Z", - "type" : "session-heartbeat" + "files_changed": 6, + "hash": "0203a09", + "message": "refactor: switch ad workflow to horizontal kanban", + "ts": "2026-05-17T11:27:46+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T02:08:22Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: switch ad workflow to horizontal kanban", + "ts": "2026-05-17T03:28:23Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T02:18:22Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: switch ad workflow to horizontal kanban", + "ts": "2026-05-17T03:38:23Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T02:28:22Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: switch ad workflow to horizontal kanban", + "ts": "2026-05-17T03:48:23Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T02:38:22Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "4a3110b", + "message": "auto-save 2026-05-17 11:55 (~1, -1)", + "ts": "2026-05-17T11:55:45+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: adopt work dashboard delivery rules", - "ts" : "2026-05-17T02:48:22Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 11:55 (~1, -1)", + "ts": "2026-05-17T03:58:23Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "a30a9de", - "message" : "auto-save 2026-05-17 10:56 (+1, ~2)", - "ts" : "2026-05-17T10:56:31+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "7d399b8", + "message": "auto-save 2026-05-17 12:01 (+1, ~1)", + "ts": "2026-05-17T12:01:08+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 10:56 (+1, ~2)", - "ts" : "2026-05-17T02:58:22Z", - "type" : "session-heartbeat" + "files_changed": 6, + "hash": "652a487", + "message": "refactor: merge storyboard workflow into segment board", + "ts": "2026-05-17T12:06:14+08:00", + "type": "commit" }, { - "files_changed" : 5, - "hash" : "31b8738", - "message" : "auto-save 2026-05-17 11:01 (~5)", - "ts" : "2026-05-17T11:01:54+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: merge storyboard workflow into segment board", + "ts": "2026-05-17T04:08:23Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "2e19f4b", - "message" : "refactor: replace flow nodes with ad recreation board", - "ts" : "2026-05-17T11:05:39+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: merge storyboard workflow into segment board", + "ts": "2026-05-17T04:18:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: replace flow nodes with ad recreation board", - "ts" : "2026-05-17T03:08:23Z", - "type" : "session-heartbeat" + "files_changed": 4, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:refactor: merge storyboard workflow into segment board", + "ts": "2026-05-17T04:28:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: replace flow nodes with ad recreation board", - "ts" : "2026-05-17T03:18:23Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "08f1837", + "message": "auto-save 2026-05-17 12:28 (~4)", + "ts": "2026-05-17T12:28:26+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "201abc6", - "message" : "auto-save 2026-05-17 11:23 (~3)", - "ts" : "2026-05-17T11:23:22+08:00", - "type" : "commit" + "files_changed": 7, + "hash": "b02bc3f", + "message": "feat: add automatic production start workflow", + "ts": "2026-05-17T12:33:13+08:00", + "type": "commit" }, { - "files_changed" : 6, - "hash" : "0203a09", - "message" : "refactor: switch ad workflow to horizontal kanban", - "ts" : "2026-05-17T11:27:46+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add automatic production start workflow", + "ts": "2026-05-17T04:38:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: switch ad workflow to horizontal kanban", - "ts" : "2026-05-17T03:28:23Z", - "type" : "session-heartbeat" + "files_changed": 5, + "hash": "05e9e59", + "message": "auto-save 2026-05-17 12:44 (~5)", + "ts": "2026-05-17T12:44:55+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: switch ad workflow to horizontal kanban", - "ts" : "2026-05-17T03:38:23Z", - "type" : "session-heartbeat" + "files_changed": 7, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 7 项未提交变更 · 最近提交:auto-save 2026-05-17 12:44 (~5)", + "ts": "2026-05-17T04:48:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: switch ad workflow to horizontal kanban", - "ts" : "2026-05-17T03:48:23Z", - "type" : "session-heartbeat" + "files_changed": 8, + "hash": "4dc4092", + "message": "auto-save 2026-05-17 12:50 (~8)", + "ts": "2026-05-17T12:50:17+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "4a3110b", - "message" : "auto-save 2026-05-17 11:55 (~1, -1)", - "ts" : "2026-05-17T11:55:45+08:00", - "type" : "commit" + "files_changed": 9, + "hash": "3b9e74f", + "message": "refactor: narrow intake to audio-first workflow", + "ts": "2026-05-17T12:55:45+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 11:55 (~1, -1)", - "ts" : "2026-05-17T03:58:23Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: narrow intake to audio-first workflow", + "ts": "2026-05-17T04:58:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "7d399b8", - "message" : "auto-save 2026-05-17 12:01 (+1, ~1)", - "ts" : "2026-05-17T12:01:08+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "dab3e02", + "message": "auto-save 2026-05-17 13:06 (~2)", + "ts": "2026-05-17T13:07:20+08:00", + "type": "commit" }, { - "files_changed" : 6, - "hash" : "652a487", - "message" : "refactor: merge storyboard workflow into segment board", - "ts" : "2026-05-17T12:06:14+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 13:06 (~2)", + "ts": "2026-05-17T05:08:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: merge storyboard workflow into segment board", - "ts" : "2026-05-17T04:08:23Z", - "type" : "session-heartbeat" + "files_changed": 6, + "hash": "253e82a", + "message": "auto-save 2026-05-17 13:13 (~6)", + "ts": "2026-05-17T13:13:05+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: merge storyboard workflow into segment board", - "ts" : "2026-05-17T04:18:24Z", - "type" : "session-heartbeat" + "files_changed": 5, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 5 项未提交变更 · 最近提交:auto-save 2026-05-17 13:13 (~6)", + "ts": "2026-05-17T05:18:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:refactor: merge storyboard workflow into segment board", - "ts" : "2026-05-17T04:28:24Z", - "type" : "session-heartbeat" + "files_changed": 5, + "hash": "f2742df", + "message": "auto-save 2026-05-17 13:18 (~5)", + "ts": "2026-05-17T13:18:29+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "08f1837", - "message" : "auto-save 2026-05-17 12:28 (~4)", - "ts" : "2026-05-17T12:28:26+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "6d684e0", + "message": "auto-save 2026-05-17 13:23 (~2)", + "ts": "2026-05-17T13:23:56+08:00", + "type": "commit" }, { - "files_changed" : 7, - "hash" : "b02bc3f", - "message" : "feat: add automatic production start workflow", - "ts" : "2026-05-17T12:33:13+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "126f1dd", + "message": "fix: recover media intake and remove audio strip", + "ts": "2026-05-17T13:27:36+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add automatic production start workflow", - "ts" : "2026-05-17T04:38:24Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: recover media intake and remove audio strip", + "ts": "2026-05-17T05:28:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 5, - "hash" : "05e9e59", - "message" : "auto-save 2026-05-17 12:44 (~5)", - "ts" : "2026-05-17T12:44:55+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: recover media intake and remove audio strip", + "ts": "2026-05-17T05:38:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 7, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 7 项未提交变更 · 最近提交:auto-save 2026-05-17 12:44 (~5)", - "ts" : "2026-05-17T04:48:24Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:fix: recover media intake and remove audio strip", + "ts": "2026-05-17T05:48:24Z", + "type": "session-heartbeat" }, { - "files_changed" : 8, - "hash" : "4dc4092", - "message" : "auto-save 2026-05-17 12:50 (~8)", - "ts" : "2026-05-17T12:50:17+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "5a87149", + "message": "auto-save 2026-05-17 13:50 (~2)", + "ts": "2026-05-17T13:50:47+08:00", + "type": "commit" }, { - "files_changed" : 9, - "hash" : "3b9e74f", - "message" : "refactor: narrow intake to audio-first workflow", - "ts" : "2026-05-17T12:55:45+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "c4b6980", + "message": "auto-save 2026-05-17 13:56 (~4)", + "ts": "2026-05-17T13:56:10+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: narrow intake to audio-first workflow", - "ts" : "2026-05-17T04:58:24Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "660348f", + "message": "fix: use local asr for transcript timeline", + "ts": "2026-05-17T13:58:05+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "dab3e02", - "message" : "auto-save 2026-05-17 13:06 (~2)", - "ts" : "2026-05-17T13:07:20+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: use local asr for transcript timeline", + "ts": "2026-05-17T05:58:25Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 13:06 (~2)", - "ts" : "2026-05-17T05:08:24Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: use local asr for transcript timeline", + "ts": "2026-05-17T06:08:25Z", + "type": "session-heartbeat" }, { - "files_changed" : 6, - "hash" : "253e82a", - "message" : "auto-save 2026-05-17 13:13 (~6)", - "ts" : "2026-05-17T13:13:05+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "c17fd19", + "message": "auto-save 2026-05-17 14:12 (~3)", + "ts": "2026-05-17T14:12:15+08:00", + "type": "commit" }, { - "files_changed" : 5, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 5 项未提交变更 · 最近提交:auto-save 2026-05-17 13:13 (~6)", - "ts" : "2026-05-17T05:18:24Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "3030f89", + "message": "refactor: compact audio intake panel", + "ts": "2026-05-17T14:14:48+08:00", + "type": "commit" }, { - "files_changed" : 5, - "hash" : "f2742df", - "message" : "auto-save 2026-05-17 13:18 (~5)", - "ts" : "2026-05-17T13:18:29+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: compact audio intake panel", + "ts": "2026-05-17T06:18:25Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "6d684e0", - "message" : "auto-save 2026-05-17 13:23 (~2)", - "ts" : "2026-05-17T13:23:56+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "078538e", + "message": "auto-save 2026-05-17 14:22 (~3)", + "ts": "2026-05-17T14:23:01+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "126f1dd", - "message" : "fix: recover media intake and remove audio strip", - "ts" : "2026-05-17T13:27:36+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "c375516", + "message": "refactor: tighten audio result layout", + "ts": "2026-05-17T14:27:15+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: recover media intake and remove audio strip", - "ts" : "2026-05-17T05:28:24Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: tighten audio result layout", + "ts": "2026-05-17T06:28:25Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: recover media intake and remove audio strip", - "ts" : "2026-05-17T05:38:24Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "78d47b8", + "message": "refactor: place audio results side by side", + "ts": "2026-05-17T14:31:55+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:fix: recover media intake and remove audio strip", - "ts" : "2026-05-17T05:48:24Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "27a6ef0", + "message": "refactor: unify audio result panel", + "ts": "2026-05-17T14:38:19+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "5a87149", - "message" : "auto-save 2026-05-17 13:50 (~2)", - "ts" : "2026-05-17T13:50:47+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: unify audio result panel", + "ts": "2026-05-17T06:38:25Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "c4b6980", - "message" : "auto-save 2026-05-17 13:56 (~4)", - "ts" : "2026-05-17T13:56:10+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "c6eb3ae", + "message": "auto-save 2026-05-17 14:44 (~2)", + "ts": "2026-05-17T14:44:33+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "660348f", - "message" : "fix: use local asr for transcript timeline", - "ts" : "2026-05-17T13:58:05+08:00", - "type" : "commit" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-17 14:44 (~2)", + "ts": "2026-05-17T06:48:25Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: use local asr for transcript timeline", - "ts" : "2026-05-17T05:58:25Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "38ed5bb", + "message": "auto-save 2026-05-17 14:49 (~3)", + "ts": "2026-05-17T14:49:55+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: use local asr for transcript timeline", - "ts" : "2026-05-17T06:08:25Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "fbfbd59", + "message": "auto-save 2026-05-17 14:55 (~2)", + "ts": "2026-05-17T14:55:16+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "c17fd19", - "message" : "auto-save 2026-05-17 14:12 (~3)", - "ts" : "2026-05-17T14:12:15+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "120dacf", + "message": "feat: add synced video waveform timeline", + "ts": "2026-05-17T14:58:12+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "3030f89", - "message" : "refactor: compact audio intake panel", - "ts" : "2026-05-17T14:14:48+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add synced video waveform timeline", + "ts": "2026-05-17T06:58:25Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: compact audio intake panel", - "ts" : "2026-05-17T06:18:25Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "365053a", + "message": "fix: show real audio pitch waveform", + "ts": "2026-05-17T15:05:10+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "078538e", - "message" : "auto-save 2026-05-17 14:22 (~3)", - "ts" : "2026-05-17T14:23:01+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: show real audio pitch waveform", + "ts": "2026-05-17T07:08:25Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "c375516", - "message" : "refactor: tighten audio result layout", - "ts" : "2026-05-17T14:27:15+08:00", - "type" : "commit" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:fix: show real audio pitch waveform", + "ts": "2026-05-17T07:18:25Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: tighten audio result layout", - "ts" : "2026-05-17T06:28:25Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "9a95a53", + "message": "fix: render continuous audio waveform", + "ts": "2026-05-17T15:21:09+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "78d47b8", - "message" : "refactor: place audio results side by side", - "ts" : "2026-05-17T14:31:55+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "68e7599", + "message": "fix: smooth waveform playback cursor", + "ts": "2026-05-17T15:27:06+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "27a6ef0", - "message" : "refactor: unify audio result panel", - "ts" : "2026-05-17T14:38:19+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: smooth waveform playback cursor", + "ts": "2026-05-17T07:28:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:refactor: unify audio result panel", - "ts" : "2026-05-17T06:38:25Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: smooth waveform playback cursor", + "ts": "2026-05-17T07:38:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "c6eb3ae", - "message" : "auto-save 2026-05-17 14:44 (~2)", - "ts" : "2026-05-17T14:44:33+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "cd135ae", + "message": "feat: add audio storyboard planning table", + "ts": "2026-05-17T15:48:14+08:00", + "type": "commit" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-17 14:44 (~2)", - "ts" : "2026-05-17T06:48:25Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add audio storyboard planning table", + "ts": "2026-05-17T07:48:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "38ed5bb", - "message" : "auto-save 2026-05-17 14:49 (~3)", - "ts" : "2026-05-17T14:49:55+08:00", - "type" : "commit" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: add audio storyboard planning table", + "ts": "2026-05-17T07:58:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "fbfbd59", - "message" : "auto-save 2026-05-17 14:55 (~2)", - "ts" : "2026-05-17T14:55:16+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "300355d", + "message": "auto-save 2026-05-17 16:00 (~3)", + "ts": "2026-05-17T16:00:25+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "120dacf", - "message" : "feat: add synced video waveform timeline", - "ts" : "2026-05-17T14:58:12+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "9400db6", + "message": "chore: align feed recreation worksheet naming", + "ts": "2026-05-17T16:03:36+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add synced video waveform timeline", - "ts" : "2026-05-17T06:58:25Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: align feed recreation worksheet naming", + "ts": "2026-05-17T08:08:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "365053a", - "message" : "fix: show real audio pitch waveform", - "ts" : "2026-05-17T15:05:10+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "c690979", + "message": "feat: add product refs and video candidate slots", + "ts": "2026-05-17T16:15:48+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: show real audio pitch waveform", - "ts" : "2026-05-17T07:08:25Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add product refs and video candidate slots", + "ts": "2026-05-17T08:18:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:fix: show real audio pitch waveform", - "ts" : "2026-05-17T07:18:25Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "3d851d8", + "message": "auto-save 2026-05-17 16:27 (~4)", + "ts": "2026-05-17T16:27:18+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "9a95a53", - "message" : "fix: render continuous audio waveform", - "ts" : "2026-05-17T15:21:09+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 16:27 (~4)", + "ts": "2026-05-17T08:28:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "68e7599", - "message" : "fix: smooth waveform playback cursor", - "ts" : "2026-05-17T15:27:06+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "2b0afee", + "message": "auto-save 2026-05-17 16:32 (~3)", + "ts": "2026-05-17T16:32:41+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: smooth waveform playback cursor", - "ts" : "2026-05-17T07:28:26Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "9600bb4", + "message": "auto-save 2026-05-17 16:37 (~2)", + "ts": "2026-05-17T16:38:02+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: smooth waveform playback cursor", - "ts" : "2026-05-17T07:38:26Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 16:37 (~2)", + "ts": "2026-05-17T08:38:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "cd135ae", - "message" : "feat: add audio storyboard planning table", - "ts" : "2026-05-17T15:48:14+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "9a4d983", + "message": "auto-save 2026-05-17 16:43 (~4)", + "ts": "2026-05-17T16:43:24+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add audio storyboard planning table", - "ts" : "2026-05-17T07:48:26Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 16:43 (~4)", + "ts": "2026-05-17T08:48:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: add audio storyboard planning table", - "ts" : "2026-05-17T07:58:26Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "9798e97", + "message": "auto-save 2026-05-17 16:54 (~4)", + "ts": "2026-05-17T16:54:22+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "300355d", - "message" : "auto-save 2026-05-17 16:00 (~3)", - "ts" : "2026-05-17T16:00:25+08:00", - "type" : "commit" + "files_changed": 1, + "hash": "84108ee", + "message": "feat: optimize product pool uploads", + "ts": "2026-05-17T16:56:40+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "9400db6", - "message" : "chore: align feed recreation worksheet naming", - "ts" : "2026-05-17T16:03:36+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T08:58:27Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: align feed recreation worksheet naming", - "ts" : "2026-05-17T08:08:26Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T09:08:27Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "c690979", - "message" : "feat: add product refs and video candidate slots", - "ts" : "2026-05-17T16:15:48+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T09:18:27Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add product refs and video candidate slots", - "ts" : "2026-05-17T08:18:26Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T09:28:27Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "3d851d8", - "message" : "auto-save 2026-05-17 16:27 (~4)", - "ts" : "2026-05-17T16:27:18+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T09:38:27Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 16:27 (~4)", - "ts" : "2026-05-17T08:28:26Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T09:48:27Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "2b0afee", - "message" : "auto-save 2026-05-17 16:32 (~3)", - "ts" : "2026-05-17T16:32:41+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T09:58:27Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "9600bb4", - "message" : "auto-save 2026-05-17 16:37 (~2)", - "ts" : "2026-05-17T16:38:02+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T10:08:27Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 16:37 (~2)", - "ts" : "2026-05-17T08:38:26Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T10:18:27Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "9a4d983", - "message" : "auto-save 2026-05-17 16:43 (~4)", - "ts" : "2026-05-17T16:43:24+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T10:28:28Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 16:43 (~4)", - "ts" : "2026-05-17T08:48:26Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T10:38:28Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "9798e97", - "message" : "auto-save 2026-05-17 16:54 (~4)", - "ts" : "2026-05-17T16:54:22+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T10:48:28Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "84108ee", - "message" : "feat: optimize product pool uploads", - "ts" : "2026-05-17T16:56:40+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T10:58:28Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T08:58:27Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T11:08:28Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T09:08:27Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", + "ts": "2026-05-17T11:18:28Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T09:18:27Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "a9d5962", + "message": "fix: tolerate product view model output", + "ts": "2026-05-17T19:24:23+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T09:28:27Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: tolerate product view model output", + "ts": "2026-05-17T11:28:28Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T09:38:27Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "96c998c", + "message": "auto-save 2026-05-17 19:32 (~4)", + "ts": "2026-05-17T19:32:19+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T09:48:27Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "5c6a16d", + "message": "auto-save 2026-05-17 19:37 (~4)", + "ts": "2026-05-17T19:37:40+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T09:58:27Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 19:37 (~4)", + "ts": "2026-05-17T11:38:28Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T10:08:27Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "9cfb633", + "message": "auto-save 2026-05-17 19:48 (~4)", + "ts": "2026-05-17T19:48:24+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T10:18:27Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 19:48 (~4)", + "ts": "2026-05-17T11:48:28Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T10:28:28Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "fc48499", + "message": "feat: standardize product asset inputs", + "ts": "2026-05-17T19:53:03+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T10:38:28Z", - "type" : "session-heartbeat" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: standardize product asset inputs", + "ts": "2026-05-17T11:58:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T10:48:28Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "d32e87a", + "message": "auto-save 2026-05-17 19:59 (~3)", + "ts": "2026-05-17T19:59:06+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T10:58:28Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 19:59 (~3)", + "ts": "2026-05-17T12:08:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T11:08:28Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "72aef99", + "message": "auto-save 2026-05-17 20:15 (~4)", + "ts": "2026-05-17T20:15:13+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: optimize product pool uploads", - "ts" : "2026-05-17T11:18:28Z", - "type" : "session-heartbeat" + "files_changed": 4, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-17 20:15 (~4)", + "ts": "2026-05-17T12:18:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "a9d5962", - "message" : "fix: tolerate product view model output", - "ts" : "2026-05-17T19:24:23+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "8990db4", + "message": "auto-save 2026-05-17 20:20 (~4)", + "ts": "2026-05-17T20:20:36+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: tolerate product view model output", - "ts" : "2026-05-17T11:28:28Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 20:20 (~4)", + "ts": "2026-05-17T12:28:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "96c998c", - "message" : "auto-save 2026-05-17 19:32 (~4)", - "ts" : "2026-05-17T19:32:19+08:00", - "type" : "commit" + "files_changed": 1, + "hash": "6f7bb91", + "message": "fix: harden product view parsing", + "ts": "2026-05-17T20:30:30+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "5c6a16d", - "message" : "auto-save 2026-05-17 19:37 (~4)", - "ts" : "2026-05-17T19:37:40+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: harden product view parsing", + "ts": "2026-05-17T12:38:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 19:37 (~4)", - "ts" : "2026-05-17T11:38:28Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "db24822", + "message": "auto-save 2026-05-17 20:47 (~4)", + "ts": "2026-05-17T20:47:53+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "9cfb633", - "message" : "auto-save 2026-05-17 19:48 (~4)", - "ts" : "2026-05-17T19:48:24+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 20:47 (~4)", + "ts": "2026-05-17T12:48:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 19:48 (~4)", - "ts" : "2026-05-17T11:48:28Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "096f201", + "message": "feat: add storyboard script rewriting", + "ts": "2026-05-17T20:52:52+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "fc48499", - "message" : "feat: standardize product asset inputs", - "ts" : "2026-05-17T19:53:03+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add storyboard script rewriting", + "ts": "2026-05-17T12:58:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: standardize product asset inputs", - "ts" : "2026-05-17T11:58:29Z", - "type" : "session-heartbeat" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: add storyboard script rewriting", + "ts": "2026-05-17T13:08:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "d32e87a", - "message" : "auto-save 2026-05-17 19:59 (~3)", - "ts" : "2026-05-17T19:59:06+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "252cdf4", + "message": "auto-save 2026-05-17 21:09 (~4)", + "ts": "2026-05-17T21:09:20+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 19:59 (~3)", - "ts" : "2026-05-17T12:08:29Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "ab2d0a8", + "message": "auto-save 2026-05-17 21:14 (~3)", + "ts": "2026-05-17T21:14:42+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "72aef99", - "message" : "auto-save 2026-05-17 20:15 (~4)", - "ts" : "2026-05-17T20:15:13+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 21:14 (~3)", + "ts": "2026-05-17T13:18:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-17 20:15 (~4)", - "ts" : "2026-05-17T12:18:29Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 21:14 (~3)", + "ts": "2026-05-17T13:28:29Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "8990db4", - "message" : "auto-save 2026-05-17 20:20 (~4)", - "ts" : "2026-05-17T20:20:36+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "97a1f66", + "message": "auto-save 2026-05-17 21:36 (~4)", + "ts": "2026-05-17T21:36:46+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 20:20 (~4)", - "ts" : "2026-05-17T12:28:29Z", - "type" : "session-heartbeat" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-17 21:36 (~4)", + "ts": "2026-05-17T13:38:30Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "6f7bb91", - "message" : "fix: harden product view parsing", - "ts" : "2026-05-17T20:30:30+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "bd86140", + "message": "auto-save 2026-05-17 21:42 (~3)", + "ts": "2026-05-17T21:42:09+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: harden product view parsing", - "ts" : "2026-05-17T12:38:29Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 21:42 (~3)", + "ts": "2026-05-17T13:48:30Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "db24822", - "message" : "auto-save 2026-05-17 20:47 (~4)", - "ts" : "2026-05-17T20:47:53+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "358e051", + "message": "auto-save 2026-05-17 21:52 (~3)", + "ts": "2026-05-17T21:52:55+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 20:47 (~4)", - "ts" : "2026-05-17T12:48:29Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "bcce344", + "message": "auto-save 2026-05-17 21:58 (~2)", + "ts": "2026-05-17T21:58:16+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "096f201", - "message" : "feat: add storyboard script rewriting", - "ts" : "2026-05-17T20:52:52+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 21:58 (~2)", + "ts": "2026-05-17T13:58:30Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add storyboard script rewriting", - "ts" : "2026-05-17T12:58:29Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "87015e9", + "message": "auto-save 2026-05-17 22:03 (~3)", + "ts": "2026-05-17T22:03:37+08:00", + "type": "commit" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: add storyboard script rewriting", - "ts" : "2026-05-17T13:08:29Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 22:03 (~3)", + "ts": "2026-05-17T14:08:30Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "252cdf4", - "message" : "auto-save 2026-05-17 21:09 (~4)", - "ts" : "2026-05-17T21:09:20+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "e97dcd9", + "message": "auto-save 2026-05-17 22:14 (~3)", + "ts": "2026-05-17T22:14:21+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "ab2d0a8", - "message" : "auto-save 2026-05-17 21:14 (~3)", - "ts" : "2026-05-17T21:14:42+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 22:14 (~3)", + "ts": "2026-05-17T14:18:30Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 21:14 (~3)", - "ts" : "2026-05-17T13:18:29Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "e5cffe9", + "message": "auto-save 2026-05-17 22:25 (~3)", + "ts": "2026-05-17T22:25:07+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 21:14 (~3)", - "ts" : "2026-05-17T13:28:29Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 22:25 (~3)", + "ts": "2026-05-17T14:28:30Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "97a1f66", - "message" : "auto-save 2026-05-17 21:36 (~4)", - "ts" : "2026-05-17T21:36:46+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "d3bcced", + "message": "auto-save 2026-05-17 22:30 (~2)", + "ts": "2026-05-17T22:30:29+08:00", + "type": "commit" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-17 21:36 (~4)", - "ts" : "2026-05-17T13:38:30Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "18d2c5e", + "message": "auto-save 2026-05-17 22:35 (~3)", + "ts": "2026-05-17T22:35:50+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "bd86140", - "message" : "auto-save 2026-05-17 21:42 (~3)", - "ts" : "2026-05-17T21:42:09+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 22:35 (~3)", + "ts": "2026-05-17T14:38:30Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 21:42 (~3)", - "ts" : "2026-05-17T13:48:30Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "71c9a45", + "message": "fix: reorganize source video frame workflow", + "ts": "2026-05-17T22:46:05+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "358e051", - "message" : "auto-save 2026-05-17 21:52 (~3)", - "ts" : "2026-05-17T21:52:55+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: reorganize source video frame workflow", + "ts": "2026-05-17T14:48:30Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "bcce344", - "message" : "auto-save 2026-05-17 21:58 (~2)", - "ts" : "2026-05-17T21:58:16+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "b4b2259", + "message": "auto-save 2026-05-17 22:57 (~2)", + "ts": "2026-05-17T22:57:27+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 21:58 (~2)", - "ts" : "2026-05-17T13:58:30Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 22:57 (~2)", + "ts": "2026-05-17T14:58:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "87015e9", - "message" : "auto-save 2026-05-17 22:03 (~3)", - "ts" : "2026-05-17T22:03:37+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "290a833", + "message": "auto-save 2026-05-17 23:03 (~3)", + "ts": "2026-05-17T23:03:08+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 22:03 (~3)", - "ts" : "2026-05-17T14:08:30Z", - "type" : "session-heartbeat" + "files_changed": 1, + "hash": "a1de7f2", + "message": "fix: clarify source frame workflow copy", + "ts": "2026-05-17T23:06:31+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "e97dcd9", - "message" : "auto-save 2026-05-17 22:14 (~3)", - "ts" : "2026-05-17T22:14:21+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: clarify source frame workflow copy", + "ts": "2026-05-17T15:08:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 22:14 (~3)", - "ts" : "2026-05-17T14:18:30Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:fix: clarify source frame workflow copy", + "ts": "2026-05-17T15:18:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "e5cffe9", - "message" : "auto-save 2026-05-17 22:25 (~3)", - "ts" : "2026-05-17T22:25:07+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "cbe7a1b", + "message": "auto-save 2026-05-17 23:19 (~2)", + "ts": "2026-05-17T23:19:14+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 22:25 (~3)", - "ts" : "2026-05-17T14:28:30Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "44136f5", + "message": "fix: enable unified similar subject views", + "ts": "2026-05-17T23:23:56+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "d3bcced", - "message" : "auto-save 2026-05-17 22:30 (~2)", - "ts" : "2026-05-17T22:30:29+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: enable unified similar subject views", + "ts": "2026-05-17T15:28:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "18d2c5e", - "message" : "auto-save 2026-05-17 22:35 (~3)", - "ts" : "2026-05-17T22:35:50+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "970bc56", + "message": "auto-save 2026-05-17 23:35 (~4)", + "ts": "2026-05-17T23:35:20+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 22:35 (~3)", - "ts" : "2026-05-17T14:38:30Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 23:35 (~4)", + "ts": "2026-05-17T15:38:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "71c9a45", - "message" : "fix: reorganize source video frame workflow", - "ts" : "2026-05-17T22:46:05+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "95e976f", + "message": "auto-save 2026-05-17 23:40 (~2)", + "ts": "2026-05-17T23:40:43+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: reorganize source video frame workflow", - "ts" : "2026-05-17T14:48:30Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "8e91dd4", + "message": "auto-save 2026-05-17 23:46 (~2)", + "ts": "2026-05-17T23:46:06+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "b4b2259", - "message" : "auto-save 2026-05-17 22:57 (~2)", - "ts" : "2026-05-17T22:57:27+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 23:46 (~2)", + "ts": "2026-05-17T15:48:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 22:57 (~2)", - "ts" : "2026-05-17T14:58:31Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "7c51ff2", + "message": "auto-save 2026-05-17 23:56 (~2)", + "ts": "2026-05-17T23:56:54+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "290a833", - "message" : "auto-save 2026-05-17 23:03 (~3)", - "ts" : "2026-05-17T23:03:08+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 23:56 (~2)", + "ts": "2026-05-17T15:58:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "a1de7f2", - "message" : "fix: clarify source frame workflow copy", - "ts" : "2026-05-17T23:06:31+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "745f72d", + "message": "auto-save 2026-05-18 00:07 (~3)", + "ts": "2026-05-18T00:07:36+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: clarify source frame workflow copy", - "ts" : "2026-05-17T15:08:31Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 00:07 (~3)", + "ts": "2026-05-17T16:08:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:fix: clarify source frame workflow copy", - "ts" : "2026-05-17T15:18:31Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "ba202e4", + "message": "auto-save 2026-05-18 00:12 (~3)", + "ts": "2026-05-18T00:12:58+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "cbe7a1b", - "message" : "auto-save 2026-05-17 23:19 (~2)", - "ts" : "2026-05-17T23:19:14+08:00", - "type" : "commit" + "files_changed": 1, + "hash": "eeff64c", + "message": "fix: show generated subject views", + "ts": "2026-05-18T00:16:10+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "44136f5", - "message" : "fix: enable unified similar subject views", - "ts" : "2026-05-17T23:23:56+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: show generated subject views", + "ts": "2026-05-17T16:18:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: enable unified similar subject views", - "ts" : "2026-05-17T15:28:31Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "a7b1315", + "message": "auto-save 2026-05-18 00:23 (~2)", + "ts": "2026-05-18T00:23:43+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "970bc56", - "message" : "auto-save 2026-05-17 23:35 (~4)", - "ts" : "2026-05-17T23:35:20+08:00", - "type" : "commit" + "files_changed": 8, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 8 项未提交变更 · 最近提交:auto-save 2026-05-18 00:23 (~2)", + "ts": "2026-05-17T16:28:31Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-17 23:35 (~4)", - "ts" : "2026-05-17T15:38:31Z", - "type" : "session-heartbeat" + "files_changed": 8, + "hash": "6f0b54c", + "message": "auto-save 2026-05-18 00:29 (~8)", + "ts": "2026-05-18T00:29:11+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "95e976f", - "message" : "auto-save 2026-05-17 23:40 (~2)", - "ts" : "2026-05-17T23:40:43+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 00:29 (~8)", + "ts": "2026-05-17T16:38:32Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "8e91dd4", - "message" : "auto-save 2026-05-17 23:46 (~2)", - "ts" : "2026-05-17T23:46:06+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 00:29 (~8)", + "ts": "2026-05-17T16:48:32Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 23:46 (~2)", - "ts" : "2026-05-17T15:48:31Z", - "type" : "session-heartbeat" + "files_changed": 0, + "hash": "29bfaef", + "message": "feat: route media models by provider", + "ts": "2026-05-18T00:49:38+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "7c51ff2", - "message" : "auto-save 2026-05-17 23:56 (~2)", - "ts" : "2026-05-17T23:56:54+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "34ecab4", + "message": "auto-save 2026-05-18 00:57 (~4)", + "ts": "2026-05-18T00:57:07+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-17 23:56 (~2)", - "ts" : "2026-05-17T15:58:31Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 00:57 (~4)", + "ts": "2026-05-17T16:58:32Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "745f72d", - "message" : "auto-save 2026-05-18 00:07 (~3)", - "ts" : "2026-05-18T00:07:36+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "4c43d89", + "message": "auto-save 2026-05-18 01:02 (~2)", + "ts": "2026-05-18T01:02:30+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 00:07 (~3)", - "ts" : "2026-05-17T16:08:31Z", - "type" : "session-heartbeat" + "files_changed": 8, + "hash": "7ca5a95", + "message": "auto-save 2026-05-18 01:07 (~8)", + "ts": "2026-05-18T01:07:51+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "ba202e4", - "message" : "auto-save 2026-05-18 00:12 (~3)", - "ts" : "2026-05-18T00:12:58+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 01:07 (~8)", + "ts": "2026-05-17T17:08:32Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "eeff64c", - "message" : "fix: show generated subject views", - "ts" : "2026-05-18T00:16:10+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 01:07 (~8)", + "ts": "2026-05-17T17:18:32Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: show generated subject views", - "ts" : "2026-05-17T16:18:31Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 01:07 (~8)", + "ts": "2026-05-17T17:28:32Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "a7b1315", - "message" : "auto-save 2026-05-18 00:23 (~2)", - "ts" : "2026-05-18T00:23:43+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 01:07 (~8)", + "ts": "2026-05-17T19:28:08Z", + "type": "session-heartbeat" }, { - "files_changed" : 8, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 8 项未提交变更 · 最近提交:auto-save 2026-05-18 00:23 (~2)", - "ts" : "2026-05-17T16:28:31Z", - "type" : "session-heartbeat" + "files_changed": 0, + "hash": "4a5c549", + "message": "fix: force gpt image model", + "ts": "2026-05-18T06:22:31+08:00", + "type": "commit" }, { - "files_changed" : 8, - "hash" : "6f0b54c", - "message" : "auto-save 2026-05-18 00:29 (~8)", - "ts" : "2026-05-18T00:29:11+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: force gpt image model", + "ts": "2026-05-17T22:23:44Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 00:29 (~8)", - "ts" : "2026-05-17T16:38:32Z", - "type" : "session-heartbeat" + "files_changed": 5, + "hash": "18fd8c9", + "message": "auto-save 2026-05-18 06:33 (~5)", + "ts": "2026-05-18T06:33:24+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 00:29 (~8)", - "ts" : "2026-05-17T16:48:32Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 06:33 (~5)", + "ts": "2026-05-17T22:33:44Z", + "type": "session-heartbeat" }, { - "files_changed" : 0, - "hash" : "29bfaef", - "message" : "feat: route media models by provider", - "ts" : "2026-05-18T00:49:38+08:00", - "type" : "commit" + "files_changed": 1, + "hash": "58c3e5c", + "message": "feat: manage subject view thumbnails", + "ts": "2026-05-18T06:38:01+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "34ecab4", - "message" : "auto-save 2026-05-18 00:57 (~4)", - "ts" : "2026-05-18T00:57:07+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: manage subject view thumbnails", + "ts": "2026-05-17T22:43:44Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 00:57 (~4)", - "ts" : "2026-05-17T16:58:32Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "a33287f", + "message": "auto-save 2026-05-18 06:44 (~3)", + "ts": "2026-05-18T06:44:09+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "4c43d89", - "message" : "auto-save 2026-05-18 01:02 (~2)", - "ts" : "2026-05-18T01:02:30+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "e07af78", + "message": "fix: use image edits for gpt references", + "ts": "2026-05-18T06:48:19+08:00", + "type": "commit" }, { - "files_changed" : 8, - "hash" : "7ca5a95", - "message" : "auto-save 2026-05-18 01:07 (~8)", - "ts" : "2026-05-18T01:07:51+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: use image edits for gpt references", + "ts": "2026-05-17T22:53:44Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 01:07 (~8)", - "ts" : "2026-05-17T17:08:32Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "d72bf62", + "message": "auto-save 2026-05-18 07:00 (~2)", + "ts": "2026-05-18T07:00:37+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 01:07 (~8)", - "ts" : "2026-05-17T17:18:32Z", - "type" : "session-heartbeat" + "files_changed": 7, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 7 项未提交变更 · 最近提交:auto-save 2026-05-18 07:00 (~2)", + "ts": "2026-05-17T23:03:44Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 01:07 (~8)", - "ts" : "2026-05-17T17:28:32Z", - "type" : "session-heartbeat" + "files_changed": 8, + "hash": "5fde9f3", + "message": "auto-save 2026-05-18 07:05 (~8)", + "ts": "2026-05-18T07:06:00+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 01:07 (~8)", - "ts" : "2026-05-17T19:28:08Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "05283ae", + "message": "fix: send product angle refs as image inputs", + "ts": "2026-05-18T07:10:27+08:00", + "type": "commit" }, { - "files_changed" : 0, - "hash" : "4a5c549", - "message" : "fix: force gpt image model", - "ts" : "2026-05-18T06:22:31+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: send product angle refs as image inputs", + "ts": "2026-05-17T23:13:45Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: force gpt image model", - "ts" : "2026-05-17T22:23:44Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "4653108", + "message": "auto-save 2026-05-18 07:22 (~2)", + "ts": "2026-05-18T07:22:23+08:00", + "type": "commit" }, { - "files_changed" : 5, - "hash" : "18fd8c9", - "message" : "auto-save 2026-05-18 06:33 (~5)", - "ts" : "2026-05-18T06:33:24+08:00", - "type" : "commit" + "files_changed": 4, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-18 07:22 (~2)", + "ts": "2026-05-17T23:23:45Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 06:33 (~5)", - "ts" : "2026-05-17T22:33:44Z", - "type" : "session-heartbeat" + "files_changed": 6, + "hash": "9790e5b", + "message": "auto-save 2026-05-18 07:27 (~6)", + "ts": "2026-05-18T07:27:45+08:00", + "type": "commit" }, { - "files_changed" : 1, - "hash" : "58c3e5c", - "message" : "feat: manage subject view thumbnails", - "ts" : "2026-05-18T06:38:01+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "fe560d6", + "message": "auto-save 2026-05-18 07:33 (~4)", + "ts": "2026-05-18T07:33:17+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: manage subject view thumbnails", - "ts" : "2026-05-17T22:43:44Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 07:33 (~4)", + "ts": "2026-05-17T23:33:45Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "a33287f", - "message" : "auto-save 2026-05-18 06:44 (~3)", - "ts" : "2026-05-18T06:44:09+08:00", - "type" : "commit" + "files_changed": 0, + "hash": "9afed85", + "message": "feat: add character presets for subject views", + "ts": "2026-05-18T07:36:03+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "e07af78", - "message" : "fix: use image edits for gpt references", - "ts" : "2026-05-18T06:48:19+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", + "ts": "2026-05-17T23:49:30Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: use image edits for gpt references", - "ts" : "2026-05-17T22:53:44Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", + "ts": "2026-05-18T00:09:26Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "d72bf62", - "message" : "auto-save 2026-05-18 07:00 (~2)", - "ts" : "2026-05-18T07:00:37+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", + "ts": "2026-05-18T00:27:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 7, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 7 项未提交变更 · 最近提交:auto-save 2026-05-18 07:00 (~2)", - "ts" : "2026-05-17T23:03:44Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", + "ts": "2026-05-18T00:52:11Z", + "type": "session-heartbeat" }, { - "files_changed" : 8, - "hash" : "5fde9f3", - "message" : "auto-save 2026-05-18 07:05 (~8)", - "ts" : "2026-05-18T07:06:00+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", + "ts": "2026-05-18T01:02:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "05283ae", - "message" : "fix: send product angle refs as image inputs", - "ts" : "2026-05-18T07:10:27+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "41456b4", + "message": "auto-save 2026-05-18 09:07 (~4)", + "ts": "2026-05-18T09:07:39+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: send product angle refs as image inputs", - "ts" : "2026-05-17T23:13:45Z", - "type" : "session-heartbeat" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 09:07 (~4)", + "ts": "2026-05-18T01:12:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "4653108", - "message" : "auto-save 2026-05-18 07:22 (~2)", - "ts" : "2026-05-18T07:22:23+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "32ac1ec", + "message": "auto-save 2026-05-18 09:12 (~3)", + "ts": "2026-05-18T09:13:03+08:00", + "type": "commit" }, { - "files_changed" : 4, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-18 07:22 (~2)", - "ts" : "2026-05-17T23:23:45Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "9d8b5dc", + "message": "fix: stabilize image gateway transport", + "ts": "2026-05-18T09:13:26+08:00", + "type": "commit" }, { - "files_changed" : 6, - "hash" : "9790e5b", - "message" : "auto-save 2026-05-18 07:27 (~6)", - "ts" : "2026-05-18T07:27:45+08:00", - "type" : "commit" + "files_changed": 5, + "hash": "cf648ea", + "message": "fix: stabilize image gateway transport", + "ts": "2026-05-18T09:17:24+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "fe560d6", - "message" : "auto-save 2026-05-18 07:33 (~4)", - "ts" : "2026-05-18T07:33:17+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: stabilize image gateway transport", + "ts": "2026-05-18T01:22:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 07:33 (~4)", - "ts" : "2026-05-17T23:33:45Z", - "type" : "session-heartbeat" + "files_changed": 5, + "hash": "99d7022", + "message": "auto-save 2026-05-18 09:29 (~5)", + "ts": "2026-05-18T09:31:17+08:00", + "type": "commit" }, { - "files_changed" : 0, - "hash" : "9afed85", - "message" : "feat: add character presets for subject views", - "ts" : "2026-05-18T07:36:03+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 09:29 (~5)", + "ts": "2026-05-18T01:32:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", - "ts" : "2026-05-17T23:49:30Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "d137226", + "message": "auto-save 2026-05-18 09:42 (~3)", + "ts": "2026-05-18T09:42:05+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", - "ts" : "2026-05-18T00:09:26Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 09:42 (~3)", + "ts": "2026-05-18T01:42:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", - "ts" : "2026-05-18T00:27:15Z", - "type" : "session-heartbeat" + "files_changed": 6, + "hash": "75c5d11", + "message": "feat: plan storyboard frame endpoints", + "ts": "2026-05-18T09:47:13+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", - "ts" : "2026-05-18T00:52:11Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: plan storyboard frame endpoints", + "ts": "2026-05-18T01:52:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add character presets for subject views", - "ts" : "2026-05-18T01:02:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: plan storyboard frame endpoints", + "ts": "2026-05-18T02:02:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "41456b4", - "message" : "auto-save 2026-05-18 09:07 (~4)", - "ts" : "2026-05-18T09:07:39+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: plan storyboard frame endpoints", + "ts": "2026-05-18T02:12:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 09:07 (~4)", - "ts" : "2026-05-18T01:12:12Z", - "type" : "session-heartbeat" + "files_changed": 5, + "hash": "ad3522b", + "message": "auto-save 2026-05-18 10:14 (~5)", + "ts": "2026-05-18T10:17:49+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "32ac1ec", - "message" : "auto-save 2026-05-18 09:12 (~3)", - "ts" : "2026-05-18T09:13:03+08:00", - "type" : "commit" + "files_changed": 4, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-18 10:14 (~5)", + "ts": "2026-05-18T02:22:12Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "9d8b5dc", - "message" : "fix: stabilize image gateway transport", - "ts" : "2026-05-18T09:13:26+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "5786d6f", + "message": "auto-save 2026-05-18 10:23 (~4)", + "ts": "2026-05-18T10:23:13+08:00", + "type": "commit" }, { - "files_changed" : 5, - "hash" : "cf648ea", - "message" : "fix: stabilize image gateway transport", - "ts" : "2026-05-18T09:17:24+08:00", - "type" : "commit" + "files_changed": 6, + "hash": "162e092", + "message": "auto-save 2026-05-18 10:28 (~6)", + "ts": "2026-05-18T10:28:38+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: stabilize image gateway transport", - "ts" : "2026-05-18T01:22:12Z", - "type" : "session-heartbeat" + "files_changed": 5, + "hash": "4c8cb06", + "message": "feat: parallelize ad recreation intake", + "ts": "2026-05-18T10:31:18+08:00", + "type": "commit" }, { - "files_changed" : 5, - "hash" : "99d7022", - "message" : "auto-save 2026-05-18 09:29 (~5)", - "ts" : "2026-05-18T09:31:17+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: parallelize ad recreation intake", + "ts": "2026-05-18T02:32:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 09:29 (~5)", - "ts" : "2026-05-18T01:32:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: parallelize ad recreation intake", + "ts": "2026-05-18T02:42:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "d137226", - "message" : "auto-save 2026-05-18 09:42 (~3)", - "ts" : "2026-05-18T09:42:05+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: parallelize ad recreation intake", + "ts": "2026-05-18T02:52:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 09:42 (~3)", - "ts" : "2026-05-18T01:42:12Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "4e9a8ec", + "message": "auto-save 2026-05-18 10:59 (~2)", + "ts": "2026-05-18T10:59:23+08:00", + "type": "commit" }, { - "files_changed" : 6, - "hash" : "75c5d11", - "message" : "feat: plan storyboard frame endpoints", - "ts" : "2026-05-18T09:47:13+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 10:59 (~2)", + "ts": "2026-05-18T03:02:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: plan storyboard frame endpoints", - "ts" : "2026-05-18T01:52:12Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "6cdee3d", + "message": "auto-save 2026-05-18 11:04 (~4)", + "ts": "2026-05-18T11:04:50+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: plan storyboard frame endpoints", - "ts" : "2026-05-18T02:02:12Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "21ff4dc", + "message": "auto-save 2026-05-18 11:10 (~4)", + "ts": "2026-05-18T11:10:19+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: plan storyboard frame endpoints", - "ts" : "2026-05-18T02:12:12Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 11:10 (~4)", + "ts": "2026-05-18T03:12:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 5, - "hash" : "ad3522b", - "message" : "auto-save 2026-05-18 10:14 (~5)", - "ts" : "2026-05-18T10:17:49+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 11:10 (~4)", + "ts": "2026-05-18T03:22:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-18 10:14 (~5)", - "ts" : "2026-05-18T02:22:12Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "07fd4d6", + "message": "auto-save 2026-05-18 11:26 (~4)", + "ts": "2026-05-18T11:26:38+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "5786d6f", - "message" : "auto-save 2026-05-18 10:23 (~4)", - "ts" : "2026-05-18T10:23:13+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "0b5c553", + "message": "auto-save 2026-05-18 11:31 (~3)", + "ts": "2026-05-18T11:32:03+08:00", + "type": "commit" }, { - "files_changed" : 6, - "hash" : "162e092", - "message" : "auto-save 2026-05-18 10:28 (~6)", - "ts" : "2026-05-18T10:28:38+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 11:31 (~3)", + "ts": "2026-05-18T03:32:13Z", + "type": "session-heartbeat" }, { - "files_changed" : 5, - "hash" : "4c8cb06", - "message" : "feat: parallelize ad recreation intake", - "ts" : "2026-05-18T10:31:18+08:00", - "type" : "commit" + "files_changed": 6, + "hash": "8f917d5", + "message": "feat: gate video generation on endpoint frames", + "ts": "2026-05-18T11:37:13+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: parallelize ad recreation intake", - "ts" : "2026-05-18T02:32:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: gate video generation on endpoint frames", + "ts": "2026-05-18T03:42:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: parallelize ad recreation intake", - "ts" : "2026-05-18T02:42:13Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "4aae90e", + "message": "auto-save 2026-05-18 11:48 (+1, ~2)", + "ts": "2026-05-18T11:48:16+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: parallelize ad recreation intake", - "ts" : "2026-05-18T02:52:13Z", - "type" : "session-heartbeat" + "files_changed": 5, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 5 项未提交变更 · 最近提交:auto-save 2026-05-18 11:48 (+1, ~2)", + "ts": "2026-05-18T03:52:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "4e9a8ec", - "message" : "auto-save 2026-05-18 10:59 (~2)", - "ts" : "2026-05-18T10:59:23+08:00", - "type" : "commit" + "files_changed": 5, + "hash": "e8c62cf", + "message": "auto-save 2026-05-18 11:53 (~5)", + "ts": "2026-05-18T11:53:40+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 10:59 (~2)", - "ts" : "2026-05-18T03:02:13Z", - "type" : "session-heartbeat" + "files_changed": 5, + "hash": "c7c7301", + "message": "feat: standardize media asset tiles", + "ts": "2026-05-18T11:57:46+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "6cdee3d", - "message" : "auto-save 2026-05-18 11:04 (~4)", - "ts" : "2026-05-18T11:04:50+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T04:02:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "21ff4dc", - "message" : "auto-save 2026-05-18 11:10 (~4)", - "ts" : "2026-05-18T11:10:19+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T04:12:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 11:10 (~4)", - "ts" : "2026-05-18T03:12:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T04:22:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 11:10 (~4)", - "ts" : "2026-05-18T03:22:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T04:32:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "07fd4d6", - "message" : "auto-save 2026-05-18 11:26 (~4)", - "ts" : "2026-05-18T11:26:38+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T04:42:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "0b5c553", - "message" : "auto-save 2026-05-18 11:31 (~3)", - "ts" : "2026-05-18T11:32:03+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T04:52:14Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 11:31 (~3)", - "ts" : "2026-05-18T03:32:13Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T05:02:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 6, - "hash" : "8f917d5", - "message" : "feat: gate video generation on endpoint frames", - "ts" : "2026-05-18T11:37:13+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T05:12:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: gate video generation on endpoint frames", - "ts" : "2026-05-18T03:42:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T05:22:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "4aae90e", - "message" : "auto-save 2026-05-18 11:48 (+1, ~2)", - "ts" : "2026-05-18T11:48:16+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T05:32:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 5, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 5 项未提交变更 · 最近提交:auto-save 2026-05-18 11:48 (+1, ~2)", - "ts" : "2026-05-18T03:52:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T05:42:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 5, - "hash" : "e8c62cf", - "message" : "auto-save 2026-05-18 11:53 (~5)", - "ts" : "2026-05-18T11:53:40+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: standardize media asset tiles", + "ts": "2026-05-18T05:52:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 5, - "hash" : "c7c7301", - "message" : "feat: standardize media asset tiles", - "ts" : "2026-05-18T11:57:46+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "36bb236", + "message": "auto-save 2026-05-18 13:52 (~2)", + "ts": "2026-05-18T13:52:16+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T04:02:14Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "f2f9711", + "message": "auto-save 2026-05-18 13:57 (~4)", + "ts": "2026-05-18T13:57:40+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T04:12:14Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "b5b1e43", + "message": "feat: select subject views for endpoint frames", + "ts": "2026-05-18T13:58:45+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T04:22:14Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", + "ts": "2026-05-18T06:02:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T04:32:14Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "启动 Codex 接力会话 · 已载入 Claude / Codex 最近会话,等待下一条指令 · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", + "ts": "2026-05-18T06:10:17Z", + "type": "assistant-session" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T04:42:14Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", + "ts": "2026-05-18T06:12:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T04:52:14Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", + "ts": "2026-05-18T06:12:51Z", + "type": "session-end" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T05:02:15Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", + "ts": "2026-05-18T06:12:51Z", + "type": "session-end" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T05:12:15Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "851b763", + "message": "auto-save 2026-05-18 14:13 (~2)", + "ts": "2026-05-18T14:13:53+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T05:22:15Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", + "ts": "2026-05-18T06:22:15Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T05:32:15Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "616e23f", + "message": "auto-save 2026-05-18 14:24 (~2)", + "ts": "2026-05-18T14:24:43+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T05:42:15Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "7c4188d", + "message": "auto-save 2026-05-18 14:30 (~2)", + "ts": "2026-05-18T14:30:08+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: standardize media asset tiles", - "ts" : "2026-05-18T05:52:15Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 14:30 (~2)", + "ts": "2026-05-18T06:32:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "36bb236", - "message" : "auto-save 2026-05-18 13:52 (~2)", - "ts" : "2026-05-18T13:52:16+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "6336e90", + "message": "auto-save 2026-05-18 14:35 (~3)", + "ts": "2026-05-18T14:35:34+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "f2f9711", - "message" : "auto-save 2026-05-18 13:57 (~4)", - "ts" : "2026-05-18T13:57:40+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "665a0ef", + "message": "feat: clarify ad recreation workflow steps", + "ts": "2026-05-18T14:38:21+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "b5b1e43", - "message" : "feat: select subject views for endpoint frames", - "ts" : "2026-05-18T13:58:45+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "12c46b1", + "message": "auto-save 2026-05-18 14:40 (~2)", + "ts": "2026-05-18T14:40:59+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", - "ts" : "2026-05-18T06:02:15Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 14:40 (~2)", + "ts": "2026-05-18T06:42:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "message" : "启动 Codex 接力会话 · 已载入 Claude / Codex 最近会话,等待下一条指令 · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", - "ts" : "2026-05-18T06:10:17Z", - "type" : "assistant-session" + "files_changed": 3, + "hash": "c9c9cbe", + "message": "auto-save 2026-05-18 14:46 (~3)", + "ts": "2026-05-18T14:46:24+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", - "ts" : "2026-05-18T06:12:15Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "4991526", + "message": "feat: refine source video keyframe layout", + "ts": "2026-05-18T14:51:44+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", - "ts" : "2026-05-18T06:12:51Z", - "type" : "session-end" + "files_changed": 2, + "hash": "253b1f0", + "message": "auto-save 2026-05-18 14:51 (~2)", + "ts": "2026-05-18T14:51:49+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", - "ts" : "2026-05-18T06:12:51Z", - "type" : "session-end" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 14:51 (~2)", + "ts": "2026-05-18T06:52:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "851b763", - "message" : "auto-save 2026-05-18 14:13 (~2)", - "ts" : "2026-05-18T14:13:53+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "21d8d5d", + "message": "auto-save 2026-05-18 14:57 (~2)", + "ts": "2026-05-18T14:57:14+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: select subject views for endpoint frames", - "ts" : "2026-05-18T06:22:15Z", - "type" : "session-heartbeat" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: refine source video keyframe layout", + "ts": "2026-05-18T07:02:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "616e23f", - "message" : "auto-save 2026-05-18 14:24 (~2)", - "ts" : "2026-05-18T14:24:43+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "fa15b42", + "message": "auto-save 2026-05-18 15:02 (~3)", + "ts": "2026-05-18T15:02:39+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "7c4188d", - "message" : "auto-save 2026-05-18 14:30 (~2)", - "ts" : "2026-05-18T14:30:08+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "3ec12b1", + "message": "auto-save 2026-05-18 15:07 (~4)", + "ts": "2026-05-18T15:08:05+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 14:30 (~2)", - "ts" : "2026-05-18T06:32:16Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "c22bee4", + "message": "feat: move keyframes beside transcript timeline", + "ts": "2026-05-18T15:09:49+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "6336e90", - "message" : "auto-save 2026-05-18 14:35 (~3)", - "ts" : "2026-05-18T14:35:34+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: move keyframes beside transcript timeline", + "ts": "2026-05-18T07:12:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "665a0ef", - "message" : "feat: clarify ad recreation workflow steps", - "ts" : "2026-05-18T14:38:21+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "7dbc346", + "message": "auto-save 2026-05-18 15:13 (~2)", + "ts": "2026-05-18T15:13:30+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "12c46b1", - "message" : "auto-save 2026-05-18 14:40 (~2)", - "ts" : "2026-05-18T14:40:59+08:00", - "type" : "commit" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: move keyframes beside transcript timeline", + "ts": "2026-05-18T07:22:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 14:40 (~2)", - "ts" : "2026-05-18T06:42:16Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "e2b81bb", + "message": "auto-save 2026-05-18 15:24 (~4)", + "ts": "2026-05-18T15:24:21+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "c9c9cbe", - "message" : "auto-save 2026-05-18 14:46 (~3)", - "ts" : "2026-05-18T14:46:24+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "d9b5134", + "message": "feat: simplify keyframe selection pool", + "ts": "2026-05-18T15:26:23+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "4991526", - "message" : "feat: refine source video keyframe layout", - "ts" : "2026-05-18T14:51:44+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "6506e76", + "message": "auto-save 2026-05-18 15:29 (~2)", + "ts": "2026-05-18T15:29:46+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "253b1f0", - "message" : "auto-save 2026-05-18 14:51 (~2)", - "ts" : "2026-05-18T14:51:49+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 15:29 (~2)", + "ts": "2026-05-18T07:32:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 14:51 (~2)", - "ts" : "2026-05-18T06:52:16Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "4e6c045", + "message": "auto-save 2026-05-18 15:40 (~4)", + "ts": "2026-05-18T15:40:38+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "21d8d5d", - "message" : "auto-save 2026-05-18 14:57 (~2)", - "ts" : "2026-05-18T14:57:14+08:00", - "type" : "commit" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 15:40 (~4)", + "ts": "2026-05-18T07:42:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: refine source video keyframe layout", - "ts" : "2026-05-18T07:02:16Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "981b707", + "message": "auto-save 2026-05-18 15:45 (~3)", + "ts": "2026-05-18T15:46:04+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "fa15b42", - "message" : "auto-save 2026-05-18 15:02 (~3)", - "ts" : "2026-05-18T15:02:39+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "d38acb4", + "message": "auto-save 2026-05-18 15:51 (~4)", + "ts": "2026-05-18T15:51:30+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "3ec12b1", - "message" : "auto-save 2026-05-18 15:07 (~4)", - "ts" : "2026-05-18T15:08:05+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 15:51 (~4)", + "ts": "2026-05-18T07:52:16Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "c22bee4", - "message" : "feat: move keyframes beside transcript timeline", - "ts" : "2026-05-18T15:09:49+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "1bbe849", + "message": "auto-save 2026-05-18 15:56 (~3)", + "ts": "2026-05-18T15:56:55+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: move keyframes beside transcript timeline", - "ts" : "2026-05-18T07:12:16Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "48d4002", + "message": "feat: connect subject template library", + "ts": "2026-05-18T15:59:56+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "7dbc346", - "message" : "auto-save 2026-05-18 15:13 (~2)", - "ts" : "2026-05-18T15:13:30+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: connect subject template library", + "ts": "2026-05-18T08:02:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:feat: move keyframes beside transcript timeline", - "ts" : "2026-05-18T07:22:16Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "7c03dc2", + "message": "auto-save 2026-05-18 16:02 (~2)", + "ts": "2026-05-18T16:02:29+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "e2b81bb", - "message" : "auto-save 2026-05-18 15:24 (~4)", - "ts" : "2026-05-18T15:24:21+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 16:02 (~2)", + "ts": "2026-05-18T08:12:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "d9b5134", - "message" : "feat: simplify keyframe selection pool", - "ts" : "2026-05-18T15:26:23+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "88e2d9a", + "message": "auto-save 2026-05-18 16:18 (~4)", + "ts": "2026-05-18T16:18:44+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "6506e76", - "message" : "auto-save 2026-05-18 15:29 (~2)", - "ts" : "2026-05-18T15:29:46+08:00", - "type" : "commit" + "files_changed": 4, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-18 16:18 (~4)", + "ts": "2026-05-18T08:22:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 15:29 (~2)", - "ts" : "2026-05-18T07:32:16Z", - "type" : "session-heartbeat" + "files_changed": 5, + "hash": "e92c708", + "message": "auto-save 2026-05-18 16:24 (~5)", + "ts": "2026-05-18T16:24:26+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "4e6c045", - "message" : "auto-save 2026-05-18 15:40 (~4)", - "ts" : "2026-05-18T15:40:38+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "cdffc4b", + "message": "style: align board with login visual system", + "ts": "2026-05-18T16:26:08+08:00", + "type": "commit" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 15:40 (~4)", - "ts" : "2026-05-18T07:42:16Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "d85d40b", + "message": "auto-save 2026-05-18 16:29 (~2)", + "ts": "2026-05-18T16:30:03+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "981b707", - "message" : "auto-save 2026-05-18 15:45 (~3)", - "ts" : "2026-05-18T15:46:04+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 16:29 (~2)", + "ts": "2026-05-18T08:32:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "d38acb4", - "message" : "auto-save 2026-05-18 15:51 (~4)", - "ts" : "2026-05-18T15:51:30+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "72b79a0", + "message": "auto-save 2026-05-18 16:35 (~3)", + "ts": "2026-05-18T16:35:28+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 15:51 (~4)", - "ts" : "2026-05-18T07:52:16Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "dc4ea81", + "message": "auto-save 2026-05-18 16:40 (~2)", + "ts": "2026-05-18T16:40:53+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "1bbe849", - "message" : "auto-save 2026-05-18 15:56 (~3)", - "ts" : "2026-05-18T15:56:55+08:00", - "type" : "commit" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 16:40 (~2)", + "ts": "2026-05-18T08:42:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "48d4002", - "message" : "feat: connect subject template library", - "ts" : "2026-05-18T15:59:56+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "9c518af", + "message": "auto-save 2026-05-18 16:46 (~4)", + "ts": "2026-05-18T16:46:19+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: connect subject template library", - "ts" : "2026-05-18T08:02:17Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "78bd294", + "message": "style: add board light mode", + "ts": "2026-05-18T16:51:34+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "7c03dc2", - "message" : "auto-save 2026-05-18 16:02 (~2)", - "ts" : "2026-05-18T16:02:29+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "cf64be7", + "message": "auto-save 2026-05-18 16:51 (~2)", + "ts": "2026-05-18T16:51:44+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 16:02 (~2)", - "ts" : "2026-05-18T08:12:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 16:51 (~2)", + "ts": "2026-05-18T08:52:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "88e2d9a", - "message" : "auto-save 2026-05-18 16:18 (~4)", - "ts" : "2026-05-18T16:18:44+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "c3fe892", + "message": "auto-save 2026-05-18 16:57 (~2)", + "ts": "2026-05-18T16:57:09+08:00", + "type": "commit" }, { - "files_changed" : 4, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-18 16:18 (~4)", - "ts" : "2026-05-18T08:22:17Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 16:57 (~2)", + "ts": "2026-05-18T09:02:17Z", + "type": "session-heartbeat" }, { - "files_changed" : 5, - "hash" : "e92c708", - "message" : "auto-save 2026-05-18 16:24 (~5)", - "ts" : "2026-05-18T16:24:26+08:00", - "type" : "commit" + "files_changed": 11, + "hash": "381d02f", + "message": "auto-save 2026-05-18 17:07 (~11)", + "ts": "2026-05-18T17:07:59+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "cdffc4b", - "message" : "style: align board with login visual system", - "ts" : "2026-05-18T16:26:08+08:00", - "type" : "commit" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 17:07 (~11)", + "ts": "2026-05-18T09:12:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "d85d40b", - "message" : "auto-save 2026-05-18 16:29 (~2)", - "ts" : "2026-05-18T16:30:03+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "fff79e5", + "message": "auto-save 2026-05-18 17:13 (~3)", + "ts": "2026-05-18T17:13:24+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 16:29 (~2)", - "ts" : "2026-05-18T08:32:17Z", - "type" : "session-heartbeat" + "files_changed": 6, + "hash": "83f7af3", + "message": "auto-save 2026-05-18 17:18 (~6)", + "ts": "2026-05-18T17:18:50+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "72b79a0", - "message" : "auto-save 2026-05-18 16:35 (~3)", - "ts" : "2026-05-18T16:35:28+08:00", - "type" : "commit" + "files_changed": 4, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:fix: support restricted tiktok retry on main", + "ts": "2026-05-18T09:22:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "dc4ea81", - "message" : "auto-save 2026-05-18 16:40 (~2)", - "ts" : "2026-05-18T16:40:53+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "2c6b62a", + "message": "auto-save 2026-05-18 17:24 (~4)", + "ts": "2026-05-18T17:24:15+08:00", + "type": "commit" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 16:40 (~2)", - "ts" : "2026-05-18T08:42:17Z", - "type" : "session-heartbeat" + "files_changed": 8, + "hash": "3238ec2", + "message": "auto-save 2026-05-18 17:29 (~7)", + "ts": "2026-05-18T17:29:40+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "9c518af", - "message" : "auto-save 2026-05-18 16:46 (~4)", - "ts" : "2026-05-18T16:46:19+08:00", - "type" : "commit" + "files_changed": 5, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 5 项未提交变更 · 最近提交:auto-save 2026-05-18 17:29 (~7)", + "ts": "2026-05-18T09:32:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "78bd294", - "message" : "style: add board light mode", - "ts" : "2026-05-18T16:51:34+08:00", - "type" : "commit" + "files_changed": 8, + "hash": "a404839", + "message": "auto-save 2026-05-18 17:35 (~5)", + "ts": "2026-05-18T17:35:05+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "cf64be7", - "message" : "auto-save 2026-05-18 16:51 (~2)", - "ts" : "2026-05-18T16:51:44+08:00", - "type" : "commit" + "files_changed": 0, + "hash": "e3576b3", + "message": "auto-save 2026-05-18 17:40 (~2)", + "ts": "2026-05-18T17:40:29+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 16:51 (~2)", - "ts" : "2026-05-18T08:52:17Z", - "type" : "session-heartbeat" + "files_changed": 15, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 15 项未提交变更 · 最近提交:style: add board light mode", + "ts": "2026-05-18T09:42:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "c3fe892", - "message" : "auto-save 2026-05-18 16:57 (~2)", - "ts" : "2026-05-18T16:57:09+08:00", - "type" : "commit" + "files_changed": 12, + "hash": "1f600ae", + "message": "feat: improve subject generation workflow", + "ts": "2026-05-18T17:44:52+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 16:57 (~2)", - "ts" : "2026-05-18T09:02:17Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "92f04f1", + "message": "auto-save 2026-05-18 17:45 (~3)", + "ts": "2026-05-18T17:45:54+08:00", + "type": "commit" }, { - "files_changed" : 11, - "hash" : "381d02f", - "message" : "auto-save 2026-05-18 17:07 (~11)", - "ts" : "2026-05-18T17:07:59+08:00", - "type" : "commit" + "files_changed": 1, + "hash": "cc4c021", + "message": "chore: record latest worklog", + "ts": "2026-05-18T17:50:39+08:00", + "type": "commit" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 17:07 (~11)", - "ts" : "2026-05-18T09:12:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: record latest worklog", + "ts": "2026-05-18T09:52:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "fff79e5", - "message" : "auto-save 2026-05-18 17:13 (~3)", - "ts" : "2026-05-18T17:13:24+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "d8780e5", + "message": "auto-save 2026-05-18 17:56 (~3)", + "ts": "2026-05-18T17:56:44+08:00", + "type": "commit" }, { - "files_changed" : 6, - "hash" : "83f7af3", - "message" : "auto-save 2026-05-18 17:18 (~6)", - "ts" : "2026-05-18T17:18:50+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "59d7ec3", + "message": "auto-save 2026-05-18 18:02 (~3)", + "ts": "2026-05-18T18:02:08+08:00", + "type": "commit" }, { - "files_changed" : 4, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:fix: support restricted tiktok retry on main", - "ts" : "2026-05-18T09:22:18Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 18:02 (~3)", + "ts": "2026-05-18T10:02:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "2c6b62a", - "message" : "auto-save 2026-05-18 17:24 (~4)", - "ts" : "2026-05-18T17:24:15+08:00", - "type" : "commit" + "files_changed": 7, + "hash": "c1c4106", + "message": "auto-save 2026-05-18 18:07 (~7)", + "ts": "2026-05-18T18:07:32+08:00", + "type": "commit" }, { - "files_changed" : 8, - "hash" : "3238ec2", - "message" : "auto-save 2026-05-18 17:29 (~7)", - "ts" : "2026-05-18T17:29:40+08:00", - "type" : "commit" + "files_changed": 4, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-18 18:07 (~7)", + "ts": "2026-05-18T10:12:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 5, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 5 项未提交变更 · 最近提交:auto-save 2026-05-18 17:29 (~7)", - "ts" : "2026-05-18T09:32:18Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "ebfc507", + "message": "auto-save 2026-05-18 18:12 (~4)", + "ts": "2026-05-18T18:12:58+08:00", + "type": "commit" }, { - "files_changed" : 8, - "hash" : "a404839", - "message" : "auto-save 2026-05-18 17:35 (~5)", - "ts" : "2026-05-18T17:35:05+08:00", - "type" : "commit" + "files_changed": 8, + "hash": "095c6f1", + "message": "fix: surface resilient subject asset generation", + "ts": "2026-05-18T18:15:45+08:00", + "type": "commit" }, { - "files_changed" : 0, - "hash" : "e3576b3", - "message" : "auto-save 2026-05-18 17:40 (~2)", - "ts" : "2026-05-18T17:40:29+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "06bf0ee", + "message": "auto-save 2026-05-18 18:18 (~2)", + "ts": "2026-05-18T18:18:23+08:00", + "type": "commit" }, { - "files_changed" : 15, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 15 项未提交变更 · 最近提交:style: add board light mode", - "ts" : "2026-05-18T09:42:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "hash": "87ffa6b", + "message": "docs: align legacy model descriptions", + "ts": "2026-05-18T18:20:48+08:00", + "type": "commit" }, { - "files_changed" : 12, - "hash" : "1f600ae", - "message" : "feat: improve subject generation workflow", - "ts" : "2026-05-18T17:44:52+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: align legacy model descriptions", + "ts": "2026-05-18T10:22:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "92f04f1", - "message" : "auto-save 2026-05-18 17:45 (~3)", - "ts" : "2026-05-18T17:45:54+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "4d10b09", + "message": "auto-save 2026-05-18 18:29 (~3)", + "ts": "2026-05-18T18:29:13+08:00", + "type": "commit" }, { - "files_changed" : 1, - "hash" : "cc4c021", - "message" : "chore: record latest worklog", - "ts" : "2026-05-18T17:50:39+08:00", - "type" : "commit" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 18:29 (~3)", + "ts": "2026-05-18T10:32:18Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: record latest worklog", - "ts" : "2026-05-18T09:52:18Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "0bec7f9", + "message": "auto-save 2026-05-18 18:34 (~4)", + "ts": "2026-05-18T18:34:39+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "d8780e5", - "message" : "auto-save 2026-05-18 17:56 (~3)", - "ts" : "2026-05-18T17:56:44+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "33c3aef", + "message": "feat: add subject profile controls", + "ts": "2026-05-18T18:38:10+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "59d7ec3", - "message" : "auto-save 2026-05-18 18:02 (~3)", - "ts" : "2026-05-18T18:02:08+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls", + "ts": "2026-05-18T10:42:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 18:02 (~3)", - "ts" : "2026-05-18T10:02:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls", + "ts": "2026-05-18T10:52:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 7, - "hash" : "c1c4106", - "message" : "auto-save 2026-05-18 18:07 (~7)", - "ts" : "2026-05-18T18:07:32+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls", + "ts": "2026-05-18T11:02:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 4 项未提交变更 · 最近提交:auto-save 2026-05-18 18:07 (~7)", - "ts" : "2026-05-18T10:12:18Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls", + "ts": "2026-05-18T11:12:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "ebfc507", - "message" : "auto-save 2026-05-18 18:12 (~4)", - "ts" : "2026-05-18T18:12:58+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "0e2b038", + "message": "auto-save 2026-05-18 19:19 (~4)", + "ts": "2026-05-18T19:19:49+08:00", + "type": "commit" }, { - "files_changed" : 8, - "hash" : "095c6f1", - "message" : "fix: surface resilient subject asset generation", - "ts" : "2026-05-18T18:15:45+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 19:19 (~4)", + "ts": "2026-05-18T11:22:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "06bf0ee", - "message" : "auto-save 2026-05-18 18:18 (~2)", - "ts" : "2026-05-18T18:18:23+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "73c9b51", + "message": "auto-save 2026-05-18 19:25 (~3)", + "ts": "2026-05-18T19:25:14+08:00", + "type": "commit" }, { - "files_changed" : 1, - "hash" : "87ffa6b", - "message" : "docs: align legacy model descriptions", - "ts" : "2026-05-18T18:20:48+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "182435b", + "message": "auto-save 2026-05-18 19:30 (~2)", + "ts": "2026-05-18T19:30:39+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: align legacy model descriptions", - "ts" : "2026-05-18T10:22:18Z", - "type" : "session-heartbeat" + "files_changed": 5, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 5 项未提交变更 · 最近提交:feat: add subject profile controls", + "ts": "2026-05-18T11:32:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "4d10b09", - "message" : "auto-save 2026-05-18 18:29 (~3)", - "ts" : "2026-05-18T18:29:13+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "adf8b2b", + "message": "feat: use subject brief for endpoint frames", + "ts": "2026-05-18T19:33:16+08:00", + "type": "commit" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 18:29 (~3)", - "ts" : "2026-05-18T10:32:18Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "a869cf9", + "message": "auto-save 2026-05-18 19:41 (~2)", + "ts": "2026-05-18T19:41:29+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "0bec7f9", - "message" : "auto-save 2026-05-18 18:34 (~4)", - "ts" : "2026-05-18T18:34:39+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 19:41 (~2)", + "ts": "2026-05-18T11:42:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "33c3aef", - "message" : "feat: add subject profile controls", - "ts" : "2026-05-18T18:38:10+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "a6f03fd", + "message": "auto-save 2026-05-18 19:46 (~2)", + "ts": "2026-05-18T19:46:53+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls", - "ts" : "2026-05-18T10:42:19Z", - "type" : "session-heartbeat" + "files_changed": 3, + "hash": "2219f96", + "message": "auto-save 2026-05-18 19:52 (~3)", + "ts": "2026-05-18T19:52:19+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls", - "ts" : "2026-05-18T10:52:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 19:52 (~3)", + "ts": "2026-05-18T11:52:19Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls", - "ts" : "2026-05-18T11:02:19Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "699fdcd", + "message": "auto-save 2026-05-18 19:57 (~4)", + "ts": "2026-05-18T19:57:44+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls", - "ts" : "2026-05-18T11:12:19Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 19:57 (~4)", + "ts": "2026-05-18T12:02:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "0e2b038", - "message" : "auto-save 2026-05-18 19:19 (~4)", - "ts" : "2026-05-18T19:19:49+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "e4a56f2", + "message": "auto-save 2026-05-18 20:03 (~3)", + "ts": "2026-05-18T20:03:09+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 19:19 (~4)", - "ts" : "2026-05-18T11:22:19Z", - "type" : "session-heartbeat" + "files_changed": 4, + "hash": "bc0b010", + "message": "feat: enforce english prompt language strategy", + "ts": "2026-05-18T20:07:11+08:00", + "type": "commit" }, { - "files_changed" : 3, - "hash" : "73c9b51", - "message" : "auto-save 2026-05-18 19:25 (~3)", - "ts" : "2026-05-18T19:25:14+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: enforce english prompt language strategy", + "ts": "2026-05-18T12:12:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "182435b", - "message" : "auto-save 2026-05-18 19:30 (~2)", - "ts" : "2026-05-18T19:30:39+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "69bb692", + "message": "auto-save 2026-05-18 20:13 (~3)", + "ts": "2026-05-18T20:13:59+08:00", + "type": "commit" }, { - "files_changed" : 5, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 5 项未提交变更 · 最近提交:feat: add subject profile controls", - "ts" : "2026-05-18T11:32:19Z", - "type" : "session-heartbeat" + "files_changed": 2, + "hash": "b886e02", + "message": "auto-save 2026-05-18 20:19 (~2)", + "ts": "2026-05-18T20:19:24+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "adf8b2b", - "message" : "feat: use subject brief for endpoint frames", - "ts" : "2026-05-18T19:33:16+08:00", - "type" : "commit" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 20:19 (~2)", + "ts": "2026-05-18T12:22:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "a869cf9", - "message" : "auto-save 2026-05-18 19:41 (~2)", - "ts" : "2026-05-18T19:41:29+08:00", - "type" : "commit" + "files_changed": 1, + "hash": "2e2998c", + "message": "docs: document skg brand workbench theme", + "ts": "2026-05-18T20:23:21+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 19:41 (~2)", - "ts" : "2026-05-18T11:42:19Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: document skg brand workbench theme", + "ts": "2026-05-18T12:32:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "a6f03fd", - "message" : "auto-save 2026-05-18 19:46 (~2)", - "ts" : "2026-05-18T19:46:53+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: document skg brand workbench theme", + "ts": "2026-05-18T12:42:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "2219f96", - "message" : "auto-save 2026-05-18 19:52 (~3)", - "ts" : "2026-05-18T19:52:19+08:00", - "type" : "commit" + "files_changed": 2, + "hash": "58fe17c", + "message": "auto-save 2026-05-18 20:51 (~2)", + "ts": "2026-05-18T20:51:56+08:00", + "type": "commit" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 19:52 (~3)", - "ts" : "2026-05-18T11:52:19Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 20:51 (~2)", + "ts": "2026-05-18T12:52:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 4, - "hash" : "699fdcd", - "message" : "auto-save 2026-05-18 19:57 (~4)", - "ts" : "2026-05-18T19:57:44+08:00", - "type" : "commit" + "files_changed": 3, + "hash": "32620af", + "message": "auto-save 2026-05-18 20:57 (~3)", + "ts": "2026-05-18T20:57:23+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 19:57 (~4)", - "ts" : "2026-05-18T12:02:20Z", - "type" : "session-heartbeat" + "files_changed": 3, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 20:57 (~3)", + "ts": "2026-05-18T13:02:20Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "e4a56f2", - "message" : "auto-save 2026-05-18 20:03 (~3)", - "ts" : "2026-05-18T20:03:09+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "73e8ffe", + "message": "auto-save 2026-05-18 21:03 (+1, ~3)", + "ts": "2026-05-18T21:03:11+08:00", + "type": "commit" }, { - "files_changed" : 4, - "hash" : "bc0b010", - "message" : "feat: enforce english prompt language strategy", - "ts" : "2026-05-18T20:07:11+08:00", - "type" : "commit" + "files_changed": 6, + "hash": "33b91a2", + "message": "auto-save 2026-05-18 21:08 (+2, ~4)", + "ts": "2026-05-18T21:08:58+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: enforce english prompt language strategy", - "ts" : "2026-05-18T12:12:20Z", - "type" : "session-heartbeat" + "files_changed": 2, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 21:08 (+2, ~4)", + "ts": "2026-05-18T13:12:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 3, - "hash" : "69bb692", - "message" : "auto-save 2026-05-18 20:13 (~3)", - "ts" : "2026-05-18T20:13:59+08:00", - "type" : "commit" + "files_changed": 1, + "hash": "e6004b3", + "message": "docs: document global resource library", + "ts": "2026-05-18T21:14:38+08:00", + "type": "commit" }, { - "files_changed" : 2, - "hash" : "b886e02", - "message" : "auto-save 2026-05-18 20:19 (~2)", - "ts" : "2026-05-18T20:19:24+08:00", - "type" : "commit" + "files_changed": 4, + "hash": "3b7a062", + "message": "chore: persist resource libraries in production", + "ts": "2026-05-18T21:18:54+08:00", + "type": "commit" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 20:19 (~2)", - "ts" : "2026-05-18T12:22:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", + "ts": "2026-05-18T13:22:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "hash" : "2e2998c", - "message" : "docs: document skg brand workbench theme", - "ts" : "2026-05-18T20:23:21+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", + "ts": "2026-05-18T13:32:21Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: document skg brand workbench theme", - "ts" : "2026-05-18T12:32:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", + "ts": "2026-05-18T14:52:35Z", + "type": "session-heartbeat" }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: document skg brand workbench theme", - "ts" : "2026-05-18T12:42:20Z", - "type" : "session-heartbeat" + "files_changed": 1, + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", + "ts": "2026-05-18T15:02:35Z", + "type": "session-heartbeat" }, { - "files_changed" : 2, - "hash" : "58fe17c", - "message" : "auto-save 2026-05-18 20:51 (~2)", - "ts" : "2026-05-18T20:51:56+08:00", - "type" : "commit" + "files_changed": 1, + "message": "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", + "ts": "2026-05-18T15:11:14Z", + "type": "session-end" }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 20:51 (~2)", - "ts" : "2026-05-18T12:52:20Z", - "type" : "session-heartbeat" + "files_changed": 3, + "message": "启动 Codex 接力会话 · 已载入 Claude / Codex 最近会话,等待下一条指令 · 分支 main · 3 项未提交变更 · 最近提交:chore: persist resource libraries in production", + "ts": "2026-05-19T00:41:33Z", + "type": "assistant-session" }, { - "files_changed" : 3, - "hash" : "32620af", - "message" : "auto-save 2026-05-18 20:57 (~3)", - "ts" : "2026-05-18T20:57:23+08:00", - "type" : "commit" + "files_changed": 3, + "message": "启动 Codex 接力会话 · 已载入 Cursor / Claude / Codex 最近会话,等待下一条指令 · 分支 main · 3 项未提交变更 · 最近提交:chore: persist resource libraries in production", + "ts": "2026-05-19T00:44:28Z", + "type": "assistant-session" }, { - "files_changed" : 3, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 20:57 (~3)", - "ts" : "2026-05-18T13:02:20Z", - "type" : "session-heartbeat" + "ts": "2026-05-19T08:46:28+08:00", + "type": "commit", + "message": "auto-save 2026-05-19 08:46 (~3)", + "hash": "49c998f", + "files_changed": 3 }, { - "files_changed" : 4, - "hash" : "73e8ffe", - "message" : "auto-save 2026-05-18 21:03 (+1, ~3)", - "ts" : "2026-05-18T21:03:11+08:00", - "type" : "commit" + "ts": "2026-05-19T00:49:51Z", + "type": "session-end", + "message": "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-19 08:46 (~3)", + "files_changed": 1 }, { - "files_changed" : 6, - "hash" : "33b91a2", - "message" : "auto-save 2026-05-18 21:08 (+2, ~4)", - "ts" : "2026-05-18T21:08:58+08:00", - "type" : "commit" + "ts": "2026-05-19T00:54:30Z", + "type": "session-heartbeat", + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-19 08:46 (~3)", + "files_changed": 1 }, { - "files_changed" : 2, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 21:08 (+2, ~4)", - "ts" : "2026-05-18T13:12:21Z", - "type" : "session-heartbeat" + "ts": "2026-05-19T01:04:30Z", + "type": "session-heartbeat", + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-19 08:46 (~3)", + "files_changed": 1 }, { - "files_changed" : 1, - "hash" : "e6004b3", - "message" : "docs: document global resource library", - "ts" : "2026-05-18T21:14:38+08:00", - "type" : "commit" + "ts": "2026-05-19T09:10:04+08:00", + "type": "commit", + "message": "chore: mount tiktok cookies in production", + "hash": "2fe3db8", + "files_changed": 5 }, { - "files_changed" : 4, - "hash" : "3b7a062", - "message" : "chore: persist resource libraries in production", - "ts" : "2026-05-18T21:18:54+08:00", - "type" : "commit" + "ts": "2026-05-19T01:14:30Z", + "type": "session-heartbeat", + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: mount tiktok cookies in production", + "files_changed": 1 }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", - "ts" : "2026-05-18T13:22:21Z", - "type" : "session-heartbeat" + "ts": "2026-05-19T09:17:36+08:00", + "type": "commit", + "message": "fix: allow yt-dlp to update production cookies", + "hash": "e5652c4", + "files_changed": 3 }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", - "ts" : "2026-05-18T13:32:21Z", - "type" : "session-heartbeat" + "ts": "2026-05-19T01:24:30Z", + "type": "session-heartbeat", + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: allow yt-dlp to update production cookies", + "files_changed": 1 }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", - "ts" : "2026-05-18T14:52:35Z", - "type" : "session-heartbeat" + "ts": "2026-05-19T09:27:47+08:00", + "type": "commit", + "message": "fix: enforce asr client timeout", + "hash": "9a42682", + "files_changed": 2 }, { - "files_changed" : 1, - "message" : "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", - "ts" : "2026-05-18T15:02:35Z", - "type" : "session-heartbeat" + "ts": "2026-05-19T01:34:31Z", + "type": "session-heartbeat", + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: enforce asr client timeout", + "files_changed": 1 }, { - "files_changed" : 1, - "message" : "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:chore: persist resource libraries in production", - "ts" : "2026-05-18T15:11:14Z", - "type" : "session-end" + "ts": "2026-05-19T09:38:17+08:00", + "type": "commit", + "message": "fix: configure dedicated asr upload gateway", + "hash": "2954e58", + "files_changed": 5 }, { - "files_changed" : 3, - "message" : "启动 Codex 接力会话 · 已载入 Claude / Codex 最近会话,等待下一条指令 · 分支 main · 3 项未提交变更 · 最近提交:chore: persist resource libraries in production", - "ts" : "2026-05-19T00:41:33Z", - "type" : "assistant-session" + "ts": "2026-05-19T01:44:31Z", + "type": "session-heartbeat", + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: configure dedicated asr upload gateway", + "files_changed": 1 }, { - "files_changed" : 3, - "message" : "启动 Codex 接力会话 · 已载入 Cursor / Claude / Codex 最近会话,等待下一条指令 · 分支 main · 3 项未提交变更 · 最近提交:chore: persist resource libraries in production", - "ts" : "2026-05-19T00:44:28Z", - "type" : "assistant-session" + "ts": "2026-05-19T01:54:31Z", + "type": "session-heartbeat", + "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: configure dedicated asr upload gateway", + "files_changed": 1 } ] } diff --git a/Dockerfile.api b/Dockerfile.api index 1033f22..3eba251 100644 --- a/Dockerfile.api +++ b/Dockerfile.api @@ -9,7 +9,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 \ WORKDIR /app RUN apt-get update \ - && apt-get install -y --no-install-recommends ffmpeg ca-certificates curl \ + && apt-get install -y --no-install-recommends ffmpeg ca-certificates curl libgomp1 \ && rm -rf /var/lib/apt/lists/* COPY api/requirements.txt /app/requirements.txt diff --git a/RULES.md b/RULES.md index 1502ac8..08e851f 100644 --- a/RULES.md +++ b/RULES.md @@ -54,6 +54,8 @@ - `LLM_BASE_URL` / `LLM_API_KEY`:OpenAI 兼容网关,用于翻译、文案改写、音频分析等文本/多模态理解模型调用 - `ASR_BASE_URL` / `ASR_API_KEY`:OpenAI Audio Transcriptions 兼容网关,用于上传 `audio.wav` 做真实转写;未配置 `ASR_API_KEY` 时复用 `LLM_API_KEY`,生产默认指向 `https://ai.skg.com/azure/v1` - `ASR_MODEL`:OpenAI Audio Transcriptions 音频转写模型,默认 `whisper-1` +- `ASR_REMOTE_ENABLED`:是否启用远端 OpenAI Audio Transcriptions;云端音频网关不可用时可设为 `false`,直接走容器内 CPU 版 `faster-whisper` +- `FASTER_WHISPER_MODEL` / `FASTER_WHISPER_DEVICE` / `FASTER_WHISPER_COMPUTE_TYPE`:容器内本地 ASR 兜底,生产可用 `tiny.en` / `cpu` / `int8` - `ASR_FALLBACK_MODEL`:远端 ASR 和本机 ASR 都不可用时才尝试的多模态兜底,默认 `gemini-2.5-flash`;如果模型不能真实听到音频或返回疑似逐秒假字幕,后端必须拒绝写入时间轴 - `ASR_TIMEOUT_SECONDS`:远端 ASR / 音频分析单次请求超时,默认 45 秒,避免第一步长时间停在转录中 - `LOCAL_ASR_BIN` / `LOCAL_ASR_MODEL` / `LOCAL_ASR_TIMEOUT_SECONDS`:本机 ASR 兜底,默认使用 `/opt/homebrew/bin/mlx_whisper` + `mlx-community/whisper-tiny`,用于当前 SKG 网关 `/audio/transcriptions` 不可用时生成真实逐句时间轴 diff --git a/api/main.py b/api/main.py index 8ff7a96..b0640bb 100644 --- a/api/main.py +++ b/api/main.py @@ -61,8 +61,12 @@ LLM_API_KEY = os.getenv("LLM_API_KEY", "").strip() ASR_BASE_URL = os.getenv("ASR_BASE_URL", LLM_BASE_URL).strip() ASR_API_KEY = (os.getenv("ASR_API_KEY") or LLM_API_KEY).strip() ASR_MODEL = os.getenv("ASR_MODEL", "whisper-1") +ASR_REMOTE_ENABLED = os.getenv("ASR_REMOTE_ENABLED", "true").strip().lower() not in {"0", "false", "no", "off"} ASR_FALLBACK_MODEL = os.getenv("ASR_FALLBACK_MODEL", "gemini-2.5-flash").strip() or "gemini-2.5-flash" ASR_TIMEOUT_SECONDS = max(15, int(os.getenv("ASR_TIMEOUT_SECONDS", "45"))) +FASTER_WHISPER_MODEL = os.getenv("FASTER_WHISPER_MODEL", "tiny.en").strip() or "tiny.en" +FASTER_WHISPER_DEVICE = os.getenv("FASTER_WHISPER_DEVICE", "cpu").strip() or "cpu" +FASTER_WHISPER_COMPUTE_TYPE = os.getenv("FASTER_WHISPER_COMPUTE_TYPE", "int8").strip() or "int8" LOCAL_ASR_BIN = os.getenv("LOCAL_ASR_BIN", "").strip() LOCAL_ASR_MODEL = os.getenv("LOCAL_ASR_MODEL", "mlx-community/whisper-tiny").strip() or "mlx-community/whisper-tiny" LOCAL_ASR_TIMEOUT_SECONDS = max(30, int(os.getenv("LOCAL_ASR_TIMEOUT_SECONDS", "180"))) @@ -2794,6 +2798,32 @@ def _transcribe_mlx_sync(wav: Path) -> list[dict]: return _validate_asr_segments(segments, duration, "mlx_whisper") +def _transcribe_faster_whisper_sync(wav: Path) -> list[dict]: + try: + from faster_whisper import WhisperModel + except Exception as e: + raise TranscriptionUnavailable(f"faster-whisper 不可用:{e}") from e + duration = media_duration(wav) + model = WhisperModel( + FASTER_WHISPER_MODEL, + device=FASTER_WHISPER_DEVICE, + compute_type=FASTER_WHISPER_COMPUTE_TYPE, + ) + raw_segments, _info = model.transcribe( + str(wav.resolve()), + language="en", + beam_size=1, + vad_filter=True, + condition_on_previous_text=False, + ) + segments = [ + {"start": float(seg.start), "end": float(seg.end), "text": str(seg.text or "").strip()} + for seg in raw_segments + if str(seg.text or "").strip() + ] + return _validate_asr_segments(segments, duration, f"faster-whisper:{FASTER_WHISPER_MODEL}") + + def _transcribe_gemini_sync(wav: Path) -> list[dict]: duration = media_duration(wav) audio_b64 = base64.b64encode(wav.read_bytes()).decode("ascii") @@ -2828,22 +2858,29 @@ def _transcribe_sync(wav: Path) -> list[dict]: """Remote ASR first, local mlx_whisper second. Gemini fallback is guarded against fake timelines.""" errors: list[str] = [] duration = media_duration(wav) + if ASR_REMOTE_ENABLED: + try: + with wav.open("rb") as f: + resp = asr_llm().with_options(timeout=ASR_TIMEOUT_SECONDS).audio.transcriptions.create( + file=(wav.name, f, "audio/wav"), + model=ASR_MODEL, + response_format="verbose_json", + timestamp_granularities=["segment"], + ) + raw = resp.model_dump() if hasattr(resp, "model_dump") else resp + segments = raw.get("segments") or [] + # 兜底:网关如果不返回 segments,把全文当一段 + if not segments and raw.get("text"): + segments = [{"start": 0.0, "end": float(raw.get("duration", 0) or 0), "text": raw["text"]}] + return _validate_asr_segments(segments, duration, ASR_MODEL) + except Exception as e: + errors.append(f"{ASR_MODEL}: {e}") + else: + errors.append(f"{ASR_MODEL}: remote disabled") try: - with wav.open("rb") as f: - resp = asr_llm().with_options(timeout=ASR_TIMEOUT_SECONDS).audio.transcriptions.create( - file=(wav.name, f, "audio/wav"), - model=ASR_MODEL, - response_format="verbose_json", - timestamp_granularities=["segment"], - ) - raw = resp.model_dump() if hasattr(resp, "model_dump") else resp - segments = raw.get("segments") or [] - # 兜底:网关如果不返回 segments,把全文当一段 - if not segments and raw.get("text"): - segments = [{"start": 0.0, "end": float(raw.get("duration", 0) or 0), "text": raw["text"]}] - return _validate_asr_segments(segments, duration, ASR_MODEL) + return _transcribe_faster_whisper_sync(wav) except Exception as e: - errors.append(f"{ASR_MODEL}: {e}") + errors.append(f"faster-whisper: {e}") try: return _transcribe_mlx_sync(wav) except Exception as e: @@ -3956,6 +3993,8 @@ def health() -> dict: "models": { "asr": ASR_MODEL, "asr_base_url": ASR_BASE_URL or LLM_BASE_URL or "openai-default", + "asr_remote_enabled": ASR_REMOTE_ENABLED, + "faster_whisper": FASTER_WHISPER_MODEL, "local_asr": LOCAL_ASR_MODEL, "asr_fallback": ASR_FALLBACK_MODEL, "translate": TRANSLATE_MODEL, diff --git a/api/requirements.txt b/api/requirements.txt index fd96547..3c632a1 100644 --- a/api/requirements.txt +++ b/api/requirements.txt @@ -9,3 +9,4 @@ httpx==0.27.2 imagehash==4.3.1 Pillow>=11.0 numpy>=2.0 +faster-whisper==1.1.1 diff --git a/deploy/.env.production.example b/deploy/.env.production.example index 5ffb965..81c518b 100644 --- a/deploy/.env.production.example +++ b/deploy/.env.production.example @@ -24,7 +24,12 @@ LLM_API_KEY= ASR_BASE_URL=https://ai.skg.com/azure/v1 ASR_API_KEY= ASR_MODEL=whisper-1 +ASR_REMOTE_ENABLED=true ASR_FALLBACK_MODEL=gemini-2.5-flash +ASR_TIMEOUT_SECONDS=45 +FASTER_WHISPER_MODEL=tiny.en +FASTER_WHISPER_DEVICE=cpu +FASTER_WHISPER_COMPUTE_TYPE=int8 TRANSLATE_MODEL=gemini-2.5-flash GPT_TEXT_MODEL=gpt-4o REWRITE_MODEL=gpt-4o diff --git a/docs/source-analysis.html b/docs/source-analysis.html index 7426b88..ff34cdf 100644 --- a/docs/source-analysis.html +++ b/docs/source-analysis.html @@ -950,14 +950,14 @@ ProductRefStateItem { 网页登录POST /auth/loginGET /auth/checkPOST /auth/logoutweb/app/login/page.tsx、Nginx auth_request登录页提交账号密码到 /api/auth/login,后端设置 HttpOnly 会话 Cookie;生产 Nginx 对工作台和 /api//auth/check 做统一校验,未登录页面跳 /login/,API 返回 JSON 401。 - 运行配置 / 模型标注GET /healthgetRuntimeHealthModelTrace返回 models:ASR、asr_base_url、本机 ASR、ASR fallback、翻译、GPT 改写、GPT 画面理解、产品视角识别 product_view、GPT 图像模型、主体 6 视图 GPT 图像模型、Azure OpenAI TTS、视频别名和 Seedance 服务商。当前 REWRITE_MODELAUDIO_REWRITE_MODELVISION_MODEL 默认使用 gpt-4o;如果旧环境变量仍写 gemini-*,后端会归一化回 GPT_TEXT_MODEL / REWRITE_MODEL。语音只走 Azure OpenAI TTS,models.voice_tts_paths 会回传当前尝试的语音路径,方便区分路径错误和语音服务不可用。前端所有当前主路径里会调用模型的按钮旁显示模型名,点击弹出小窗口查看模型链路和输入输出逻辑;不返回 API Key 或敏感凭证。 + 运行配置 / 模型标注GET /healthgetRuntimeHealthModelTrace返回 models:ASR、asr_base_urlasr_remote_enabledfaster_whisper、本机 ASR、ASR fallback、翻译、GPT 改写、GPT 画面理解、产品视角识别 product_view、GPT 图像模型、主体 6 视图 GPT 图像模型、Azure OpenAI TTS、视频别名和 Seedance 服务商。当前 REWRITE_MODELAUDIO_REWRITE_MODELVISION_MODEL 默认使用 gpt-4o;如果旧环境变量仍写 gemini-*,后端会归一化回 GPT_TEXT_MODEL / REWRITE_MODEL。语音只走 Azure OpenAI TTS,models.voice_tts_paths 会回传当前尝试的语音路径,方便区分路径错误和语音服务不可用。前端所有当前主路径里会调用模型的按钮旁显示模型名,点击弹出小窗口查看模型链路和输入输出逻辑;不返回 API Key 或敏感凭证。 历史列表GET /jobslistJobs所有 job 精简列表(id/url/status/thumbnail/mtime…),按 state.json mtime 倒序。前端 URL 无 ?job= 时拉它回填全部历史;带 limit 可截断。 创建任务POST /jobscreateJob提交 TK 链接,后台开始下载;前端“开始”队列会在 downloaded 后自动触发音频解析。下载阶段优先使用 YTDLP_COOKIES_FILE,其次使用 YTDLP_COOKIES_FROM_BROWSER;生产云端固定走 /run/secrets/tiktok_cookies.txt,由宿主机 ./secrets/tiktok_cookies.txt 挂载进容器。TikTok 要求登录态时会提示上传 MP4 或配置后端 cookies。 重试下载POST /jobs/{id}/download/retryretryJobDownload用于 TK 链接下载失败且没有 video_url 的素材;清空错误、重新进入下载状态,并在后台再次执行 pipeline_download。上传视频不能重下载,需要重新上传文件。 上传视频POST /jobs/uploaduploadJob保存 source.mp4,然后同样进入下载完成状态;当前上传后也加入第一步队列,下载完成后自动解析音频。 删除输入视频DELETE /jobs/{id}deleteJob从任务队列、URL 和磁盘 jobs/<id> 目录移除整个 job,包括源视频、关键帧、元素提取图和生成视频。 解析视频POST /jobs/{id}/analyze?frames=&target=&mode=&quality=analyzeJob抽参考帧能力。当前开始流程会在视频下载完成后自动调用一次,默认 frames=12target=motionquality=accuratemode=replace,形成全局动作/节奏参考帧池;原版视频旁的“抽参考 12 帧”也会用同一参数显式重跑。target 仍支持透明骨架人、综合、清晰主体、转场变化、表情瞬间、动作峰值。 - 音频文案轨POST /jobs/{id}/transcribetriggerTranscribe若尚未拆轨,先从 source.mp4 提取 audio.wav 并回填 source_audio_url;随后把 audio.wav 上传到 ASR_BASE_URL 的 OpenAI Audio Transcriptions 兼容接口,用 ASR_MODEL 提取原始文案,翻译成中文,写入 audio_script.source_textsource_zh 和逐句 transcript。远端 ASR 失败后先走本机 LOCAL_ASR_BIN/LOCAL_ASR_MODEL(默认 mlx_whisper),再尝试 ASR_FALLBACK_MODEL。后端会拒绝重复文本、逐秒假字幕或覆盖率过低的结果,不再把不可听的多模态输出写进时间轴。中文翻译由 TRANSLATE_MODEL 按 ASR 段落补齐,失败时保留原文时间轴且中文可为空。再用 ASR_FALLBACK_MODEL 读取 audio.wav 和已有转写时间轴,多模态音频分析讲话人、语速节奏、停顿、背景音乐/环境声/音效,写入 speaker_profilerhythm_profilebackground_audio_profile;若模型分析失败,则用转写段落、时长和语速做本地估算兜底。当前第一步不默认生成 SKG 新口播和 Azure OpenAI 配音。 + 音频文案轨POST /jobs/{id}/transcribetriggerTranscribe若尚未拆轨,先从 source.mp4 提取 audio.wav 并回填 source_audio_url;远端启用时把 audio.wav 上传到 ASR_BASE_URL 的 OpenAI Audio Transcriptions 兼容接口,用 ASR_MODEL 提取原始文案;远端不可用或关闭时走容器内 CPU 版 faster-whisper,再补中文翻译并写入 audio_script.source_textsource_zh 和逐句 transcript。后端会拒绝重复文本、逐秒假字幕或覆盖率过低的结果,不再把不可听的多模态输出写进时间轴。中文翻译由 TRANSLATE_MODEL 按 ASR 段落补齐,失败时保留原文时间轴且中文可为空。再用 ASR_FALLBACK_MODEL 读取 audio.wav 和已有转写时间轴,多模态音频分析讲话人、语速节奏、停顿、背景音乐/环境声/音效,写入 speaker_profilerhythm_profilebackground_audio_profile;若模型分析失败,则用转写段落、时长和语速做本地估算兜底。当前第一步不默认生成 SKG 新口播和 Azure OpenAI 配音。 分镜脚本改写POST /jobs/{id}/script/rewriterewriteStoryboardScript根据原英文参考文案、当前英文新口播、英文 role enum、时间段和作者想法改写英文口播;作者想法若含中文,后端会先经 _ensure_english 兜底翻译。mode=segment 只改一段;mode=all 一次改完整片,要求整片前后连贯。后端按 AUDIO_REWRITE_MODELASR_FALLBACK_MODELTRANSLATE_MODEL 依次尝试,全部失败时用英文本地模板保留可编辑文案。接口返回 items[index,text,text_zh],其中 text 是写入模型链路的英文主值,text_zh 只供团队审稿镜像显示;点击保存规划后写入 StoryboardScene.action。 原始音频文件GET /jobs/{id}/audio.wavsourceAudioUrl返回拆轨得到的 wav;当前主界面不再渲染底部吸附音频条,右侧复刻工作表会读取该文件生成参考图式横向响度波形,并和原视频、逐句时间轴联动;波形标题栏显示当前播放秒数、总时长和鼠标指针停点秒数。 改写配音文件GET /jobs/{id}/audio-script.mp3apiAssetUrl(job.audio_script.voice_url)后续新配音阶段保留的 TTS 产物;服务端固定走 VOICE_PROVIDER=azure_openai,通过 AZURE_OPENAI_BASE_URL 的 OpenAI 协议生成 mp3,并按 AZURE_TTS_PATHS 依次尝试 /audio/speech/v1/audio/speech 等路径。当前第一步不默认生成该文件。 @@ -1248,6 +1248,7 @@ ProductRefStateItem {

问题:生产只配置 LLM_BASE_URL=https://ai.skg.com/ezlink/v1,文本网关不一定提供 /audio/transcriptions 文件上传接口,导致音频文案步骤无法真实转写。

改动:api/main.py 新增 ASR_BASE_URL / ASR_API_KEY 和独立 ASR OpenAI client;音频转写只通过该 client 上传 audio.wav,不再绑死 LLM_BASE_URLdeploy/.env.production.example 增加生产 ASR 网关示例。

影响:文本/视觉模型仍走 LLM_BASE_URL,音频文件上传可单独切换到支持 Audio Transcriptions 的网关;/health 会回传 asr_base_url 供排障。

+

补充:当云端音频网关不兼容 OpenAI Audio Transcriptions 时,可设置 ASR_REMOTE_ENABLED=false,直接使用容器内 faster-whisper 做 CPU 转写。