@morlay/ui-conversation-message-actions 0.0.19-alpha.6 → 0.0.19-alpha.8

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/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Message Actions",
4
+ "description": "Rewind / retry / recall / fork orchestration on the host side, plus the browser half: the conversation.chat.node user / steering renderer replacement and the conversation.composer.dock stats row override."
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "消息动作",
4
+ "description": "host 侧的 rewind / retry / recall / fork 编排,以及浏览器侧替换 `conversation.chat.node` 的 user / steering 渲染、覆盖 `conversation.composer.dock` 的 stats 行。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@morlay/ui-conversation-message-actions",
3
- "version": "0.0.19-alpha.6",
4
- "description": "Rewind / retry / fork orchestration (host) plus conversation.chat.node renderer replacement (browser) — message edit / retry actions on user bubbles.",
3
+ "version": "0.0.19-alpha.8",
4
+ "description": "Rewind / retry / recall / fork orchestration (host) plus the browser half — replaces the conversation.chat.node user / steering rendering and overrides the conversation.composer.dock stats row.",
5
5
  "keywords": [
6
6
  "conversation-chat-node",
7
7
  "dsh",
@@ -19,6 +19,7 @@
19
19
  "url": "https://github.com/morlay/dsh-plugin.git"
20
20
  },
21
21
  "files": [
22
+ "locale/*.json",
22
23
  "dist",
23
24
  "src",
24
25
  "cordis.patch.yml",
@@ -35,40 +36,41 @@
35
36
  "./client": {
36
37
  "types": "./dist/client.d.cts",
37
38
  "default": "./dist/client.cjs"
38
- }
39
+ },
40
+ "./locale/*.json": "./locale/*.json"
39
41
  },
40
42
  "dependencies": {
41
- "@morlay/session-branch": "0.0.10-alpha.6"
43
+ "@morlay/session-branch": "0.0.10-alpha.8"
42
44
  },
43
45
  "devDependencies": {
44
- "@deepseek-ai/dsh-session-stats": "0.1.7-alpha.1",
45
- "@morlay/dsh-client-ui-primitives": "0.0.2-alpha.6",
46
- "@morlay/session-rdb": "0.0.21-alpha.6",
46
+ "@deepseek-ai/dsh-session-stats": "0.1.7-rc.1",
47
+ "@morlay/dsh-client-ui-primitives": "0.0.2-alpha.8",
48
+ "@morlay/session-rdb": "0.0.21-alpha.8",
47
49
  "@types/react": "~18.3.1",
48
50
  "@types/react-dom": "~18.3.0",
49
51
  "react": "^18.2.0",
50
52
  "react-dom": "^18.2.0"
51
53
  },
