Commit Graph
124 Commits
Author SHA1 Message Date
michele ec2ffd6107 Join KiCad hierarchical PNM/MPN when the BOM CSV omits a designator.
Child-sheet symbol fields fill graph mpn; empty sheet fields stay empty. A sibling .kicad_sch next to a PADS netlist is used the same way.
2026-09-21 01:56:13 +02:00
michele 82d185ccf4 Treat KiCad PNM as MPN and skip missing U* as INSUFFICIENT_EVIDENCE.
HubAudio CSV has no U13–U39 rows; those refs stay without an invented part number. IC Value fills MPN when PNM is blank. Progress no longer labels netlist-only ICs as “no MPN in BOM”.
2026-09-21 00:53:06 +02:00
michele e31981c812 Persist recovered ferrite Z by comparing against the raw JSON.
ComponentModel validation already fills impedance from quoted ohm@freq, so snapshotting the in-memory specs skipped the write.
2026-09-21 00:33:17 +02:00
michele 72bcab50a1 Fill ferrite bead impedance from the MPN datasheet PDF.
graph_build searches project uploads and library blob refs, persists recovered Z, and still loads when the PDF has no impedance. Ohms are not written to henries.
2026-09-21 00:29:12 +02:00
michele a2d5900b64 Recover ferrite bead Z from datasheet evidence without aborting graph_build. 2026-09-21 00:19:06 +02:00
michele 8040686e8b Allow ferrite beads without impedance_ohm to load.
Missing Z is optional, not invented. graph_build skips bad models
instead of aborting. Other inductors still require value_henries.
2026-09-20 23:08:33 +02:00
michele 7a32c552bb Stamp 2.60.0 incomplete PCB exam and owner project delete.
Partial layouts still use MODE=pcb. Missing copper is INSUFFICIENT or
skipped, never Euclidean stand-in tracks. Via≠Pad unchanged. DELETE
/api/projects/{id} is owner-only with a dashboard confirm dialog.
2026-09-20 21:17:26 +02:00
michele ed3fff565d Stamp 2.59.0 Docker leftover seams only, not PinScope product.
Images copy periscope/src, vendor/, and skipped Clerk/shadcn/billing/GCS
files. dependency/ stays in git. Audit written; FastAPI boots with
PYTHONPATH=src.
2026-09-20 21:03:26 +02:00
michele 22bc075c58 Stamp 2.58.0 native JWT middleware and useAuthApi.
Same skip paths, Bearer/query token, Clerk RS256 leftover, and local HS256
contract. routers/auth.py, user records, and AUTH_JWT_SECRET are untouched.
2026-09-20 21:01:51 +02:00
michele 3a666ea8ae Stamp 2.57.0 native package.json, requirements, and unused Docker copies.
Frontend periscope-web manifests, pip requirements, and EDA logos/examples
overlay from src. Docker installs from those files. Unused PinScope public
blobs are dockerignored. Landing png/gif stay in dependency until native
captures exist.
2026-09-20 21:00:21 +02:00
michele 7a377889ae Overlay live legal and changelog markdown from periscope/src.
privacy, terms, file-guide, and changelog stay Periscope operator text at 2.56.0. Docker copies src changelog last; the frontend image keeps content/ at runtime.
2026-09-20 20:37:11 +02:00
michele 00e5df8a36 Overlay app favicon.ico from the Periscope mark.
Replaces the leftover OSS Next.ico so /favicon.ico matches favicon_io.
2026-09-20 20:30:36 +02:00
michele ee160a5df9 Overlay native taxonomy JSON and local DeepSeek skills.
repo_paths and compose mount src/taxonomy first. Docker copies dependency then src for taxonomy and skills. SKILL.md prose is rewritten; schema IDs and validate contracts stay. Manifest 1.14.0. Do not run upload_skills.py.
2026-09-20 20:30:25 +02:00
michele 6f3e714a54 Rewrite CSP host seam and middleware package marker.
Export names stay for the cloud overlay. JWT still lives only in inherited auth.py.
2026-09-20 20:19:58 +02:00
michele 739e6f7f17 Rewrite Next, ESLint, PostCSS, and tsconfig overlay.
CSP, login/register redirects, pdfjs-dist externals, and canvas alias stay the same. package.json is unchanged.
2026-09-20 20:19:37 +02:00
michele 44e86e258e Rewrite app color tokens and fade-up animation.
Tailwind/shadcn imports, light/dark oklch values, and .animate-fade-up stay the same so layout does not shift.
2026-09-20 20:12:54 +02:00
michele 72b4b20665 Rewrite reviewed-finding localStorage hooks.
Dashboard count and report toggle still migrate legacy keys and skip the first persist write.
2026-09-20 20:12:20 +02:00
michele 7d82358e19 Rewrite project file drop zone.
Folder drops still skip KiCad backups/pretty/3dmodels; dashed upload chrome is unchanged.
2026-09-20 20:11:48 +02:00
michele c5cd98587f Rewrite class-based theme provider and toggle.
next-themes still defaults to dark with no system follow. Clerk theme wrapper stays inherited.
2026-09-20 20:11:20 +02:00
michele b3566db828 Rewrite datasheet PDF sheet overlay.
Right-side Sheet still mounts PdfViewerPanel only while open; shadcn Sheet stays imported.
2026-09-20 20:11:00 +02:00
michele 292d2e2077 Rewrite Next.js local BFF routes and mock catalog.
Projects, report, and graph JSON handlers overlay from periscope/src. Clerk proxy stays the inherited open-core seam.
2026-09-20 20:04:04 +02:00
michele 93f6fad3e7 Rewrite legal page shells and Open Graph images.
Overlay legal markdown chrome, changelog timeline, EDA file-guide tabs, and OG/Twitter images from periscope/src instead of inherited PinScope copies.
2026-09-20 20:02:57 +02:00
michele a9ce71f17a Rewrite frontend site identity, version stamp, and Excel export.
Changelog remains the source of APP_VERSION via overlay sync-version.mjs.
2026-09-20 20:00:15 +02:00
michele a011351828 Rewrite leftover frontend pages into src overlay.
Dashboard, project, report, progress, admin, feedback, and marketing
keep routes and layout. Billing/Clerk/analytics stay imported seams.
2026-09-20 19:53:33 +02:00
michele 2613678442 Rewrite frontend types and HTTP client in src.
Export names match the leftover pages. Billing HTTP wrappers stay so
gateway seams are not restyled here.
2026-09-20 19:41:15 +02:00
michele d0fd37c1b5 Rewrite leftover HTTP routers except auth.
Project ingest, pipeline enqueue/SSE, reports, admin, contact, survey,
and feedback now resolve from src. Auth router is unchanged.
2026-09-20 19:31:41 +02:00
michele 7c3c7d17d8 Rewrite FastAPI app and pipeline worker entrypoint.
Worker still refuses to import backend.main. Auth router is mounted
unchanged; CORS stays outermost so 401s keep headers.
2026-09-20 19:23:33 +02:00
michele d0bbd582a8 Rewrite Settings as native Periscope config.
DeepSeek remains the only live provider; leftover Anthropic env names
are coerced or ignored. Skills manifest is resolved across the split tree.
2026-09-20 19:21:52 +02:00
michele 82ffa755cd Rewrite leftover analysis modules imported by src.
validate/validation_tools alias native lookup and review tools. Passive
resolve, derating, BOM summary, pin-mux, LED current, and net-function
tokens are original Periscope code. finding_engine and pcb_* unchanged.
2026-09-20 19:14:20 +02:00
michele 3d7fa21eb6 Rewrite analysis pipeline, projects, email, and LCSC client.
Native job_workspace / datasheet_extract / review_session stay the live
BOM-extract-graph-review path. Project writes follow owner_user_id.
2026-09-20 19:10:28 +02:00
michele 6a4903fa3a Rewrite job_runner, event_bridge, cost estimator, and DigiKey client.
Local pid-file dispatch stays the self-host path. DigiKey still rejects unrelated MPNs. Inherited copies remain on disk.
2026-09-20 18:57:58 +02:00
michele e240afce23 Rewrite leftover LLM factory (DeepSeek-only), storage, validation.
Anthropic/Gemini names resolve to DeepSeek. Extraction import path re-exports datasheet_extract. Inherited copies stay on disk. storage_gcs unused, skipped.
2026-09-20 18:55:18 +02:00
michele 572b8d24f3 Rewrite normalize, cross-IC dedupe, and billing seam (2.49.0).
Downgrade-only clamp and fail-soft coverage stay in src. Inherited copies remain on disk. Self-host billing is NullBilling.
2026-09-20 18:47:45 +02:00
michele fe89851c10 Rewrite taxonomy loader; JSON path via repo_paths (2.48.0).
TAXONOMY_DIR is taxonomy_dir() so src reads dependency/taxonomy until a src tree exists. Inherited taxonomy.py stays on disk. Changelog covers models, parsers, and taxonomy.
2026-09-20 18:41:12 +02:00
michele 9997f39718 Rewrite PADS/BOM dispatch and EDIF ingest as Periscope parsers.
KiCad schematic parser and PCB via≠pad parser stay native. Inherited
parser files remain in dependency/.
2026-09-20 18:38:26 +02:00
michele 24f9c952e2 Rewrite Periscope models.py with disjoint layout primitives.
Pad, via, track, and zone stay separate types. Inherited models.py remains
in dependency/. Public graph/finding fields are unchanged.
2026-09-20 18:37:03 +02:00
michele 7ff049f6d0 Rewrite DesignGraph builder as original Periscope graph.py.
Src module classifies refs, infers net type/voltage, and prefers board nets
when a .kicad_pcb is present. PinScope graph.py remains in dependency/.
2026-09-20 18:32:36 +02:00
michele 5a1d31ce7b Revert PinScope overlay copies from periscope/src (2.46.0).
Remove stamped near-identical modules so inherited code loads from
dependency/ again. Keep native finding engine, PCB/placement, review,
job workspace, datasheet extract, via-vs-pad parser, logo, and local JWT.
2026-09-20 18:30:21 +02:00
michele 6d6e70cec0 Overlay leftover FastAPI entry, routers, and jobs into periscope/src (2.45.0).
Copy main, config, middleware/auth, leftover routers, pipeline_worker,
job_runner, event_bridge, projects, and admin_settings without deleting
dependency copies. Native auth and impedance routers stay as-is.
2026-09-20 17:39:15 +02:00
michele 0b01617b37 Overlay leftover services and LLM factory into periscope/src (2.44.0).
Copy api_logs, findings normalize/dedupe, billing_hook, datasheet_store,
cost_estimator, storage, purple_parts, email, digikey, and llm factory/types/base
without deleting the inherited dependency copies.
2026-09-20 17:15:55 +02:00
michele 1389d832df Overlay leftover PinScope modules src still imported.
utils, resolve_passives, derating, bom_summary, pin_mux, LED current,
pin-function tokens, plus live analysis validate/validation_tools/pipeline/
validation/extraction, skills, and taxonomy JSON now resolve from
periscope/src. Inherited copies stay in dependency/. repo_paths prefers
src then /app; Docker copies src taxonomy/skills last.
2026-09-20 16:56:20 +02:00
michele 31fd389b38 Native overlay of graph, parsers, models, taxonomy; Periscope mark.
Src-first imports now load graph/parsers/EDIF/models/taxonomy from
periscope/src. Inherited copies stay in dependency/. Taxonomy JSON path
uses repo_paths. New periscope/lens mark at existing 16/32/180/192/512
favicon sizes; header uses PeriscopeMark instead of the lucide CPU glyph.
2026-09-20 16:41:50 +02:00
michele 34a9b30a35 Re-parse .kicad_pcb on PCB exam instead of stale layout_graph.
Cached layout_graph still listed stitching via-pads as component pads,
so PE-BOM-011 kept firing after the ingest fix. PCB/placement jobs now
parse the board file and refresh the cache.
2026-09-20 16:16:46 +02:00
michele ad21d00cd0 Fix PE-BOM-011: classify footprint vias as vias, not pads.
KiCad stitching/thermal vias inside a footprint are (via) or copper-only
thru_hole (pad) objects. parse_kicad_pcb was appending every (pad) to
LayoutFootprint.pads, so PE-BOM-011 compared datasheet pin_count to via
numbers. Nested vias join LayoutGraph.vias; soldered THT pads stay pads.
2026-09-20 16:06:10 +02:00
michele 19eab09000 Native PipelineWorkspace and event broker in periscope/src.
PCB and placement jobs import job_workspace instead of PinScope
pipeline.py. Analysis run_pipeline re-exports the same broker singleton.
2026-09-20 15:34:41 +02:00
michele 5c0c5184fb Native DeepSeek datasheet extraction in periscope/src (Fase C3).
Pipeline and LCSC resolve call datasheet_extract; inherited extraction.py
stays in dependency as fallback. No Anthropic Console skill ids.
2026-09-20 15:26:21 +02:00
michele a96ee2e88a Stop periscope/src importing PinScope validate.py after live C2 smoke.
PCB review and src checks use native parse, constraints lookup, and
review_session. Inherited validate.py and validation_tools.py stay in
dependency/.
2026-09-20 15:21:32 +02:00
michele 974923b2e6 Native DeepSeek review loop in periscope/src (Fase C2).
Live review_ic_async comes from review_session; PinScope validate.py and
validation_tools.py stay in dependency as _inherited_review_ic_async fallback.
2026-09-20 15:14:21 +02:00
michele a0a2f5bdbf Fix DeepSeek-only tests after env file moves to the repo root.
Give the routing tests a dummy key so they do not require a live .env.
2026-09-20 14:33:23 +02:00
michele c362ef8a56 Split native Periscope (periscope/src) from inherited PinScope (periscope/dependency).
Keep validate.py and the finding engine as-is. AGPL LICENSE stays at the repo root.
Docker overlays dependency then src. Do not delete the inherited tree.
2026-09-20 14:31:42 +02:00