@seekbuddy/dsh-ui 0.2.0-beta.0 → 0.2.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.
Files changed (97) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +1 -1
  3. package/README.zh.md +1 -1
  4. package/THIRD_PARTY_NOTICES.md +1 -1
  5. package/UPSTREAM.md +7 -4
  6. package/dist/blocks.js +170 -135
  7. package/dist/chunks/{chunk-VIH56PDF.js → chunk-6SGSJ5KW.js} +2 -2
  8. package/dist/chunks/{chunk-QJKAQ6PO.js → chunk-7NH2UOZO.js} +2 -2
  9. package/dist/chunks/{chunk-KETGFAOH.js → chunk-7SKW4S35.js} +2 -2
  10. package/dist/chunks/chunk-ENKPNYOB.js +26 -0
  11. package/dist/chunks/{chunk-WUL523OW.js → chunk-EWAZFWLW.js} +1 -1
  12. package/dist/chunks/{chunk-5JXG4BHW.js → chunk-FFJ6TCCF.js} +1 -1
  13. package/dist/chunks/{chunk-R6AUJQ3G.js → chunk-FZXK4LTI.js} +1 -1
  14. package/dist/chunks/chunk-JA3XDLIA.js +1115 -0
  15. package/dist/chunks/{chunk-TUK6UGXM.js → chunk-L7XALG4J.js} +1 -1
  16. package/dist/chunks/{chunk-AY44MQMD.js → chunk-OCAQFVT3.js} +180 -60
  17. package/dist/chunks/{chunk-CI73NXA5.js → chunk-RAXDA2PT.js} +4 -4
  18. package/dist/chunks/{chunk-5XDVPALS.js → chunk-SN6RSUWC.js} +1 -1
  19. package/dist/chunks/{chunk-CTQPGUZP.js → chunk-SNVSQWCU.js} +1 -1
  20. package/dist/chunks/{chunk-ZZNL5PWF.js → chunk-SO3DCAWG.js} +2 -2
  21. package/dist/chunks/{chunk-IOBKTEKP.js → chunk-UAEFKTV3.js} +1 -1
  22. package/dist/chunks/{chunk-NE62SYOZ.js → chunk-UGEORMLD.js} +2 -2
  23. package/dist/chunks/{chunk-TQU54HSM.js → chunk-W6FLI3AK.js} +1 -1
  24. package/dist/chunks/{chunk-TZ7HRE6D.js → chunk-WX46TSKP.js} +1 -1
  25. package/dist/chunks/{chunk-XX6MSZLS.js → chunk-XL33IPCV.js} +1 -1
  26. package/dist/chunks/chunk-XW4L4ZGL.js +967 -0
  27. package/dist/chunks/chunk-YOBY6PSL.js +850 -0
  28. package/dist/icons.js +58 -2
  29. package/dist/index.js +810 -317
  30. package/dist/markdown.js +84 -7
  31. package/dist/meta.json +1038 -339
  32. package/dist/root-inputs.json +20 -1
  33. package/dist/seekbuddy-card.js +1 -1
  34. package/dist/seekbuddy-empty.js +2 -2
  35. package/dist/seekbuddy-internal/Message.js +2 -2
  36. package/dist/seekbuddy-internal/Pagination.js +1 -1
  37. package/dist/seekbuddy-internal/StatusBadge.js +1 -1
  38. package/dist/seekbuddy-internal/Switch.js +1 -1
  39. package/dist/seekbuddy-internal/Upload.js +1 -1
  40. package/dist/seekbuddy-internal/date/Calendar.js +1 -1
  41. package/dist/seekbuddy-internal/date/DatePicker.js +2 -2
  42. package/dist/seekbuddy-internal/date/DateRangePicker.js +2 -2
  43. package/dist/seekbuddy-internal/date/TimePicker.js +1 -1
  44. package/dist/seekbuddy-internal/date/fields.js +5 -5
  45. package/dist/seekbuddy-spinner.js +1 -1
  46. package/dist/seekbuddy-tabs.js +1 -1
  47. package/dist/seekbuddy-timeline.js +2 -2
  48. package/dist/seekbuddy.js +15 -15
  49. package/dist/tokens.css +60 -20
  50. package/dist/types/AnimatedRows.d.ts +45 -0
  51. package/dist/types/Button.d.ts +1 -1
  52. package/dist/types/CommandText.d.ts +15 -0
  53. package/dist/types/DetailDocument.d.ts +77 -0
  54. package/dist/types/DisclosureRow.d.ts +4 -2
  55. package/dist/types/DraggableImage.d.ts +18 -0
  56. package/dist/types/HoverCard.d.ts +11 -3
  57. package/dist/types/HoverCardGroup.d.ts +24 -0
  58. package/dist/types/ImageLightbox.d.ts +4 -1
  59. package/dist/types/InlineEditor.d.ts +22 -0
  60. package/dist/types/Menu.d.ts +30 -9
  61. package/dist/types/MenuSurface.d.ts +9 -0
  62. package/dist/types/PermissionIcon.d.ts +12 -0
  63. package/dist/types/QuotePreview.d.ts +23 -0
  64. package/dist/types/SegmentedTabs.d.ts +3 -1
  65. package/dist/types/TerminalBlock.d.ts +10 -2
  66. package/dist/types/Tooltip.d.ts +21 -15
  67. package/dist/types/UserMessageBubble.d.ts +10 -0
  68. package/dist/types/ZoomControls.d.ts +26 -0
  69. package/dist/types/blocks.d.ts +2 -0
  70. package/dist/types/document-zoom.d.ts +16 -0
  71. package/dist/types/file-drag-actions.d.ts +36 -0
  72. package/dist/types/focus.d.ts +7 -0
  73. package/dist/types/icons/artwork.d.ts +421 -0
  74. package/dist/types/icons/index.d.ts +205 -192
  75. package/dist/types/icons/shared-artwork.d.ts +6 -12
  76. package/dist/types/icons.d.ts +1 -1
  77. package/dist/types/image-drag.d.ts +16 -0
  78. package/dist/types/index.d.ts +21 -3
  79. package/dist/types/markdown/MarkdownDelegate.d.ts +26 -3
  80. package/dist/types/markdown/MarkdownText.d.ts +12 -5
  81. package/dist/types/markdown/file-link.d.ts +13 -3
  82. package/dist/types/markdown/highlight.d.ts +22 -0
  83. package/dist/types/markdown/quote-text.d.ts +7 -0
  84. package/dist/types/markdown/render.d.ts +9 -4
  85. package/dist/types/markdown/windows-path-destinations.d.ts +10 -0
  86. package/dist/types/markdown.d.ts +5 -2
  87. package/dist/types/overlay-top-margin.d.ts +9 -2
  88. package/dist/types/tooltip-placement.d.ts +34 -0
  89. package/dist/types/use-clipboard-copy.d.ts +13 -0
  90. package/dist/types/useAnchoredPosition.d.ts +22 -22
  91. package/dist/types/useRowDragPreview.d.ts +19 -0
  92. package/dist/types/user-text.d.ts +26 -31
  93. package/package.json +2 -2
  94. package/dist/chunks/chunk-3HCOU44R.js +0 -697
  95. package/dist/chunks/chunk-LA3QDZYN.js +0 -2777
  96. package/dist/chunks/chunk-OQPH36OI.js +0 -754
  97. package/dist/types/use-copy-feedback.d.ts +0 -13
