Parts that heat up, wear out, and burn out like the real ones
Junction temperature, thermal shutdown, energy-based damage, real pull-up resistors on microcontrollers, honest floating-input warnings, and batteries that run down.

A simulator that never lets anything break teaches a quiet lie: that a 2x overload and a 100x overload are the same mistake. This release makes the physics tell the truth, in both directions. Parts fail the way real parts fail, and marginal designs get warnings instead of silent success.
Heat is real now
Diode, LED, zener, and transistor behaviour now derives from the ambient temperature you set in the Environment panel, with proper junction physics rather than a hardcoded room-temperature constant. Supported resistors, LEDs, op-amps, and regulators heat up from their own dissipation with package-accurate time constants. Push a 7805 past what its package can shed and it enters reversible thermal shutdown, with a diagnostic telling you to reduce the load and let it cool. It used to regulate 20 W forever without complaint, which no 7805 in history has done.
The LDR was replaced with a proper GL5528-class photoconductor law (the old curve was off by roughly 10x at indoor light levels), and the thermistor now self-heats slightly under load, as real NTCs do.
Damage with a memory
Overload damage for resistors, fuses, LEDs, potentiometers, and resistor arrays now accumulates stress energy instead of running a fixed-duration timer. A severe overload kills the part quickly, a marginal one takes much longer, and stress bleeds off if you back away in time. PTC resettable fuses trip on the correct physics and only recover once they have actually cooled. Brownout conditions are recoverable. New live warnings cover LED, diode, transistor, and fuse overcurrent, and the LED series-resistor check now judges magnitude rather than mere presence, so a 1 Ω resistor on a 12 V supply no longer counts as protection.
Inputs that float now say so
Microcontroller pull-ups became real: INPUT_PULLUP on the Arduino boards and Pin.PULL_UP on the RP2040 place actual resistors on actual rails, so the classic button-to-ground circuit reads HIGH when idle instead of hovering near zero. Where a high-impedance input genuinely floats, the Inspector stops printing confident three-decimal voltages: floating readings are marked as numerical artifacts, and a warning explains that a real floating input responds to leakage and nearby fields, with the fix spelled out (give the input a DC path).
Underneath, the solver's internal shunt dropped from 1 GΩ to 1 TΩ, which removes a systematic error that read 10 MΩ nodes about 1% low, and it no longer papers over near-singular systems; invalid solves surface as status instead of plausible-looking numbers.
Batteries run down
The battery pack, 9 V battery, and coin cell now follow real discharge curves, including capacity, internal-resistance growth, and cold-temperature behaviour. A circuit that draws 200 mA from a coin cell will now teach you exactly why that was never going to work.
Fixes and improvements
- Every part now carries an Included / Not included model disclosure, so you can see what the simulation does and does not cover before trusting it.
- The wire-resistance control was removed because it never did anything; wires are ideal conductors and now say so.
- Board names were tightened for accuracy: Arduino UNO R3, Arduino Nano (classic), BBC micro:bit V1, and the RP2040 MicroPython Board, and a public legal notices page lists third-party licences.
- Datasheet pages with wrong failure thresholds were corrected.
The boundaries of the model, including what deliberately is not simulated, are published at docs.devoltapp.com on each part's page. That honesty is the feature.