Skip to content

easyeda-agent v0.14.0

Choose a tag to compare

@zhoushoujianwork zhoushoujianwork released this 17 Jul 16:44

[0.14.0] - 2026-07-18

「真机可信化」版:一天内 16 个 issue 闭环的集中发布。三大主题:
via/导入可信化——EPAD 内嵌热过孔的删除欺骗与赋网易失被彻底摸清(删不掉:
假成功+立即 getAll 也骗+reload 原 id 复活;赋网只活到 reload),pcb.route.delete
前置拒删、pcb.add_component 放置即键合、CLI 新增 pcb via-bond 幂等重键合 +
pcb check netless-via-in-pad 触发器;import-changes 十七天误诊破案——它从来
不是 no-op,是「确认导入信息」对话框没人点,现在 handler 自动点「应用修改」,
clear→reimport 往返打通。② 布线器硬否决——异网走线/slot 从代价升级为
hopFeasible 硬门(R2 两条真交叉短路的根治),mount-holes 反查既有铜皮。
门禁与工具诚实化——power-not-poured 对 GND 内电层死锁解除(PlanePouredNets
状态互通)、--force 分级放行(零确认机械骨架要 --force-unsafe)、pcb clear
默认 verify 复合流程、高 pin 连接器不再抢 main、陶瓷贴片天线 keepout、
根级 easyeda health 别名。

Fixed

  • pcb.import_changes 假 no-op 根因修复(#124,订正 #20 诊断):importChanges 一直
    都能正确算出变更清单——它弹「确认导入信息」对话框等人点「应用修改」,API 返回 true 只
    代表对话框弹出;headless 没人点,看起来就是静默 no-op(「不支持增量导入」是误诊)。
    真机实证:点击后 20 件全部落板。handler 现在自动等待对话框并点「应用修改」
    (confirm:false 保留人工审查),且 importChanges 的 promise 不再串行 await
    (实测某些状态下永不 resolve,会卡死连接器整个动作队列)——改为并发点击 + 12s 超时
    兜底,以器件计数差(componentsBefore/After)为落板真值。
  • pcb.route.delete 假报成功修复(#120,真机订正):SDK 的 delete()封装内嵌
    via
    (QFN EPAD 热过孔是 component 的一部分)返回 true立即 getAll 也显示已删,
    但 save/reload 后从封装定义原 id 复活(ceshi 真机实证)——纯 readback 会被骗。handler
    现在前置结构判定:via id 以某器件 primitiveId 为前缀 = 内嵌,直接拒删进
    notDeletable[](附父器件 + 指引 pcb via-bond),ok:false;其余照常删除并
    readback 兜底(removed/count 只统计真正消失的,不可归因的幸存者进 notDeleted)。
  • pcb.add_component 内嵌 via 赋网(#118):封装内嵌的 EPAD 热过孔 net="",
    EPAD 永远焊不上 GND 平面且每颗报一条 same-footprint SMD Pad to Via。现在赋完
    pad 网后,枚举落在本器件已赋网 pad 铜皮矩形内的无网 via,用
    pcb_PrimitiveVia.modify(@beta)赋成该 pad 的网,并 readback 验证(#120 教训:
    SDK 布尔不可信);结果新增 embeddedVias {assigned, verified, failed}
    ⚠️ 真机实证:该赋网不能活过 doc reload(平台每次都把内嵌 via 重物化为无网)——
    CLI 侧配套 pcb via-bond(exec_js 路线,旧连接器即可用)负责 reload 后重键合,
    pcb check 新规则 netless-via-in-pad 是触发器。

One-line install/update:

curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh

Installs/updates:

  • easyeda CLI/daemon
  • easyeda-agent skill for Codex (/.codex/skills) and/or Claude Code (/.claude/skills) when detected
  • prints EasyEDA connector .eext import URL

Skill targets: set EASYEDA_INSTALL_SKILLS=codex,claude to force targets, none to skip, or EASYEDA_SKILL_PRESERVE=1 to keep local edits.