真实项目 2026-10-02 反馈的两条,都不是"建议",是真缺口。
## 坑 1:JSX 用不了拖拽事件(只是类型缺失)
现象:`onDragOver` / `onDrop` 报
Property 'onDragOver' does not exist on type 'VobsHTMLAttributes'
于是「拖入文件导入」退回 ref 回调 + 原生 addEventListener。
核验发现关键事实:**运行时本来就支持**。`packages/runtime/src/dom-events.ts` 的
`resolveEventName` 对任何 `on*` 属性做 `slice(2).toLowerCase()`,所以 `onDragOver`
早就解析成 `dragover` 并正确绑定。**缺的只是类型声明,功能一直都在。**
所以这不是新增能力,是把已有能力补上类型 —— 顺便补齐同类缺口(clipboard /
animation / transition / media / composition / contextmenu / mouse over-out /
pointer cancel-over-out / touch cancel / keypress / select / reset / invalid /
toggle / beforeInput)。事件属性 28 → 77。
新增 drag-events.test.ts:**两层验证** —— 类型层(JSX 里直接写 onDragOver/onDrop,
类型缺失时该文件自己编译不过)与运行时层(编译产物绑的是 "dragover"/"drop",
派发事件真的触发回调)。
## 坑 2:vite 插件**静默丢弃** compiler warning(这条更严重)
根因:`describeDiagnostics` 内部是
`diagnostics.filter(item => item.severity === 'error')`
没有错误就返回 `null`,而插件只做 `if (summary) throw`。
后果:我在 1.8.1 把 C104 降为 warning、C105 本来也是 warning —— 于是
**这两条诊断在 `vite build` / `vite dev` 里完全隐形**,只有 `vobs check` 能看到。
用户的原话是「vite build 未拦属另一隐患」,实际比隐患更重:那两条诊断在**主构建
路径上等于不存在**。
修法:warning 走 Vite 自己的告警通道(`this.warn`),拿不到 PluginContext 时
退回 `console.warn`(不静默)。按「代码+位置+消息」去重。**仍然不升级成错误** ——
两条规则的立论是启发式的,不该有挡构建的强度。
新增 diagnostics-warning.test.ts(7 例),含**有牙齿**的对照:干净文件必须不报警
(否则"总是 warn"也能让主用例通过)。
**咬合证据**:把 warning 过滤改成空数组 → **4 条变红**。
全量门禁 **1344 测试** 全绿 · typecheck 0 · check:source 0 · verify:packages 0。