package/CHANGELOG.md CHANGED
@@ -8,6 +8,39 @@ breaking changes; they are listed under **Breaking**.
8
8
  Upstream DSH synchronizations are recorded with the DSH tag they move to; the full list of local
9
9
  changes to the DSH layer lives in [UPSTREAM.md](UPSTREAM.md).
10
10
 
11
+ ## [0.2.0-beta.1] - 2026-11-05
12
+
13
+ DSH layer synchronized with `dsh-v0.2.2-rc.1` (from `dsh-v0.2.0-rc.2`).
14
+
15
+ ### Breaking
16
+
17
+ - `projectUserText` and `UserTextReferences` are removed upstream. Split the text yourself and render
18
+ the pieces with the new `UserTextRun` and `ReferenceChip`.
19
+ - `TerminalBlockLabels` requires `commandLine: (line: number) => string`, the accessible name of a
20
+ command line that overflows horizontally.
21
+ - `MarkdownDelegate.fileImages` requires `fileDrag: FileDragActions`.
22
+ - `Tooltip` now injects `onPointerEnter` / `onPointerLeave` / `onPointerDown` into its trigger child
23
+ instead of `onMouseEnter` / `onMouseLeave`.
24
+ - The token `--dsw-specific-sidebar-nav-item-hover` is removed.
25
+
26
+ ### Added
27
+
28
+ - From upstream, on the root entry: `UserMessageBubble`, `UserTextRun`, `ReferenceChip`, `AnimatedRows`,
29
+ `useRowDragPreview`, `ZoomControls`, `DOCUMENT_ZOOM`, `InlineEditor`, `HoverCardGroup`,
30
+ `DraggableImage` and the `FileDragActions` types, `useClipboardCopy`, `QuotePreview`,
31
+ `isMobileDevice`, `MENU_TRANSITION_MS`. On `/blocks`: `CommandText`. On `/markdown`:
32
+ `DetailDocument`, `detailDocumentState`, `useDetailDocumentLabels`, `useMarkdownDelegate`,
33
+ `MarkdownMenuTarget`, `formatQuoteText`. On `/icons`: `ICON_SYMBOLS`, `IconAppsAdd*`,
34
+ `IconDragHandle*`, `IconSave*`, `PermissionIconAutoReview*`.
35
+ - New optional props from upstream on `Menu`, `HoverCard`, `SegmentedTabs`, `TerminalBlock`, `Tooltip`,
36
+ `MarkdownText`, `DisclosureRow`, `ImageLightbox` and `MarkdownDelegateProvider`; see UPSTREAM.md.
37
+ - Tokens `--dsw-alias-illustration-*` (six) and `--dsw-alias-state-done-primary`.
38
+ - Storybook pages for every new export.
39
+
40
+ ### Changed
41
+
42
+ - `@deepseek-ai/dsh-util-code-language` is pinned to `0.2.2-rc.1`.
43
+
11
44
  ## [0.2.0-beta.0] - 2026-10-09
12
45
 
13
46
  First release under the name `@seekbuddy/dsh-ui`. DSH layer synchronized with `dsh-v0.2.0-rc.2`.
@@ -46,4 +79,5 @@ First release under the name `@seekbuddy/dsh-ui`. DSH layer synchronized with `d
46
79
  server` warning during React 18 server rendering. The markup is correct; the popover position is
47
80
  computed on the client.
48
81
 
82
+ [0.2.0-beta.1]: https://github.com/seekbuddy/dsh-ui/releases/tag/v0.2.0-beta.1
49
83
  [0.2.0-beta.0]: https://github.com/seekbuddy/dsh-ui/releases/tag/v0.2.0-beta.0
package/README.md CHANGED
@@ -77,7 +77,7 @@ Import only from these entries; anything else under `dist/` is internal.
77
77
  | `@seekbuddy/dsh-ui` | Lightweight controls and utilities: `Button`, `Input`, `Pill`, `Tag`, `Switch`, `Checkbox`, `Menu`, `MenuSurface`, `Modal`, `Tooltip`, `Toast`, `HoverCard`, `SegmentedControl`, `SegmentedTabs`, positioning / modal hooks, and helpers such as `relativeTime`, `fileSizeText`, `rankByName` |
78
78
  | `@seekbuddy/dsh-ui/blocks` | Tool-output renderers `TerminalBlock`, `ReadBlock`, `DiffBlock`, `SearchBlock`, `WebBlock`, `JsonTree`; file / link icons `FileTypeIcon`, `LinkIconRegular` / `LinkIconMedium`; code highlighting `languageForPath`, `useCodeHighlighter` (loads Shiki) |
79
79
  | `@seekbuddy/dsh-ui/markdown` | `MarkdownText`, `CodeBlock`, `JsonBlock`, `MarkdownDelegateProvider`, `extractMarkdownPlainText` |
