Changelog
What's new in Periscope.
- September 13, 2026v2.29.1
Fix sign-in /login 404 after rebrand
Landing CTAs pointed at `/login`, which did not exist (page is `/sign-in`). Added redirects, accepted legacy JWT issuer `pinscope-local`, and CORS for both Periscope and Pinscope hosts.
- Fixed`/login` → `/sign-in`, `/register` → `/sign-up`; marketing links updated.
- FixedJWT decode accepts `pinscope-local` issuer from pre-rebrand sessions.
- FixedDeploy script CORS includes both public hostnames.
- September 13, 2026v2.29.0
Rebrand to Periscope
Product name, package (`periscopex`), Docker containers, deploy script, and default site URL are now **Periscope** (`https://periscope.michelebigi.it`). Deterministic finding IDs use the `PE-*` prefix. Existing project.json `pinscope_version` and browser storage keys are still read.
- Improved[Changed] Brand Pinscope → Periscope across UI, docs, and APIs.
- Improved[Changed] `backend/pinscopex` → `backend/periscopex`; rule IDs `PS-*` → `PE-*`.
- Improved[Changed] Default host / update script → `periscope.michelebigi.it` / `update-periscope.sh`.
- September 13, 2026v2.28.12
Antenna templates: IFA / meander / stub + .kicad_mod
Progetta antenna now returns a full parametric drawing: polyline segments (mm), SVG preview, and a downloadable KiCad footprint. Choose IFA, meander, or stub; geometry scales to the `antenna` zone when present. Still a routing template — no EM/VSWR invented.
- New`antenna_geometry.py` (IFA / meander / stub → segments + SVG + `.kicad_mod`).
- Improved[Changed] `POST /antenna/design` accepts `template`; recipe includes `geometry`.
- Improved[Changed] RF / Impedance Progetta UI: template select, SVG preview, download footprint.
- September 13, 2026v2.28.11
RF / Impedance: verify antenna + design recipe
Project tab renamed **RF / Impedance**. Verify matching from IC ANT/RF pins toward an `ANT*` / `ANT_FEED` marker; Progetta returns microstrip `w` for 50 Ω (stackup or UI h/εr), optional λ/4 length from `f0`, and antenna-zone bbox. Auto-draw copper comes later — no EM/VSWR invented.
- New`antenna_rf.py` + `GET/POST /api/projects/{id}/antenna`.
- NewVerify + Progetta cards on the impedance panel.
- Improved[Changed] Sidebar label **RF / Impedance**.
- September 13, 2026v2.28.10
Classify strap/bootstrap satellites; hide other
Caps on EN/BOOT/REGN/PMID and bootstrap caps between IC pins get real roles. Unclassified `other` parts are dropped from satellites and assemble_order.
- Improved[Changed] `_role_hint` classifies GND bypass on bias/strap nets and flying bootstrap caps.
- Improved[Changed] Assemble / IC groups omit `role_hint=other`.
- September 13, 2026v2.28.9
Cleaner Domains / Power rails membership
Power rails follow primary domain only. IC satellites for decoupling/bulk/filter/pullup stay on the IC’s primary supply rail (LDO 3V3 no longer inherits VSYS input caps). Connectors/switches drop out of noisy “other” satellites.
- FixedRails view membership = domain primary rail (not transitive satellite nets).
- Fixed`_group_for_ic` primary-rail filter for power-role satellites; skip connector/switch “other”.
- September 13, 2026v2.28.8
Stronger layout_rules extraction skill
Pintable skill now treats PCB / typical-application layout guidance as a first-class extract. Page trim keeps layout keywords; IC cache re-extracts once when `layout_rules` are empty under an older `model_version` (1.10.0+).
- Improved[Changed] `skills/extract-pintable` — dedicated `layout_rules` step, examples, hard negatives; tighter `validate.py`.
- Improved[Changed] Datasheet page trim includes PCB layout / decoupling / typical-application keywords.
- Improved[Changed] Analysis IC extraction refreshes empties when `model_version` < default (1.10.0).
- Improved[Changed] `default_model_version` → `1.10.0`.
- September 13, 2026v2.28.7
Placement F2 pack skeleton (gated)
Placement pipeline can propose satellite xy only when a `.kicad_pcb` layout exists and a `decoupling_proximity` rule has numeric `max_distance_mm`. No millimetres invented; otherwise `placement_pack.json` is skipped with an explicit reason.
- New`placement_pack.py` + `placement_pack.json` after F1 plan.
- New`GET /api/pipeline/{id}/placement/pack` and Pack section on the placement page.
- Improved[Changed] Placement stepper adds a **Pack satellites** stage.
- September 13, 2026v2.28.6
Split Domains by primary supply rail
Domains no longer merge the whole board when a charger/LDO bridges VBUS→VSYS→3V3. Each IC is clustered by its primary supply rail (output for power ICs, regulated digital rail for consumers).
- Fixed`_build_domains` groups by primary rail instead of transitive POWER union-find.
- Improved[Changed] Domain ids use the rail name (e.g. `domain_3V3_DIGITAL`).
- September 13, 2026v2.28.5
Domains & power-rail topology views
Browse routing-first functional groups from the project sidebar: Domains (power-net islands) and Power rails, each highlighting IC groups and satellite roles.
- NewSidebar tabs **Domains** and **Power rails** (from `placement_plan` / `functional_groups`).
- Improved[Changed] Analysis `graph_build` also writes `placement_plan.json`.
- FixedHeal stuck Placement `queued`/`running` when the worker is dead.
- September 13, 2026v2.28.4
Unstick zombie running pipelines
A finished run whose worker died before flipping meta stayed `running`, so Progress showed Review spinning forever. Heal those projects when the event log already ends with `pipeline_complete`.
- Fixed`heal_if_pipeline_finished` on project get / pipeline status.
- FixedProgress stepper marks all stages complete on `pipeline_complete`.
- FixedAdmin sweeper also covers local zombies without `execution_name`.
- September 13, 2026v2.28.3
Stop progress→report bounce on finished projects
Opening a finished project no longer flashes Processing and dumps you on the report. Progress only auto-opens the report after a live run on that visit.
- Fixed`/progress` checks project status before SSE; finished projects go to the hub.
- FixedAnalysis SSE ignores placement events and does not treat already-terminal status as a crash.
- September 13, 2026v2.28.2
Fix project sidebar navigation
Opening a finished project no longer dumps you on the report with a stuck left menu. Hub first; Report stays in the sidebar. Leaving `/report` for BOM/tabs uses a full navigation so the page actually changes.
- FixedDashboard project cards/table open `/project/{id}` (not `/report`).
- FixedSidebar Dashboard / Library / BOM tabs escape nested report/progress/placement routes.
- September 12, 2026v2.28.1
Placement pipeline (parallel)
Dedicated Placement job builds the routing-first topology plan without touching the analysis pipeline status or spending credits. No millimetres — domains, IC groups, satellites only.
- New`POST /api/pipeline/{id}/placement/start` (+ cancel, events SSE, get plan).
- NewProject page **Build placement plan** → `/project/{id}/placement` progress + topology viewer.
- NewWorker `MODE=placement` writes `placement_plan.json` (and refreshes `functional_groups.json`).
- September 12, 2026v2.28.0
Layout F1 topology + crystal/NC checks
Routing-first floorplan foundation without inventing millimetres: domains and satellite role hints after graph build, plus deterministic crystal CL and NC-pin checks.
- New`functional_groups.json` from `graph_build` (domains, IC groups, `role_hint`, attached `layout_rules`).
- New`crystal_cl_check` (PS-XTAL-*) and `nc_pin_check` (PE-NC-001) in the deterministic suite.
- Improved[Docs] Piano §0c Placement F1/F2; packing mm stays Layout F2.
- September 12, 2026v2.27.1
DeepSeek roadmap integrations
Close the open P0/P2 items from the growth plan: offline smoke on `simple_project`, reviewer `shortest_path`, library promotion gate, PDF drop logging, per-stage cache hit-rate helper. IC placement stays Layout-product backlog.
- New`scripts/smoke_simple_project.py` + `simple_project/smoke_baseline.json`.
- NewGraph tool `shortest_path`; `library_gate` before shared extracted/.
- New`cache_stats_by_stage()`; PDF truncate/omit page logs.
- Improved[Test] `tests/test_roadmap_integrations.py`.
- September 11, 2026v2.27.0
Local multi-user auth
Self-host Periscope accounts (email + password) so several people can share a project. Invite collaborators by email from the project page — same flow as cloud, without Clerk.
- New`AUTH_JWT_SECRET` enables register/login; first user is admin and inherits `users/local` projects.
- New`/sign-in` and `/sign-up`; sidebar account menu. Set `NEXT_PUBLIC_AUTH_MODE=local` on the frontend build.
- Improved[Changed] Collaborator lookup works for local users; Clerk still used when its keys are set.
- September 11, 2026v2.26.5
Prefer PCB nets for connectivity
When a `.kicad_pcb` is present, pad nets from the board drive the design graph. Schematic geometry alone was inventing swapped rails (GND↔3V3) and floating pins on good KiCad 10 designs.
- FixedKiCad 10 `(net "Name")` pad form.
- FixedGraph build overrides sch nets with board connectivity; `/NET` → `NET`.
- Improved[Test] PCB nets beat a misleading schematic.
- September 11, 2026v2.26.4
KiCad power nets merge
`.kicad_sch` connectivity treated every `GND` power flag as its own island (`GND_`, `GND__`…), so the reviewer invented swapped rails and floating pins on good designs.
- FixedSame-name power symbols and global/local labels merge within a sheet (KiCad semantics).
- FixedPins sitting mid-wire attach to that net; `mirror x`/`y` handled correctly.
- Improved[Test] Disconnected GND flags, local labels, mid-segment wire.
- September 11, 2026v2.26.3
KiCad project zip upload
One zip (or every `.kicad_sch`) covers hierarchical sheets. If the zip has `bom.csv` and `.kicad_pcb`, those are taken too. Pipeline re-reads companions from storage.
- NewZip → sheets + optional BOM/PCB. Nested `Sheetfile` paths kept.
- Improved[Test] Upload → workspace re-parse finds child sheet parts.
- September 11, 2026v2.26.2
Three file boxes
New project: BOM, schematic, and PCB on the first screen. PCB is optional.
- Improved[Changed] No extra wizard step for the board.
- September 11, 2026v2.26.1
Ask for the KiCad board
The create-project wizard has a dedicated PCB step (skip still allowed). Report load errors show the API detail instead of a generic fetch failure.
- NewWizard step for `.kicad_pcb`. Upload later from Settings or Impedance.
- ImprovedReport page retries briefly and links back to pipeline progress when `report.json` is missing.
- NewDrop the KiCad project folder (or a zip). Extra library junk is ignored; the board is picked up if present.
- September 11, 2026v2.26.0
ImpedenceFinder Z0 on PCB nets
A pipeline run with `.kicad_pcb` + stackup samples routed **signal** nets (power/ground skipped). Extra net names can be analyzed from the Impedance tab. Z0 is ImpedenceFinder net_walk/zsolver; no invented εr.
- New`impedance_nets.json` after graph build. GET/POST `/api/projects/{id}/impedance/nets`.
- September 10, 2026v2.25.0
Keepout courtyard
`layout_rules` `keepout` flags a foreign net whose track endpoint is inside the KiCad courtyard. Own net and missing courtyard skip. No invented analog/digital classes.
- New`PE-PLC-004` WARNING. Tests use `X1` / `/HFXIN` / `GND` from `simple_project`.
- September 10, 2026v2.24.0
Crystal load caps and track path
Load caps on XIN/XOUT use the same `max_distance_mm` as decoupling. If the PCB has segments on the net, the limit is shortest-path length, not a guessed “loop is too big” ratio.
- NewCrystals (`X1` / C9 / C10 on `simple_project`) run `PE-PLC-001` when `layout_rules` has millimetres.
- NewDetour tracks: path along segments vs the same `max_distance_mm`. No segments → euclidean pad distance.
- September 10, 2026v2.23.0
same_layer decoupling
If `layout_rules` sets `same_layer: true`, a decoupling cap on the opposite copper from the IC is a WARNING. A via inside the courtyard (calculated) is enough. Unset flag → skip.
- New`PE-PLC-003` WARNING when every placed cap on the net is on F vs B opposite the IC.
- September 10, 2026v2.22.0
Thermal vias vs min_via_count
Via count is calculated inside the KiCad courtyard. The limit is the `min_via_count` parameter from `layout_rules`. No courtyard or no count → skip. No pad radius default.
- New`PE-PLC-002` when vias in courtyard < `min_via_count`. `simple_project` has no PCB so it stays silent.
- September 10, 2026v2.21.0
Layout SI skew (datasheet mm only)
Intra-pair skew is measured on the PCB only when `layout_rules` `length_match` has a number. 3W, creepage, and CPWG are not guessed.
- New`PE-SI-001` ERROR when a named pair (_DP/_DM, _P/_N) exceeds that millimetre. No mm in the datasheet → skip.
- September 10, 2026v2.20.0
Placement vs datasheet (PCB)
Decoupling distance is measured on the `.kicad_pcb` against `layout_rules`. No board → no `PE-PLC-001`. A null millimetre skips — no 3 mm default.
- New`PE-PLC-001` when a decoupling cap is farther than datasheet `max_distance_mm`. Empty `layout_rules` and missing caps skip.
- September 10, 2026v2.19.0
Finding review and ECO
Findings can be accepted, marked false-positive, or wontfix with a required reason. Accepted rows export as ECO; OpenEMS-style layout SI is still not this.
- NewReview state on the report (`open` / `accepted` / `false_positive` / `wontfix`). Empty reason is rejected except when returning to open.
- NewECO CSV/JSON of accepted findings only. False-positive and wontfix stay off the ECO.
- NewRelease signature: SHA-256 of findings + user + timestamp. Needs-review filter `?review=open`.
- September 10, 2026v2.18.0
ImpedenceFinder calculator
The Impedance tab uses the closed-form engine from ImpedenceFinder (Hammerstad–Jensen / Cohn), not a second formula set and not OpenEMS.
- NewProject tab Impedance: microstrip, stripline, coupled-diff Z0, stackup → 50/90/100 Ω widths, download `.kicad_dru` advice.
- NewVendored ImpedenceFinder core under `vendor/impedancefinder/` (no gerber2ems, no pcbnew).
- ImprovedCPWG stays unimplemented — no invented number.
- September 10, 2026v2.17.0
Lifecycle and datasheet extras
Distributor lifecycle is a cached check, not a review scrape. Errata and layout_rules stay structured and skip when the catalog or the PDF has no number.
- New`PE-LF-001` EOL, `PE-LF-002` NRND, `PE-LF-003` explicit RoHS fail. Replacement only if the distributor lists it. Active / RoHS N/A / missing cache row are silent.
- New`PE-ERRATA-001` when a catalogued workaround pull-up is missing. No URL → skip.
- New`PE-INT-001` when `internal_features.pullup_pins` has no rail resistor.
- New`layout_rules` closed kinds; non-numeric `max_distance_mm` is stored as null.
- September 10, 2026v2.16.0
KiCad cad-bridge
Periscope writes `periscope-findings.json` next to the report so a KiCad 9/10 action plugin can pan to the symbol uuid on the right sheet.
- NewE2 cad-bridge JSON (`version`, `ref`, `pins`, `sheet`, `uuid`, `severity`). Layout rule ids target pcbnew; others target eeschema.
- New`.kicad_sch` symbols keep `cad_uuid` + `cad_sheet` in `cad_index` (child sheet, not the empty root).
- NewAction plugin in `plugins/kicad/` reads the JSON beside `.kicad_pro` / `.kicad_pcb`.
- September 10, 2026v2.15.0
Power margin, sequencing, DNP enable
Schema checks now compare regulator load to Iout_max, look at PG→EN when a sequence is declared, and treat DNP as a fitted-variant graph.
- New`PE-PWR-001` when specified IQ+I_load exceeds Iout_max, or an explicit series R/ferrite DCR drops >5% of the rail. Missing IQ and PCB traces are not guessed.
- New`PE-SEQ-001` WARNING if `power_sequence` is in IC specs and upstream PG does not net to downstream EN.
- NewBOM `DNP`/`Fitted`/`Variant` on `bom_fields`. Fitted enable with only a DNP pull is `PE-DNP-001` ERROR; no DNP column skips the check.
- September 10, 2026v2.14.0
Filtri e termico schema
Deterministic checks now match RC/LC/π/T filters and estimate LDO/resistor dissipation without inventing missing numbers.
- NewFilter topology `PE-FLT-001` (fc INFO) / `PE-FLT-002` vs `adc_sample_rate` only when that spec exists. Ferrite DCR `PE-FLT-003` only with a datasheet limit.
- NewLDO `P = I_load×(Vin−Vout)` and `Tj = 25 + P·θJA`. Missing θJA is `PE-TH-001` INFO. `Iout_max` is not treated as load.
- NewResistor `I²R` vs `power_rating_w` on LED paths and shunts with known ΔV (`PE-TH-003`).
- September 10, 2026v2.13.0
DC-bias C_eff stima
The derating table now shows an effective capacitance under DC bias for C0G/X7R/X5R ceramics. It is labelled *stima* — not a vendor lot curve.
- New`C_eff` column from an empirical V/Vrated table. Tantalum/electrolytic and unknown dielectrics are left blank.
- ImprovedC0G/NP0 stays at nominal C; X7R at 50% of rated V is about 70% of C.
- NewBulk C without a ~100 nF ceramic is `PE-ESR-001` INFO (no invented Z(f) target).
- September 10, 2026v2.12.0
Pull-up sizing and LDO Cout
Deterministic schema checks now size I2C pull-ups, flag NRST pull-downs, and look at LDO VOUT capacitance — still WARNING, never a invented datasheet µF ERROR.
- NewI2C pull-up value vs a wide NXP UM10204 band (`PE-I2C-002`). 4.7 kΩ is in-band; missing values are not sized.
- NewActive-low reset with a resistor to ground is `PE-RST-002`.
- NewRegulator VOUT needs Cout (`PE-DEC-001`); 100 nF-only on VOUT is `PE-DEC-002`. MCU VDD 100 nF is not flagged.
- ImprovedPin-mux UART0 on the `simple_project` MSPM0 nets is covered in tests (SPI PICO/POCI already was).
- September 10, 2026v2.11.0
DeepSeek V4.1 and re-analyze
Periscope now defaults to DeepSeek-V4.1-Flash (`deepseek-flash`) for every LLM stage, shows API cost in dollars, and lets you replace the BOM and netlist on an existing project without deleting it.
- NewDefault model is `deepseek-flash` (native vision). Legacy `deepseek-v4-flash` / `deepseek-v4-flash-vision-exp` names still work; they route to V4.1.
- NewReplace BOM & netlist on a finished project and re-run the analysis. History, library cache, and prior spend stay on the same project.
- ImprovedAPI cost uses V4.1 Flash peak rates and is shown on the report, logs tab, and run estimate (not only credits).
- August 27, 2026v2.10.0
Deeper datasheet review
Each IC review now sees more of the datasheet and starts from a structured abs-max table, so voltage, decoupling, and interface checks are less likely to stop at "Unverified".
- ImprovedExtraction pulls Absolute Maximum Ratings (supplies, pin voltages, current, temperature) alongside the pin table, and the reviewer gets those numbers in context.
- ImprovedDeepSeek ingest uses PyMuPDF text (tables survive better than pypdf) and, on vision models, renders pin / abs-max / electrical / application pages instead of always the first 24.
- ImprovedReview checklist now includes recommended operating conditions, VIH/VIL, crystal load caps, and datasheet-named external parts. Turn budget 16, more excerpt pages, three follow-ups per concern.
- August 27, 2026v2.9.0
Component library
Chips and passives stay in a shared library after the first look, so the next board does not re-download datasheets or re-extract pin tables.
- NewLibrary page in the sidebar: ICs (pin tables), passive series, discrete specs, and saved PDFs.
- NewDatasheets are written to the library as soon as they are fetched or uploaded, not only after a full review.
- ImprovedThe create-project wizard already skipped parts that were extracted once; that reuse now covers the PDF itself as well.
- August 27, 2026v2.8.0
Automatic datasheets
Periscope now finds datasheet PDFs on its own. You can still upload a file, but you no longer need DigiKey keys for the common case.
- NewAuto-fetch from LCSC (no API key) by manufacturer part number or LCSC code, with exact-MPN matching so a CH340E never silently becomes a CH340G.
- NewDirect Texas Instruments datasheet URLs (`ti.com/lit/ds/symlink/…`) as a second source for TI parts.
- NewPipeline fallback: if a datasheet was not uploaded in the wizard, extraction and review try the same lookup before skipping the IC.
- ImprovedDigiKey remains an optional third source when `DIGIKEY_CLIENT_ID` / `DIGIKEY_CLIENT_SECRET` are set.
- August 27, 2026v2.7.0
DeepSeek API
Periscope now talks to DeepSeek by default. Extraction skills run locally; datasheet PDFs are converted to text (and page images on the vision model) because DeepSeek does not accept native PDF documents.
- NewDeepSeek provider (`deepseek-v4-flash`, `deepseek-v4-pro`, `deepseek-v4-flash-vision-exp`) via the OpenAI-compatible Chat Completions API.
- NewLocal skill runner: `skills/*/SKILL.md` is inlined and `validate.py` runs in-process — no Anthropic Console upload required.
- NewPDF ingest for DeepSeek: pypdf text extraction plus optional PyMuPDF page renders on vision models.
- ImprovedAnthropic and Gemini remain optional fallbacks via `PROVIDER_*` / `FALLBACK_PROVIDER_*`.
- July 12, 2026v2.6.0
Export Report to Excel
Download a project's findings as an Excel spreadsheet straight from the report — one click, ready to share, filter, or archive outside Periscope.
- New"Export Excel" button on the validation report. Every finding becomes a spreadsheet row — designator, part number, ID, severity, title, description, recommendation, and its datasheet source (page included) — sorted most-severe first.
- July 4, 2026v2.5.1
More Thorough Reviews
Schematic review now works through every functional area of a component before finishing, so a part with several independent issues has all of them surfaced in one pass instead of just the first.
- ImprovedFor each IC, the review covers power and decoupling, every signal interface, absolute-maximum ratings, and reset/boot/configuration and unused pins before reporting — catching multiple issues on the same component that could previously be missed.
- July 2, 2026v2.5.0
Light Mode
Periscope now has a light theme. Toggle between light and dark with the sun/moon button — in the sidebar next to your account menu, or in the header on the website.
- NewTheme toggle. Switch between light and dark mode anywhere in the app; your choice is remembered on this device. Everything defaults to dark, exactly as before, until you flip it.
- ImprovedEvery status color — error, warning, and pass badges, finding cards, the progress view, billing — is tuned for both themes, so reports stay legible either way.
- ImprovedThe sign-in page and account menu now follow the app theme instead of always rendering light.
- July 1, 2026v2.4.0
Automatic Pin & LED Current Checks
Two datasheet-grounded checks now run on every project, independent of the schematic review — catching a swapped-peripheral pin or an over-driven LED — plus a clear list of any components that had no datasheet to review against.
- NewPin-function feasibility check. Periscope now flags when a net assigns an IC pin a peripheral function its silicon can't route — for example a `UART5_TX` net on a pin whose alternate-function table only offers `UART5_RX`. It's reported as an error straight from the datasheet's pin table and names the likely swap (TX↔RX, SDA↔SCL). It deliberately does not judge signal *direction* across an interface — a direct UART crosses TX↔RX while a transceiver runs straight through — so it only fires on physically impossible pin assignments, never on wiring style.
- NewLED forward-current check. For each LED, Periscope computes the forward current from the supply rail, the series resistor, and the LED's rated forward voltage, and flags any channel whose current exceeds the LED's rated maximum. Each color of an RGB LED is checked separately, and a leg with no current-limiting resistor at all is called out as a caution.
- New"Not reviewed" list on the report. Components with no datasheet on file — for instance a do-not-populate footprint that isn't in the BOM — are now called out explicitly, so a mis-wired pin on an unreviewed part shows up as a known gap instead of being silently absent.
- NewFindings from these automatic checks carry an "Automated check" badge, so they're easy to tell apart from datasheet-review findings.
- June 8, 2026v2.3.3
Faster Reviews
Multi-chip designs now review several times faster — Periscope works through ICs in parallel instead of one at a time.
- ImprovedDatasheet extraction and schematic review now process multiple ICs at once, so reports on multi-IC projects come back substantially faster. The findings are unchanged — only the wait is shorter.
- May 26, 2026v2.3.2
Smarter RF Topology Review
Schematic review now reasons about *what each external part is for* before flagging it — catching valid bias, coupling, and matching circuits that previously looked like errors.
- ImprovedThe reviewer states the role of every external part on an IC pin (choke, blocking cap, divider, decoupling, matching) before judging the connection. Common RF topologies like bias-T (DC injected onto a coax through a choke, with the chip protected by an internal DC block and a downstream load doing the actual draw) are no longer flagged as errors against the chip.
- ImprovedStricter absolute-maximum-rating checks: the cited limit must come from the same pin under stress (a Vdd abs-max no longer counts against an RF or signal pin), and the inequality must be a strict exceed — equal-to-abs-max is at most a Warning.
- ImprovedSingle-concern deep dives are capped at two follow-up queries; concerns that can't be resolved in that budget are reported as Warnings with the unresolved question stated, so one suspect finding can't starve the rest of the IC review.
- ImprovedInferred rail voltages from the power-tree pass are no longer treated as ground truth by the schematic reviewer. Voltages set by net name (`+5V`, `+3V3`) or by user power-source hints are trusted as before; voltages the power-tree LLM guessed for an adjustable regulator output or propagated through inference are kept on the power-tree view for reference but excluded from review reasoning, so a single misread rail can't anchor a false-positive Error.
- ImprovedAfter each IC's review, a second pass normalizes findings against a fixed Error/Warning/Info rubric and merges any two findings that share a single root cause (e.g. "series resistor drops VIN" and "VOUT setpoint exceeds available VIN" are one defect, not two). Cuts run-to-run severity drift and avoids inflating the error count when one defect can be described from multiple angles.
- May 25, 2026v2.3.1
EDIF Netlist Support
EDIF 2.0.0 netlists upload alongside PADS-PCB, with a sub-design picker for files that contain more than one design. Schematic review is also more cautious about polarity / direction-control findings.
- NewUpload EDIF 2.0.0 (`.edn`) netlists directly. Format is auto-detected from the file contents — no need to convert to PADS-PCB first. Verified against Siemens xDX Designer exports.
- NewWhen an EDIF file contains multiple sub-designs, project setup shows a picker so you can choose which one to review. The picker auto-confirms when there's a single clean match against your BOM and only asks when it's ambiguous; unselected sub-designs are filtered out of the design graph.
- ImprovedStronger verification of differential and polarity pin assignments (USB D+/D−, TX/RX, IN+/IN−, anode/cathode) directly against the datasheet.
- ImprovedImproved support for bidirectional buffers and level translators (74xx245 and friends) — direction-control truth tables are factored into bus-contention analysis.
- ImprovedFindings that share a single root cause on the same chip are grouped into one combined finding.
- May 24, 2026v2.3.0
LCSC Part Number Support
JLCPCB-style BOMs with LCSC part numbers (e.g. `C12044`) now work out of the box — Periscope auto-detects the column, resolves each id to the real manufacturer part number, and shows you what it resolved to before the pipeline runs.
- NewLCSC part numbers in the manufacturer part number column are auto-detected at BOM upload and converted to real MPNs. Works with JLCPCB / EasyEDA exports without any column renaming.
- NewProject setup now shows the LCSC → MPN mapping on each IC row in the datasheet step (e.g. `C12044 → TP4057-42-SOT26-R`), so you can see what each LCSC id became before the pipeline starts.
- NewPassive specs (value, voltage, tolerance, dielectric, package) are resolved from the LCSC catalog during project setup, with per-row progress and status — you see what's resolved before spending credits on the full pipeline.
- ImprovedDatasheet auto-fetch hit rate is dramatically higher on LCSC BOMs, because DigiKey now sees real MPNs instead of `C…` ids.
- May 22, 2026v2.2.1
Easier Netlist Uploads & Xpedition Support
Tabbed file upload guide with per-tool instructions, Xpedition coverage, and direct `.net` / `.txt` uploads.
- NewDocumentation for exporting a PADS-PCB netlist from Siemens Xpedition Designer / DxDesigner (VX.2.x, including VX.2.14).
- ImprovedFile upload guide reorganized into tabs — KiCad, Altium, OrCAD/Allegro, Xpedition, EasyEDA, and Eagle each get their own panel.
- ImprovedNetlist uploads now accept `.asc`, `.net`, `.NET`, and `.txt` directly — no more renaming required before upload.
- ImprovedFile guide now calls out the difference between the PADS-PCB schematic netlist Periscope needs and the `!PADS-POWERPCB` PCB-layout dump that some EDA tools also save as `.asc`.
- May 20, 2026v2.2.0
Cross-chip Datasheet Review
The reviewer now reads neighbor-chip datasheets to verify cross-chip constraints, with fewer false errors when a spec can't be confirmed.
- ImprovedSchematic review now cross-references connected chips: when an issue depends on a neighbor's spec (5V tolerance, absolute-max, drive strength), the reviewer pulls the relevant pages from that chip's datasheet before flagging it.
- ImprovedFewer false errors on cross-chip findings: if a counterpart spec can't be confirmed from the datasheet, the issue is reported as a Warning with the unverified assumption stated — instead of being overstated as an Error.
- FixedSome review findings could occasionally fail to appear in the report.
- May 19, 2026v2.1.0
Datasheet Reference Highlighting
Datasheet citations now highlight the exact supporting sentence on the PDF page, with more reliable page numbers on large datasheets.
- ImprovedDatasheet references now highlight the exact supporting sentence on the PDF page, not just the page number.
- FixedDatasheet citations landing on the wrong page for large (multi-hundred-page) datasheets.
- FixedReviewed findings losing their checked state on page refresh.
- May 1, 2026v2.0.1
Flagging & Onboarding
One-click flags on finding cards, an onboarding survey for new users, and small UI polish.
- NewReport findings with one click via the flag button on any finding card.
- NewOnboarding survey for new users to help us improve the product.
- ImprovedComment input box now fills available width.
- April 29, 2026v2.0.0
Public Changelog
- NewInitial public changelog.