Skip to content

DropSpace v0.3.0-preview.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Aug 14:17
6c89baa

DropSpace v0.3.0-preview.1 — Smart Drag Detection v2 foundation

DropSpace v0.3.0-preview.1 is the first test build based on the Smart Drag Detection v2 project plan. It keeps Smart mode free of a permanent top-edge or full-screen drop target while broadening candidate detection beyond Explorer/Desktop process assumptions.

Official website: https://airanluo-dot.github.io/DropSpace/

Source-agnostic Smart candidates

  • Continues passive pointer observation after a press from an unknown source and creates a generic candidate only after the Windows drag threshold is crossed.
  • Keeps the proven Explorer/Desktop exact-item path as a high-confidence fast path.
  • Accepts documented accessibility drag-start evidence from unknown providers without application-name hardcoding.
  • Carries evidence level, evidence flags, session ID, and verification requirement through a serialized policy so stale timeouts and old callbacks cannot cancel a newer drag.

Ephemeral OLE verification probe

  • Creates at most one 144-pixel hollow local OLE target only for a generic candidate; it does not exist while idle.
  • Starts the pointer in a real 12-pixel Region hole, uses WS_EX_NOACTIVATE, WS_EX_TOOLWINDOW, WS_EX_TOPMOST, and a 1/255 layered alpha, and never requests foreground focus.
  • Enforces a 60 ms hard lifetime, always reports DROPEFFECT_NONE, and queues revoke/destruction outside the IDropTarget::DragEnter callback.
  • Begins speculative Dynamic Island reveal in parallel, commits file evidence when OLE verifies it, and reverses the reveal on rejection or timeout.

Shared OLE file classification

  • Centralizes CF_HDROP, Shell IDList Array, and virtual-file descriptor detection for the probe, Classic host, and visible Dynamic Island target.
  • Accepts file-system paths and Shell items that resolve to bounded file-system paths through the existing AddPathsAsync pipeline.
  • Recognizes FileGroupDescriptorW + FileContents as virtual-file evidence without reading content during verification. Safe streaming materialization is intentionally deferred to a later v0.3 Preview, so virtual-only drops are not yet accepted by this build.
  • Bounds item/PIDL parsing and keeps paths, filenames, and payload content out of diagnostics.

Validation in this Preview

  • Extends Core policy tests for unknown candidates, strong-signal promotion, OLE verify/reject/timeout, stale-session races, and 1,000-session cleanup.
  • Extends the Windows executable smoke with hollow Region, no-activate/tool-window/topmost styles, single-probe ownership, 60 ms timeout cleanup, double-dispose, and query-only CF_HDROP/Shell/virtual/text classification checks.
  • Keeps Classic top-edge mode as an explicit compatibility fallback; Smart mode never silently switches to it.

Preview limitations

  • Cross-process behavior still depends on each source application's OLE drag implementation. Explorer, Desktop, WeChat, QQ, Feishu/Electron, Office attachments, mixed-DPI monitors, cursor feedback, and false-reveal rate require recorded real-Windows testing before v0.3 Stable.
  • Virtual files are detected but are not materialized in Preview.1.
  • Public artifacts are unsigned unless release signing secrets are configured; SmartScreen may show an unknown-app prompt.

中文说明

  • v0.3.0-preview.1 按 Smart Drag Detection v2 规划启动 3.0 测试序列:Unknown 来源按下后仍继续被动观察,越过系统拖拽阈值后建立通用候选;可信 UIA/WinEvent 拖拽信号不再被 Explorer-only 策略拒绝。
  • 通用候选会并行启动推测性灵动岛 Reveal 与一个最多存在 60ms 的局部空心 OLE 探针。探针空闲时不存在、不抢焦点、不进入任务栏或 Alt+Tab、始终返回 DROPEFFECT_NONE,并在 COM 回调之外撤销和销毁。
  • OLE 文件分类已统一支持 CF_HDROPShell IDList Array 与虚拟文件描述符识别;本测试版只接收可安全解析的文件系统路径,虚拟文件流式落盘将在后续 v0.3 Preview 完成。
  • 本版本没有按微信、QQ、飞书等进程名写特判,也没有轮询、注入、管理员权限、常驻顶部热区或常驻全屏透明窗口。