80
- | `@seekbuddy/dsh-ui/icons` | 188 `Icon*` components (94 glyphs × `Regular` / `Medium` stroke), `PermissionIcon*`, `ReferenceIcon*`, `PluginArtwork*`, `GuideArtwork*` |
80
+ | `@seekbuddy/dsh-ui/icons` | 194 `Icon*` components (97 glyphs × `Regular` / `Medium` stroke), `PermissionIcon*`, `ReferenceIcon*`, `PluginArtwork*`, `GuideArtwork*` |
81
81
  | `@seekbuddy/dsh-ui/theme` | Theme state, DOM application and React hooks |
82
82
  | `@seekbuddy/dsh-ui/theme/bootstrap` | `THEME_BOOTSTRAP_SCRIPT`, an inline script with no React dependency |
83
83
  | `@seekbuddy/dsh-ui/seekbuddy` | Extra components ([docs](docs/components/README.md)); the whole entry is a Client Component |
package/README.zh.md CHANGED
@@ -77,7 +77,7 @@ export function Example() {
77
77
  | `@seekbuddy/dsh-ui` | 轻量控件与工具:`Button`、`Input`、`Pill`、`Tag`、`Switch`、`Checkbox`、`Menu`、`MenuSurface`、`Modal`、`Tooltip`、`Toast`、`HoverCard`、`SegmentedControl`、`SegmentedTabs`、定位与模态 Hooks,以及 `relativeTime`、`fileSizeText`、`rankByName` 等工具函数 |
78
78
  | `@seekbuddy/dsh-ui/blocks` | 工具输出渲染器 `TerminalBlock`、`ReadBlock`、`DiffBlock`、`SearchBlock`、`WebBlock`、`JsonTree`;文件 / 链接图标 `FileTypeIcon`、`LinkIconRegular` / `LinkIconMedium`;代码高亮 `languageForPath`、`useCodeHighlighter`(会加载 Shiki) |
79
79
  | `@seekbuddy/dsh-ui/markdown` | `MarkdownText`、`CodeBlock`、`JsonBlock`、`MarkdownDelegateProvider`、`extractMarkdownPlainText` |
80
- | `@seekbuddy/dsh-ui/icons` | 188 个 `Icon*`(94 个图形 × `Regular` / `Medium` 两档描边)、`PermissionIcon*`、`ReferenceIcon*`、`PluginArtwork*`、`GuideArtwork*` |
80
+ | `@seekbuddy/dsh-ui/icons` | 194 个 `Icon*`(97 个图形 × `Regular` / `Medium` 两档描边)、`PermissionIcon*`、`ReferenceIcon*`、`PluginArtwork*`、`GuideArtwork*` |
81
81
  | `@seekbuddy/dsh-ui/theme` | 主题状态、DOM 应用函数与 React Hooks |
82
82
  | `@seekbuddy/dsh-ui/theme/bootstrap` | `THEME_BOOTSTRAP_SCRIPT`,不依赖 React 的首屏内联脚本 |
83
83
  | `@seekbuddy/dsh-ui/seekbuddy` | 扩展组件([文档](docs/components/README.zh.md));整个入口是 Client Component |
@@ -10,7 +10,7 @@ Everything under `src/` except `src/seekbuddy/` is a copy of the DeepSeek Harnes
10
10
  theme sheets, with the local adaptations listed in `UPSTREAM.md`.
11
11
 
12
12
  - Upstream repository: https://github.com/deepseek-ai/deepseek-harness
13
- - Tag: `dsh-v0.2.0-rc.2`, commit `639ed015397290b3745d163aafe02ffee4aa3f84`
13
+ - Tag: `dsh-v0.2.2-rc.1`, commit `66491b05e3f05ad35bcdd4f6cd7ed26041d9e3db`
14
14
  - `packages/client/ui-primitives/src` → `src/` (components, CSS Modules, icons, Markdown renderer)
15
15
  - `packages/client/ui-theme/src/styles` → `src/styles/` (`base.css`, `corner-shape.css`,
16
16
  `design-platform.css`, `focus.css`, `onboarding.css`, `scrollbar.css`, `gradient-shadow-text.css`,
package/UPSTREAM.md CHANGED
@@ -1,12 +1,14 @@
1
1
  # Upstream synchronization
2
2
 
3
- - Tag: `dsh-v0.2.0-rc.2`
4
- - Commit: `639ed015397290b3745d163aafe02ffee4aa3f84`
3
+ - Tag: `dsh-v0.2.2-rc.1`
4
+ - Commit: `66491b05e3f05ad35bcdd4f6cd7ed26041d9e3db`
5
5
  - Primitives source: `packages/client/ui-primitives/src`
6
6
  - Theme source: `packages/client/ui-theme/src/styles`
7
7
 
8
8
  The TypeScript, CSS Modules, and eight theme sheets are synchronized from those paths. No `src/invariant.ts` is copied because the upstream no longer publishes a Cordis invariant companion.
9
9
 
10
+ > Baseline advanced `dsh-v0.2.0-rc.2` → `dsh-v0.2.2-rc.1` (2026-11-05), after the host moved to dsh `0.2.2-rc.1`. Upstream changed 82 mirrored files (26 added, `use-copy-feedback.ts` removed, 55 modified) and four theme sheets (`base.css`, `design-platform.css`, `gradient-shadow-text.css`, `scrollbar.css`). Breaking: `projectUserText` / `UserTextReferences` are removed in favour of caller-split `UserTextRun` + `ReferenceChip`; `TerminalBlockLabels` requires `commandLine(line)`; `MarkdownDelegate.fileImages` requires `fileDrag: FileDragActions`; the props `Tooltip` injects into its trigger child are now `onPointerEnter` / `onPointerLeave` / `onPointerDown` instead of `onMouseEnter` / `onMouseLeave`; `--dsw-specific-sidebar-nav-item-hover` is gone. New: `UserMessageBubble`, `AnimatedRows`, `useRowDragPreview`, `ZoomControls` + `DOCUMENT_ZOOM`, `InlineEditor`, `HoverCardGroup` (with `HoverCard` `grouped` / `fitContent`), `DraggableImage` + the `FileDragActions` types, `useClipboardCopy`, `QuotePreview`, `isMobileDevice`, `MENU_TRANSITION_MS`, `CommandText`, `DetailDocument` + `detailDocumentState` / `useDetailDocumentLabels`, `useMarkdownDelegate`, `MarkdownMenuTarget`, `formatQuoteText`, `ICON_SYMBOLS`, glyphs `IconAppsAdd*` / `IconDragHandle*` / `IconSave*`, `PermissionIconAutoReview*` (215 icon-entry exports); `Menu` gains `contextual` / `exiting` / `returnFocus` / `minWidthFromAnchor` and items `current` / `disabledReason`, `SegmentedTabs` `size`, `TerminalBlock` `background`, `Tooltip` `onlyWhenClipped`, `MarkdownText` `omitHtml` / `textInteractionSource`, `DisclosureRow` `headerAccessory`, `ImageLightbox` `contextMenuProps`, `MarkdownDelegateProvider` `getTriggerProps`. Tokens: +7 `--dsw-alias-*` (six `illustration-*` and `state-done-primary`), +5 static steps. Merged three-way as before (Prettier `printWidth: 120`, no semicolons, single quotes, trailing commas normalised rc.2 → 0.2.2-rc.1 applied onto the local copy); the only conflicts were `index.ts` (our entry split) and `Tooltip.tsx`'s import line (our context guard).
11
+ >
10
12
  > Baseline advanced `dsh-v0.1.7-rc.2` → `dsh-v0.2.0-rc.2` (2026-10-01), after the host's `@deepseek-ai/dsh-client-ui-primitives` moved to `0.2.0-rc.2`. A small step: 18 mirrored files changed, 2 added (`MenuGroup.*`), none removed; the eight theme sheets keep their order. New: `MenuGroup` + `observeStickyMenuGroups` (named menu sections with sticky headings) and the root export of `pointerModality`. Changed: `TextShimmer` is re-implemented as a masked decorative copy tinted by `--dsw-alias-label-shimmer` — `children` widens from `string` to `ReactNode`, `active` becomes optional, `contentClassName` is new, and nested instances share the outer sweep; `DisclosureRow` wraps its title and collapsed content in one shimmer (new `contentClassName` / `contentLayoutClassName`) and its row colour now drives the title (tertiary, secondary on hover); `Input` forwards its ref; `Tooltip` gains `openOnClick` (pinned, pointer-enterable bubble, outside-pointer dismissal), `focusDelayMs` and `aria-describedby` wiring; `useAnchoredPosition` and `overlay-top-margin` clear the frame strip by 20px and ignore it in fullscreen; `Menu` / `Modal` read `--dsh-frame-overlay-top` instead of `--dsh-frame-top-clearance` and the Modal mask starts below `--dsh-frame-chrome-top`; the unchecked upstream `Switch` thumb takes `--dsw-alias-switch-thumb`; two plugin-artwork colours changed. Tokens: +8 `--dsw-alias-*` (107 total: `bg-document-selection`, `label-deep-diving`, `label-deep-diving-shimmer`, `label-shimmer`, `switch-thumb`, `turn-trigger-bg`, `turn-trigger-bg-hover`, `menu-group-header-fill`); content font size range widens to 10–22px (comment only). Merged three-way as before; the only conflict was `Tooltip.tsx`'s import line (our context guard).
11
13
  >
12
14
  > Baseline advanced `dsh-v0.1.7-rc.1` → `dsh-v0.1.7-rc.2` (2026-09-25), the day after the host's `@deepseek-ai/dsh-client-ui-primitives` moved to `0.1.7-rc.2`. Upstream changed 46 mirrored files (9 primitives added, `OnboardingSurface.*` removed) and the theme sheets, which grew from six to eight (`focus.css`, `onboarding.css`). Visual: every hard-coded radius became a `--dsw-radius-xs/sm/md/lg/xl/panel` token (Button 18px → 12px, Toast 14 → 16, Modal 24 → 28), focus rings read `--dsw-focus-ring-width/color` and hide under `html[data-input-modality='pointer']`, `--dsw-mask-blur` is `none`, and menus paint through the new `MenuSurface` (`--dsw-menu-surface-fill`, opaque backing on macOS). New: `MenuSurface`, `ShortcutKeys` (also `Menu` item `shortcut` and `Tooltip` `shortcutKeys`), `useModalLayer` + `closeTopModal` / `isBehindModal` / `modalSelector` (now inside `Modal`: focus trap, `data-modal-autofocus`, return focus, `backdropBlur`), `focusWithoutRing`, `observeComposition`, `GuideArtworkBrowser` / `GuideArtworkFiles`, glyph `IconArchiveOff*` (188 icon exports). Tokens: +9 `--dsw-alias-*` (99 total). The mirror was merged three-way (Prettier-normalised rc.1 → rc.2 applied onto the local copy); the only conflicts were `index.ts` (our entry split) and `Tooltip.tsx` (our context guard), resolved below. The extension layer's own hard-coded radii were replaced with the same `--dsw-radius-*` tokens in the same wave, and its focus rings now declare only `outline-style: solid`, taking width and colour from `focus.css`'s global `:focus-visible` rule (so pointer-modality hiding applies to them too), so it keeps tracking the host.
@@ -30,12 +32,13 @@ Local packaging adaptations:
30
32
  - `MessageText` was removed upstream in rc.2 (`d0da8ccf40`); the `markdown` entry drops it too — a breaking change for 0.2.0 consumers of the standalone package.
31
33
  - `code-file-icon-artwork.manifest.json` is copied as the upstream design record; no source imports it.
32
34
  - `Tooltip` creates its suppression context only where React provides `createContext` (0.1.7): the `react-server` build has none, and a Server Component evaluates `Tooltip.tsx` through the root entry because the server-safe `Empty` imports `Button` from it. Upstream's module-level `createContext` call failed the `next16` fixture with `createContext is not a function`. Tooltip only renders on the client, so behaviour is unchanged. Since rc.2 upstream exports `TooltipSuppression` (HoverCard consumes it); the export is kept, still behind the guard. `TextShimmer`'s `DecorativeCopy` context (0.2.0) is created behind the same guard for the same reason: `DisclosureRow` pulls it into the root entry.
33
- - Upstream exports `CodeToolbarLabels`, `CODE_HIGHLIGHT_EXTENSIONS`, `languageForPath`, `useCodeHighlighter` (and their types) from its root; they live in `blocks` here because they reach the Shiki highlighter, which `assertLightweightRoot` keeps off the root. `MarkdownDelegateProvider` and its types go to `markdown`; `PermissionIcon*`, `ReferenceIcon*`, `PluginArtwork*` and (rc.2) `GuideArtwork*` go to `icons`; `LinkIcon*` stays in `blocks` with the rest of the file/link family. `MenuSurface`, `ShortcutKeys`, `useModalLayer` and the focus / composition helpers stay on the root as upstream has them.
35
+ - Upstream exports `CodeToolbarLabels`, `CODE_HIGHLIGHT_EXTENSIONS`, `languageForPath`, `useCodeHighlighter` (and their types) from its root; they live in `blocks` here because they reach the Shiki highlighter, which `assertLightweightRoot` keeps off the root. `MarkdownDelegateProvider` and its types go to `markdown`; `PermissionIcon*`, `ReferenceIcon*`, `PluginArtwork*` and (rc.2) `GuideArtwork*` go to `icons`; `LinkIcon*` stays in `blocks` with the rest of the file/link family. `MenuSurface`, `ShortcutKeys`, `useModalLayer` and the focus / composition helpers stay on the root as upstream has them. Since 0.2.2-rc.1: `CommandText` goes to `blocks` with `TerminalBlock`; `DetailDocument` (it renders `MarkdownText`), `detailDocumentState`, `useDetailDocumentLabels`, `useMarkdownDelegate`, `MarkdownMenuTarget` and `formatQuoteText` (it lives under `src/markdown/`, which `assertLightweightRoot` keeps off the root) go to `markdown`; `PermissionIconAutoReview*` goes to `icons`; the other new exports stay on the root.
34
36
  - Not mirrored: `PathLabel.*` and `settings-form/` (`SettingsForm`, `SettingsSecretField`, `SettingsValueField`, `SettingsFormModel`, `settingsNumberField`, `settingsTextField` and their types). They import `@deepseek-ai/dsh-util-workspace-path` and `@deepseek-ai/dsh-client-store` (zustand + immer, Cordis peer), which this Cordis-free standalone package does not take on; nothing here consumes them. Revisit when a consumer appears.
35
37
  - Not mirrored: `ui-theme`'s opt-in `brand-font.css` with its three Montserrat woff2 files and OFL text. It is not one of the six theme sheets (upstream's `installThemeStyles` does not load it either); only the desktop welcome page uses it.
36
38
  - Not mirrored: `BrandWordmark.tsx` and `FishLogo.tsx` (with `FISH_LOGO_PATH` / `FISH_LOGO_VIEWBOX`). They draw DeepSeek's wordmark and logo; MIT licenses the code, not the trademarks, so this public package ships no DeepSeek brand assets. Drop both files again on every sync.
39
+ - `file-drag-actions.ts` declares `DragFileName` itself instead of `import type`-ing it from `@deepseek-ai/dsh-util-file-drag` (0.2.2-rc.1), which has a Cordis peer this package does not take on. The three fields are copied verbatim; re-check them on every sync.
37
40
  - `simple-icons` (pinned `16.31.0`, same as upstream) is a runtime dependency: `LinkIcon*` draws known sites' marks through `SiteGlyph.tsx`.
38
- - Type / lint-only edits, re-applied on every sync: `useRef<T | undefined>(undefined)` in `JsonTree.tsx` and `RefObject<… | null>` in `useAnchoredMaxHeight.ts` / `markdown/useViewportHighlighting.ts` (React 19 `@types/react`); `catch {}` without the unused binding in `markdown/file-link.ts` (root oxlint `no-unused-vars` is an error).
41
+ - Type / lint-only edits, re-applied on every sync: `useRef<T | undefined>(undefined)` in `JsonTree.tsx` and `RefObject<… | null>` in `useAnchoredMaxHeight.ts` / `markdown/useViewportHighlighting.ts` (React 19 `@types/react`); `catch {}` without the unused binding in `markdown/file-link.ts` (root oxlint `no-unused-vars` is an error); `useRef<number | null>` for the `window.setTimeout` handle in `use-clipboard-copy.ts` (upstream's `ReturnType<typeof setTimeout>` is Node's `Timeout` when `@types/node` is loaded, as in Storybook).
39
42
 
40
43
  ## SeekBuddy extension layer (not synchronized)
41
44