Bundle
dsh-tool-emoji
Replace DSH web tool icons with emoji: think π€, read/search π§, pwsh π¨βπ», edit βοΈπ€, error π«
- Source
- LWLAymh
- stars
- 1 stars
- License
- MIT
- Updated
- Updated yesterday
Readme
# dsh-tool-emoji
[δΈζ](README.zh.md)
A [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web plugin that replaces the simple leading icons in tool cards with emoji, **without replacing or removing any of the original card content**.
## Mapping
| Tool | Emoji |
|---|---|
| `think` (reasoning row) | π€ |
| `read` / `web_fetch` / `grep` / `glob` / `web_search` | π§ |
| `pwsh` | π¨βπ» |
| `edit` / `write` / `str_replace_editor` | βοΈπ€ |
| Any of the above cards in the error state | π« |
## Screenshots
<img src="assets/tool-icons-working.png" width="180" alt="Tool icons rendered in the chat">
<img src="assets/custom-image-icon.png" width="180" alt="Custom uploaded image used as a tool icon">
<img src="assets/settings-panel.png" width="560" alt="Tool emoji settings panel for customizing emoji and images">
## Installation
```sh
# from a local checkout
dsh plugin --profile web add file:./dsh-tool-emoji
# or from GitHub
dsh plugin --profile web add git+https://github.com/LWLAymh/dsh-tool-emoji.git
```
Then restart the web profile:
```sh
dsh --profile web
```
The plugin does not hot-reload into an already-running Web process.
Uninstall:
```sh
dsh plugin --profile web remove dsh-tool-emoji
```
## How it works
- This plugin does **not** register `tool.call.toolview`, so it does not take over the original tool cards.
- It only injects a small global stylesheet:
- hides the built-in leading SVG icon;
- renders an emoji in the same leading cell with `::before`;
- preserves the title, summary, diff, terminal output, expand/collapse behavior, and all other card details.
- When a mapped card is in the error state, the leading error dot is replaced with π« while the rest of the card stays intact.
## Settings / Customization
In the DSH Settings page, open **Tool emoji** to customize every icon without editing code:
- **Enable / disable** each tool icon independently.
- **Enable / disable** the whole plugin from the master switch.
- **Custom emoji** β type any emoji/text into the input field.
- **Upload an image** β choose a local PNG/JPEG/GIF/WebP/BMP to use as the icon (kept in `localStorage`, max 1MB per image; SVG is not accepted).
- **Remove an uploaded image** to fall back to the emoji text.
- **Reset one tool** or **reset all** back to defaults.
Changes take effect immediately on the chat page and persist after refresh.
## dsh-edit-guardian compatibility
If you also use `dsh-edit-guardian`, it replaces the built-in rows for `edit` / `str_replace_editor` / `pwsh` with its own custom DOM (`dshg_row`).
To make the emoji apply to those custom rows too:
1. Use a `dsh-edit-guardian` build that exposes `data-tool` on `.dshg_row` (the local dev version already does);
2. Reinstall `dsh-edit-guardian` using the same source you installed it from, then reinstall this plugin;
3. Restart the Web profile.
If `dsh-edit-guardian` does not have the `data-tool` attributes, the emoji will not be applied to `edit` / `pwsh` rows.
## Customization
Edit the CSS in `lib/client.js` to add or change tools and emoji.
For example, to add `bash`:
```css
[data-variant="bash"] > span:first-child > span:first-child svg:not([data-state]) { display:none; }
[data-variant="bash"] > span:first-child::before { content:"π»"; font-size:14px; line-height:18px; }
```
## Notes
- The selectors rely on official source-level data attributes:
- `data-tool="edit"` / `data-tool="str_replace_editor"` / `data-tool="pwsh"`
- `data-variant="think"` / `data-variant="search"` / `data-variant="read"`
- `[data-disclosure-row] > span:first-child`
- If a future DSH version changes these DOM structures, the CSS selectors may need to be updated.
- The plugin is Web-profile oriented; TUI/headless profiles have no leading-icon UI surface.
## License
MIT
Install
dsh plugin --profile web add github:LWLAymh/dsh-tool-emoji#8e3e77fbedfafff474f7c1d173b18d2d5a091057
Profile: web
With the hub plugin installed, ask your agent to install it by name β it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-tool-emoji from the hub