auto-save 2026-05-18 20:13 (~3)
This commit is contained in:
@@ -1,194 +1,5 @@
|
|||||||
{
|
{
|
||||||
"entries": [
|
"entries": [
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "8b18908",
|
|
||||||
"message": "auto-save 2026-05-16 03:59 (~1)",
|
|
||||||
"ts": "2026-05-16T03:59:42+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "41c534e",
|
|
||||||
"message": "auto-save 2026-05-16 04:05 (~1)",
|
|
||||||
"ts": "2026-05-16T04:05:31+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "d472cdf",
|
|
||||||
"message": "auto-save 2026-05-16 04:11 (~1)",
|
|
||||||
"ts": "2026-05-16T04:11:21+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "b95a728",
|
|
||||||
"message": "auto-save 2026-05-16 04:17 (~1)",
|
|
||||||
"ts": "2026-05-16T04:17:10+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "f7e4a2a",
|
|
||||||
"message": "auto-save 2026-05-16 04:22 (~1)",
|
|
||||||
"ts": "2026-05-16T04:23:00+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "5758c94",
|
|
||||||
"message": "auto-save 2026-05-16 04:28 (~1)",
|
|
||||||
"ts": "2026-05-16T07:31:38+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "c5a549e",
|
|
||||||
"message": "auto-save 2026-05-16 10:20 (~1)",
|
|
||||||
"ts": "2026-05-16T10:22:49+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 2,
|
|
||||||
"hash": "de56f9d",
|
|
||||||
"message": "auto-save 2026-05-16 10:28 (~2)",
|
|
||||||
"ts": "2026-05-16T10:28:22+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "f3ba716",
|
|
||||||
"message": "auto-save 2026-05-16 10:33 (~1)",
|
|
||||||
"ts": "2026-05-16T10:33:54+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "dc77686",
|
|
||||||
"message": "auto-save 2026-05-16 10:39 (~1)",
|
|
||||||
"ts": "2026-05-16T10:39:24+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "e12433d",
|
|
||||||
"message": "auto-save 2026-05-16 10:44 (~1)",
|
|
||||||
"ts": "2026-05-16T10:44:52+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "752bbab",
|
|
||||||
"message": "auto-save 2026-05-16 12:12 (~1)",
|
|
||||||
"ts": "2026-05-16T12:12:12+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "4283512",
|
|
||||||
"message": "auto-save 2026-05-16 12:18 (~1)",
|
|
||||||
"ts": "2026-05-16T12:18:24+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "809e983",
|
|
||||||
"message": "auto-save 2026-05-16 12:23 (~1)",
|
|
||||||
"ts": "2026-05-16T12:23:53+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "3bd3199",
|
|
||||||
"message": "auto-save 2026-05-16 12:29 (~1)",
|
|
||||||
"ts": "2026-05-16T12:29:22+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "cead9a7",
|
|
||||||
"message": "auto-save 2026-05-16 12:34 (~1)",
|
|
||||||
"ts": "2026-05-16T12:34:49+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "7a2f630",
|
|
||||||
"message": "auto-save 2026-05-16 12:43 (~1)",
|
|
||||||
"ts": "2026-05-16T12:44:07+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "75a430d",
|
|
||||||
"message": "auto-save 2026-05-16 12:49 (~1)",
|
|
||||||
"ts": "2026-05-16T12:49:35+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "24743ef",
|
|
||||||
"message": "auto-save 2026-05-16 14:01 (~1)",
|
|
||||||
"ts": "2026-05-16T14:01:14+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "ebe1476",
|
|
||||||
"message": "auto-save 2026-05-16 14:06 (~1)",
|
|
||||||
"ts": "2026-05-16T14:06:40+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "c27e68d",
|
|
||||||
"message": "auto-save 2026-05-16 14:12 (~1)",
|
|
||||||
"ts": "2026-05-16T14:12:18+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "f299408",
|
|
||||||
"message": "auto-save 2026-05-16 14:17 (~1)",
|
|
||||||
"ts": "2026-05-16T14:17:47+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "7c427d3",
|
|
||||||
"message": "auto-save 2026-05-16 14:23 (~1)",
|
|
||||||
"ts": "2026-05-16T14:23:19+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "c55d95c",
|
|
||||||
"message": "auto-save 2026-05-16 14:28 (~1)",
|
|
||||||
"ts": "2026-05-16T14:28:46+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "5e78071",
|
|
||||||
"message": "auto-save 2026-05-16 14:34 (~1)",
|
|
||||||
"ts": "2026-05-16T14:34:30+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "a5a3cec",
|
|
||||||
"message": "auto-save 2026-05-16 14:40 (~1)",
|
|
||||||
"ts": "2026-05-16T14:40:17+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"files_changed": 1,
|
|
||||||
"hash": "e1411e7",
|
|
||||||
"message": "auto-save 2026-05-16 14:45 (~1)",
|
|
||||||
"ts": "2026-05-16T14:46:03+08:00",
|
|
||||||
"type": "commit"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"files_changed": 1,
|
"files_changed": 1,
|
||||||
"hash": "7067a2b",
|
"hash": "7067a2b",
|
||||||
@@ -3229,6 +3040,183 @@
|
|||||||
"message": "fix: surface resilient subject asset generation",
|
"message": "fix: surface resilient subject asset generation",
|
||||||
"hash": "095c6f1",
|
"hash": "095c6f1",
|
||||||
"files_changed": 8
|
"files_changed": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T18:18:23+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 18:18 (~2)",
|
||||||
|
"hash": "06bf0ee",
|
||||||
|
"files_changed": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T18:20:48+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "docs: align legacy model descriptions",
|
||||||
|
"hash": "87ffa6b",
|
||||||
|
"files_changed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T10:22:18Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: align legacy model descriptions",
|
||||||
|
"files_changed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T18:29:13+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 18:29 (~3)",
|
||||||
|
"hash": "4d10b09",
|
||||||
|
"files_changed": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T10:32:18Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-18 18:29 (~3)",
|
||||||
|
"files_changed": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T18:34:39+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 18:34 (~4)",
|
||||||
|
"hash": "0bec7f9",
|
||||||
|
"files_changed": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T18:38:10+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "feat: add subject profile controls",
|
||||||
|
"hash": "33c3aef",
|
||||||
|
"files_changed": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T10:42:19Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls",
|
||||||
|
"files_changed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T10:52:19Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls",
|
||||||
|
"files_changed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T11:02:19Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls",
|
||||||
|
"files_changed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T11:12:19Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: add subject profile controls",
|
||||||
|
"files_changed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T19:19:49+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 19:19 (~4)",
|
||||||
|
"hash": "0e2b038",
|
||||||
|
"files_changed": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T11:22:19Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 19:19 (~4)",
|
||||||
|
"files_changed": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T19:25:14+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 19:25 (~3)",
|
||||||
|
"hash": "73c9b51",
|
||||||
|
"files_changed": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T19:30:39+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 19:30 (~2)",
|
||||||
|
"hash": "182435b",
|
||||||
|
"files_changed": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T11:32:19Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 5 项未提交变更 · 最近提交:feat: add subject profile controls",
|
||||||
|
"files_changed": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T19:33:16+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "feat: use subject brief for endpoint frames",
|
||||||
|
"hash": "adf8b2b",
|
||||||
|
"files_changed": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T19:41:29+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 19:41 (~2)",
|
||||||
|
"hash": "a869cf9",
|
||||||
|
"files_changed": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T11:42:19Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 19:41 (~2)",
|
||||||
|
"files_changed": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T19:46:53+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 19:46 (~2)",
|
||||||
|
"hash": "a6f03fd",
|
||||||
|
"files_changed": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T19:52:19+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 19:52 (~3)",
|
||||||
|
"hash": "2219f96",
|
||||||
|
"files_changed": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T11:52:19Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-18 19:52 (~3)",
|
||||||
|
"files_changed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T19:57:44+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 19:57 (~4)",
|
||||||
|
"hash": "699fdcd",
|
||||||
|
"files_changed": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T12:02:20Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-18 19:57 (~4)",
|
||||||
|
"files_changed": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T20:03:09+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-18 20:03 (~3)",
|
||||||
|
"hash": "e4a56f2",
|
||||||
|
"files_changed": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T20:07:11+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "feat: enforce english prompt language strategy",
|
||||||
|
"hash": "bc0b010",
|
||||||
|
"files_changed": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-18T12:12:20Z",
|
||||||
|
"type": "session-heartbeat",
|
||||||
|
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:feat: enforce english prompt language strategy",
|
||||||
|
"files_changed": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -469,10 +469,29 @@ nextjs-portal {
|
|||||||
信息流工作台 · 登录页同源质感
|
信息流工作台 · 登录页同源质感
|
||||||
============================================================ */
|
============================================================ */
|
||||||
.skg-board-theme {
|
.skg-board-theme {
|
||||||
|
--skg-gold-1: #d6b36a;
|
||||||
|
--skg-gold-2: #c89b3c;
|
||||||
|
--skg-cream: #f5efe3;
|
||||||
|
--skg-bg-1: #0a0a0a;
|
||||||
|
--skg-bg-2: #111111;
|
||||||
|
--skg-bg-3: rgba(255, 255, 255, 0.035);
|
||||||
|
--skg-border: rgba(255, 255, 255, 0.1);
|
||||||
|
--skg-text-1: #ffffff;
|
||||||
|
--skg-text-2: rgba(255, 255, 255, 0.62);
|
||||||
|
--skg-text-3: rgba(255, 255, 255, 0.34);
|
||||||
|
--skg-success: #34d399;
|
||||||
|
--skg-warn: #fcd34d;
|
||||||
|
--skg-danger: #fb7185;
|
||||||
|
--skg-info: #67e8f9;
|
||||||
|
--skg-radius-sm: 6px;
|
||||||
|
--skg-radius-md: 8px;
|
||||||
|
--skg-radius-lg: 12px;
|
||||||
|
--skg-shadow-button: 0 6px 24px -8px rgba(0, 0, 0, 0.45);
|
||||||
|
color: var(--skg-text-1);
|
||||||
background:
|
background:
|
||||||
radial-gradient(circle at 12% 2%, rgba(214, 179, 106, 0.13), transparent 31%),
|
radial-gradient(circle at 52% 4%, rgba(214, 179, 106, 0.1), transparent 30%),
|
||||||
radial-gradient(circle at 82% 8%, rgba(143, 176, 113, 0.1), transparent 26%),
|
radial-gradient(circle at 12% 96%, rgba(214, 179, 106, 0.065), transparent 34%),
|
||||||
linear-gradient(120deg, #050706 0%, #070b09 42%, #030303 100%);
|
linear-gradient(120deg, #0a0a0a 0%, #10100f 46%, #050505 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.skg-board-theme::before {
|
.skg-board-theme::before {
|
||||||
@@ -501,17 +520,16 @@ nextjs-portal {
|
|||||||
|
|
||||||
.skg-board-ambient {
|
.skg-board-ambient {
|
||||||
background:
|
background:
|
||||||
radial-gradient(circle at 22% 18%, rgba(214, 179, 106, 0.16), transparent 26%),
|
radial-gradient(circle at 78% 0%, rgba(232, 201, 122, 0.08), transparent 30%),
|
||||||
radial-gradient(circle at 68% 10%, rgba(143, 176, 113, 0.11), transparent 28%),
|
radial-gradient(circle at 8% 100%, rgba(214, 179, 106, 0.06), transparent 34%);
|
||||||
radial-gradient(circle at 52% 100%, rgba(214, 179, 106, 0.08), transparent 36%);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.skg-board-topbar,
|
.skg-board-topbar,
|
||||||
.skg-board-panel {
|
.skg-board-panel {
|
||||||
border-color: rgba(160, 182, 129, 0.14) !important;
|
border-color: var(--skg-border) !important;
|
||||||
background:
|
background:
|
||||||
linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.026)),
|
linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.022)),
|
||||||
rgba(6, 11, 8, 0.58) !important;
|
rgba(17, 17, 17, 0.74) !important;
|
||||||
box-shadow:
|
box-shadow:
|
||||||
inset 0 1px 0 rgba(255, 255, 255, 0.06),
|
inset 0 1px 0 rgba(255, 255, 255, 0.06),
|
||||||
0 18px 54px rgba(0, 0, 0, 0.34);
|
0 18px 54px rgba(0, 0, 0, 0.34);
|
||||||
@@ -520,8 +538,8 @@ nextjs-portal {
|
|||||||
|
|
||||||
.skg-board-topbar {
|
.skg-board-topbar {
|
||||||
background:
|
background:
|
||||||
linear-gradient(100deg, rgba(214, 179, 106, 0.08), rgba(143, 176, 113, 0.035) 42%, rgba(255, 255, 255, 0.03)),
|
linear-gradient(100deg, rgba(214, 179, 106, 0.075), rgba(255, 255, 255, 0.03) 54%, rgba(214, 179, 106, 0.035)),
|
||||||
rgba(4, 8, 6, 0.62) !important;
|
rgba(12, 12, 12, 0.76) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.skg-board-theme input:focus,
|
.skg-board-theme input:focus,
|
||||||
@@ -541,11 +559,22 @@ nextjs-portal {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.skg-board-theme--light {
|
.skg-board-theme--light {
|
||||||
color: #22261f;
|
--skg-bg-1: #faf8f4;
|
||||||
|
--skg-bg-2: #ffffff;
|
||||||
|
--skg-bg-3: rgba(0, 0, 0, 0.03);
|
||||||
|
--skg-border: rgba(0, 0, 0, 0.08);
|
||||||
|
--skg-text-1: #0a0a0a;
|
||||||
|
--skg-text-2: rgba(0, 0, 0, 0.62);
|
||||||
|
--skg-text-3: rgba(0, 0, 0, 0.34);
|
||||||
|
--skg-success: #059669;
|
||||||
|
--skg-warn: #b7791f;
|
||||||
|
--skg-danger: #e11d48;
|
||||||
|
--skg-info: #0891b2;
|
||||||
|
color: var(--skg-text-1);
|
||||||
background:
|
background:
|
||||||
radial-gradient(circle at 12% 0%, rgba(214, 179, 106, 0.18), transparent 30%),
|
radial-gradient(circle at 50% 0%, rgba(232, 212, 168, 0.18), transparent 31%),
|
||||||
radial-gradient(circle at 82% 8%, rgba(143, 176, 113, 0.14), transparent 28%),
|
radial-gradient(circle at 4% 100%, rgba(214, 179, 106, 0.12), transparent 28%),
|
||||||
linear-gradient(126deg, #f7f4ea 0%, #eef1e7 48%, #f9f6ee 100%);
|
linear-gradient(126deg, #faf8f4 0%, #f4efe5 48%, #ffffff 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.skg-board-theme--light::before {
|
.skg-board-theme--light::before {
|
||||||
@@ -669,6 +698,163 @@ nextjs-portal {
|
|||||||
color: #171a14;
|
color: #171a14;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.skg-board-brand {
|
||||||
|
display: flex;
|
||||||
|
min-width: 0;
|
||||||
|
align-items: center;
|
||||||
|
gap: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-brand__logo-chip {
|
||||||
|
display: inline-flex;
|
||||||
|
height: 42px;
|
||||||
|
width: 132px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border: 1px solid rgba(214, 179, 106, 0.24);
|
||||||
|
border-radius: var(--skg-radius-md);
|
||||||
|
background: #f5efe3;
|
||||||
|
box-shadow: var(--skg-shadow-button);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-brand__logo {
|
||||||
|
width: 96px;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-brand__system {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.16em;
|
||||||
|
color: var(--skg-gold-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-brand__title {
|
||||||
|
margin-top: 3px;
|
||||||
|
color: var(--skg-text-1);
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 650;
|
||||||
|
line-height: 1.1;
|
||||||
|
letter-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-brand__subtitle {
|
||||||
|
margin-top: 4px;
|
||||||
|
color: var(--skg-text-3);
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-stat-card {
|
||||||
|
border: 1px solid rgba(214, 179, 106, 0.18);
|
||||||
|
border-radius: var(--skg-radius-md);
|
||||||
|
background: var(--skg-cream);
|
||||||
|
color: #0a0a0a;
|
||||||
|
box-shadow: var(--skg-shadow-button);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-stat-card__label {
|
||||||
|
color: rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-stat-card__value {
|
||||||
|
color: #0a0a0a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-primary-action {
|
||||||
|
border-radius: var(--skg-radius-md);
|
||||||
|
background: #f5efe3;
|
||||||
|
color: #0a0a0a;
|
||||||
|
box-shadow: var(--skg-shadow-button);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-primary-action:hover {
|
||||||
|
background: #fff7df;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-secondary-action {
|
||||||
|
border: 1px solid rgba(214, 179, 106, 0.3);
|
||||||
|
border-radius: var(--skg-radius-md);
|
||||||
|
background: rgba(214, 179, 106, 0.08);
|
||||||
|
color: var(--skg-gold-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-secondary-action:hover {
|
||||||
|
border-color: rgba(214, 179, 106, 0.54);
|
||||||
|
background: rgba(214, 179, 106, 0.12);
|
||||||
|
color: #f5d98e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-empty-state {
|
||||||
|
border: 1px dashed rgba(214, 179, 106, 0.22);
|
||||||
|
border-radius: var(--skg-radius-lg);
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 50% 0%, rgba(214, 179, 106, 0.1), transparent 38%),
|
||||||
|
rgba(255, 255, 255, 0.028);
|
||||||
|
color: var(--skg-text-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-empty-character {
|
||||||
|
width: min(230px, 82%);
|
||||||
|
margin: 0 auto 12px;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-empty-character .login-character-stage {
|
||||||
|
min-height: 112px;
|
||||||
|
border-color: rgba(214, 179, 106, 0.16);
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 78% 18%, rgba(214, 179, 106, 0.16), transparent 28%),
|
||||||
|
linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.026));
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-empty-character .login-character-stage::after,
|
||||||
|
.skg-empty-character .login-stage-grid {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-empty-character .login-characters-container {
|
||||||
|
bottom: -6px;
|
||||||
|
transform: translateX(-50%) scale(0.22);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-theme--light .skg-board-brand__logo-chip {
|
||||||
|
background: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-theme--light .skg-stat-card {
|
||||||
|
background: #0a0a0a;
|
||||||
|
color: #fff;
|
||||||
|
box-shadow: 0 10px 24px -12px rgba(133, 96, 21, 0.38);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-theme--light .skg-stat-card__label {
|
||||||
|
color: rgba(255, 255, 255, 0.54);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-theme--light .skg-stat-card__value {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-theme--light .skg-primary-action {
|
||||||
|
background: #0a0a0a;
|
||||||
|
color: #fff;
|
||||||
|
box-shadow: 0 10px 24px -12px rgba(133, 96, 21, 0.42);
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-theme--light .skg-primary-action:hover {
|
||||||
|
background: #252525;
|
||||||
|
}
|
||||||
|
|
||||||
|
.skg-board-theme--light .skg-empty-state {
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 50% 0%, rgba(232, 212, 168, 0.28), transparent 38%),
|
||||||
|
rgba(255, 255, 255, 0.66);
|
||||||
|
}
|
||||||
|
|
||||||
.login-hero {
|
.login-hero {
|
||||||
isolation: isolate;
|
isolation: isolate;
|
||||||
color: #282828;
|
color: #282828;
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ import {
|
|||||||
} from "@/lib/api"
|
} from "@/lib/api"
|
||||||
import { type NodeData } from "@/components/nodes"
|
import { type NodeData } from "@/components/nodes"
|
||||||
import { MediaAssetTile } from "@/components/media-asset-tile"
|
import { MediaAssetTile } from "@/components/media-asset-tile"
|
||||||
|
import { AnimatedLoginCharacters } from "@/components/login/animated-login-characters"
|
||||||
|
|
||||||
const TARGETS: Array<{ value: FrameExtractTarget; label: string }> = [
|
const TARGETS: Array<{ value: FrameExtractTarget; label: string }> = [
|
||||||
{ value: "balanced", label: "综合" },
|
{ value: "balanced", label: "综合" },
|
||||||
@@ -1938,21 +1939,27 @@ export function AdRecreationBoard({
|
|||||||
<div className="skg-board-ambient pointer-events-none absolute inset-0" />
|
<div className="skg-board-ambient pointer-events-none absolute inset-0" />
|
||||||
<div className="relative z-10 flex h-full flex-col px-4 py-4">
|
<div className="relative z-10 flex h-full flex-col px-4 py-4">
|
||||||
<header className="skg-board-topbar mb-3 flex items-center justify-between gap-4 rounded-lg border border-white/10 bg-white/[0.04] px-4 py-3">
|
<header className="skg-board-topbar mb-3 flex items-center justify-between gap-4 rounded-lg border border-white/10 bg-white/[0.04] px-4 py-3">
|
||||||
<div className="min-w-0">
|
<div className="skg-board-brand">
|
||||||
<div className="text-[11px] font-medium uppercase tracking-[0.18em] text-white/40">feed ad recreation worksheet</div>
|
<div className="skg-board-brand__logo-chip" aria-hidden="true">
|
||||||
<h1 className="mt-1 text-[22px] font-semibold leading-tight text-white">信息流广告复刻工作表</h1>
|
<img className="skg-board-brand__logo" src="/skg-logo-black.svg" alt="" />
|
||||||
|
</div>
|
||||||
|
<div className="min-w-0">
|
||||||
|
<div className="skg-board-brand__system">未来健康 · 营销内容工作台</div>
|
||||||
|
<h1 className="skg-board-brand__title">营销内容工作台 · TK 二创</h1>
|
||||||
|
<p className="skg-board-brand__subtitle">信息流广告复刻生产线</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex shrink-0 items-center gap-2">
|
<div className="flex shrink-0 items-center gap-2">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={toggleBoardTheme}
|
onClick={toggleBoardTheme}
|
||||||
className="skg-board-theme-toggle inline-flex h-10 items-center gap-1.5 rounded-md border border-white/10 bg-black/24 px-3 text-[11px] font-semibold text-white/62 transition hover:border-[#d6b36a]/45 hover:text-white"
|
className="skg-board-theme-toggle skg-secondary-action inline-flex h-10 items-center gap-1.5 px-3 text-[11px] font-semibold transition"
|
||||||
title={boardTheme === "dark" ? "切换到明亮模式" : "切换到暗色模式"}
|
title={boardTheme === "dark" ? "切换到明亮模式" : "切换到暗色模式"}
|
||||||
>
|
>
|
||||||
{boardTheme === "dark" ? <Sun className="h-3.5 w-3.5" /> : <Moon className="h-3.5 w-3.5" />}
|
{boardTheme === "dark" ? <Sun className="h-3.5 w-3.5" /> : <Moon className="h-3.5 w-3.5" />}
|
||||||
{boardTheme === "dark" ? "明亮" : "暗色"}
|
{boardTheme === "dark" ? "明亮" : "暗色"}
|
||||||
</button>
|
</button>
|
||||||
<div className="grid min-w-[520px] grid-cols-5 gap-2 text-[11px] text-white/48">
|
<div className="grid min-w-[520px] grid-cols-5 gap-2 text-[11px]">
|
||||||
<Metric label="素材" value={`${jobs.length}`} />
|
<Metric label="素材" value={`${jobs.length}`} />
|
||||||
<Metric label="当前" value={shortId(activeJobId)} />
|
<Metric label="当前" value={shortId(activeJobId)} />
|
||||||
<Metric label="视频" value={job?.video_url ? "ready" : "-"} />
|
<Metric label="视频" value={job?.video_url ? "ready" : "-"} />
|
||||||
@@ -2102,20 +2109,20 @@ function MaterialColumn({
|
|||||||
onChange={(e) => setUrl(e.target.value)}
|
onChange={(e) => setUrl(e.target.value)}
|
||||||
onKeyDown={(e) => { if (e.key === "Enter") onSubmitUrl() }}
|
onKeyDown={(e) => { if (e.key === "Enter") onSubmitUrl() }}
|
||||||
placeholder="粘贴 TK / 信息流视频链接"
|
placeholder="粘贴 TK / 信息流视频链接"
|
||||||
className="h-10 min-w-0 flex-1 rounded-md border border-white/10 bg-black/45 px-3 text-[13px] text-white outline-none placeholder:text-white/28 focus:border-cyan-300/60"
|
className="h-10 min-w-0 flex-1 rounded-md border border-white/10 bg-black/45 px-3 text-[13px] text-white outline-none placeholder:text-white/28 focus:border-[#d6b36a]/60"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={onStartProduction}
|
onClick={onStartProduction}
|
||||||
disabled={data.submitting || (!url.trim() && !job)}
|
disabled={data.submitting || (!url.trim() && !job)}
|
||||||
className="inline-flex h-10 items-center justify-center rounded-md bg-[#f0ead8] px-3 text-[13px] font-semibold text-black shadow-[0_14px_28px_rgba(0,0,0,0.28)] transition hover:bg-[#fff7df] disabled:cursor-not-allowed disabled:opacity-45"
|
className="skg-primary-action inline-flex h-10 items-center justify-center px-3 text-[13px] font-semibold transition disabled:cursor-not-allowed disabled:opacity-45"
|
||||||
>
|
>
|
||||||
{actionLabel}
|
{actionLabel}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => fileRef.current?.click()}
|
onClick={() => fileRef.current?.click()}
|
||||||
className="inline-flex h-10 w-10 items-center justify-center rounded-md border border-white/10 bg-white/[0.06] text-white/75 transition hover:border-white/25 hover:bg-white/[0.1]"
|
className="skg-secondary-action inline-flex h-10 w-10 items-center justify-center transition disabled:cursor-not-allowed disabled:opacity-45"
|
||||||
aria-label="上传视频"
|
aria-label="上传视频"
|
||||||
title="上传视频"
|
title="上传视频"
|
||||||
>
|
>
|
||||||
@@ -5068,9 +5075,9 @@ function MaterialCard({
|
|||||||
|
|
||||||
function Metric({ label, value, compact }: { label: string; value: string; compact?: boolean }) {
|
function Metric({ label, value, compact }: { label: string; value: string; compact?: boolean }) {
|
||||||
return (
|
return (
|
||||||
<div className={`rounded-md border border-white/10 bg-black/35 ${compact ? "px-2 py-1" : "px-2 py-1.5"}`}>
|
<div className={`skg-stat-card ${compact ? "px-2 py-1" : "px-2.5 py-1.5"}`}>
|
||||||
<div>{label}</div>
|
<div className="skg-stat-card__label">{label}</div>
|
||||||
<div className="mt-0.5 truncate font-mono text-[12px] text-white/78">{value}</div>
|
<div className="skg-stat-card__value mt-0.5 truncate font-mono text-[13px] font-semibold">{value}</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -5181,7 +5188,7 @@ function ActionButton({
|
|||||||
type="button"
|
type="button"
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
className={`inline-flex h-10 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 text-[12px] font-semibold transition disabled:cursor-not-allowed disabled:opacity-40 ${variant === "solid" ? "bg-white text-black hover:bg-white/90" : "border border-white/10 bg-white/[0.04] text-white/72 hover:border-white/25 hover:text-white"}`}
|
className={`inline-flex h-10 cursor-pointer items-center justify-center gap-1.5 px-3 text-[12px] font-semibold transition disabled:cursor-not-allowed disabled:opacity-40 ${variant === "solid" ? "skg-primary-action" : "skg-secondary-action"}`}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
</button>
|
</button>
|
||||||
@@ -5190,8 +5197,11 @@ function ActionButton({
|
|||||||
|
|
||||||
function EmptyState({ text }: { text: string }) {
|
function EmptyState({ text }: { text: string }) {
|
||||||
return (
|
return (
|
||||||
<div className="rounded-lg border border-dashed border-white/12 bg-black/25 px-3 py-8 text-center text-[12px] text-white/38">
|
<div className="skg-empty-state px-3 py-8 text-center text-[12px]">
|
||||||
{text}
|
<div className="skg-empty-character" aria-hidden="true">
|
||||||
|
<AnimatedLoginCharacters mood="idle" eyeOffset={{ x: 0, y: 0 }} />
|
||||||
|
</div>
|
||||||
|
<div>{text}</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user