DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

dhdkfkfkf /

dhdkfkfkf/dsh-pull-to-send

Verified

DSH plugin: press the composer and pull up to send, drag back to cancel, drag clear of the conversation to void it. With a FLIP flight animation.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@c3786d71

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_DISTANCE 24px 越过输入框上边缘多少距离才武装
EDGE_MARGIN 8px 可投放范围与窗口边缘之间保留的安全余量
DISARM_RETURN_MS 150ms 拖回卡片内时副本的回位时长
HIT_PAD 12px 卡片四周的隐形响应缓冲区
DAMPING 0.95 副本跟随指针的每帧插值系数(越大越跟手)
MAX_SCALE 1.02 拎起时最大放大
FLIP_MS 400ms 松手后副本飞入气泡的时长
BUBBLE_LEAD_MS 80ms 真气泡提前淡入的提前量
RETURN_MS 200ms 真输入框回位时长(不等飞行结束)
CANCEL_MS 320ms 取消回弹时长

出问题怎么办

打开控制台输入:

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

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

兼容性

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

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

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit c3786d71775e

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout