The BOM revision in IPC-2581 export was hardcoded to "1.0"
instead of reflecting the actual design revision.
The project file stores two separate fields: bomRev for
explicit user overrides set in the PCBnew export dialog or
via --bom-rev on the CLI, and schRevision for the value
auto-propagated from eeschema.
Bus alias names and member names entered with leading or trailing
whitespace caused silent connection failures because the lookup
used the trimmed name from the schematic label while the definition
retained the untrimmed name.
Centralize sanitization in BUS_ALIAS by trimming whitespace in
SetName() and adding AddMember/SetMembers/ClearMembers methods
that trim and reject empty strings. Remove the mutable Members()
accessor to prevent bypassing the sanitization. Update all callers
across parsers, importers, and the dialog to use the new API.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19971
Break the most expensive header include chains that contaminate the
largest number of translation units
New lightweight headers for extractdded types:
font_metrics.h, mouse_drag_action.h, board_project_settings_params.h,
common_settings_internals.h, wx_infobar_message_type.h,
zone_layer_properties_grid.h
When a project is created from a template, PROJECT_TEMPLATE::CreateProject()
renames files on disk (e.g., default.kicad_sch -> newproject.kicad_sch) but
does not update the .kicad_pro file content. This leaves the top_level_sheets
entries referencing the template's filenames, causing "Top level sheet not
found" errors when the new project is opened.
Add a fixup step in PROJECT_FILE::LoadFromFile() that detects stale
top_level_sheets references by checking whether the referenced schematic
files exist on disk. When a referenced file is missing but a file matching
the project name exists, the reference is updated to point to the correct
file.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22951
When performing a project SaveAs, the root sheet's display name (shown
in the hierarchy navigator panel) was not being updated to match the
new project name, even though the filename was correctly renamed.
The fix adds a check in PROJECT_FILE::SaveAs to update the sheet name
when it matches the old project name. This ensures the hierarchy panel
reflects the correct project name after a SaveAs operation.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22853
Tuning profiles build on the previous delay tuning work to allow
the definition of track geometries per-layer for a given tuning
profile. These can be calculated from a target impedance (with
all relevant geometry taken from the board stackup), or entered
manually.
Tuning profiles can be configured to enable time-domain tuning,
and to automatically generate track geometry DRC rules for net
classes which have an assigned tuning profile.
Adds a DRC check for net classes with a tuning profile assigned
which is not itself defined.
Allows multiple, top-level schematic sheets. Records of the sheets are
stored in the project file. All top-level sheets live under a virtual
root sheet in the hierarchy. This virtual root is suppressed for export
and general visibility
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2063
- Adds time and delay units
- Adds time domain tuning parameters entry and storage
- Adds pad-to-die delay property
- Adds time domain parameter interface for length / delay calculations
- Adds unit tracking for numerical constants through LIBEVAL
- Will need future work to truly propagate through binary expressions
- Adds time domain tuning to meander placers
- Adds time delay display to net inspector panel
- Modifies DRC to handle time domain constraints
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
IPC2581 is a modern production file exchange system. It provides
single-file data output for an entire board including BOM and netlist
information.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/1954
WxString does not allocate space for wide strings needed during
conversion unless the string is explicitly wide. This can cause buffer
over/underflow
Fixes https://gitlab.com/kicad/code/kicad/issues/10605
(cherry picked from commit 7601a3385f)
This is particularly important when reading legacy projects as 0 is
what signals the painter to use the old algorithm (1/2 pin name/number
size).
Fixes https://gitlab.com/kicad/code/kicad/issues/10100
These settings objects could be created in a constructor/destructor
so we should catch the exception since those are noexcept.
Also change the settings trace to match the other kicad traces
as KICAD_SETTINGS
The fix convert all std::string storing a path to wxString (unicode support)
wxString were already used at many place to store paths, but not all.
For internal calculations mixing char strings and wide char strings is a recipe
for bug: any missing conversion between UTF8 and wxString breaks paths.