Default to DeepSeek V4.1 Flash, show API cost in USD, and re-analyze after replacing BOM and netlist.

V4.1 is natively multimodal so every stage uses deepseek-flash; pricing and the UI now surface dollars instead of empty credits. KiCad netlists and neighborhood fingerprints land in the same cut so a second run can keep the project and skip unchanged ICs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-10 20:55:35 +02:00
co-authored by Cursor
parent d454cf75af
commit 61f85f519b
29 changed files with 1174 additions and 118 deletions
+7 -2
View File
@@ -481,7 +481,12 @@ async def upload_netlist(project_id: str, file: UploadFile, request: Request):
import tempfile, os
fmt = detect_netlist_format(data)
suffix = ".edn" if fmt == "edif" else ".asc"
suffix = {
"edif": ".edn",
"kicad_xml": ".xml",
"kicad_sexp": ".kicad_net",
"kicad_sch": ".kicad_sch",
}.get(fmt, ".asc")
sub_designs: list[dict] = []
try:
tmp = tempfile.NamedTemporaryFile(delete=False, suffix=suffix)
@@ -503,7 +508,7 @@ async def upload_netlist(project_id: str, file: UploadFile, request: Request):
# shape, so the wizard's power-sources step can render its dropdowns
# without re-parsing the (s-expression-heavy) file in the browser.
designator_pins: list[dict] = []
if fmt == "edif":
if fmt != "pads":
designator_pins = _build_designator_pins(parts, nets)
return {
"path": key,