52
54
  "peerDependencies": {
53
- "@deepseek-ai/cordis": "4.0.3",
54
- "@deepseek-ai/dsh-api-session-controller": "0.1.7-alpha.1",
55
- "@deepseek-ai/dsh-attachment": "0.1.7-alpha.1",
56
- "@deepseek-ai/dsh-client-connection": "0.1.7-alpha.1",
57
- "@deepseek-ai/dsh-client-store": "0.1.7-alpha.1",
58
- "@deepseek-ai/dsh-client-ui-attachment": "0.1.7-alpha.1",
59
- "@deepseek-ai/dsh-client-ui-chat": "0.1.7-alpha.1",
60
- "@deepseek-ai/dsh-client-ui-primitives": "0.1.7-alpha.1",
61
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-alpha.1",
62
- "@deepseek-ai/dsh-client-ui-slots": "0.1.7-alpha.1",
63
- "@deepseek-ai/dsh-client-ui-workspace": "0.1.7-alpha.1",
64
- "@deepseek-ai/dsh-invariants": "0.1.7-alpha.1",
65
- "@deepseek-ai/dsh-llm": "0.1.7-alpha.1",
66
- "@deepseek-ai/dsh-session": "0.1.7-alpha.1",
67
- "@deepseek-ai/dsh-session-persistence": "0.1.7-alpha.1",
68
- "@deepseek-ai/dsh-session-projection": "0.1.7-alpha.1",
69
- "@deepseek-ai/dsh-token-meter": "0.1.7-alpha.1",
70
- "@morlay/dsh-client-ui-conversation": "0.0.2-alpha.6",
71
- "@morlay/dsh-client-ui-primitives": "0.0.2-alpha.6"
55
+ "@deepseek-ai/cordis": "4.0.4",
56
+ "@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.1",
57
+ "@deepseek-ai/dsh-attachment": "0.1.7-rc.1",
58
+ "@deepseek-ai/dsh-client-connection": "0.1.7-rc.1",
59
+ "@deepseek-ai/dsh-client-store": "0.1.7-rc.1",
60
+ "@deepseek-ai/dsh-client-ui-attachment": "0.1.7-rc.1",
61
+ "@deepseek-ai/dsh-client-ui-chat": "0.1.7-rc.1",
62
+ "@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.1",
63
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.1",
64
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.1",
65
+ "@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.1",
66
+ "@deepseek-ai/dsh-invariants": "0.1.7-rc.1",
67
+ "@deepseek-ai/dsh-llm": "0.1.7-rc.1",
68
+ "@deepseek-ai/dsh-session": "0.1.7-rc.1",
69
+ "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.1",
70
+ "@deepseek-ai/dsh-session-projection": "0.1.7-rc.1",
71
+ "@deepseek-ai/dsh-token-meter": "0.1.7-rc.1",
72
+ "@morlay/dsh-client-ui-conversation": "0.0.2-alpha.8",
73
+ "@morlay/dsh-client-ui-primitives": "0.0.2-alpha.8"
72
74
  },
73
75
  "dsh": {
74
76
  "bundle": {
@@ -3,12 +3,16 @@
3
3
  // database pill (total tokens + cache hit) opening the token-usage dialog.
4
4
  // Settled-node identity prevents stream-delta updates from rerendering the row.
5
5
  // Carried from upstream ui-chat (composer.dock id 'stats', priority -1 shadows it)
6
- // so the fixed token-format (out-of-range cacheRead no longer hangs) stays wired;
7
- // data-composer-stats pairs with ui-conversation's InputBar `:has()` bottom clearance.
6
+ // so the fixed token-format (out-of-range cacheRead no longer hangs) stays wired.
7
+ // `data-composer-stats` stays as this row's stable anchor (style/test hooks) — the InputBar it once
8
+ // paired with is upstream's again, so nothing tightens the composer clearance off it any more.
8
9
 
9
10
  import { memo, useMemo, useState } from "react";
10
11
  import { createPortal } from "react-dom";
11
- import { IconDatabaseOutlineRegular, IconGaugeOutlineRegular } from "@deepseek-ai/dsh-client-ui-primitives";
12
+ import {
13
+ IconDatabaseOutlineRegular,
14
+ IconGaugeOutlineRegular,
15
+ } from "@deepseek-ai/dsh-client-ui-primitives";
12
16
  import type { UseProjection } from "@deepseek-ai/dsh-api-session-controller/client";
13
17
  import type { SnapshotSelectorHook } from "@deepseek-ai/dsh-client-ui-slots";
14
18
  // Type-only: merges the sessionStats key into SessionProjectionMap for useProjection.
@@ -351,8 +355,7 @@ export const StatsPills = memo(function StatsPills({ useChat, useProjection, t }
351
355
  // billing (e.g. every request failed) shows its counts without a usage pill.
352
356
  const hasTokens = usage !== undefined && (billedInputTokens(usage) > 0 || usage.outputTokens > 0);
353
357
  if (stats.steps === 0 && !hasTokens) return null;
354
- // data-composer-stats: InputBar's `.root:has([data-composer-stats])` rule
355
- // tightens the composer's bottom clearance only while this row renders.
358
+ // data-composer-stats: 这一行的稳定锚点(样式 / 测试定位用)。
356
359
  return (
357
360
  <div {...styling.props(styles.root)} data-composer-stats>
358
361
  {stats.steps > 0 && (