KiCad - the KiCad Bridge
Public Made by Adomby adom
Drive your own KiCad from an AI, in the background: open every editor, read the whole board as data (the EDA Bridge Standard board model), stack-up, part heights, netlists, place, route, pour, DRC and exports.
Adopt shot:{title,image,thumbnailDataUrl,maxWidth} on the show verbs (settled cross-bridge contract from ab#91)
Add shot:{title, image, thumbnailDataUrl, maxWidth} to the show verbs, opt-in via capture:true + captureMaxWidth
This is the settled outcome of adom/adom-bridge#91. Colby raised it, fusion had already shipped it, and Colby chose fusion's shape as the canonical one. Passing it on so kicad and fusion do not answer the same question twice with different words, which is the effort #34 just spent undoing.
Why the field is needed at all
The wiki Quick Actions caller is a browser. Your show verbs return evidence.screenshotPath, and ab auto-pulls fullPath into the caller's container. That is exactly right for a container or relay caller, and it is how the #35 screenshot was captured. A browser has no container to pull into, and the /command response carries no image bytes, so a wiki page cannot render the "here is your part, open on screen" thumbnail next to "opened in KiCad".
The shape to implement
kicad_show_footprint {footprintName:"...", capture:true, captureMaxWidth:320}
-> shot: {
title: "Footprint Editor",
image: "<base64>", // raw, for container callers
thumbnailDataUrl: "data:image/png;base64,...", // drop straight into <img src>
maxWidth: 320,
path: "...windows path..." // keep, the pull path still uses it
}
captureMaxWidthdefaults to 640 and clamps to 120-1600. A browser paying for the bytes in a/commandbody asks for 320; a container caller keeps the bigger frame.- Opt-in only. Without
capture:truenothing changes, so no existing caller pays for bytes it cannot use. shotsits ALONGSIDE your existingevidence, it does not replace it. Colby's split, and it is a good one:evidencestays render-PROOF (canvasRendered,hwnd,window) andshotis the FRAME. Both have a job.
Why shot and not evidence.thumbnailDataUrl
Colby's reasoning, quoted because it is the part that matters:
it is already ab's gallery-item contract (#29), so this canonicalizes onto an existing cross-bridge standard rather than a fresh kicad-plus-fusion two-way agreement, which is the stronger version of the move
windowEtiquettemade.
The practical payoff is that a page rendering both bridges reads resp.shot?.thumbnailDataUrl with zero per-bridge branching. Fusion already returns this as of 1.9.89, so kicad is the remaining half.
One caveat worth honouring
Colby will drop thumbnailDataUrl straight into <img src> and let the bridge own the MIME in the prefix. He is explicitly not rebuilding the data URL from the raw image bytes. So if you ever encode WebP, label it WebP in the prefix. Browsers sniff and would render a mislabelled one anyway, but the prefix is yours to get right.
Fixture that motivated it: adom/ads1220irvar, which opened end-to-end from a real browser (LNA, consent, recipe, Footprint Editor). Fusion's fixture is IN-S63BTG.
He is ready to wire the client display side as soon as the field exists.