Release 1.0.0#1
Conversation
|
Important Review skippedToo many files! This PR contains 179 files, which is 29 over the limit of 150. You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
e879290 to
966ae83
Compare
ffc0726 to
bf7b986
Compare
Signed-off-by: Daniel Kampert <danielkampert@kampis-elektroecke.de>
There was a problem hiding this comment.
Pull request overview
Adds the initial “Release 1.0.0” content for the KiCad extension project, including KiCad title block templates, KiBot configuration/resources, and GitHub Actions workflows to generate and publish production outputs.
Changes:
- Added multiple KiCad worksheet templates (A3/A4/A5 + Git variants) and schematic helper sheets.
- Added KiBot configuration (preflights, outputs, filters), resources (themes/templates/scripts), and a local launch script.
- Added CI workflows for changelog validation and production output generation + release packaging.
Reviewed changes
Copilot reviewed 79 out of 908 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| extension/templates/KDT_Template_PCB_GIT_A4.kicad_wks | New PCB worksheet template including Git hash field (A4). |
| extension/templates/KDT_Template_PCB_GIT_A3.kicad_wks | New PCB worksheet template including Git hash field (A3). |
| extension/templates/KDT_Template_PCB_A5.kicad_wks | New PCB worksheet template (A5). |
| extension/templates/KDT_Template_PCB_A4.kicad_wks | New PCB worksheet template (A4). |
| extension/templates/KDT_Template_PCB_A3.kicad_wks | New PCB worksheet template (A3). |
| extension/templates/KDT_Template_GIT.kicad_wks | New worksheet template including schematic Git hash. |
| extension/templates/KDT_Template.kicad_wks | New base worksheet template. |
| extension/meta/info.html | Extension metadata HTML (description page). |
| extension/kibot_yaml/kicost_config_local.yaml | Local KiCost configuration stub for spreadsheet costing. |
| extension/kibot_yaml/kibot_pre_set_text_variables.yaml | Preflight to set KiCad text variables (git/meta/changelog/sheet names). |
| extension/kibot_yaml/kibot_pre_include_table.yaml | Preflight include-table configuration template. |
| extension/kibot_yaml/kibot_pre_erc_report.yaml | ERC report preflight configuration. |
| extension/kibot_yaml/kibot_pre_drc_report.yaml | DRC report preflight configuration. |
| extension/kibot_yaml/kibot_pre_draw_stackup.yaml | Preflight to draw stackup table based on gerbers. |
| extension/kibot_yaml/kibot_out_xlsx_bom.yaml | Output definition for XLSX BOM with KiCost integration. |
| extension/kibot_yaml/kibot_out_txt_report.yaml | Output definition for TXT reports (notes). |
| extension/kibot_yaml/kibot_out_step.yaml | Output definition for STEP export. |
| extension/kibot_yaml/kibot_out_sch_variant.yaml | Output definition for schematic variant (value splitting). |
| extension/kibot_yaml/kibot_out_production_doc.yaml | Output definition for copying production docs. |
| extension/kibot_yaml/kibot_out_png_3d_viewer.yaml | Output definition for 3D viewer PNG renders. |
| extension/kibot_yaml/kibot_out_pdf_schematic.yaml | Output definition for schematic PDF prints. |
| extension/kibot_yaml/kibot_out_pdf_fabrication.yaml | Output definition for fabrication PDF package. |
| extension/kibot_yaml/kibot_out_pdf_assembly.yaml | Output definition for assembly PDF package. |
| extension/kibot_yaml/kibot_out_odb.yaml | Output definition for ODB++ archives. |
| extension/kibot_yaml/kibot_out_netlist.yaml | Output definition for KiCad netlist export. |
| extension/kibot_yaml/kibot_out_navigate_results.yaml | Output definition for HTML “navigate results” page. |
| extension/kibot_yaml/kibot_out_md_report.yaml | Output definition for markdown report (README). |
| extension/kibot_yaml/kibot_out_logo_copy.yaml | Output definition to copy logo assets into outputs. |
| extension/kibot_yaml/kibot_out_html_kiri.yaml | Output definition for KiRi diff viewer HTML. |
| extension/kibot_yaml/kibot_out_html_kicanvas.yaml | Output definition for KiCanvas output. |
| extension/kibot_yaml/kibot_out_html_ibom.yaml | Output definition for interactive BOM HTML. |
| extension/kibot_yaml/kibot_out_html_bom.yaml | Output definition for BOM HTML. |
| extension/kibot_yaml/kibot_out_gerber.yaml | Output definition for Gerber plot generation. |
| extension/kibot_yaml/kibot_out_excellon_drill.yaml | Output definition for Excellon drill outputs + maps. |
| extension/kibot_yaml/kibot_out_csv_testpoints_simple.yaml | Output definition for simplified testpoint CSV. |
| extension/kibot_yaml/kibot_out_csv_testpoints.yaml | Output definition for detailed testpoint CSV. |
| extension/kibot_yaml/kibot_out_csv_report.yaml | Output definition for generic CSV reports. |
| extension/kibot_yaml/kibot_out_csv_pos.yaml | Output definition for placement/position (CPL) CSV. |
| extension/kibot_yaml/kibot_out_csv_drill_table.yaml | Output definition for drill table CSV. |
| extension/kibot_yaml/kibot_out_csv_bom.yaml | Output definition for BOM CSV. |
| extension/kibot_yaml/kibot_out_compress_fab.yaml | Output definition to zip fabrication deliverables. |
| extension/kibot_yaml/kibot_out_blender.yaml | Output definition for Blender export/render pipeline. |
| extension/kibot_yaml/kibot_main.yaml | Main KiBot orchestration: groups, imports, definitions, variants. |
| extension/kibot_yaml/kibot_globals.yaml | KiBot global settings and warning filters. |
| extension/kibot_yaml/kibot_filt_testpoints.yaml | Filter definition for selecting testpoints. |
| extension/kibot_yaml/kibot_filt_field_rename.yaml | Filter definition for renaming manufacturer fields. |
| extension/kibot_yaml/kibot_filt_exclude_testpoints.yaml | Filter definition for excluding testpoints. |
| extension/kibot_resources/templates/readme.txt | Template used to generate README.md during CI. |
| extension/kibot_resources/templates/impedance_table.txt | CSV header template for impedance table report. |
| extension/kibot_resources/templates/fabrication_notes.txt | Fabrication notes template for output reports. |
| extension/kibot_resources/templates/assembly_notes.txt | Assembly notes template for output reports. |
| extension/kibot_resources/scripts/get_sheet_title.py | Script to extract sheet titles from KiCad XML. |
| extension/kibot_resources/scripts/get_changelog_version.py | Script to infer latest version string from changelog. |
| extension/kibot_resources/scripts/get_changelog.py | Script to extract changelog title/body for a version. |
| extension/kibot_resources/scripts/docker_kibot_windows.bat | Helper script to run KiBot container on Windows. |
| extension/kibot_resources/scripts/docker_kibot_linux.sh | Helper script to run KiBot container on Linux. |
| extension/kibot_resources/colors/Altium_Theme.json | KiCad color theme used by plot/print outputs. |
| extension/kibot_launch.sh | Local helper script to run KiBot and optionally serve outputs. |
| extension/Revision History.kicad_sch | New schematic sheet for release notes / revision history. |
| extension/README.md | Generated/readme-like content for the extension project folder. |
| extension/CHANGELOG.md | Changelog for the extension project folder. |
| extension/Block Diagram.kicad_sch | New block diagram sheet. |
| extension/.gitignore | KiCad-focused ignore rules for the extension subproject. |
| docs/ZSWatch Extension.drawio | Documentation diagram for the extension. |
| README.md | Root project README introducing the hardware + pipeline. |
| .github/workflows/extension.yaml | CI workflow to build outputs and create releases. |
| .github/workflows/changelog-check.yaml | CI workflow to validate CHANGELOG formatting. |
| .github/FUNDING.yml | Funding configuration for GitHub. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - variable: '@RELEASE_TITLE_VAR@1.3.0' | ||
| command: '@GET_TITLE_CMD@ 1.3.0' | ||
| - variable: '@RELEASE_BODY_VAR@1.3.0' | ||
| command: '@GET_BODY_CMD@ 1.3.0' | ||
|
|
||
| # - variable: '@RELEASE_TITLE_VAR@x.y.z' | ||
| # command: '@GET_TITLE_CMD@ x.y.z' | ||
| # - variable: '@RELEASE_BODY_VAR@x.y.z' |
There was a problem hiding this comment.
These variable names expand into text variables that appear to include dots and/or mixed tokens (e.g., RELEASE_BODY_1.3.0). KiCad text variable names typically need to be simple identifiers (commonly [A-Za-z_][A-Za-z0-9_]*), and dotted names may not resolve in schematics/worksheets. Consider switching to underscore-only identifiers (e.g., RELEASE_BODY_1_3_0) and keeping the placeholder expansion out of the final variable name.
| - variable: '@RELEASE_TITLE_VAR@1.3.0' | |
| command: '@GET_TITLE_CMD@ 1.3.0' | |
| - variable: '@RELEASE_BODY_VAR@1.3.0' | |
| command: '@GET_BODY_CMD@ 1.3.0' | |
| # - variable: '@RELEASE_TITLE_VAR@x.y.z' | |
| # command: '@GET_TITLE_CMD@ x.y.z' | |
| # - variable: '@RELEASE_BODY_VAR@x.y.z' | |
| - variable: '@RELEASE_TITLE_VAR@1_3_0' | |
| command: '@GET_TITLE_CMD@ 1.3.0' | |
| - variable: '@RELEASE_BODY_VAR@1_3_0' | |
| command: '@GET_BODY_CMD@ 1.3.0' | |
| # - variable: '@RELEASE_TITLE_VAR@x_y_z' | |
| # command: '@GET_TITLE_CMD@ x.y.z' | |
| # - variable: '@RELEASE_BODY_VAR@x_y_z' |
| - variable: '@RELEASE_TITLE_VAR@UNRELEASED' | ||
| command: '@GET_TITLE_CMD@ Unreleased' | ||
| - variable: '@RELEASE_BODY_VAR@UNRELEASED' | ||
| command: '@GET_BODY_CMD@ Unreleased' |
There was a problem hiding this comment.
These variable names expand into text variables that appear to include dots and/or mixed tokens (e.g., RELEASE_BODY_1.3.0). KiCad text variable names typically need to be simple identifiers (commonly [A-Za-z_][A-Za-z0-9_]*), and dotted names may not resolve in schematics/worksheets. Consider switching to underscore-only identifiers (e.g., RELEASE_BODY_1_3_0) and keeping the placeholder expansion out of the final variable name.
| ) | ||
| (uuid "0c062e2b-2be1-4307-b752-045c211787f4") | ||
| ) | ||
| (text_box "${RELEASE_BODY_1.0.0}" |
There was a problem hiding this comment.
The schematic references RELEASE_BODY_1.0.0 / RELEASE_TITLE_1.0.0, but the KiBot set_text_variables config (in kibot_pre_set_text_variables.yaml) currently sets ...1.3.0 and ...UNRELEASED only. As-is, these boxes will not get populated. Align the configured variables with the schematic (or make the schematic use the configured variables) so release notes render correctly.
| (text_box "${RELEASE_BODY_1.0.0}" | |
| (text_box "${RELEASE_BODY_1.3.0}" |
| ) | ||
| (uuid "9af8400a-3034-4071-a364-608020db49d5") | ||
| ) | ||
| (text_box "${RELEASE_TITLE_1.0.0}" |
There was a problem hiding this comment.
The schematic references RELEASE_BODY_1.0.0 / RELEASE_TITLE_1.0.0, but the KiBot set_text_variables config (in kibot_pre_set_text_variables.yaml) currently sets ...1.3.0 and ...UNRELEASED only. As-is, these boxes will not get populated. Align the configured variables with the schematic (or make the schematic use the configured variables) so release notes render correctly.
| (text_box "${RELEASE_TITLE_1.0.0}" | |
| (text_box "${RELEASE_TITLE_1.3.0}" |
| dir: '@DIR@' | ||
| options: | ||
| files: | ||
| - source: Logos/ZSWatch_logo_with_text.png |
There was a problem hiding this comment.
The path uses Logos/ with an uppercase L, while other files in this PR reference logos/ (lowercase) (e.g., LOGO: 'logos/ZSWatch_logo_with_text.png' in kibot_main.yaml). On case-sensitive filesystems (Linux CI), this mismatch can cause the copy step to fail or the logo to be missing. Normalize the directory casing across all references.
| - source: Logos/ZSWatch_logo_with_text.png | |
| - source: logos/ZSWatch_logo_with_text.png |
| </head> | ||
| <body> | ||
| <h2>Vincent Nguyen - Hierarchical KiCAD Design Template for CI/CD</h2> | ||
| <p> This creates a hierachical project, with CI/CD integration using KiBot.</p> |
There was a problem hiding this comment.
Corrected spelling of 'hierachical' to 'hierarchical'.
| <p> This creates a hierachical project, with CI/CD integration using KiBot.</p> | |
| <p> This creates a hierarchical project, with CI/CD integration using KiBot.</p> |
| echo -e "${GREEN}Running: $kibot_command1${NC}" | ||
| eval $kibot_command1 | ||
| if [[ "$costs_flag" == false ]]; then | ||
| echo -e "${GREEN}Running: $kibot_command2${NC}" | ||
| eval $kibot_command2 |
There was a problem hiding this comment.
Using eval to execute commands composed from variables makes argument handling fragile and can enable command injection if any portion becomes user-controlled (e.g., variant/version flags). Prefer building the command as an array and executing it directly (or invoking kibot with explicit arguments) to avoid shell re-interpretation.
| --volume=/tmp/.X11-unix:/tmp/.X11-unix \ | ||
| --volume="/etc/group:/etc/group:ro" \ | ||
| --volume="/etc/passwd:/etc/passwd:ro" \ | ||
| --volume="/etc/shadow:/etc/shadow:ro" \ |
There was a problem hiding this comment.
Mounting /etc/shadow (even read-only) into a container is an unnecessary exposure of sensitive host data for this use case. Consider removing the /etc/shadow bind mount and using a safer approach for UID/GID mapping (e.g., --user, --userns=keep-id where available, or creating a matching user without importing shadow).
| --volume="/etc/shadow:/etc/shadow:ro" \ |
| @@ -0,0 +1,45 @@ | |||
| # KiBot output for generating CSV Tespoints | |||
There was a problem hiding this comment.
There’s a typo in the header comment (Tespoints → Testpoints) and an extra trailing space in the name: Net column label. These can leak into generated documentation/files; consider correcting both.
| - field: Net Label | ||
| name: Net |
There was a problem hiding this comment.
There’s a typo in the header comment (Tespoints → Testpoints) and an extra trailing space in the name: Net column label. These can leak into generated documentation/files; consider correcting both.
Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
No description provided.