Repository navigation
Qucs-S enhanced v26.1.4
Qucs-S enhanced 26.1.4
Claude Code in Qucs-S: a dock where you talk with Claude Code about your
circuits, simulations and files - and where Claude can open, change and
simulate schematics in the window in front of you. One bundle per platform
is attached (macOS Apple Silicon and Intel, Linux x86_64 and arm64, Windows
x64 and arm64); SHA256SUMS.txt lists them. The macOS bundles are ad-hoc
signed, not notarised: right-click the app and choose Open on first launch.
No bundle includes ngspice: install it separately and point Application
Settings > Locations > Ngspice at it if it is not on PATH (on Windows at
ngspice_con.exe). Nor Claude Code: the dock needs the claude program
installed (claude.com/claude-code) and signed in once in a terminal.
New in 26.1.4
- Claude's Qucs-S tools, reworked from the suggestions of a Claude session
that used them (docs/feature_gaps/2026-09-27-claude-mcp-architecture.md):
set_schematic takes parts and wires as JSON, checked against each type;
"preview": true and diff; get_netlist's netlist-to-part map; run_script
(JavaScript calling the tools, atomic when asked); the schematic, its
netlist, the dataset and the window's state as MCP resources, with change
notifications; structured results; MCP annotations, and what cannot be
undone asked about every time; questions to you in the dock before a file
is written over or unsaved changes are lost; the 22 most used tools in
every turn and short descriptions (65 tools about 9.6k tokens, from
17.5k). - qucs-s --mcp-server: the same tools with no window, over stdio, for any
MCP client ("claude mcp add qucs -- qucs-s --mcp-server"). On a machine
with no simulator installed, get_netlist and simulate say so and how to
choose one. - The Windows bundles now include Qt Qml (for run_script); the macOS disk
image grew by 2 MB for it. - From a second round of Claude's feedback on the tools
(docs/feature_gaps/2026-09-28-claude-mcp-api-feedback.md): arrange lays
a schematic out again by signal flow - parts in columns, two-pin parts
turned as schematics show them, every wire redrawn - keeping every net
(one step to undo); connect to "ground" gives a pin its own ground
symbol; set_schematic's .sch text has its values checked; an equation
block's answer lists its equations; a file edit not loaded (unsaved
changes) is told to Claude; the tools found when needed carry their full
description, and all descriptions are in plain English; get_netlist says
why a netlist could not be written, and the next one no longer leaves a
part out without a word. - From a third round (docs/feature_gaps/2026-09-28-claude-mcp-api-feedback-
round2.md): a ground's ref (GND#2) works in every tool that takes a part's
name; a number mistyped (1kk) is refused; add_analysis plots an
expression through a NutmegEq; simulate and tune save an untitled
schematic in the scratch folder; a preview leaves no file behind; a file
changed on disk is told as its file's, not the user's, even when changed
just after a save; every tool field is described. Fixed on the way: a
schematic saved with Save As did not know its new folder, so a
subcircuit or library beside it was not found until it was reopened. - The open findings of the bug hunts fixed: a spreadsheet, PDF or ZIP
archive Claude changes is loaded again, and Save asks before writing
over another program's changes; a PDF is followed through a delete;
nothing is written into a folder opened as a project (its Scratch is in
the cache directory), and the workspace and home folders are not
projects; /resume finds sessions through a symlink; a sheet named with
"%1" saves whole; dollars in indented or HTML code are not math; values
a damaged file holds (a callout's tip, xlsx columns and dates, a
waveform's cycles, a dimension's scale) stay in range; the wire healer
joins a node a lengthened diagonal wire lies over, and keeps a label on
a pin that is not there; a library named by its author's path is found
in user_lib beside the schematic. - The 32 findings of an hour of fuzzing Claude's tools
(docs/bug_hunts/2026-09-28-claude-tools.md) fixed: a call that comes
during a batch, script, tune or preview waits its turn, so a rollback
no longer takes it away; a source keeps its polarity through the JSON
form, and all 218 examples that netlist go through it unchanged; nodes
of a netlist imported in any case are one net; no message box holds up
a tool call; names are checked as the dialogs check them; a dataset
nested 100,000 deep and an eye diagram that never ended are refused. - ngspice_commands: a tool (and the resource qucs://ngspice-commands)
that tells Claude every command ngspice has - all 165 of help all and
the periodic analyses' dot cards - each in a line by category, with its
syntax, an example and how Qucs-S writes it. It asks the ngspice of the
settings what it has and says what that one lacks (a stock ngspice has
none of the 38 the enhanced build adds). scripts/check-ngspice-
examples.py runs every example through any ngspice. - From a fourth round (docs/feature_gaps/2026-09-28-claude-mcp-api-
feedback-round3.md): tune no longer writes "10k 330" into a part of
R = 330 (a number alone was read as its own unit); a SPICE run writes
its dataset where the schematic's DataSet property says, so a schematic
copied outside Qucs-S is read where it was simulated; get_dataset says
when a dataset is stale (the last run failed, or the netlist changed
since); a tool refuses an argument it does not have and names the one
meant; create_subcircuit keeps a ground on a wire stub, and a label on
a pin, in place; a ringing signal's frequency is measured where it
settles. - arrange in time proportional to the parts - 2,000 parts in a third of
a second (24 s before), 20,000 in about 2 s - and the same layout every
time (two runs differed on 66 of the 251 examples): a simulation block
no longer changes size at its first paint. A whole read of a schematic
over 200 parts lists the first 50 of each kind (236 KB to 40 KB). - From a fifth round (docs/feature_gaps/2026-09-28-claude-mcp-api-
feedback-round4.md): saving a subcircuit whose new symbol moves an
instance's pins joins each pin to its net again - a wire that ended on
it is drawn on to it, a port numbered anew is followed by its name -
and the parent's nets are compared before and after; a preview is no
edit (no stale dataset after one); an unknown key inside an argument (a
set_schematic part's rotaton) is refused as one at the top is, and
replace_component's records and redo's to are taken again - a CI check
now compares every argument a tool reads with its schema; tune follows
the value or its logarithm, whichever fits the runs, and sets a listed
value as written; simulate puts what Check Schematic found first;
names that are no file's name are refused. qucs-s --mcp-server
--workspace DIR gives a run a workspace of its own. - From end-to-end scenarios of the tools (docs/feature_gaps/2026-09-29-
claude-mcp-e2e-scenarios.md): create_subcircuit gives every part of the
group on a net that goes on outside the net's label inside (a divider's
second resistor was on nothing, and the divider read 5 V); tune draws
its secant on the value or its logarithm and the measurement or its
logarithm, whichever fits the runs (a bandwidth over a capacitance: 3
runs, not 9); check_schematic says when a library part or a subcircuit
could not be loaded. - Application Settings > Workspace: the workspace as it was, at the next
start - the project, the documents in their panes (the split, the
sizes, the one in front), the panels and tool bars, the window's size
and place - each part on or off; Forget It clears what is kept, and
after a run that did not end cleanly it asks first. The workspace
folder and "any folder is a project" moved there from Locations. - Edit Diagram Properties > Theme: the colour of each part of a diagram -
its background, the plot area, the frame, the grid (moved from
Properties), each axis (ticks, numbers, label), the title, a table's
texts, the legend's background, border and text. Each is Automatic -
as before: nothing under it on light paper, a white card on dark
paper, every part fitted to the background it is on - or a colour of
your own, with transparency. Start from Light, Dark or No background,
see it in a preview, and save it as the default for new diagrams.
Saved with the diagram; files without colours are saved as before.
Claude's add_diagram and edit_diagram take a theme too. - Edit Diagram Properties > Import: data files read into datasets beside
the schematic, as many as wanted - CSV, TSV, Excel (.xlsx, a sheet of
it), text in columns, NumPy .npy and .npz, Touchstone .s1p to .snp,
Qucs-S datasets - and listed in the Data tab next to the simulation's,
so measured and simulated curves share a diagram. Read again when the
file changes; the column that is x and a workbook's sheet chosen there. - Edit Diagram Properties > Export: a dataset's variables written to a
file for another program - CSV, TSV, an Excel workbook (a sheet for
each sweep), text in columns, NumPy arrays (.npz) or a Qucs-S dataset.
Check them, or take the diagram's traces; variables over one sweep make
a table, a row for each point, and a complex one two columns (real and
imaginary, magnitude and phase, or dB and phase). The tab says what
would be written before it is. - From the fifth and sixth rounds of Claude's feedback (docs/feature_gaps/
2026-09-29-claude-mcp-api-feedback-round6.md): create_subcircuit of parts
in a row keeps every net (a divider's R1 and R2 in one row landed both
pins of the instance on one wire, and v(mid) read 0 V); a part placed
beside another (near), a connect round a side or through points, a
label's text where it is asked, arrange keeping the parts where they are,
with an op-amp's feedback below or above it, or its supplies as labels;
a library part's pins named as its model names them (connect U1.inp);
brief answers from batch and simulate, before and after in one simulate
(compare), tune on two to four parts at once, and undo for the files a
call wrote; Check Schematic warns of an op-amp whose supplies nothing
powers and notes a DC source with its + on ground. - Library models under ngspice: a value written with a space keeps its
unit (C="30 pF" was 30 farads), a library Idc flows as a schematic's
does (the 741 macromodels sat at the negative rail), and a part whose
model is one component line (2,732 transistors, diodes and varactors)
is placed as that component. Every library part was run under ngspice:
4,039 of 4,224 pass, find_library_component says how each fared, and a
nightly CI job keeps the list. Ten parts' model names fixed. - From the seventh round (docs/feature_gaps/2026-09-29-claude-mcp-api-
feedback-round7.md): wires go round every part's symbol - a way a grid
step at a time where the usual shapes are blocked - not over an op-amp
or through a ground symbol; arrange draws a feedback network as one (Rg
standing under Rf, its ground below) and puts each label on the longest
free stretch of its net; replace_component no longer maps named pins by
number to a part without those names; the uA741's, AD825's and LM3886's
pins have names. - Check Schematic honours "a schematic must have a ground symbol" off
(Simulators Settings) and checks again when the settings change; reads
names without case for the SPICE simulators (labels Out and out are one
net, r1 beside R1 stops ngspice: an error); a part switched to shorted
joins its pins; a library part that cannot load is told with its cause
(docs/bug_hunts/2026-09-29-schematic-check.md). - Check Schematic as a design review: voltage sources in parallel or
shorted by a wire, an inductor across a source, a capacitor straight
across a pulse source, a negative capacitance, a 0 Ohm part, an AC
analysis with nothing to drive it, a NutmegEq reading a node no net
has, two names on one net, an op-amp input, a base or a gate with no
DC bias, an op-amp loaded under 1 kOhm; check_schematic's 'subcircuits'
walks into every subcircuit. Nothing found does not mean the circuit
works, and it says so. - From Claude's assessment after seven rounds (docs/feature_gaps/
2026-09-29-claude-mcp-api-assessment.md): describe_part (a library
part's pins with their sides and roles, its model, how it was tested);
max_chars on every tool, the answer cut and still JSON; tune's 'hold'
(limits a value must keep while it reaches its target) and 'compare'
(every measurement before and after); arrange's 'straighten' (a part
nudged a few grid steps so a wire between two pins that face each
other runs straight). - Library benches: each op-amp, transistor, FET and diode is put in a
bench under ngspice and its numbers checked against a range - 1,798
parts, 1,786 pass; describe_part and find_library_component say how
each fared, and the nightly job fails when a bench that passed fails. - From the eighth and ninth rounds: arrange finds a subcircuit's output
by its name, reads supplies by their names' sign, and gives bench
numbers with units; the 741 bench is a scenario of its own; a guide to
working with the tools is in the instructions. - The 26 findings of a bug hunt of the tools and Check Schematic
(docs/bug_hunts/2026-09-29-tools-after-round-9.md): a subcircuit that
uses itself is an error; source loops take in probes, controlled
sources and an ideal op-amp's output; every argument's JSON type is
checked against its schema; max_chars keeps JSON whole; library parts
named twice renamed. - From Claude's wishlist of 30 September (docs/feature_gaps/2026-09-30-
claude-mcp-wishlist.md): set_subcircuit_parameters sets a subcircuit's
parameters, make_symbol keeps them, and the instances in open
schematics follow them by name when it is saved (taking one away
wiped the instances' others, and taking all away their file); Vpulse
and Ipulse are one pulse under ngspice (with no period ngspice repeated
it, high most of the time); Vac and Iac have ACmag, an AC magnitude of
their own, and Check Schematic warns when an AC analysis's sources all
have magnitude 0, and when an equation is named as a net (under ngspice
it wrote over the node's voltage); the .va and .osdi files beside a
schematic are built and loaded with no project open, and a module
ngspice did not get is explained; each run keeps the netlist it was
given, so get_dataset tells a stale dataset exactly - of a copy,
outside a project, after tune without apply - and 'stale certain' says
so; get_dialog reads a tree (Find and Replace's results);
add_diagram's document: "data_display"; replace_component refuses a
by-number map that goes against the pins' roles and places (the
OpAmp's + input went to a 741's output) and offers one. - From the tenth and eleventh rounds: a preview leaves no data display
behind; an untitled schematic simulated in a project runs in
Scratch/untitled, and one outside the project writes nothing into it;
clean_scratch no longer trashes the scratch folder that schematics of
no project share; max_chars is taken as a text of digits too, as the
Claude Code panel sends it. - A data file plotted through Claude's tools (docs/feature_gaps/2026-09-30-
claude-mcp-csv-import.md): import_data brings a CSV, a workbook, NumPy
or Touchstone file in as a dataset beside the schematic, as the Import
tab does, and reads it again or removes it; an imported dataset's
traces are name:variable with no simulator's prefix (add_diagram,
add_trace and edit_trace gave them ngspice/, which read a file that is
never there), and the "no data" texts, list_documents and get_dataset
say where it came from and how its traces are named.
Claude Code dock
- View > Claude Code, or the Claude chip in the status bar, opens a
conversation with Claude Code beside the schematic. Claude works in the
workspace folder unless another is chosen in the dock, and the document
in front goes along with a prompt when its chip is on. Replies are drawn
as they are written: Markdown, code on a shade, and TeX math between
$...$ and$$...$$ typeset - fractions, roots, sums and integrals with
their limits, matrices, cases, aligned equations, Greek, units. - Conversations in tabs: New, or + by the tabs, opens another beside the
others, each with its own Claude Code session; a tab shows what its
conversation is about and how it stands, and closing it ends that
session. Right-click a tab (or double-click it) to rename it in place;
Reset Name gives it back its first prompt. The status bar chip says what
Claude is doing - thinking, the tool it runs, needs you - and leads to a
conversation that waits. - The tools Claude uses in a row fold into one line ("Ran 3 commands,
read amp.sch") that opens on a click, each tool on its whole command and
what it gave; each turn ends with its time and what it took. - What a turn took, when chosen: the tokens of the prompt and of the
conversation so far (every model's; a tooltip tells input, output and
the cache read and written) and their cost. The dock's menu (⋯) > Show
Usage has the four switches - all off at first - for every
conversation, its exports and /status. - What Claude may do: Ask Before Acting (a card asks before a command runs
or a file changes: Allow, Allow All Edits, Deny), Accept Edits, Auto
(Claude acts on its own and a safety check stops risky actions; the menu
greys it out for models without it), Plan Only, Bypass Permissions. - The model: the models the installed claude offers, named by what they
are ("Fable 5.1", "Opus 5 with 1M context"), the newest of each family it
does not offer yet (Opus 5.5, which needs Claude Code 2.1.280 or newer),
or any other by name. The header shows the model and the mode. Another
model or mode chosen in a conversation is taken as Claude Code runs,
from the next prompt on, and the header names it at once. - Claude drives the window. Qucs-S offers Claude tools of its own - an MCP
server inside Qucs-S, over the same stream as the conversation - to open,
show, save and close documents; read the schematic in front (its parts,
each pin's place and net, the nets, or its .sch text); change it as you
watch: place components and set their properties, move, turn, mirror and
rename them, wire pin to pin, label nets, delete, replace whole sections
from text, undo and redo, each change one step of Edit > Undo; take a
screenshot to see what it did; use any menu action and fill in and
answer the dialog it opens; run a simulation and read its outcome. Tools
that only look are used without asking; the first change asks, and Allow
Qucs-S Control lets the rest of the conversation go on (as do the Accept
Edits, Auto and Bypass modes). - Claude's edits keep the circuit as it was meant to be. A wire is laid
around what it must not touch - a wire joins every pin and junction it
runs over - and kept only when it joins its two ends' nets and nothing
else; otherwise nothing is drawn and Claude is told why. A part moved,
turned or mirrored keeps each pin on its net: its wires follow, wires of
other nets under its new pins are moved aside, and an edit that cannot
keep every net is not made. - Claude reads results as numbers, not only as pictures. It reads a
dataset's variables and measures them on the full data - values at a
given time or frequency, min, max, mean and RMS, rise and fall time,
overshoot, settling time, period, frequency, duty cycle, crossings of a
level, -3 dB bandwidth - each curve of a parameter sweep on its own. - A simulation's outcome is told truly: it succeeded when the simulator
ran to its end, reported no error and exited with 0 (ngspice's dataset
is name.dat.ngspice - before, every ngspice run was reported as failed).
Each error and warning comes with the netlist line it names, the part
of the schematic and the node; the traces left without data are named
with the reason. A run's dataset can be kept under a name and plotted
beside the next run. Claude also reads the netlist. - Diagrams by name: Claude places and changes diagrams and their traces by
their fields - type, place, size, each axis's label, log scale, limits,
grid, legend; each trace's variable, color, thickness, style, axis,
markers - and every trace shows its data at once (diagrams replaced as
text used to go blank until the document was reopened). Simulation >
Reload Simulation Data reads the datasets again. - Renaming a net renames the traces, data displays and equations that show
its voltage; taking a label away warns of the traces it leaves behind.
Claude can look up a component type: its properties in order with
defaults, units and meaning, its netlist line, and its traps (a Vpulse
is a single pulse under SPICE; Vrect repeats). - Export a conversation: the dock's menu (⋯) > Export Conversation saves
all of it - every prompt, reply and tool with its input and output - as
a PDF (drawn as in the dock, on paper, math typeset, a page number on
each page), Markdown (the replies as Claude wrote them) or plain text.
Include Tool Details (on by default, remembered) decides whether the
contents of the boxes that fold go along; off, a row of tools is its
one summary line and the export is the chat itself. - Pin a conversation to a schematic, if you want to (off by default): the
pin beside the document chip pins the schematic in front, ⋯ > Pin to a
Schematic any open one. Pinned, its prompts name that schematic rather
than the tab in front, Claude's Qucs-S tools act on it when given no
document, and a menu action brings it to the front first - so two
conversations can work on two schematics side by side. The chip shows
the pin (a click unpins it), and a Save As keeps it pinned. - Quicker: the 22 Qucs-S tools most sessions use are loaded in every
turn and the others found by Claude Code's tool search when a task
needs them; each description is two or three sentences (all 65 tools
about 9.6k tokens, from 17.5k) and describe_tool gives a tool's whole
description. Answers are compact JSON, and structured
(structuredContent); batch runs many tools in one call - place and wire
a circuit in one turn, each change still one step to undo. A menu
action answers as soon as it is over. - Conversations kept and resumed: those open when Qucs-S closes come back
when it opens again, and the next prompt continues their Claude Code
session (⋯ > Reopen Conversations at Start turns this off). /resume, or
⋯ > Resume a Conversation…, lists the kept ones and Claude Code's own
sessions of the folder to search and go on with; /resume
goes on with one at once. - Slash commands: typing / lists them. The dock runs /clear, /new,
/resume, /quit, /exit, /help, /model, /permissions, /rename, /export,
/status, /pin and /unpin; Claude Code's own (/compact, /context, /cost,
/init, your skills...) are sent to it as typed. - Results Claude can trust: a curve in dB (a Nutmeg equation's db(...),
written as complex numbers with no imaginary part) keeps its sign -
read as a magnitude, -44 dB became +44 and its bandwidth 224 MHz for
6.1; each variable says its units (from its name, or the equation that
defines it); bandwidth is 3 dB below the peak in dB, the peak over
sqrt(2) of a magnitude, and refused on a curve that is neither. A DC
simulation's operating point is read as one: each node's value and,
with ngspice, each device's id, gm, vgs, ... under its component; a DC
bias run's files are removed before every run, never read a day late. - Claude is told what changed since its last call that it did not change
itself: your edits, another conversation's, a simulation you ran,
documents opened or closed; get_state gives each document's revision
and who made its last edit. - Markers: add_marker at an x, the peak, 3 dB below it or a crossing
(the exact point found, the marker on the nearest sample), with its
label, precision, format, indicator and colours; edit_marker,
delete_marker; get_schematic lists them. - get_schematic lists the properties not at their defaults (or those
shown, or all), the parts named or in a region, at most 200 with what
is left out; set_schematic says what it read of each section, and
describe_format explains every field of a .sch line. export_netlist
writes a SPICE or CDL netlist to a file; get_state lists the panes and
move_to_pane arranges them; screenshot takes the document on white
paper, the canvas as you see it, or the whole window and its dialogs. - Drawing: add_painting and edit_painting draw and change texts, arrows,
lines, boxes, text boxes and callouts, tables, dimensions and TeX
formulas by their fields - on a schematic, or on its symbol - each one
step to undo; delete and select take them by number, and get_schematic
lists them by their fields. - The measurements an amplifier is judged by: THD on a transient (each
harmonic's amplitude over the last whole periods of the fundamental,
as ngspice's .four), and on a loop gain its gain, phase margin and gain
margin. - list_documents lists the files of the workspace or a project - kinds,
sizes, times, which dataset is which schematic's; get_schematic's
overview tells a 24,000-part schematic in 721 bytes; export_image
writes a picture of a schematic, or of one diagram alone, without the
export dialog; set_simulator chooses the simulator. An atomic batch is
all or nothing (one that stops says how many changes stay, and undo
takes steps); simulate says when the schematic was changed while it
ran. - Wiring Claude can trust: check_schematic tells what a simulation would
fail on or not do as meant, each with its place - and Simulation >
Check Schematic now finds it too: a wire's end or a pin on another
net's wire without a junction, parts on no ground (floating), nets that
reach ground only through capacitors (no DC path); crossings without a
junction and a label on one pin alone as notes. A wire drawn across
another net's, or a part put down on a wire, says so at once. - The operating point in one call: simulate with operating_point runs the
DC bias of a transient-only schematic too and returns node voltages and
each transistor's gm, ic, vbe, ... with re, rpi, beta and ro worked out. - A part's text shown, hidden and moved by edit_component, without
rewriting its line; move moves a group with its wiring; create_subcircuit
makes parts a subcircuit; a subcircuit's parameters read and set on its
symbol; add_analysis adds an AC, transient, DC or sweep analysis with its
plot; get_dataset reads expressions (v(out)/v(in)) and compares a run
with a kept one; diagrams go where there is room; grounds are GND#1,
GND#2; set_schematic refuses a component line with a value too many. - Tune in one call: tune sets a part's value, simulates and measures until
a number comes out right (the emitter at 5 V, the peaking at 1 dB) -
false position on a log scale, a few runs - or measures a table of
values; the value found is one step to undo. - Equations by name: add_component and edit_component set an equation
block's equations (Eqn, NutmegEq, .PARAM, .OPTIONS, ...) and a Monte
Carlo's records and specs, with no line written by hand. A diagram has
a title that moves with it (and a Title field in its dialog); a marker
goes 3 dB below 0 dB or the DC value; renaming a part renames its traces
and equations. - simulate runs Check Schematic first (its warnings head the log), takes
a simulator for one run, and waits for Qucsator too. What the user
changes between Claude's calls is told part by part (R2: R 47k -> 67k);
undo_history tells the steps in words and undo goes to one. "selection"
takes what the user selected. - build_verilog_a compiles a .va at once, each error with its line;
describe_component_type gives a Verilog-A module's parameters and a
.model card. find_library_component finds a part by its values (an NPN
with Bf near 200); read_pdf reads a datasheet; import_netlist makes a
schematic of a SPICE netlist; make_symbol draws a subcircuit's symbol on
four sides; new_project, open_project, copy_document and clean_scratch
tend the files; a schematic's data display takes a report's plots. - get_dataset measures a spectrum (fft), an eye and a Monte Carlo
family's distribution, gives a table across a sweep, and reads .csv and
.xlsx results. Relative paths come from the open project, and a
document is found by its file's name alone. - replace_component puts a part of another type in one's place - a
built-in OpAmp for a subcircuit - its pins mapped by number or name to
the old pins' nets, turned, mirrored and placed so no wire runs across
it; one step to undo. - An .OPTIONS block takes flags (noinit, keepopinfo). A symbol's port can
show its instances a label beside the pin instead of the net's name
("+", "-", or nothing) - also by a double-click on the port in the
symbol editor. The schematic's tools switch a document back from its
symbol themselves, and say so. - describe_component_type "Verilog-A" gives a module OpenVAF compiles as
it is, with the rules it wants (attributes before the declaration,
instance parameters, a DC path for every node); for any type, the
hidden properties that still go into the netlist (an OpAmp's Umax).
save_document of a subcircuit says which open schematics' instances
took its new symbol and which pins moved off their wires.
get_schematic gives the box of each shown text of a part, and
open_document says when a line has more values than its type. - set_schematic takes parts and wires as JSON, each property by its name
and checked against the type - a value too many can no longer shift
the rest - and get_schematic gives that form. A value that does not read
as a number, and a type's traps (a Vpulse is one pulse, an OpAmp clips
at Umax), are told as a part is placed or edited. - "preview": true on the tools that change a schematic says what a change
would do and does nothing (a batch too); diff compares a schematic with
its saved file, a step of its history or another file; get_netlist with
"map": true ties each netlist line to its part and each node to its
pins. run_script runs a short JavaScript program that calls the tools,
with loops and conditions, in one turn - put back when it fails, if
atomic. - What cannot be undone - a file written over, unsaved changes discarded,
clean_scratch - is asked about every time, even after Allow Qucs-S
Control (but in Auto and Bypass), and before writing over a file or
closing one with unsaved changes Qucs-S asks you in the dock with a
button for each answer (MCP elicitation). Each tool carries MCP's
annotations. The schematic's text, its netlist and netlist map, the
dataset and the window's state are MCP resources, read and subscribed
to. - Without the window: qucs-s --mcp-server serves the same tools over
stdio for any MCP client - "claude mcp add qucs -- qucs-s --mcp-server"
(on macOS /Applications/qucs-s.app/Contents/MacOS/qucs-s) - for batch
jobs, CI checks of schematics or subagents working on copies. - A schematic Claude changed is loaded again when it has no unsaved
changes. The dock runs down to the status bar, and the message,
simulation and terminal docks at the bottom end where it begins. - Git status above the prompt, as in the Claude desktop app: when the
open project (or the conversation's folder) is in a git repository, a
bar shows its folder, the branch and the lines changed since the branch
left the default one ("+2,096 -3", committed or not, new files too),
which open the changes file by file with their diffs. Create PR asks
Claude to commit, push and open the pull request with gh; once there is
one, PR #12 opens it. Its menu: a draft pull request, Commit Changes,
Push Branch, Show Changes. The ⋯ menu's Show Git Status turns it off. - Each prompt has an Edit: it goes back into the composer, and sent, the
conversation goes back to where it stood before it (Claude Code resumes
its session up to there, as a new one, so the old one stays whole).
Files Claude changed since stay as they are, and the dock says so.
Large schematics
- A schematic of thousands of components stays responsive. The canvas
draws only what reaches the part being painted (a corner of a
24,000-component ladder: 166 ms to 6 ms); zoomed out so far that text
would be a pixel or two tall, it leaves out component names and values,
symbol texts and pin names (prints and exports keep them); and a
selection rectangle, a drag, a wire being drawn or a part being placed
draws the rest of the schematic once and, at each step, only what moves:
4 to 13 ms a step, where each took 170 ms. A drag's preview of the wires
the drop will mend looks at what moved, not at the whole schematic.
Text editor
- Syntax highlighting by the file's suffix: C/C++, JSON, Markdown,
Octave/MATLAB, Python, Qucs netlists, shell scripts, SPICE (.cir, .sp,
.lib, .inc, .mod...), Verilog and SystemVerilog, Verilog-A, VHDL and
XML. Strings and comments over several lines too, and a # in a string
is not a comment; Comment/Uncomment uses each language's mark. - A button in the status bar names the language of the text document in
front; its menu chooses another, kept for every file of that suffix
(open ones, later ones, after a restart) until Back to the Default. - Application Settings > Source Code Editor: a radio button per language;
the one chosen shows its styles - a colour, bold and italic each - on a
preview. OK or Apply saves the changes of every language, and the open
documents take them at once.
Markdown
- A .md file opens in a tab of its own: its text, highlighted and edited
as any text document, and the text rendered - GitHub's Markdown
(headings, lists, task lists, tables, code, links, images) and TeX math
typeset. Edit, Split (side by side, scrolling together) or Preview; the
mode chosen is kept. Links to a heading scroll to it; to a file, open it.
Spreadsheets
- .csv, .tsv and .xlsx files open in a table, read and written by Qucs-S
itself. The cell in front edited above the table or in it; undo and
redo; cut, copy and paste as tab-separated text (with other
spreadsheets); Delete clears. - A CSV file keeps its delimiter (detected), quotes, encoding and line
ends; its rows and columns are inserted and deleted. - A workbook shows its sheets in tabs, column widths, merged cells,
numbers, dates, booleans, errors and formulas by their values. Saved,
it keeps all but the cells changed as it was - formatting, charts,
names, the other sheets - and Excel calculates its formulas when it
opens it (Qucs-S does not). Save As writes CSV, TSV or a workbook.
The old .xls is not read.
Tuner
- The tuner is a dock of the main window - beside the simulation output,
or floated - not a separate window; closing the dock stops tuning. Esc
in the tuner closes it, elsewhere it is the window's. Closing no longer
asks whether to keep values nobody changed.
Content panel
- A Text category, right before Others, lists the .txt files.
- Application Settings > Contents: a row per category with the patterns
of the files it lists (*.txt, .txt or txt, or names with wildcards). A
file goes under the first category that matches it; Others has *, what
no other took. Restore Default Patterns puts the defaults back. - Categories of your own: the same tab's Your categories table adds,
names, removes and orders them, each with its patterns (*.s2p, .s4p,
touchstone). They are listed after Text and before Others, take what
no category above them took, and go with Export and Import Settings.
Projects
- Application Settings > Locations > Projects: Any folder is a project,
not only one named NAME_prj (off by default). On, the workspace's
folders are its projects (all but user_lib and hidden ones), Import
Project and Link Project take a folder under the name it has, Open
Project and a folder dropped on the window open any folder as the
project, and New Project names the folder as typed. NAME_prj folders
are projects either way.
Markers
- A marker's label is drawn on the paper it is on - readable in the dark
theme, where it was a dark box around black text - and its dialog
chooses the colours of its text and its background (the background with
transparency too; Reset goes back to automatic). Its Transparent
background box is in sight again, and its indicator (off, square,
triangle) is saved with it at last. - A marker has a number format of its own (or its diagram's), for every
number it writes - complex values and a Smith chart's impedance too.
Toolbars
- View > Toolbars > Lock Toolbars (also in the right-click menu of the
toolbars and in Application Settings > Appearance) keeps the toolbars
where they are: no handles, no accidental drags; one left floating comes
back. Remembered between sessions; View > Toolbars also shows or hides
each toolbar.
File Browser
- A File Browser tab in the left panel shows the file system in six views:
Tree, List (a folder opened with a double-click), Icons, Details (size,
kind, date, sorted by any), Columns with a preview, and Recent
Documents. Every file Qucs-S knows has an icon of its own - schematics,
symbols, data displays, datasets, SPICE netlists and libraries,
Verilog-A and HDL sources, OSDI models, Touchstone files, scripts -
and so do common files; project folders carry a badge. Back, forward,
up, home, places and the path as buttons (Ctrl+Shift+G to type one), a
filter, Qucs-S files only, hidden files; a double-click opens a file as
the Content panel does, and the menu opens it with the system, shows it
in the file manager, copies its path, renames it, makes a folder or
moves it to the trash. - Drag and drop: entries (several at once) dragged onto a folder, beside
the rows or onto a button of the path move there - copied with Option
(Ctrl elsewhere) or to another disk; from the Finder or the Explorer,
copied in. Where it would go is lit up, a folder held under the drag
opens, a name taken already is asked about (replace, keep both, skip),
and documents open from what moved follow it.
Paintings
- Thirteen more in the component panel: Rounded Rectangle (and filled),
Triangle, Regular Polygon, Star, Brace (curly, square, round),
Waveform (sine, square, triangle, sawtooth, pulse, damped sine), Text
Box, Note, Callout (with a pointer), Table, Dimension (a distance with
arrows and its length, scaled with a unit) and Formula (TeX math
typeset). They turn, mirror and resize by their handles, each has a
dialog with a preview, and in a subcircuit's symbol they reach every
instance.
PDF viewer
- A PDF opens in a tab of its own - from the File Browser, the Content
panel, File > Open, a drop, or Claude's open_document - its pages one
under the other, sharp at any zoom. The toolbar has the page and the
page count, zoom in and out, Fit Width and Fit Page, and a find bar that
marks every match; the sidebar shows the pages small and the document's
outline. Text is selected with a drag (a double-click takes a word,
Edit > Select All the page) and copied; links are followed. Ctrl+wheel
or a pinch zooms, the middle button pans, and the View menu's zoom
commands work on it. When the file is written again (a script's report,
say) it is read again where you were. Save As copies it; Print prints
its pages. Built without Qt's PDF module, Qucs-S opens PDFs in the
system's viewer as before.
ZIP archives
- A .zip opens in a tab of its own, as in Eclipse's zip editor: its
files and folders in a tree or a list, with size, packed size, ratio,
date, method and CRC-32, a filter by name and a summary line. A file
opens in Qucs-S as a copy; saved there, it goes back into the archive.
Add Files, Add Folder, files dropped in from anywhere or pasted from a
file manager (a name taken is asked about: replace, skip or cancel);
New Folder, Rename, Delete; Extract, Extract All, or entries dragged
out as files. Every change is a step to undo, and saving copies the
files not changed byte for byte, with their times, comments and Unix
modes. Nothing in an archive is run (a file Qucs-S does not open is
only extracted), an entry named to leave the folder it is extracted
into (../x, /x, C:/x) is refused, and each file is unpacked no further
than its size and 128 MB. Archives over 1 GB and ZIP64 are not opened;
encrypted entries, and ones packed other than stored or deflated, are
listed and kept but not opened.
Settings
- File > Export Settings... writes every setting - the application's and
the simulators', the theme, the highlighting, the Content panel's
categories, the shortcuts, Claude Code's model and permissions - into
one JSON file, the same on every platform, to share or keep. Where the
windows were, the recent files and the last folders stay out. - File > Import Settings... takes one in: it says first where it came
from, whether the workspace moves and which programs Qucs-S would run;
saves the current settings as a backup (the last ten kept; importing
one takes them back); and applies the new ones at once, without a
restart (the language, the fonts and flexible wires at the next start,
as it says). Paths of another computer not on this one, and Claude's
Bypass Permissions, stay as this computer has them. - Application Settings > Settings > Write a settings file (.cfg) beside
each text document: saving a text document wrote name.cfg beside it
(its Document Settings, of use to VHDL, Verilog and Verilog-A files
alone). Off, one is written only for a document whose Document
Settings were set or changed.
Fixes
- A net labelled 0 or gnd - node 0 without a ground symbol, as
Simulators Settings allow with "A schematic must have a ground symbol"
off - stopped the ngspice run ("no such vector 0 in term: v(0)"), and no
dataset was written; with a ground symbol on the net too. Ground's names
are no longer among the voltages the netlist prints. - macOS: the bundle carries the Xyce digital parts' symbols; without
them the Xyce digital examples' wires met no pin. - The canvas draws its texts antialiased in grey, as a gesture's held
scene does: on Linux, where fontconfig asks for subpixel colours, a
drag showed its texts differently from a whole paint. - Dark theme: a diagram's white card holds all it draws. The numbers of
its axes are centred on the edges of its frame, and the top one and the
last one (the "25" and the "100" of a plot) were cut in half by the
card's edge, as was the top of the frame; a table's scroll bar and
header were off the card too. - Zooming out on a schematic with an element millions of units from the
origin (a file or a dialog can put one anywhere) asked for a canvas of
billions of pixels, and Qt aborted. The model plane now stays within
8 million units of the origin, and a loaded view with nonsense corners or
scale is put right. - Far-away wires no longer overflow the geometry that decides whether
three points are on a line. - Deleting with Claude's tools recorded two steps to undo, so one Undo
after it seemed to do nothing. - A schematic loaded again while its symbol was being edited (Claude
changed the file, or the "modified by another program" reload before a
simulation) put its nodes among the symbol's, and a later Undo left them
pointing at freed wires: Mirror X in the symbol crashed. Claude's reload
now also returns to the symbol when that was being edited (a .sym file
came back empty). - File Browser, Columns view: an arrow key in an empty folder crashed
Qucs-S (Qt's column view). The cursor now stays in the folder shown. - Edit > Stretch and Edit > Move crashed with a text document in front.
- Choosing a simulator on the toolbar with no document open crashed.
- An AC variable's first frequency point was read with phase 0: the
dataset reader lost the first value's imaginary part of every complex
vector. - Windows: the bundle carries Qt6Network.dll (Qt PDF needs it; without
it Qucs-S would not start), and the DLLs its plugins need; every
Windows build is now checked by starting it as a PC without MSYS2 does. - An arrow with a huge head (typed in its dialog, or in a file) overflowed
as it was drawn and saved; its head is kept within a coordinate's range. - Claude's tools no longer change a document while a dialog waits for an
answer: an undo under a part's or a diagram's dialog freed what the
dialog held. Loading a file Claude changed waits for the dialog too. - The shortcuts set in the Shortcut Manager were saved but never loaded:
they were lost at the next start. Default Values in Application
Settings put back Flexible wires as it was, not its default. - export_image of one diagram said its size was -1 x -1 pixels.
- A Nutmeg equation's Simulation "tran" matched no transient (only the
block's name, TR1, did); the analysis' kind is taken now. - A text document changed on disk by another program (a script, a shell
command, OpenVAF) is loaded again when it has no unsaved changes. - PDF Save As onto the same file under another spelling (another case on
macOS and Windows, a path through a link) deleted the PDF; nothing is
written now. A copy over a file that fails leaves the file that was
there - in Claude's simulate keep_as too, where the schematic's own
name deleted the run's dataset, and in the library dialog. - File Browser: Replace, when the item there held the one being moved (a
folder x dragged out of the folder x), sent both to the trash; it is
not offered now. Documents open from a file or folder renamed in the
browser follow it; a rename that changes only the case works, and a
name with "/" or ".." is refused instead of moving the file. Move to
Trash closes the documents open from what it trashes, and refuses while
one has unsaved changes. - Delete Project moves the folder to the trash instead of deleting it for
good; its question names the folder and what is in it, and says when
it is a project only because "Any folder is a project" is on. - Text editor: Comment/Uncomment duplicated parts of lines and took a line
too many; it now comments the lines selected (or uncomments them when
all are comments) in one step to undo. Undo right after opening no
longer empties the document. A file not in UTF-8 - a vendor library in
Windows-1252, UTF-16 - is saved as it was read, CR LF line ends too (its
°, µ and © became "�"); a character its encoding lacks is asked about,
and the file then saved as UTF-8. - Spreadsheets: a CSV file of a Windows program saved a typed "Ω" as "?",
and a UTF-16 file (Excel's Unicode Text) was read as garbage. Changing
the first cell of a formula filled down left a workbook Excel had to
repair, the other cells' formulas lost; they keep them now, and show
them. - Security: the Claude dock's git bar no longer runs programs a project's
own .git/config names (a file system monitor on every refresh, filters,
text conversions) - opening a project downloaded with its .git could run
them. Your own filters (git-lfs) still run. - Security: a link in a Markdown preview or a PDF no longer hands files or
unknown links to the system (a .command, an .app or an .exe would run):
web pages and mail open in the browser, Qucs-S's documents in a tab, any
other file is only shown in the Finder or the Explorer once asked, and
another kind of link opens only once you agree. - Allow All Edits on a permission card applies to that conversation alone,
as it says; it became the default for every conversation, after restarts
too. The Permissions menu changes the default. - Spreadsheets: a tiny .xlsx could take gigabytes - a cell at row
2,147,483,647 (25 GB), a file that unpacks to hundreds of megabytes. A
workbook is opened up to Excel's rows and columns and 2,000,000 cells,
its files at most 256 MB unpacked; styles on far rows and columns take
no room. The table stops at Excel's last row and column. - A big folder opened as the project (with "Any folder is a project") froze
Qucs-S: the Content panel walked all of it every 3 seconds. Other
programs' folders (node_modules, pycache, venv, CMake build trees)
are skipped, at most 20,000 files and folders are looked at, and the
look runs aside. - A large Formula painting zoomed in asked for an image of gigabytes; it is
capped at 64 MB. A marker's precision from a file is kept to what the
dialog allows. - View All with diagrams on the schematic: a marker's bounds were in its
diagram's coordinates, so each marker added a box by the origin and View
All showed the schematic small in a corner (a selection rectangle there
selected markers far away). A diagram's title and the numbers on the top
and right of its frame were left out of its bounds (a title wider than
its plot was cut off, in View All, prints and image exports); a Smith
chart's drawing counted the whole circles of its grid, and its card in
the dark theme was as large. - macOS: the bundle carries one Qt, not one for each of the tool apps
(filter, attenuator, transcalc, ...); the image is about a sixth of its
former size.
Full Changelog: v26.1.3...v26.1.4