velxio/frontend/src
David Montero cd67362312 feat(libraries): manifest auto-migration + name-affinity ranking + install-declares
Three-part fix for the library-contamination class of ESP32 compile
failures (a user's project kept pulling unrelated libraries because 79%
of projects compile with an empty manifest, forcing scan-all resolution
over ~1000 shared libraries):

1. Name-affinity ranking in _find_library_for_header: the provider whose
   name matches the header stem wins (exact normalized match > esp32
   arch declaration > contains-stem, alphabetical only as tie-break).
   Previously first-alphabetical won, so any stray library shipping a
   generic header (Servo.h has 6 providers) could hijack the build.

2. Manifest auto-migration: scan-all compiles now report the libraries
   the build really used (manifest_incomplete +
   manifest_suggested_libraries on the compile result); the editor folds
   single-candidate suggestions into the board's declared manifest after
   a green build, so the NEXT compile runs scoped. One green build = one
   migrated project; empty-manifest scan-all behaviour is untouched.

3. Install-declares: the Wokwi import library modal records successful
   installs in the active board's manifest, and .vlx export/import now
   round-trips board.libraries.

Tests: test_espidf_library_ranking.py (9) + library-manifest.test.ts (19).
2026-08-04 06:03:32 +02:00
..
__pro_stub__
…
__tests__ feat(libraries): manifest auto-migration + name-affinity ranking + install-declares 2026-08-04 06:03:32 +02:00
assets
…
components feat(libraries): manifest auto-migration + name-affinity ranking + install-declares 2026-08-04 06:03:32 +02:00
data feat(esp32): pure ESP-IDF language mode for the ESP32 family (#139) 2026-07-24 06:37:01 +02:00
desktop fix(editor): sync URL after New workspace + sever project identity on .vlx import 2026-07-18 08:24:06 +02:00
hooks fix(autosave): start late-installed impl for already-mounted hooks 2026-07-31 08:24:44 +02:00
i18n feat(simulator): map pushbuttons to keyboard keys 2026-07-18 04:02:01 +02:00
lib
…
pages feat(landing): hero shows the weather-station circuit gif running 2026-07-22 22:56:32 +02:00
services feat(libraries): manifest auto-migration + name-affinity ranking + install-declares 2026-08-04 06:03:32 +02:00
simulation spice: seed INPUT_PULLUP pins to their resting level on pull enable 2026-07-31 20:51:42 +02:00
store spice: seed INPUT_PULLUP pins to their resting level on pull enable 2026-07-31 20:51:42 +02:00
tokens
…
types feat(esp32): pure ESP-IDF language mode for the ESP32 family (#139) 2026-07-24 06:37:01 +02:00
utils feat(libraries): manifest auto-migration + name-affinity ranking + install-declares 2026-08-04 06:03:32 +02:00
velxio-elements feat(breadboard): Wokwi-style parts-on-breadboard — hole snapping + invisible seating wires 2026-07-18 08:47:25 +02:00
App.css
…
App.tsx feat(ui): global message dialog to replace window.alert() 2026-07-17 06:06:28 +02:00
elements-register.ts feat(components): DS3231 RTC module + GPS NEO-6M NMEA talker 2026-07-31 20:38:06 +02:00
entry-server.tsx
…
index.css
…
main.tsx feat(components): DS3231 RTC module + GPS NEO-6M NMEA talker 2026-07-31 20:38:06 +02:00
seoRoutes.ts
…
vite-env.d.ts
…