paseo-req-kit 1.14.0-beta.5 → 1.15.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/docs/guide//347/273/264/346/212/244/350/200/205/346/214/207/345/215/227.md +2 -0
- package/engine/src/review-assets/app.css +153 -234
- package/engine/src/review-assets/app.html +44 -32
- package/engine/src/review-assets/app.js +11 -7
- package/engine/src/review-assets/check.css +11 -56
- package/engine/src/review-assets/check.html +48 -22
- package/engine/src/review-assets/check.js +169 -86
- package/engine/src/review-assets/code.css +15 -92
- package/engine/src/review-assets/code.html +41 -26
- package/engine/src/review-assets/code.js +196 -101
- package/engine/src/review-assets/rk-icons.js +98 -0
- package/engine/src/review-assets/rk-tokens.css +252 -0
- package/engine/src/review-assets/rk.css +252 -0
- package/engine/src/review.ts +6 -4
- package/package.json +1 -1
- package/paseo-plugin/package.json +1 -1
- package/site-dist/404.html +2 -2
- package/site-dist/assets/{app.TlOHPtfE.js → app.D5s_yGHZ.js} +1 -1
- package/site-dist/assets/changelog.md.RJaBnmnw.js +1 -0
- package/site-dist/assets/chunks/@localSearchIndexroot.Dric-MbI.js +1 -0
- package/site-dist/assets/chunks/{VPLocalSearchBox.BUVNy7_o.js → VPLocalSearchBox.B4CyDsTr.js} +1 -1
- package/site-dist/assets/chunks/{theme.BFeiG1US.js → theme.CCocenmB.js} +2 -2
- package/site-dist/assets/{guide_getting-started.md.UhkLCUoY.js → guide_getting-started.md.wFOkpMSx.js} +1 -1
- package/site-dist/assets/{guide_getting-started.md.UhkLCUoY.lean.js → guide_getting-started.md.wFOkpMSx.lean.js} +1 -1
- package/site-dist/assets/guide_maintainer.md.mFZprBj1.js +1 -0
- package/site-dist/assets/{guide_maintainer.md.C1v7EpSY.lean.js → guide_maintainer.md.mFZprBj1.lean.js} +1 -1
- package/site-dist/changelog.html +5 -5
- package/site-dist/guide/getting-started.html +5 -5
- package/site-dist/guide/how-it-works.html +4 -4
- package/site-dist/guide/index.html +4 -4
- package/site-dist/guide/install.html +4 -4
- package/site-dist/guide/maintainer.html +5 -5
- package/site-dist/guide/phases.html +4 -4
- package/site-dist/guide/project.html +4 -4
- package/site-dist/guide/user.html +4 -4
- package/site-dist/hashmap.json +1 -1
- package/site-dist/index.html +4 -4
- package/site-dist/reference/adr/0001-step-agents-under-origin-chat.html +4 -4
- package/site-dist/reference/adr/0002-no-directory-switch-in-chat.html +4 -4
- package/site-dist/reference/adr/0003-script-engine-not-hub.html +4 -4
- package/site-dist/reference/adr/0004-result-files.html +4 -4
- package/site-dist/reference/adr/0005-no-default-branch-local-commits-only.html +4 -4
- package/site-dist/reference/adr/0006-skill-install-targets.html +4 -4
- package/site-dist/reference/adr/0007-own-interview-skill.html +4 -4
- package/site-dist/reference/adr/0008-entries-do-not-call-entries.html +4 -4
- package/site-dist/reference/adr/0009-versioned-install-layout.html +4 -4
- package/site-dist/reference/adr/0010-generated-feature-overview.html +4 -4
- package/site-dist/reference/adr/0011-resume-after-completion.html +4 -4
- package/site-dist/reference/adr/0012-review-panel.html +4 -4
- package/site-dist/reference/adr/0013-no-release-tooling.html +4 -4
- package/site-dist/reference/adr/0014-notifier-slot.html +4 -4
- package/site-dist/reference/adr/0015-incremental-continue.html +4 -4
- package/site-dist/reference/adr/0016-upgrade-from-tags.html +4 -4
- package/site-dist/reference/adr/0017-use-paseo-capabilities.html +4 -4
- package/site-dist/reference/adr/0018-own-worktree-option.html +4 -4
- package/site-dist/reference/adr/0019-parallel-orchestration.html +4 -4
- package/site-dist/reference/adr/0020-scheduling-through-the-chat.html +4 -4
- package/site-dist/reference/adr/0021-npm-version-manager.html +4 -4
- package/site-dist/reference/adr/0022-develop-and-verify-phases.html +4 -4
- package/site-dist/reference/adr/0023-types-gate-slices.html +4 -4
- package/site-dist/reference/adr/0024-confirm-early-review-axes.html +4 -4
- package/site-dist/reference/adr/0025-joint-requirements.html +4 -4
- package/site-dist/reference/adr/0026-machine-records-and-api.html +4 -4
- package/site-dist/reference/adr/0027-paseo-plugin.html +4 -4
- package/site-dist/reference/adr/0028-external-integrations.html +4 -4
- package/site-dist/reference/adr/0029-requirements-from-cards.html +4 -4
- package/site-dist/reference/adr/0030-card-intake-process.html +4 -4
- package/site-dist/reference/adr/0031-fewer-interventions.html +4 -4
- package/site-dist/reference/adr/0032-npm-only-install.html +4 -4
- package/site-dist/reference/adr/0033-prototype-review-and-ui-check.html +4 -4
- package/site-dist/reference/adr/index.html +4 -4
- package/site-dist/reference/commands.html +4 -4
- package/site-dist/reference/config.html +4 -4
- package/site-dist/reference/contracts/cli-json.html +4 -4
- package/site-dist/reference/contracts/feature-files.html +4 -4
- package/site-dist/reference/contracts/index.html +4 -4
- package/site-dist/reference/contracts/notifier-event.html +4 -4
- package/site-dist/reference/contracts/result-file.html +4 -4
- package/site-dist/reference/contracts/spec.html +4 -4
- package/site-dist/reference/contracts/state.html +4 -4
- package/site-dist/reference/contracts/usage-record.html +4 -4
- package/site-dist/reference/contracts/verify.html +4 -4
- package/site-dist/reference/scope.html +4 -4
- package/site-dist/assets/changelog.md.DiGi8kHU.js +0 -1
- package/site-dist/assets/chunks/@localSearchIndexroot.Dk_-Yka5.js +0 -1
- package/site-dist/assets/guide_maintainer.md.C1v7EpSY.js +0 -1
- /package/site-dist/assets/{changelog.md.DiGi8kHU.lean.js → changelog.md.RJaBnmnw.lean.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,44 @@
|
|
|
2
2
|
|
|
3
3
|
每个版本分为"使用者会看到的变化"和"升级须知"。升级步骤见 [docs/guide/安装与升级.md](docs/guide/安装与升级.md)。
|
|
4
4
|
|
|
5
|
+
## 1.15.0-beta.1
|
|
6
|
+
|
|
7
|
+
### 使用者会看到的变化
|
|
8
|
+
|
|
9
|
+
- **审查原型、验收清单、代码审查三个网页换上了 req-kit 的新设计**(设计规范见仓库 `design/`,和编排平台 CMASTER 同属一个设计家族,主色青柠绿):
|
|
10
|
+
- 统一的顶栏(标志、需求名、功能目录、自动保存时间、只读标记、深浅色切换),底部固定的"决定栏"放这一页要你做的决定,每页只有一个青柠色主按钮;条件不满足时按钮旁边写明还差什么。
|
|
11
|
+
- 代码审查页:AI 评审意见(靛色卡片,带编号、轮次、级别和处理结果)和你写的意见(青柠描边卡片)分开显示;侧栏按"概要 / 代码 / 需求文档"分组;改动摘要卡片显示 AI 评审几轮、修复了几条、还开着几条。
|
|
12
|
+
- 验收清单页:前置条件、操作、预期结果排成表格;侧栏把"先看这些"(流水线没验证、没通过、要你表态的)和"流水线已验证"分开;试用放在一张卡片里。
|
|
13
|
+
- 审查原型页:原型放在点阵画布上;"要看的地方"用靛色虚线框和编号标出,你点选的地方是青柠图钉;有意见时主按钮是"提交修改意见",没有意见时主按钮是"确认方案,开始写代码"。
|
|
14
|
+
- 默认跟随系统的深浅色,右上角可以切换并记住;手机宽度下侧栏变成可横向滑动的一行,决定栏的按钮占满一行。
|
|
15
|
+
- 页面不加载外网字体,内网打开不会等字体超时。
|
|
16
|
+
|
|
17
|
+
### 升级须知
|
|
18
|
+
|
|
19
|
+
- 页面的接口和行为没有变化,只换了外观。审查服务多提供三个共用文件(`rk-tokens.css`、`rk.css`、`rk-icons.js`),由 `scripts/tokens-build.mjs` 从 `design/` 生成,测试会检查它们和 `design/` 一致。
|
|
20
|
+
- Paseo 插件和文档站的新设计在后面的 beta 里做。
|
|
21
|
+
|
|
22
|
+
## 1.14.0
|
|
23
|
+
|
|
24
|
+
稳定版:需求从对齐开始就在插件里,新建工作区能接着做,插件里能做代码审查和验收,危险命令和密钥有程序把关,评审、验收、合并之后的结果有记录可查。内容包括 1.14.0-beta.1 至 beta.5(详见下面各条)。
|
|
25
|
+
|
|
26
|
+
### 使用者会看到的变化
|
|
27
|
+
|
|
28
|
+
- **修复:自动新建工作区后只有需求说明、没有代码。** 工作区一建好就记下来,再次启动在同一个工作区里接着做;最多等 15 分钟。术语表和设计决定随需求说明一起带过去;需求说明不会再被提交到主分支。
|
|
29
|
+
- **需求从开始谈就出现在插件里**("对齐中");确认了却没开始开发的进"等你处理",点"开始开发"即可,谈需求的对话里也会提醒一次。已经开发完的需求不会误显示为"未开始";同一个需求在两处只列一次。
|
|
30
|
+
- **代码审查**(插件需求页面上的"代码审查",`req code-review`):改动按文件列出,AI 评审意见放在对应的行旁边;评审人在任意一行写意见、标"要改 / 不用改";审核人默认取自 `CODEOWNERS`,提交前可改。退回修改后流水线自动按意见修改,评审通过后有新提交会提示重新评审。
|
|
31
|
+
- **验收清单和一键试用**("验收清单(可一键试用)",`req checklist`、`req try`):按验收标准逐条勾选,提交后写成 `acceptance.md` 并提交;不通过的转给需求的对话处理。
|
|
32
|
+
- **拦截危险命令**(`dangerGuard`):步骤 agent 推送、发布制品、改动集群、连接其他机器上的数据库或主机、删除仓库以外的目录、下载脚本直接执行,或命令里出现配置的生产环境地址时,打断并通知。
|
|
33
|
+
- **密钥扫描**(`secretScan`):每个改代码的步骤之后扫描本需求新增的内容,交回 agent 去掉;有疑似密钥的分支不推送。
|
|
34
|
+
- **记录可查**:代码审查和验收的全文随需求分支提交;结论另记入使用记录。`req stats` 和插件统计新增"人工把关和合并后":评审退回次数、验收通过率、合并进主干的需求、合并后发现的问题(`req outcome`)。
|
|
35
|
+
|
|
36
|
+
### 升级须知
|
|
37
|
+
|
|
38
|
+
- 新配置都可选:`dangerGuard`(默认开,建议团队配置里把生产环境的主机名、地址写进 `production`)、`secretScan`(默认开)。打开 `dangerGuard` 时流水线每 15 秒读一次步骤 agent 的命令记录,不占模型 token。
|
|
39
|
+
- 合并请求还没有接入,等 shenbing 提供类似 `gh pr create / gh pr merge` 的命令。
|
|
40
|
+
- 状态文件、使用记录、`req api` 和外部通知的新增字段见各 beta 的升级须知;新命令 `req code-review`、`req review-fix`、`req checklist`、`req try`、`req outcome`。
|
|
41
|
+
- 更新后请在 Paseo 中重新加载插件(`req upgrade` 会自动做)。
|
|
42
|
+
|
|
5
43
|
## 1.14.0-beta.5
|
|
6
44
|
|
|
7
45
|
### 使用者会看到的变化
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
- 先看 [SCOPE.md](../../SCOPE.md) 和 [.out-of-scope/](../../.out-of-scope/):新提议须服务于"帮助非专职开发的同事把一个需求从对齐做到可验收",至少有两个真实场景,并且无法通过项目配置或项目说明解决。
|
|
8
8
|
- 改动已有的设计决定([docs/adr/](../adr/))时,新增一条 ADR 说明理由,并在旧的一条中注明被哪条取代。
|
|
9
|
+
- 界面的颜色、字体、组件按 `design/`(设计规范,见其中的 README)来;改了 `design/tokens.json`、`design/reference/components.css` 或 `design/examples/icons.js`,运行 `node scripts/tokens-build.mjs` 更新审查网页里的副本。
|
|
9
10
|
- 改动文件格式(spec、状态文件、结果文件、决策记录等)时,同时更新 [contracts/](../../contracts/)、代码和测试;状态文件的格式变化要加迁移(见 `contracts/state.md`)。
|
|
10
11
|
|
|
11
12
|
## 2. 改 skill 和提示词的规则
|
|
@@ -84,4 +85,5 @@
|
|
|
84
85
|
| `evals/` | 评估:样例仓库、用例、对话剧本 |
|
|
85
86
|
| `contracts/` | 文件格式约定 |
|
|
86
87
|
| `docs/adr/` | 设计决定 |
|
|
88
|
+
| `design/` | 界面设计规范:tokens、品牌手册、各界面规范、组件、效果图 |
|
|
87
89
|
| `paseo-plugin/` | Paseo 插件:`client/`(界面,React Native)、`server/`(daemon 侧,运行 `req api`)、`shared/`(RPC 约定)。版本号与根目录的 `package.json` 相同,升版本时两处一起改 |
|
|
@@ -1,108 +1,57 @@
|
|
|
1
|
-
:
|
|
2
|
-
|
|
3
|
-
--surface: #ffffff;
|
|
4
|
-
--surface-2: #f1f3f6;
|
|
5
|
-
--text: #1c2430;
|
|
6
|
-
--muted: #5d6b7c;
|
|
7
|
-
--border: #dfe3e9;
|
|
8
|
-
--accent: #2457d6;
|
|
9
|
-
--accent-text: #ffffff;
|
|
10
|
-
--accent-soft: #e8eefc;
|
|
11
|
-
--region: #d97706;
|
|
12
|
-
--pin: #e11d48;
|
|
13
|
-
--ok: #15803d;
|
|
14
|
-
--danger: #b91c1c;
|
|
15
|
-
--shadow: 0 8px 28px rgba(20, 30, 50, 0.16);
|
|
16
|
-
color-scheme: light;
|
|
17
|
-
}
|
|
18
|
-
@media (prefers-color-scheme: dark) {
|
|
19
|
-
:root {
|
|
20
|
-
--bg: #12161c;
|
|
21
|
-
--surface: #1a2029;
|
|
22
|
-
--surface-2: #222a35;
|
|
23
|
-
--text: #e6eaf0;
|
|
24
|
-
--muted: #9aa7b8;
|
|
25
|
-
--border: #2e3846;
|
|
26
|
-
--accent: #6f9bff;
|
|
27
|
-
--accent-text: #0d1420;
|
|
28
|
-
--accent-soft: #1f2c47;
|
|
29
|
-
--region: #f59e0b;
|
|
30
|
-
--pin: #fb7185;
|
|
31
|
-
--ok: #4ade80;
|
|
32
|
-
--danger: #f87171;
|
|
33
|
-
--shadow: 0 8px 28px rgba(0, 0, 0, 0.5);
|
|
34
|
-
color-scheme: dark;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
* {
|
|
38
|
-
box-sizing: border-box;
|
|
39
|
-
}
|
|
40
|
-
[hidden] {
|
|
41
|
-
display: none !important;
|
|
42
|
-
}
|
|
43
|
-
html,
|
|
44
|
-
body {
|
|
45
|
-
margin: 0;
|
|
46
|
-
background: var(--bg);
|
|
47
|
-
color: var(--text);
|
|
48
|
-
font: 14px/1.55 system-ui, -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
|
49
|
-
}
|
|
1
|
+
/* The prototype review page (1.15): rk-tokens.css and rk.css first; this file lays out the page and
|
|
2
|
+
styles the parts the script builds (lists, chips, the pop-up). Colors only from --rk-* tokens. */
|
|
50
3
|
button,
|
|
51
4
|
input,
|
|
52
5
|
textarea {
|
|
53
6
|
font: inherit;
|
|
54
7
|
color: inherit;
|
|
55
8
|
}
|
|
56
|
-
.
|
|
57
|
-
position: sticky;
|
|
58
|
-
top: 0;
|
|
59
|
-
z-index: 10;
|
|
60
|
-
background: var(--surface);
|
|
61
|
-
border-bottom: 1px solid var(--border);
|
|
62
|
-
padding: 12px 20px;
|
|
63
|
-
display: flex;
|
|
64
|
-
flex-wrap: wrap;
|
|
65
|
-
gap: 10px 24px;
|
|
66
|
-
align-items: center;
|
|
67
|
-
justify-content: space-between;
|
|
68
|
-
}
|
|
69
|
-
.heading {
|
|
9
|
+
.ap-head {
|
|
70
10
|
display: flex;
|
|
71
|
-
|
|
72
|
-
gap:
|
|
73
|
-
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
gap: 6px;
|
|
13
|
+
padding: var(--rk-space-6) max(16px, env(safe-area-inset-right, 0px)) 0 max(16px, env(safe-area-inset-left, 0px));
|
|
74
14
|
}
|
|
75
|
-
.
|
|
76
|
-
|
|
15
|
+
.ap-head h1 {
|
|
16
|
+
margin: 0;
|
|
17
|
+
font-size: 22px;
|
|
18
|
+
line-height: 30px;
|
|
77
19
|
font-weight: 600;
|
|
78
|
-
|
|
79
|
-
white-space: nowrap;
|
|
20
|
+
text-wrap: balance;
|
|
80
21
|
}
|
|
81
|
-
|
|
82
|
-
font-size: 17px;
|
|
22
|
+
.hint {
|
|
83
23
|
margin: 0;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
white-space: nowrap;
|
|
24
|
+
color: var(--rk-text-secondary);
|
|
25
|
+
max-width: 68ch;
|
|
87
26
|
}
|
|
88
|
-
.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
white-space: nowrap;
|
|
95
|
-
}
|
|
96
|
-
.pill.wait {
|
|
97
|
-
background: var(--accent-soft);
|
|
98
|
-
color: var(--accent);
|
|
99
|
-
font-weight: 600;
|
|
27
|
+
.layout {
|
|
28
|
+
display: grid;
|
|
29
|
+
grid-template-columns: minmax(0, 1fr) 360px;
|
|
30
|
+
gap: var(--rk-space-6);
|
|
31
|
+
padding: var(--rk-space-4) max(16px, env(safe-area-inset-right, 0px)) 120px max(16px, env(safe-area-inset-left, 0px));
|
|
32
|
+
align-items: start;
|
|
100
33
|
}
|
|
101
|
-
|
|
34
|
+
@media (max-width: 1000px) {
|
|
35
|
+
.layout {
|
|
36
|
+
grid-template-columns: minmax(0, 1fr);
|
|
37
|
+
padding-bottom: 200px;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
.stage {
|
|
41
|
+
min-width: 0;
|
|
42
|
+
border-radius: var(--rk-radius-xl);
|
|
43
|
+
border: 1px solid var(--rk-border-default);
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
box-shadow: var(--rk-shadow-card);
|
|
46
|
+
}
|
|
47
|
+
.ap-bar {
|
|
102
48
|
display: flex;
|
|
103
49
|
flex-wrap: wrap;
|
|
104
50
|
gap: 8px 16px;
|
|
105
51
|
align-items: center;
|
|
52
|
+
padding: 8px var(--rk-space-4);
|
|
53
|
+
background: var(--rk-surface-1);
|
|
54
|
+
border-bottom: 1px solid var(--rk-border-default);
|
|
106
55
|
}
|
|
107
56
|
.group {
|
|
108
57
|
display: flex;
|
|
@@ -110,79 +59,34 @@ h1 {
|
|
|
110
59
|
gap: 6px;
|
|
111
60
|
}
|
|
112
61
|
.label {
|
|
113
|
-
color: var(--muted);
|
|
62
|
+
color: var(--rk-text-muted);
|
|
114
63
|
font-size: 12px;
|
|
115
64
|
}
|
|
116
|
-
.seg {
|
|
117
|
-
display: inline-flex;
|
|
118
|
-
border: 1px solid var(--border);
|
|
119
|
-
border-radius: 8px;
|
|
120
|
-
overflow: hidden;
|
|
65
|
+
.seg.rk-seg {
|
|
121
66
|
flex-wrap: wrap;
|
|
122
67
|
}
|
|
123
|
-
.seg button {
|
|
124
|
-
border: 0;
|
|
125
|
-
background: transparent;
|
|
126
|
-
padding: 5px 11px;
|
|
127
|
-
cursor: pointer;
|
|
128
|
-
font-size: 13px;
|
|
129
|
-
}
|
|
130
|
-
.seg button + button {
|
|
131
|
-
border-left: 1px solid var(--border);
|
|
132
|
-
}
|
|
133
|
-
.seg button[aria-pressed="true"] {
|
|
134
|
-
background: var(--accent);
|
|
135
|
-
color: var(--accent-text);
|
|
136
|
-
}
|
|
137
|
-
.seg button:focus-visible,
|
|
138
|
-
.chips button:focus-visible,
|
|
139
|
-
.list button:focus-visible,
|
|
140
|
-
.actions button:focus-visible,
|
|
141
|
-
.pop button:focus-visible {
|
|
142
|
-
outline: 2px solid var(--accent);
|
|
143
|
-
outline-offset: 2px;
|
|
144
|
-
}
|
|
145
68
|
.check {
|
|
146
69
|
display: inline-flex;
|
|
147
70
|
gap: 6px;
|
|
148
71
|
align-items: center;
|
|
149
72
|
font-size: 13px;
|
|
73
|
+
color: var(--rk-text-secondary);
|
|
150
74
|
cursor: pointer;
|
|
151
75
|
}
|
|
152
|
-
.
|
|
153
|
-
|
|
154
|
-
grid-template-columns: minmax(0, 1fr) 360px;
|
|
155
|
-
gap: 16px;
|
|
156
|
-
padding: 16px 20px 32px;
|
|
157
|
-
align-items: start;
|
|
158
|
-
}
|
|
159
|
-
@media (max-width: 1000px) {
|
|
160
|
-
.layout {
|
|
161
|
-
grid-template-columns: 1fr;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
.stage {
|
|
165
|
-
min-width: 0;
|
|
166
|
-
}
|
|
167
|
-
.hint {
|
|
168
|
-
margin: 0 0 8px;
|
|
169
|
-
color: var(--muted);
|
|
170
|
-
font-size: 13px;
|
|
76
|
+
.check input {
|
|
77
|
+
accent-color: var(--rk-brand-500);
|
|
171
78
|
}
|
|
172
79
|
.frame-wrap {
|
|
173
80
|
overflow: auto;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
border-radius: 10px;
|
|
177
|
-
padding: 12px;
|
|
178
|
-
max-height: calc(100vh - 150px);
|
|
81
|
+
padding: var(--rk-space-4);
|
|
82
|
+
max-height: calc(100vh - 200px);
|
|
179
83
|
}
|
|
180
84
|
.sizer {
|
|
181
85
|
position: relative;
|
|
182
86
|
margin: 0 auto;
|
|
183
87
|
overflow: hidden;
|
|
184
|
-
box-shadow: var(--shadow);
|
|
185
|
-
border-radius:
|
|
88
|
+
box-shadow: var(--rk-shadow-dialog);
|
|
89
|
+
border-radius: 6px;
|
|
186
90
|
background: #fff;
|
|
187
91
|
}
|
|
188
92
|
iframe {
|
|
@@ -195,51 +99,68 @@ iframe {
|
|
|
195
99
|
transform-origin: 0 0;
|
|
196
100
|
}
|
|
197
101
|
.empty {
|
|
198
|
-
padding:
|
|
102
|
+
padding: 48px 24px;
|
|
199
103
|
text-align: center;
|
|
200
|
-
color: var(--
|
|
201
|
-
background: var(--surface);
|
|
202
|
-
border: 1px dashed var(--border);
|
|
203
|
-
border-radius: 10px;
|
|
104
|
+
color: var(--rk-text-secondary);
|
|
105
|
+
background: var(--rk-surface-2);
|
|
204
106
|
}
|
|
205
107
|
.side {
|
|
206
108
|
display: flex;
|
|
207
109
|
flex-direction: column;
|
|
208
|
-
gap:
|
|
110
|
+
gap: var(--rk-space-3);
|
|
209
111
|
position: sticky;
|
|
210
|
-
top:
|
|
211
|
-
max-height: calc(100vh -
|
|
112
|
+
top: 64px;
|
|
113
|
+
max-height: calc(100vh - 160px);
|
|
212
114
|
overflow: auto;
|
|
213
115
|
}
|
|
116
|
+
@media (max-width: 1000px) {
|
|
117
|
+
.side {
|
|
118
|
+
position: static;
|
|
119
|
+
max-height: none;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
214
122
|
.card {
|
|
215
|
-
background: var(--surface);
|
|
216
|
-
border: 1px solid var(--border);
|
|
217
|
-
border-radius:
|
|
218
|
-
|
|
123
|
+
background: var(--rk-surface-2);
|
|
124
|
+
border: 1px solid var(--rk-border-default);
|
|
125
|
+
border-radius: var(--rk-radius-lg);
|
|
126
|
+
box-shadow: var(--rk-shadow-card);
|
|
127
|
+
padding: 14px var(--rk-space-4);
|
|
219
128
|
}
|
|
220
129
|
.card h2,
|
|
221
130
|
.card summary {
|
|
131
|
+
display: flex;
|
|
132
|
+
align-items: center;
|
|
133
|
+
gap: 8px;
|
|
222
134
|
font-size: 14px;
|
|
223
135
|
font-weight: 600;
|
|
224
|
-
margin: 0 0
|
|
136
|
+
margin: 0 0 10px;
|
|
225
137
|
}
|
|
226
138
|
.card summary {
|
|
227
139
|
cursor: pointer;
|
|
228
140
|
margin: 0;
|
|
229
141
|
}
|
|
230
142
|
details[open] summary {
|
|
231
|
-
margin-bottom:
|
|
143
|
+
margin-bottom: 8px;
|
|
232
144
|
}
|
|
233
145
|
.card ol {
|
|
234
146
|
margin: 0;
|
|
235
147
|
padding-left: 18px;
|
|
236
|
-
color: var(--
|
|
148
|
+
color: var(--rk-text-secondary);
|
|
149
|
+
font-size: 13px;
|
|
237
150
|
}
|
|
238
151
|
.card ol li + li {
|
|
239
152
|
margin-top: 4px;
|
|
240
153
|
}
|
|
154
|
+
.ap-key {
|
|
155
|
+
padding: 0 4px;
|
|
156
|
+
border-radius: 4px;
|
|
157
|
+
}
|
|
158
|
+
.ap-key--region {
|
|
159
|
+
outline: 1.5px dashed var(--rk-ai);
|
|
160
|
+
color: var(--rk-ai);
|
|
161
|
+
}
|
|
241
162
|
.count {
|
|
242
|
-
color: var(--muted);
|
|
163
|
+
color: var(--rk-text-muted);
|
|
243
164
|
font-weight: 400;
|
|
244
165
|
}
|
|
245
166
|
.list {
|
|
@@ -248,42 +169,45 @@ details[open] summary {
|
|
|
248
169
|
padding: 0;
|
|
249
170
|
display: flex;
|
|
250
171
|
flex-direction: column;
|
|
251
|
-
gap:
|
|
172
|
+
gap: 8px;
|
|
252
173
|
}
|
|
253
174
|
.list li {
|
|
254
|
-
border: 1px solid var(--border);
|
|
255
|
-
border-radius:
|
|
256
|
-
padding:
|
|
257
|
-
background: var(--surface);
|
|
175
|
+
border: 1px solid var(--rk-border-default);
|
|
176
|
+
border-radius: var(--rk-radius-md);
|
|
177
|
+
padding: 10px 12px;
|
|
178
|
+
background: var(--rk-surface-1);
|
|
179
|
+
}
|
|
180
|
+
#comments li:has(.badge.pin) {
|
|
181
|
+
border-color: var(--rk-brand-edge);
|
|
258
182
|
}
|
|
259
183
|
.list li.flash {
|
|
260
|
-
border-color: var(--
|
|
261
|
-
background: var(--
|
|
184
|
+
border-color: var(--rk-brand-500);
|
|
185
|
+
background: var(--rk-brand-tint);
|
|
262
186
|
}
|
|
263
187
|
.list .row {
|
|
264
188
|
display: flex;
|
|
265
|
-
gap:
|
|
189
|
+
gap: 10px;
|
|
266
190
|
align-items: flex-start;
|
|
267
191
|
}
|
|
268
192
|
.badge {
|
|
269
193
|
flex: none;
|
|
270
194
|
min-width: 22px;
|
|
271
195
|
height: 22px;
|
|
272
|
-
border-radius:
|
|
196
|
+
border-radius: var(--rk-radius-pill);
|
|
273
197
|
display: inline-flex;
|
|
274
198
|
align-items: center;
|
|
275
199
|
justify-content: center;
|
|
276
|
-
font
|
|
277
|
-
font-weight: 700;
|
|
200
|
+
font: 700 12px/1 var(--rk-font-mono);
|
|
278
201
|
padding: 0 6px;
|
|
279
202
|
}
|
|
280
203
|
.badge.region {
|
|
281
|
-
background: var(--
|
|
282
|
-
color:
|
|
204
|
+
background: var(--rk-ai-tint);
|
|
205
|
+
color: var(--rk-ai);
|
|
206
|
+
box-shadow: inset 0 0 0 1.5px var(--rk-ai);
|
|
283
207
|
}
|
|
284
208
|
.badge.pin {
|
|
285
|
-
background: var(--
|
|
286
|
-
color:
|
|
209
|
+
background: var(--rk-brand-500);
|
|
210
|
+
color: var(--rk-on-brand);
|
|
287
211
|
}
|
|
288
212
|
.grow {
|
|
289
213
|
flex: 1;
|
|
@@ -293,100 +217,88 @@ details[open] summary {
|
|
|
293
217
|
font-weight: 600;
|
|
294
218
|
}
|
|
295
219
|
.muted {
|
|
296
|
-
color: var(--
|
|
220
|
+
color: var(--rk-text-secondary);
|
|
297
221
|
}
|
|
298
222
|
.small {
|
|
299
223
|
font-size: 12px;
|
|
224
|
+
line-height: 18px;
|
|
300
225
|
}
|
|
301
226
|
.linkish {
|
|
302
227
|
border: 0;
|
|
303
228
|
background: none;
|
|
304
|
-
color: var(--
|
|
229
|
+
color: var(--rk-brand-text);
|
|
305
230
|
cursor: pointer;
|
|
306
|
-
padding:
|
|
231
|
+
padding: 2px 4px;
|
|
307
232
|
font-size: 12px;
|
|
233
|
+
font-weight: 600;
|
|
234
|
+
border-radius: 4px;
|
|
235
|
+
}
|
|
236
|
+
.linkish:hover {
|
|
237
|
+
background: var(--rk-surface-3);
|
|
308
238
|
}
|
|
309
239
|
.linkish.danger {
|
|
310
|
-
color: var(--
|
|
240
|
+
color: var(--rk-status-failed);
|
|
241
|
+
}
|
|
242
|
+
.linkish:focus-visible,
|
|
243
|
+
.chips button:focus-visible {
|
|
244
|
+
outline: 2px solid var(--rk-focus-ring);
|
|
245
|
+
outline-offset: 2px;
|
|
311
246
|
}
|
|
312
247
|
.field {
|
|
313
248
|
display: flex;
|
|
314
249
|
flex-direction: column;
|
|
315
250
|
gap: 4px;
|
|
316
|
-
margin-top:
|
|
251
|
+
margin-top: 10px;
|
|
317
252
|
}
|
|
318
253
|
.field span {
|
|
319
254
|
font-size: 12px;
|
|
320
|
-
|
|
255
|
+
font-weight: 600;
|
|
256
|
+
color: var(--rk-text-secondary);
|
|
321
257
|
}
|
|
322
258
|
.field input,
|
|
323
259
|
.field textarea {
|
|
324
260
|
width: 100%;
|
|
325
|
-
|
|
326
|
-
border
|
|
327
|
-
|
|
328
|
-
|
|
261
|
+
box-sizing: border-box;
|
|
262
|
+
border: 1px solid var(--rk-border-default);
|
|
263
|
+
border-radius: var(--rk-radius-md);
|
|
264
|
+
padding: 7px 10px;
|
|
265
|
+
background: var(--rk-surface-3);
|
|
266
|
+
color: var(--rk-text-primary);
|
|
329
267
|
resize: vertical;
|
|
330
268
|
}
|
|
331
269
|
.field input:focus,
|
|
332
270
|
.field textarea:focus {
|
|
333
|
-
outline:
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
}
|
|
337
|
-
.actions {
|
|
338
|
-
display: flex;
|
|
339
|
-
flex-direction: column;
|
|
340
|
-
gap: 8px;
|
|
341
|
-
}
|
|
342
|
-
.actions p {
|
|
343
|
-
margin: 0;
|
|
344
|
-
}
|
|
345
|
-
button.primary,
|
|
346
|
-
button.secondary {
|
|
347
|
-
border-radius: 8px;
|
|
348
|
-
padding: 9px 14px;
|
|
349
|
-
cursor: pointer;
|
|
350
|
-
font-weight: 600;
|
|
351
|
-
}
|
|
352
|
-
button.primary {
|
|
353
|
-
background: var(--accent);
|
|
354
|
-
color: var(--accent-text);
|
|
355
|
-
border: 1px solid var(--accent);
|
|
356
|
-
}
|
|
357
|
-
button.secondary {
|
|
358
|
-
background: var(--surface);
|
|
359
|
-
border: 1px solid var(--border);
|
|
360
|
-
}
|
|
361
|
-
button:disabled {
|
|
362
|
-
opacity: 0.45;
|
|
363
|
-
cursor: not-allowed;
|
|
271
|
+
outline: none;
|
|
272
|
+
border-color: var(--rk-brand-edge);
|
|
273
|
+
box-shadow: 0 0 0 3px var(--rk-brand-tint);
|
|
364
274
|
}
|
|
365
275
|
.result.ok {
|
|
366
|
-
color: var(--
|
|
276
|
+
color: var(--rk-status-success);
|
|
367
277
|
}
|
|
368
278
|
.result.err {
|
|
369
|
-
color: var(--
|
|
279
|
+
color: var(--rk-status-failed);
|
|
370
280
|
}
|
|
371
281
|
.pop {
|
|
372
282
|
position: fixed;
|
|
373
|
-
z-index:
|
|
374
|
-
width:
|
|
283
|
+
z-index: var(--rk-z-modal);
|
|
284
|
+
width: 360px;
|
|
375
285
|
max-width: calc(100vw - 24px);
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
border
|
|
379
|
-
|
|
380
|
-
|
|
286
|
+
box-sizing: border-box;
|
|
287
|
+
background: var(--rk-surface-1);
|
|
288
|
+
border: 1px solid var(--rk-border-default);
|
|
289
|
+
border-radius: var(--rk-radius-xl);
|
|
290
|
+
box-shadow: var(--rk-shadow-dialog);
|
|
291
|
+
padding: var(--rk-space-4);
|
|
381
292
|
}
|
|
382
293
|
.pop-title {
|
|
383
294
|
margin: 0;
|
|
295
|
+
font-size: 15px;
|
|
384
296
|
font-weight: 600;
|
|
385
297
|
}
|
|
386
298
|
.pop-sub {
|
|
387
|
-
margin: 2px 0
|
|
299
|
+
margin: 2px 0 10px;
|
|
388
300
|
font-size: 12px;
|
|
389
|
-
color: var(--muted);
|
|
301
|
+
color: var(--rk-text-muted);
|
|
390
302
|
}
|
|
391
303
|
.chips {
|
|
392
304
|
display: flex;
|
|
@@ -394,27 +306,34 @@ button:disabled {
|
|
|
394
306
|
gap: 6px;
|
|
395
307
|
}
|
|
396
308
|
.chips button {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
309
|
+
height: 30px;
|
|
310
|
+
border: 1px solid var(--rk-border-default);
|
|
311
|
+
background: var(--rk-surface-2);
|
|
312
|
+
color: var(--rk-text-secondary);
|
|
313
|
+
border-radius: var(--rk-radius-pill);
|
|
314
|
+
padding: 0 12px;
|
|
401
315
|
cursor: pointer;
|
|
402
316
|
font-size: 13px;
|
|
317
|
+
font-weight: 600;
|
|
318
|
+
}
|
|
319
|
+
.chips button:hover {
|
|
320
|
+
border-color: var(--rk-border-strong);
|
|
321
|
+
color: var(--rk-text-primary);
|
|
403
322
|
}
|
|
404
323
|
.chips button[aria-checked="true"] {
|
|
405
|
-
background: var(--
|
|
406
|
-
border-color: var(--
|
|
407
|
-
color: var(--
|
|
324
|
+
background: var(--rk-brand-500);
|
|
325
|
+
border-color: var(--rk-brand-edge);
|
|
326
|
+
color: var(--rk-on-brand);
|
|
408
327
|
}
|
|
409
328
|
.pop-actions {
|
|
410
329
|
display: flex;
|
|
411
330
|
justify-content: flex-end;
|
|
412
331
|
gap: 8px;
|
|
413
|
-
margin-top:
|
|
332
|
+
margin-top: 12px;
|
|
414
333
|
}
|
|
415
334
|
.diff-list {
|
|
416
335
|
margin: 6px 0 0;
|
|
417
336
|
padding-left: 18px;
|
|
418
|
-
color: var(--
|
|
337
|
+
color: var(--rk-text-secondary);
|
|
419
338
|
font-size: 13px;
|
|
420
339
|
}
|