The client tsdown presets found a package's own manifest by name: a glob of every packages/*/*/package.json, parsed until the name matched. tsdown's native config loader imports each package config without module cache, so the module-level cache never hit and all 82 configs repeated the glob (40-125 ms each) synchronously on tsdown's main thread, where it delayed every other package build. It was 34.5% of the client pass's main thread. - clientBundle, staticLinked and clientLibrary take the package directory (import.meta.dirname at every call site) and read <dir>/package.json once; the package name, loader id and externals come from that manifest. - A missing, unreadable or nameless manifest throws an actionable error. - The glob, the name search and the module-level caches are removed. tsdown client pass 12.78 s -> 8.73 s (median of 3 interleaved runs each, -31.7%); all 11,566 lib outputs byte-identical; all 82 configs resolve the same externals and banners. Refs #5852
description, kind
| description | kind |
|---|---|
| Web band above the prompt for Claude Code mods: draws each session's mod tree from the bridge's Remote and sends button clicks back. | package-reference |
@deepseek-ai/dsh-experimental-client-ui-claude-code-mods
English | 中文
Summary
This optional browser plugin draws the band a Claude Code mod renders above the prompt. It mounts the bridge's claudeCodeMods Remote, watches each open session's band, and renders the serialized Box/Text/Button tree as a full-width entry above the composer card; clicking a button runs the mod's onPress on the Host and the band redraws. Without a mod that draws, nothing is shown.
Table of Contents
- Use this package
- Understand the implementation
- Further Exploration
- Model Experience
- Known Limitations and Deferred Work
- Dev Note
Use this package
Compose it beside the bridge and the mods; the opt-in overlay does so for a source launch of the Web profile. The band appears only while a mod's ui.render hook returns a tree: Token Weather's forecast after the first turn, Blast Radius's Proceed and Cancel while a risky command is held, Replay Theater's hint after a turn with edits. Colors follow Claude Code's terminal palette on this theme's tokens; a hotkey is shown as a hint beside the label, and a press is a click. While a press is in flight every button is disabled; a press the Host refuses shows its message under the band.
Understand the implementation
Maintainer details — click to expand
The browser entry imports the generated Remote contribution and hands it to mountModsBand, which mounts the contribution through ctx.remote.$mount() and registers one conversation.input.dock entry. The entry's inject keeps one watchBand stream per session behind a small observable store the slot renderer exposes as useBand; press calls pressBand with the generation the band was drawn in and applies the snapshot it returns. Disposal ends every stream and the Remote mount. Band.tsx renders the serialized tree: Box as a flex container with data-direction, data-border, and padding and gap from the props, Text as a span carrying data-color, data-bold, data-dim, data-italic, data-underline, and Button as a button disabled without an action id or while a press runs.
Further Exploration
- The bridge — how the band is drawn and which mods draw first.
- Compatibility with Claude Code mods — the element and prop subset this band renders.
Model Experience
None, as the band is drawn from Host state and never enters a model request; a button's effect reaches the model only through the mod's own hooks.
KV Cache effect
No direct effect.
Known Limitations and Deferred Work
- One band per session; no docked
Pane,TextInput, hotkeys, focus, or scrolling. The Host renders for a band 120 columns wide and the band wraps;width,height,overflow,wrap, andtruncateprops are ignored. - The band reflects the Host's redraw triggers; a mod that changes state outside them is drawn at the next trigger.
Dev Note
Maintainer details — click to expand
None.