DSH Plugins Marketplace

DSH Plugins

Plugins

/

UI & Experience

/

dsh-pull-to-send

d

dsh-pull-to-send

Identified

Send by dragging instead of clicking. Press the composer and pull up to arm the gesture; releasing sends, dragging back into the composer cancels, and dragging outside the conversation area cancels on

PULLTOSEND

按住 DSH 输入框、向上拉、松手 —— 消息飞出去。不松手可以拖回来取消,拖出对话区同样作废。

三次拖拽,把发送变成肌肉记忆:

  • 拖出去发送 —— 从输入框向上拉,消息拎在半空,松手即飞。
  • 拖回来取消 —— 反悔了就把指针拖回输入框,一切归位,草稿还在。
  • 拖出界取消 —— 甩到屏幕边缘、任务栏或别的窗口上,直接作废,绝不误发。

English

安装

dsh plugin --profile desktop add "github:dhdkfkfkf/dsh-pull-to-send"

装完重启一次 DSH(添加 bundle 本身需要重启;之后改代码走 dsh-hmr 热更)。

三种拖拽

你做什么会发生什么
拖出去:在输入框卡片(含周边 12px 缓冲区)上按下,向上拉出卡片上边缘 ≥24px武装:输入框副本被拎起,跟随指针(阻尼跟随、微放大、阴影加深),真输入框缩小变暗;悬停时是 grab 光标,拖动中全程 grabbing
武装后松手触发发送按钮当前的主行为(空闲=发送,生成中=排队/插话),副本 FLIP 飞入新消息气泡,真气泡交叉淡入
拖回来:武装后把指针拖回输入框卡片内解除武装:副本 150ms 短回位消失,卡片恢复正常,草稿原样保留;同一按压里再拉出去可以重新武装,可反复反悔
拖出界:武装后把指针拖出对话区可投放范围立即取消:副本当场沿原路弹回消失,光标恢复,本次按压作废,松手不会发出任何东西,必须重新从输入框起手
未拉出阈值 / 横向拖拽占优 / 松手时指针停在卡片内 / 按 Esc / pointercancel取消:副本沿原路 320ms 弹回

可投放范围

拖出去的落点必须落在这块范围里,才算一次有效的发送:

边界位置
左边输入框卡片的左缘
右边对话区背景的右缘
上边对话区顶格
下边输入框卡片的顶缘

范围之外一律判为取消 —— 屏幕边缘、任务栏、别的应用程序上都算。为了让「贴着屏幕边」也能被识别为越界,右边界还额外内缩了 8px 的安全余量。

界面全程零文字提示,只靠视觉反馈:副本拎起即为武装。

不打断你

场景说明
框内拖选手势只在指针越出上边缘并达到 24px 后才武装,框内选择 100% 原生
空输入 / 发送按钮禁用不武装,松手无事发生
IME 组合中组合一开始就取消手势,不会发出半截拼音
触屏仅响应鼠标和笔,手指滚动永远不会误发
卡片上的按钮 / 链接 / 菜单归它们自己,不会拉出消息
拖到窗口外松手视为取消,不会误发

动画参数

零构建、单文件 client.js,所有参数是文件顶部的具名常量(v1 没有设置面板):

常量默认含义
ARM_DISTANCE24px越过输入框上边缘多少距离才武装
EDGE_MARGIN8px可投放范围与窗口边缘之间保留的安全余量
DISARM_RETURN_MS150ms拖回卡片内时副本的回位时长
HIT_PAD12px卡片四周的隐形响应缓冲区
DAMPING0.95副本跟随指针的每帧插值系数(越大越跟手)
MAX_SCALE1.02拎起时最大放大
FLIP_MS400ms松手后副本飞入气泡的时长
BUBBLE_LEAD_MS80ms真气泡提前淡入的提前量
RETURN_MS200ms真输入框回位时长(不等飞行结束)
CANCEL_MS320ms取消回弹时长

出问题怎么办

打开控制台输入:

window.__DSH_PULLTOSEND__.disable()   // 立刻停用手势(不用重启、不用卸载)
window.__DSH_PULLTOSEND__.version     // 确认插件确实加载了

disable() 会摘掉全部监听器并把已拎起的副本收回;刷新页面即恢复。

兼容性

同时兼容 claude-style 与原生界面(两者共用同一套 data-composer-* 锚点);多个会话窗格各自绑定各自的手势。已验证发送路径:对发送按钮的程序化 .click() 在 React/Lexical 下真实触发发送(CDP 探针实测)。

锚点查找是三层降级:先找 data-composer-* 语义属性,找不到再按 aria-label / contenteditable 判断,最后才用类名模糊匹配 —— 任意一层命中都能工作。

License

MIT

Comments

Loading…

Similar plugins

dsh-scroll-piano

滚动钢琴:鼠标滑过 DSH 右侧边缘的滚动条竖条时,按纵向位置发出钢琴音(越高音越高,特雷门琴式)。

Just for FunTerminal & ClientsManifest valid

★ 0

dsh plugin --profile web add dsh-scroll-piano

by Nalleyer

dsh plugin: switch the chat composer between Enter-send and Ctrl+Enter-send from Settings → General.

Manifest valid

★ 0

MIT

TypeScript

Oct 8, 2026

dsh plugin --profile web add dsh-enter-send

One-click prompt refinement for the DSH composer: the ✦ button next to Send rewrites the draft into an agent-ready prompt in Standard or Light mode, with Revert and Retry; asks follow-up questions thr

UI & ExperienceTerminal & ClientsManifest valid

★ 0

dsh plugin --profile web add dsh-smart-prompt

by 1250589385

DSH 快捷发送插件:在输入框下方、上下文进度旁提供可自定义的快捷指令按钮,一键把预设文字直接发送到当前对话,省去重复打字;每条指令的名称、字号、透明度、模块化形状与发送内容均可就地编辑,右键按钮组可拖动换位置。修复上下文进度与累计使用区域被挤压后无法点击的问题。

Terminal & ClientsManifest valid

★ 0

MIT

JavaScript

Oct 23, 2026

dsh plugin --profile web add dsh-quick-send

by levodoubt

Adds a Long text button to the composer tool row: write or paste the body in an editor overlay, and on save it is written to <workspace>/.dsh-longtext/<timestamp>_<title>.md and an @ path reference to

UI & ExperienceDevelopment & InfrastructureManifest valid

★ 1

MIT

JavaScript

Oct 15, 2026

dsh plugin --profile web add dsh-longtext-input

Recalls messages you already sent in the DSH composer with ArrowUp, and restores the draft you were writing with ArrowDown.

UI & ExperienceManifest valid

★ 0

dsh plugin --profile web add dsh-composer-input-history