wezard 2.3.0 → 2.4.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/CLAUDE.md +3 -3
- package/README.md +5 -5
- package/config.example.jsonc +12 -0
- package/dist/daemon/approval.js +103 -15
- package/dist/daemon/approval.js.map +1 -1
- package/dist/daemon/chat-name.js +15 -0
- package/dist/daemon/chat-name.js.map +1 -1
- package/dist/daemon/config-api.js +281 -70
- package/dist/daemon/config-api.js.map +1 -1
- package/dist/daemon/danger.js +5 -7
- package/dist/daemon/danger.js.map +1 -1
- package/dist/daemon/detail.js +10 -2
- package/dist/daemon/detail.js.map +1 -1
- package/dist/daemon/handoff.js +4 -3
- package/dist/daemon/handoff.js.map +1 -1
- package/dist/daemon/idle-nudge.js +55 -0
- package/dist/daemon/idle-nudge.js.map +1 -0
- package/dist/daemon/inbound.js +17 -14
- package/dist/daemon/inbound.js.map +1 -1
- package/dist/daemon/index.js +957 -225
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/jobs.js +122 -13
- package/dist/daemon/jobs.js.map +1 -1
- package/dist/daemon/mirror-bridge.js +97 -84
- package/dist/daemon/mirror-bridge.js.map +1 -1
- package/dist/daemon/model-select.js +3 -0
- package/dist/daemon/model-select.js.map +1 -1
- package/dist/daemon/notices.js +172 -33
- package/dist/daemon/notices.js.map +1 -1
- package/dist/daemon/peers.js +105 -78
- package/dist/daemon/peers.js.map +1 -1
- package/dist/daemon/pending-items.js +171 -0
- package/dist/daemon/pending-items.js.map +1 -0
- package/dist/daemon/receipts.js +58 -24
- package/dist/daemon/receipts.js.map +1 -1
- package/dist/daemon/route.js +76 -15
- package/dist/daemon/route.js.map +1 -1
- package/dist/daemon/spawn-tmux.js +2 -2
- package/dist/daemon/spawn-tmux.js.map +1 -1
- package/dist/daemon/steward-guard.js +32 -0
- package/dist/daemon/steward-guard.js.map +1 -0
- package/dist/daemon/top-only-nudge.js +29 -0
- package/dist/daemon/top-only-nudge.js.map +1 -0
- package/dist/daemon/wizard.js +114 -61
- package/dist/daemon/wizard.js.map +1 -1
- package/dist/mcp/server.js +75 -25
- package/dist/mcp/server.js.map +1 -1
- package/dist/shared/chat-http.js +23 -13
- package/dist/shared/chat-http.js.map +1 -1
- package/dist/shared/config-meta.js +91 -0
- package/dist/shared/config-meta.js.map +1 -0
- package/dist/shared/config-writer.js +5 -6
- package/dist/shared/config-writer.js.map +1 -1
- package/dist/shared/config.js +279 -294
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/detail-render.js +121 -32
- package/dist/shared/detail-render.js.map +1 -1
- package/dist/shared/detail-store.js.map +1 -1
- package/dist/shared/keepalive.js +5 -5
- package/dist/shared/keepalive.js.map +1 -1
- package/dist/shared/role-render.js +52 -12
- package/dist/shared/role-render.js.map +1 -1
- package/dist/shared/role-view.js +84 -26
- package/dist/shared/role-view.js.map +1 -1
- package/dist/shared/world.js +82 -13
- package/dist/shared/world.js.map +1 -1
- package/hooks/pre-tool-use.sh +14 -12
- package/package.json +1 -1
- package/web/chat.css +63 -37
- package/web/chat.js +513 -283
package/dist/shared/world.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
// 「安排」, 不随 TTL 消失, 但只有 daemon 有。svr 拿不到就退化成只画观测边。
|
|
18
18
|
//
|
|
19
19
|
// 纯函数, 无 IO: 注册表侧的东西由调用方以 WorldFacts 喂进来。
|
|
20
|
-
import { baseOfKey, labelFor, tagOfKey } from "./session-label.js";
|
|
20
|
+
import { baseOfKey, labelFor, stripSigil, tagOfKey } from "./session-label.js";
|
|
21
21
|
import { withoutKeepaliveTurns } from "./keepalive.js";
|
|
22
22
|
import { isTurn, staleAt, isGhostTurn } from "./chat-view.js";
|
|
23
23
|
import { senderOf } from "./role-view.js";
|
|
@@ -97,15 +97,63 @@ export const withData = (facts, records, now) => {
|
|
|
97
97
|
const spoke = new Set(liveTurns(records, now).flatMap((r) => [r.target, ...(r.from?.kind === "peer" && r.from.from ? [r.from.from] : [])]));
|
|
98
98
|
const keep = (w) => w.alive || w.busy || w.lastActivity > 0 || spoke.has(w.target);
|
|
99
99
|
const byTarget = new Map(facts.wizards.map((w) => [w.target, w]));
|
|
100
|
-
|
|
100
|
+
// 被裁者若还有留下的后代, 不把后代改挂祖父, 而是留一个占位 (ghost) 代表它 —— 家谱里那一层真实存在过。
|
|
101
|
+
const needed = (t, seen = new Set()) => {
|
|
101
102
|
const w = t ? byTarget.get(t) : undefined;
|
|
102
|
-
return !t || !w ||
|
|
103
|
+
return !t || !w || seen.has(t) ? [] : keep(w) ? [] : [t, ...needed(w.parent, new Set([...seen, t])), ...needed(w.forkOf, new Set([...seen, t]))];
|
|
103
104
|
};
|
|
105
|
+
const ghosts = new Set(facts.wizards.filter(keep).flatMap((w) => [...needed(w.parent), ...needed(w.forkOf)]));
|
|
104
106
|
return {
|
|
105
107
|
...facts,
|
|
106
|
-
wizards: facts.wizards.filter(
|
|
108
|
+
wizards: facts.wizards.filter((w) => keep(w) || ghosts.has(w.target)).map((w) => (keep(w) ? w : { ...w, ghost: true })),
|
|
107
109
|
};
|
|
108
110
|
};
|
|
111
|
+
// 老宪章 (加 lineage 字段之前) 的出身只在正文那一行里 —— wizard.ts renderCharter 的三种写法。
|
|
112
|
+
const BORN_LINE = /^- 出身: \*\*`\.([^`]+)`\*\* (克隆出的 \*\*`\.([^`]+)`\*\* 的分身|的分身|生的子 wizard)/m;
|
|
113
|
+
/** 宪章记下的出身; 老记录从正文读回, 名字按此刻的名录换回 target (改过名的就认不出了)。 */
|
|
114
|
+
const lineageOf = (c, targetOf) => {
|
|
115
|
+
if (c.lineage)
|
|
116
|
+
return c.lineage;
|
|
117
|
+
const m = BORN_LINE.exec(c.text);
|
|
118
|
+
const parent = m && targetOf(m[1]);
|
|
119
|
+
if (!m || !parent)
|
|
120
|
+
return undefined;
|
|
121
|
+
const forkOf = m[3] ? targetOf(m[3]) : undefined;
|
|
122
|
+
return { parent, kind: m[2] === "生的子 wizard" ? "spawn" : "clone", ...(forkOf ? { forkOf } : {}) };
|
|
123
|
+
};
|
|
124
|
+
const CLONE_TOOL = /(?:^|__)clone_wizard$/;
|
|
125
|
+
const parseObj = (s) => {
|
|
126
|
+
try {
|
|
127
|
+
const v = JSON.parse(s);
|
|
128
|
+
return v && typeof v === "object" ? v : undefined;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
/** 这次 clone_wizard 生出来的名字: 回包落地的名字优先, 没回包退回 input。 */
|
|
135
|
+
const clonedName = (r, u) => {
|
|
136
|
+
const res = r.items.find((it) => it.t === "tool_result" && it.toolUseId === u.toolUseId);
|
|
137
|
+
const j = res ? parseObj(res.body) : undefined;
|
|
138
|
+
const a = (u.toolInput && typeof u.toolInput === "object" ? u.toolInput : {});
|
|
139
|
+
return stripSigil(String(j?.name ?? a.name ?? ""));
|
|
140
|
+
};
|
|
141
|
+
const msgIdOf = (r) => `${r.id}:${r.items.length || !r.closed ? "out" : "in"}`;
|
|
142
|
+
/** 分身在 origin 会话 (`rs`, 按时刻升序) 里分叉的那一处: origin 自己调 clone_wizard 生的 (`byCall`),
|
|
143
|
+
* 就是那次调用 —— 按名字认, 认不出名字取离出生最近的那次; 否则 (克隆的是别人 / 没找到调用)
|
|
144
|
+
* 落到出生前最近的那一句, 分叉正发生在它之后。 */
|
|
145
|
+
export const clonePointOf = (rs, origin, name, bornAt, byCall) => {
|
|
146
|
+
const calls = byCall
|
|
147
|
+
? rs.flatMap((r) => r.items.filter((it) => it.t === "tool_use" && CLONE_TOOL.test(it.toolName)).map((u) => ({ r, u })))
|
|
148
|
+
: [];
|
|
149
|
+
const near = (ts) => Math.abs(ts - bornAt);
|
|
150
|
+
const call = calls.find((c) => clonedName(c.r, c.u) === name) ??
|
|
151
|
+
calls.filter((c) => near(c.u.ts) < 5 * 60_000).sort((a, b) => near(a.u.ts) - near(b.u.ts))[0];
|
|
152
|
+
if (call)
|
|
153
|
+
return { origin, id: `${call.r.id}:out`, use: call.u.toolUseId, ts: call.u.ts };
|
|
154
|
+
const before = rs.filter((r) => r.createdAt <= bornAt).at(-1) ?? rs[0];
|
|
155
|
+
return before ? { origin, id: msgIdOf(before), ts: before.createdAt } : { origin, ts: bornAt };
|
|
156
|
+
};
|
|
109
157
|
export const buildWorld = (records, facts, scope, now) => {
|
|
110
158
|
const turns = liveTurns(records, now);
|
|
111
159
|
const byTarget = turns.reduce((m, r) => m.set(r.target, [...(m.get(r.target) ?? []), r]), new Map());
|
|
@@ -140,6 +188,7 @@ export const buildWorld = (records, facts, scope, now) => {
|
|
|
140
188
|
alive: f?.alive ?? false,
|
|
141
189
|
...(f?.waiting?.length ? { waiting: f.waiting } : {}),
|
|
142
190
|
known: !!f,
|
|
191
|
+
...(f?.ghost ? { ghost: true } : {}),
|
|
143
192
|
self: target === scope.self,
|
|
144
193
|
local: base === scope.base,
|
|
145
194
|
parent: f?.parent,
|
|
@@ -188,18 +237,38 @@ export const buildWorld = (records, facts, scope, now) => {
|
|
|
188
237
|
: m1;
|
|
189
238
|
}, new Map());
|
|
190
239
|
// 登记边 —— 家谱。观测不到 (分身可能一句话没说), 但它是最稳定的一种关系。
|
|
191
|
-
|
|
192
|
-
//
|
|
193
|
-
|
|
194
|
-
(m, w) => {
|
|
240
|
+
// parent → 它: 分身 (clone) 或新生 (spawn), 看它开局有没有 fork 上下文; 克隆的是别人时,
|
|
241
|
+
// 上下文的来源另记一条 fork 边 —— 生它、归它管的仍是 parent, 不能因此把它画成 parent 的白板。
|
|
242
|
+
const registered = facts.wizards.reduce((m, w) => {
|
|
195
243
|
if (!w.parent)
|
|
196
244
|
return m;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
const m1 = link(m, "clone", w.forkOf ?? w.parent, w.target, w.bornAt ?? 0);
|
|
200
|
-
return w.forkOf ? link(m1, "spawn", w.parent, w.target, w.bornAt ?? 0) : m1;
|
|
245
|
+
const m1 = link(m, w.clonedFrom ? "clone" : "spawn", w.parent, w.target, w.bornAt ?? 0);
|
|
246
|
+
return w.clonedFrom && w.forkOf ? link(m1, "fork", w.forkOf, w.target, w.bornAt ?? 0) : m1;
|
|
201
247
|
}, observed);
|
|
202
|
-
|
|
248
|
+
// 注册表里已经没有的 (stop_wizard forget、工单回收、回归脚本收尾都会删记录), 家谱只剩
|
|
249
|
+
// 它的宪章 —— 宪章不进 TTL, 记着出生那一刻谁生的它; 不读回来它就只剩一条「对话」边、像个外人。
|
|
250
|
+
const byName = new Map(nodes.map((n) => [n.name, n.target]));
|
|
251
|
+
const lineageEdge = (m, kind, from, to, ts) => from ? link(m, kind, from, to, ts) : m;
|
|
252
|
+
const chartered = records.filter((r) => r.kind === "charter" && !factOf.has(r.target))
|
|
253
|
+
.flatMap((c) => ((l) => (l ? [{ c, l }] : []))(lineageOf(c, (n) => byName.get(n))));
|
|
254
|
+
const withLineage = chartered.reduce((m, { c, l }) => {
|
|
255
|
+
const m1 = lineageEdge(m, l.kind, l.parent, c.target, c.createdAt);
|
|
256
|
+
return l.kind === "clone" ? lineageEdge(m1, "fork", l.forkOf, c.target, c.createdAt) : m1;
|
|
257
|
+
}, registered);
|
|
258
|
+
// clone 边带上分叉处: 注册表与宪章各记着谁被克隆、何时出生。
|
|
259
|
+
const clones = new Map([
|
|
260
|
+
...facts.wizards.filter((w) => w.parent && w.clonedFrom).map((w) => [w.target, { origin: w.forkOf ?? w.parent, parent: w.parent, bornAt: w.bornAt ?? 0 }]),
|
|
261
|
+
...chartered.filter(({ l }) => l.kind === "clone").map(({ c, l }) => [c.target, { origin: l.forkOf ?? l.parent, parent: l.parent, bornAt: c.createdAt }]),
|
|
262
|
+
]);
|
|
263
|
+
const nameOf = new Map(nodes.map((n) => [n.target, n.name]));
|
|
264
|
+
const withPoint = (e) => {
|
|
265
|
+
const k = e.kind === "clone" ? clones.get(e.to) : undefined;
|
|
266
|
+
if (!k)
|
|
267
|
+
return e;
|
|
268
|
+
const rs = [...(byTarget.get(k.origin) ?? [])].sort((a, b) => a.createdAt - b.createdAt);
|
|
269
|
+
return { ...e, point: clonePointOf(rs, k.origin, nameOf.get(e.to) ?? "", k.bornAt, k.origin === k.parent) };
|
|
270
|
+
};
|
|
271
|
+
const edges = [...withLineage.values()].map(withPoint).sort((a, b) => b.lastTs - a.lastTs);
|
|
203
272
|
const relsOf = edges.reduce((m, e) => {
|
|
204
273
|
const add = (a, b) => m.set(a, (m.get(a) ?? new Set()).add(b));
|
|
205
274
|
add(e.from, e.to);
|
package/dist/shared/world.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../../shared/world.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../../shared/world.ts"],"names":[],"mappings":"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"}
|
package/hooks/pre-tool-use.sh
CHANGED
|
@@ -22,13 +22,14 @@ RESUME_WAIT="${WEZARD_RESUME_WAIT:-60}"
|
|
|
22
22
|
HEALTH_URL="${DAEMON_URL%/approve}/healthz"
|
|
23
23
|
|
|
24
24
|
emit() {
|
|
25
|
-
local decision="$1" reason="${2:-}"
|
|
26
|
-
# 用 jq 拼 JSON: reason 可能含字面引号(
|
|
25
|
+
local decision="$1" reason="${2:-}" updated="${3:-}"
|
|
26
|
+
# 用 jq 拼 JSON: reason 可能含字面引号 (「先聊聊」把题目塞进 reason),
|
|
27
27
|
# printf 直接拼会漏出内层 " 把 JSON 撕烂, Claude Code 解析失败 fallback
|
|
28
|
-
# 弹原生 picker → askq 失效。
|
|
28
|
+
# 弹原生 picker → askq 失效。updated = daemon 给的替换入参 (askq 的 answers)。
|
|
29
29
|
if command -v jq >/dev/null 2>&1; then
|
|
30
|
-
jq -cn --arg d "$decision" --arg r "wezard: $reason" \
|
|
31
|
-
'{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:$d,permissionDecisionReason:$r}
|
|
30
|
+
jq -cn --arg d "$decision" --arg r "wezard: $reason" --arg u "$updated" \
|
|
31
|
+
'{hookSpecificOutput:({hookEventName:"PreToolUse",permissionDecision:$d,permissionDecisionReason:$r}
|
|
32
|
+
+ (if $u == "" then {} else {updatedInput:($u | fromjson)} end))}'
|
|
32
33
|
else
|
|
33
34
|
# jq 缺失兜底: 手动转义 \ 和 " (足够覆盖 reason 里的字面引号)。
|
|
34
35
|
local esc="${reason//\\/\\\\}"; esc="${esc//\"/\\\"}"
|
|
@@ -196,15 +197,14 @@ fi
|
|
|
196
197
|
# 1. cli/sync.ts (legacy claude-internal): mcp__wezard__<tool>
|
|
197
198
|
# 2. .claude-plugin/plugin.json: mcp__plugin_wezard_wezard__<tool>
|
|
198
199
|
# 用 *wezard__* 同时覆盖两种前缀。
|
|
199
|
-
# 例外:
|
|
200
|
-
#
|
|
201
|
-
#
|
|
202
|
-
#
|
|
203
|
-
#
|
|
200
|
+
# 例外: 改全机设置的「写」不在白名单 —— set_model scope:"default" (改 CLI 全局设置)。
|
|
201
|
+
# 它落回下面的正常审批; 首次绑定不受影响: 绑定走 IM 魔法短语 (claim.ts), 不经这个工具,
|
|
202
|
+
# 而绑定前没有审批人时 daemon 回 ask, 由本地 CLI 的原生确认框兜住, 不会卡死。
|
|
203
|
+
# config_set 放行: 它按路径分级, 放权项 (allowFrom / approval.* …) 由守护进程自己推确认卡,
|
|
204
|
+
# 那张卡不经 hook, danger.skipAll 也压不过; 在这里再拦一道就是一次改动两张卡。
|
|
204
205
|
if [[ "$TOOL_NAME" == mcp__*wezard__* ]]; then
|
|
205
206
|
case "${TOOL_NAME##*wezard__}" in
|
|
206
207
|
# 任意深度找: DeferExecuteTool 剥包装失败时真实入参可能还套着一层, 只看顶层就失败开放。
|
|
207
|
-
config_set) WRITES=$(printf '%s' "$TOOL_INPUT" | jq -r '[.. | objects | select(has("value") and .value != null)] | any') ;;
|
|
208
208
|
set_model) WRITES=$(printf '%s' "$TOOL_INPUT" | jq -r '[.. | objects | .scope?] | index("default") != null') ;;
|
|
209
209
|
*) WRITES=false ;;
|
|
210
210
|
esac
|
|
@@ -332,6 +332,7 @@ while :; do
|
|
|
332
332
|
|
|
333
333
|
DECISION=$(printf '%s' "$RESP" | jq -r '.decision // "ask"' 2>/dev/null) || bridge_down "bad daemon response"
|
|
334
334
|
REASON=$(printf '%s' "$RESP" | jq -r '.reason // ""' 2>/dev/null)
|
|
335
|
+
UPDATED=$(printf '%s' "$RESP" | jq -c '.updated_input // empty' 2>/dev/null)
|
|
335
336
|
|
|
336
337
|
# daemon 正在重启: 卡还挂在 IM 上, 拿着它给的 req_id 等 daemon 回来续接。
|
|
337
338
|
if [[ "$DECISION" == "retry" ]]; then
|
|
@@ -342,7 +343,8 @@ while :; do
|
|
|
342
343
|
fi
|
|
343
344
|
|
|
344
345
|
case "$DECISION" in
|
|
345
|
-
allow
|
|
346
|
+
allow) emit "allow" "$REASON" "$UPDATED" ;;
|
|
347
|
+
deny|ask) emit "$DECISION" "$REASON" ;;
|
|
346
348
|
*) bridge_down "unknown decision: $DECISION" ;;
|
|
347
349
|
esac
|
|
348
350
|
done
|
package/package.json
CHANGED
package/web/chat.css
CHANGED
|
@@ -49,7 +49,8 @@ button { font: inherit; color: inherit }
|
|
|
49
49
|
|
|
50
50
|
/* ── 侧栏: 我 + 会话 ─────────────────────────────────────────────── */
|
|
51
51
|
.side {
|
|
52
|
-
|
|
52
|
+
/* 宽屏按页宽 25% 放大, 窄时不低于 332px。 */
|
|
53
|
+
width: max(332px, 25vw); flex: none; background: var(--card); border-right: 1px solid var(--line);
|
|
53
54
|
display: flex; flex-direction: column; min-height: 0;
|
|
54
55
|
}
|
|
55
56
|
|
|
@@ -122,6 +123,9 @@ button { font: inherit; color: inherit }
|
|
|
122
123
|
opacity: 0; transform: translateY(-4px); pointer-events: none; transition: opacity .12s, transform .12s;
|
|
123
124
|
}
|
|
124
125
|
.sp.open .sp-list { opacity: 1; transform: none; pointer-events: auto }
|
|
126
|
+
/* 贴着右沿的下拉: 以触发器右下角为锚向左下展开, 宽度随选项。 */
|
|
127
|
+
.sp.end .sp-list { left: auto; right: 0; width: auto; min-width: 104px }
|
|
128
|
+
.sp-ic { flex: none; align-self: center; font-size: 12px; line-height: 1; margin-right: 1px }
|
|
125
129
|
.sp-it {
|
|
126
130
|
width: 100%; display: flex; gap: 10px; align-items: baseline;
|
|
127
131
|
background: none; border: 0; border-radius: 6px; padding: 6px 8px; cursor: pointer; text-align: left; font-size: 12px;
|
|
@@ -192,9 +196,13 @@ button { font: inherit; color: inherit }
|
|
|
192
196
|
font-size: 11px; font-weight: 400; color: var(--mute);
|
|
193
197
|
}
|
|
194
198
|
.convs h2 .vt:hover { background: #eef1f4; color: var(--accent) }
|
|
195
|
-
/*
|
|
196
|
-
|
|
197
|
-
.convs h2 [data-
|
|
199
|
+
/* 时间范围下拉 (与名片里的 session 下拉同一个 .sp) 靠右, 视图开关紧跟在它后面。
|
|
200
|
+
标题行把 span 一律染淡, 下拉里的字照回正常色。 */
|
|
201
|
+
.convs h2 .sp[data-dd="win"] { margin-left: auto; align-self: center; align-items: center }
|
|
202
|
+
.convs h2 .sp[data-dd="win"] + .vt { margin-left: 0 }
|
|
203
|
+
.convs h2 .sp .sp-it { color: var(--ink) }
|
|
204
|
+
.convs h2 .sp .sp-it.on { color: var(--accent) }
|
|
205
|
+
.convs h2 .sp-list span { color: inherit }
|
|
198
206
|
/* 关系图那一行字多 (范围 · 计数 · 名册缺席 · 看全部 · 开关): 一律不折行, 让范围那段先省略。 */
|
|
199
207
|
.convs h2 { white-space: nowrap; min-width: 0 }
|
|
200
208
|
.convs h2 > * { flex: none }
|
|
@@ -223,10 +231,21 @@ button { font: inherit; color: inherit }
|
|
|
223
231
|
.ci .pv, .si .pv { display: block; font-size: 12px; color: var(--mute); overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
|
|
224
232
|
.ci .pv:empty, .si .pv:empty { display: none }
|
|
225
233
|
.ci .tag { font-size: 10.5px; border-radius: 4px; padding: 0 4px; flex: none }
|
|
234
|
+
.ci-chevron {
|
|
235
|
+
flex: none; align-self: center; position: relative; z-index: 1; width: 20px; height: 20px; padding: 0; border: 0;
|
|
236
|
+
background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center;
|
|
237
|
+
color: var(--faint); transition: color .12s, transform .12s;
|
|
238
|
+
}
|
|
239
|
+
.ci-chevron::before { content: "›"; font-size: 16px; font-weight: 300; display: flex; align-items: center; justify-content: center; line-height: 1 }
|
|
240
|
+
.ci-chevron:hover { color: var(--accent) }
|
|
241
|
+
.ci-chevron.on::before { transform: rotate(90deg) }
|
|
226
242
|
/* 头像与名字是进入那个 role 视角的入口 —— 侧栏项、会话头、消息行同一种读法。
|
|
227
243
|
它们嵌在整行那颗按钮里; 行本身悬停不变底色, 只有入口自己亮起。z-index 保证没有兄弟盖住命中区。 */
|
|
228
244
|
.nm.go, .av.go { position: relative; z-index: 1; cursor: pointer }
|
|
229
|
-
.nm.go:hover {
|
|
245
|
+
.nm.go:hover { text-decoration: underline; text-underline-offset: 2px }
|
|
246
|
+
/* 名字旁的 ⇄: 只在能切的名字悬停时露出 —— inline-block 同样不吃下划线 */
|
|
247
|
+
.nm .sw { display: none; margin-left: 4px; font-style: normal; font-weight: 400; font-size: 12px; color: var(--faint) }
|
|
248
|
+
.nm.go:hover .sw { display: inline-block }
|
|
230
249
|
/* 名字旁「+N」: 视角外它还在和几个 role 说话 —— inline-block 不吃名字 hover 的下划线 */
|
|
231
250
|
.nm .oc { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 8px; line-height: 15px; font-size: 10.5px; font-weight: 600;
|
|
232
251
|
color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, transparent); vertical-align: 1px }
|
|
@@ -259,6 +278,12 @@ span.av.go:hover { background: var(--av-hot); box-shadow: 0 0 0 3px var(--av-hot
|
|
|
259
278
|
font-variant-numeric: tabular-nums;
|
|
260
279
|
}
|
|
261
280
|
|
|
281
|
+
/* 他人未读: 贴在名字右侧, 同一种红点、小一号 —— 换到那个 role 的视角会看到、这里没在数的未读。 */
|
|
282
|
+
.nm .pub {
|
|
283
|
+
display: inline-block; margin-left: 4px; min-width: 13px; height: 13px; padding: 0 4px; border-radius: 7px;
|
|
284
|
+
background: #e5484d; color: #fff; font-size: 9px; font-weight: 600; line-height: 13px; text-align: center;
|
|
285
|
+
font-variant-numeric: tabular-nums; vertical-align: 2px;
|
|
286
|
+
}
|
|
262
287
|
|
|
263
288
|
/* ── 右栏头: 这个群聊 / 私聊是什么 ───────────────────────────────── */
|
|
264
289
|
.main { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; background: var(--card) }
|
|
@@ -325,7 +350,6 @@ span.av.go:hover { background: var(--av-hot); box-shadow: 0 0 0 3px var(--av-hot
|
|
|
325
350
|
.mrow.mine { flex-direction: row-reverse }
|
|
326
351
|
.mrow.mine .mcol { align-items: flex-end }
|
|
327
352
|
.mwho { font-size: 11.5px; color: var(--mute); display: flex; gap: 6px; align-items: center; flex-wrap: wrap }
|
|
328
|
-
.mwho .to { color: var(--faint); display: inline-flex; gap: 6px; align-items: center; min-width: 0; max-width: 100% }
|
|
329
353
|
.mwho .nm { min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
|
|
330
354
|
.mwho .ch { font-size: 10.5px; border-radius: 4px; padding: 0 4px }
|
|
331
355
|
.mwho .ch.priv { color: var(--priv); background: #9a5b1014 }
|
|
@@ -356,6 +380,16 @@ button.mchip.rcpt { cursor: pointer }
|
|
|
356
380
|
button.mchip.rcpt:hover { text-decoration: underline }
|
|
357
381
|
.mchip.rcpt:is(.st-need, .st-error) { color: #9a6700; background: #9a670014 }
|
|
358
382
|
.mchip.rcpt:is(.st-timeout, .st-silent, .st-dead, .st-canceled) { color: #cf222e; background: #cf222e10 }
|
|
383
|
+
/* 说给谁 (inline): 塞进正文第一段开头的头像 + 名字, 像行内 mention; 小圆角底色, 点它走移交行同一套跳转。 */
|
|
384
|
+
.to-in {
|
|
385
|
+
display: inline-flex; align-items: center; gap: 3px; vertical-align: baseline; padding: 1px 6px; border-radius: 5px;
|
|
386
|
+
line-height: 18px; background: color-mix(in srgb, #0969da 10%, transparent); color: var(--ink);
|
|
387
|
+
cursor: pointer; transition: background .12s;
|
|
388
|
+
}
|
|
389
|
+
.to-in:hover { background: color-mix(in srgb, #0969da 20%, transparent) }
|
|
390
|
+
.to-in .av { width: 16px; height: 16px; border-radius: 50%; border: 1px solid var(--line); background: var(--card); font-size: 10px; line-height: 14px; text-align: center; align-self: center }
|
|
391
|
+
.to-in .nm { font-weight: 500; font-size: 13px }
|
|
392
|
+
.to-in .nm::before { content: none }
|
|
359
393
|
/* 移交行里的对方: 小头像 + 名字。整行是入口 (开双方的往来), 悬停时整行提亮。 */
|
|
360
394
|
.handoff .ho-who { display: inline-flex; align-items: center; gap: 3px; color: var(--ink) }
|
|
361
395
|
.handoff .ho-line[data-hto]:hover { background: var(--av-hot); border-radius: 6px }
|
|
@@ -421,32 +455,6 @@ button.mchip.rcpt:hover { text-decoration: underline }
|
|
|
421
455
|
/* 说给谁: 贴着气泡写在门里, 与气泡首行对齐。不吃点击 —— 点到它就是点门。
|
|
422
456
|
门竖排: 描述在上、换视角箭头在下, 描述折几行箭头就跟着往下让, 两者不叠。
|
|
423
457
|
contain: size —— 门的内容不参与这一行的高度, 描述再长也不撑高一行。 */
|
|
424
|
-
.flip:has(.dest) {
|
|
425
|
-
flex-direction: column; justify-content: flex-start; gap: 6px; contain: size;
|
|
426
|
-
padding: calc(var(--av) + 12px) 4px 0;
|
|
427
|
-
}
|
|
428
|
-
/* 只留向下的吸附: 原先的 bottom 吸附会把箭头往上拽到视窗中线, 越过上面的描述。 */
|
|
429
|
-
.flip:has(.dest) .fi { bottom: auto; flex: none }
|
|
430
|
-
/* 门比描述矮 (一行短气泡) 时不许把描述压扁, 宁可溢到行外。 */
|
|
431
|
-
.flip:has(.dest) .dest { flex: none }
|
|
432
|
-
/* 压过 .mrow.mine .flip 的 flex-end: 竖排后那条是纵轴, 会把描述推到行底。 */
|
|
433
|
-
.mrow .flip:has(.dest) { justify-content: flex-start }
|
|
434
|
-
.mrow.them .flip:has(.dest) { align-items: flex-start }
|
|
435
|
-
.mrow.mine .flip:has(.dest) { align-items: flex-end }
|
|
436
|
-
.flip .dest {
|
|
437
|
-
max-width: 100%; font-size: 11px; line-height: 1.45; color: var(--faint); pointer-events: none;
|
|
438
|
-
display: flex; align-items: center; gap: 4px; max-height: calc(3 * 1.45em); overflow: hidden;
|
|
439
|
-
}
|
|
440
|
-
.flip .dest .arr { font-style: normal; flex: none }
|
|
441
|
-
.flip .dest .dav {
|
|
442
|
-
flex: none; width: 18px; height: 18px; border-radius: 50%; border: 1px solid var(--line); background: var(--card);
|
|
443
|
-
display: grid; place-items: center; font-size: 11px; line-height: 1;
|
|
444
|
-
}
|
|
445
|
-
.flip .dest .dn { min-width: 0; overflow-wrap: anywhere }
|
|
446
|
-
.mrow.them .flip .dest { text-align: left }
|
|
447
|
-
.mrow.mine .flip .dest { text-align: right; justify-content: flex-end }
|
|
448
|
-
.flip[disabled] .dest { color: var(--faint) }
|
|
449
|
-
.mwho .to { display: none }
|
|
450
458
|
.mwho .av.go { cursor: pointer }
|
|
451
459
|
.mwho .av.go:hover { border-color: var(--accent); background: #2f55c914 }
|
|
452
460
|
|
|
@@ -512,8 +520,7 @@ button.mchip.rcpt:hover { text-decoration: underline }
|
|
|
512
520
|
}
|
|
513
521
|
.ping-fold .mcol { max-width: 100% }
|
|
514
522
|
.ping-fold .flip { display: none }
|
|
515
|
-
.ping-fold
|
|
516
|
-
/* 折叠里的气泡同是白底 —— 描一圈虚线跟对话气泡分开, 与外框一个语气。 */
|
|
523
|
+
.ping-fold /* 折叠里的气泡同是白底 —— 描一圈虚线跟对话气泡分开, 与外框一个语气。 */
|
|
517
524
|
.ping-fold .mb :is(.bubble.mq, .say > .bubble) { border: 1px dashed var(--bub-line) }
|
|
518
525
|
|
|
519
526
|
@media (max-width: 760px) {
|
|
@@ -527,9 +534,7 @@ button.mchip.rcpt:hover { text-decoration: underline }
|
|
|
527
534
|
.thread { padding: 12px }
|
|
528
535
|
.mcol { max-width: calc(86% + var(--av)) }
|
|
529
536
|
.flip { min-width: 16px; padding: 0 4px; font-size: 0 }
|
|
530
|
-
|
|
531
|
-
.mwho .to { display: inline-flex }
|
|
532
|
-
.thread { padding-bottom: calc(12px + env(safe-area-inset-bottom)) }
|
|
537
|
+
.thread { padding-bottom: calc(12px + env(safe-area-inset-bottom)) }
|
|
533
538
|
.usage { padding: 8px 12px }
|
|
534
539
|
.usage.page { padding-bottom: calc(8px + env(safe-area-inset-bottom)) }
|
|
535
540
|
}
|
|
@@ -701,6 +706,7 @@ button.mchip.rcpt:hover { text-decoration: underline }
|
|
|
701
706
|
}
|
|
702
707
|
.tree li.spawn { --lc: #d4700f }
|
|
703
708
|
.tree li.clone { --lc: #8250df }
|
|
709
|
+
.tree li.fork { --lc: #b39ddb }
|
|
704
710
|
.tree li.peer { --lc: #0969da }
|
|
705
711
|
.tree li.job { --lc: #bf8700 }
|
|
706
712
|
.tree li.graph { --lc: #0a7d6b }
|
|
@@ -710,6 +716,8 @@ button.mchip.rcpt:hover { text-decoration: underline }
|
|
|
710
716
|
/* 连接用的祖先: 没和视角对过话, 只为把对过话的后代挂回家谱 —— 淡一档。 */
|
|
711
717
|
.tci.via { opacity: .55 }
|
|
712
718
|
.tci.via:hover { opacity: 1 }
|
|
719
|
+
.tci.ghost { opacity: .5; filter: grayscale(1) }
|
|
720
|
+
.tci.ghost:hover { opacity: .8 }
|
|
713
721
|
.tlab { position: absolute; left: 4px; top: -8px; display: flex; gap: 3px; z-index: 2 }
|
|
714
722
|
.tlab .ek { box-shadow: 0 0 0 2px var(--card) }
|
|
715
723
|
|
|
@@ -720,6 +728,9 @@ button.mchip.rcpt:hover { text-decoration: underline }
|
|
|
720
728
|
}
|
|
721
729
|
.ek.spawn { color: #a8642a; background: #d4700f12 }
|
|
722
730
|
.ek.clone { color: #7a5bb8; background: #8250df12 }
|
|
731
|
+
.ek.clone[data-cpoint] { cursor: pointer }
|
|
732
|
+
.ek.clone[data-cpoint]:hover { background: #8250df2e }
|
|
733
|
+
.ek.fork { color: #8f7bb8; background: #8250df0a }
|
|
723
734
|
.ek.peer { color: #4a74b0; background: #0969da10 }
|
|
724
735
|
.ek.job { color: #94741f; background: #bf870014 }
|
|
725
736
|
.ek.graph { color: #3d8577; background: #0a7d6b12 }
|
|
@@ -928,6 +939,8 @@ button.mchip.rcpt:hover { text-decoration: underline }
|
|
|
928
939
|
|
|
929
940
|
/* 搜索跳到的那一句: 气泡闪一圈视角色。 */
|
|
930
941
|
.mrow.hit .mb > * { animation: hit 1.6s ease-out }
|
|
942
|
+
/* clone 徽标落到的那次 clone_wizard 调用: 调用框本身再闪一圈。 */
|
|
943
|
+
.mrow .bubble.tool.hit { animation: hit 2.4s ease-out }
|
|
931
944
|
@keyframes hit { 0%, 30% { box-shadow: 0 0 0 3px #2f55c955 } 100% { box-shadow: 0 0 0 3px #2f55c900 } }
|
|
932
945
|
|
|
933
946
|
|
|
@@ -973,3 +986,16 @@ button.mchip.rcpt:hover { text-decoration: underline }
|
|
|
973
986
|
.tree.jsel .tci.jout { opacity: .3 }
|
|
974
987
|
.tree.jsel .tci.jout:hover { opacity: 1 }
|
|
975
988
|
.tree.jsel li.jdim { --lc: #d0d7de }
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
.jstage { flex: none; margin-left: 6px; font-size: 10.5px; line-height: 15px; padding: 0 5px; border-radius: 4px; color: #0969da; background: #0969da12; font-weight: 500 }
|
|
992
|
+
.jstage.wait { color: #94741f; background: #bf870022 }
|
|
993
|
+
.jcrumb { font-weight: 400; color: var(--faint); margin-right: 2px }
|
|
994
|
+
.jcrumb button { border: 0; background: none; padding: 0; font: inherit; color: var(--accent); cursor: pointer }
|
|
995
|
+
.jcrumb i { font-style: normal; margin: 0 4px }
|
|
996
|
+
.tg-job .jrole { flex: none; font-size: 10.5px; padding: 0 5px; border-radius: 4px; color: #8250df; background: #fbefff }
|
|
997
|
+
.tg-job .jfork { font-size: 11px; color: var(--faint) }
|
|
998
|
+
.tg-job .jkids { margin-top: 8px; padding-top: 6px; border-top: 1px dashed var(--line, #0001) }
|
|
999
|
+
.tg-job .jkids .jn { font-size: 11px; color: var(--faint) }
|
|
1000
|
+
.tg-job .jorigin, .tg-job .jcrit { margin-top: 6px }
|
|
1001
|
+
.tg-job .jc { text-align: left }
|