Skip to content

Qucs-S enhanced v26.1.4

Choose a tag to compare

@github-actions github-actions released this 01 Oct 00:40

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