Skip to content

Release 1.0 - #3

Merged
Kampi merged 14 commits into
ZSWatch:mainfrom
Kampi:1.0.0_Dev
Feb 21, 2026
Merged

Release 1.0#3
Kampi merged 14 commits into
ZSWatch:mainfrom
Kampi:1.0.0_Dev

Conversation

@Kampi

@Kampi Kampi commented Dec 13, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added interactive project documentation navigation interface with search, theming, and responsive layout.
    • Integrated automated changelog validation in CI/CD pipeline.
  • Documentation

    • Added hardware block diagram showing system architecture and component connections.
  • Chores

    • Configured GitHub funding and commit message templates.
    • Established production release and artifact generation workflows.

@Kampi Kampi added this to the Watch-HW Version 1 Release 0 milestone Dec 13, 2025
@Kampi
Kampi requested a review from jakkra December 13, 2025 10:08
@Kampi Kampi self-assigned this Dec 13, 2025
@Kampi Kampi added bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request labels Dec 13, 2025
@coderabbitai

coderabbitai Bot commented Dec 13, 2025

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

This pull request introduces comprehensive project infrastructure including GitHub workflow automation for changelog validation and production KiCad/KiBot processing, static HTML navigation pages with dark/light theme support, a block diagram documentation file, and extensive KiRI (KiCad Rich Interchange) metadata for multiple project variants with PCB layer configurations and schematic sheet mappings.

Changes

Cohort / File(s) Summary
GitHub Configuration
.github/.commit-msg-template, .github/FUNDING.yml
Adds structured commit message template enforcing issue number and sign-off fields, and GitHub funding configuration specifying contributors.
CI/CD Workflows
.github/workflows/changelog-check.yaml, .github/workflows/watch.yaml
Introduces changelog format validation workflow with section/formatting checks and duplicate detection. Adds complex production workflow orchestrating KiCad/KiBot processing, variant-based output generation (DRAFT/PRELIMINARY/CHECKED/RELEASED), changelog management, artifact collection, and release publishing with tag-triggered behaviors.
Documentation & Diagrams
docs/Drawings.drawio
Adds Draw.io schematic block diagram detailing USB, power, sensor, and interface connectivity for the ZSWatch hardware project.
HTML Navigation Pages
production/watch-CHECKED/HTML/ZSWatch-Watch-navigate*.html
Introduces 17 interactive HTML documentation pages with collapsible side navigation, search autocomplete, top control bars, markdown rendering, and persistent UI state via localStorage; pages cover Reports, Netlist, Manufacturing (Assembly, Fabrication, Gerbers, Drill Tables), Testing, Images, 3D, PCB, Schematic, KiCanvas, and KiRI sections.
Theme & Styling
production/watch-CHECKED/HTML/styles.css
Comprehensive CSS stylesheet implementing light/dark theme system using CSS variables, responsive layout for fixed top bar and collapsible sidebar, themed components (buttons, search, autocomplete), markdown rendering styles, and scrollbar customization.
KiRI Metadata – PCB Layers
production/watch-CHECKED/KiRI/*/\_KIRI_/pcb/.layer-*.svg.json
Adds JSON metadata files (~120 files across three project variants and local) each containing KiCad version "9.0.7+1" and zone configuration; represents layer-by-layer PCB documentation structure.
KiRI Metadata – Schematic & References
production/watch-CHECKED/KiRI/*/\_KIRI_/pcb_layers, production/watch-CHECKED/KiRI/*/\_KIRI_/sch/.options.json, production/watch-CHECKED/KiRI/*/\_KIRI_/sch_sheets
Introduces PCB layer enumerations, schematic options referencing KiCad version, and schematic sheet mappings (9 sheets each: Watch, Block Diagram, Power Topology, Architecture subsystems, etc.) across three project variants and local configuration.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 With workflows and themes in shades of night,
HTML pages dance left and right,
Layer by layer, KiRI takes flight,
A rabbit-built watch, oh what a sight!
Navigation and schemas, oh so polite!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
@Kampi
Kampi force-pushed the 1.0.0_Dev branch 3 times, most recently from 2f09738 to 9d535c2 Compare February 17, 2026 06:08
- Add CI/CD workflow to check for changelog updates on pull requests

Signed-off-by: Daniel Kampert <DanielKampert|kampis-elektroecke.de>
@Kampi
Kampi force-pushed the 1.0.0_Dev branch 2 times, most recently from 2ac317c to f2a6a0f Compare February 19, 2026 10:38
- New position for the battery connector, moved to the right side of the watch
- Rotate haptics connector by 180°
@Kampi
Kampi force-pushed the 1.0.0_Dev branch 3 times, most recently from 6f6b6ad to 56b7db8 Compare February 19, 2026 23:06
@Kampi
Kampi marked this pull request as ready for review February 21, 2026 10:00
Copilot AI review requested due to automatic review settings February 21, 2026 10:00
@Kampi
Kampi merged commit 5fb9d9e into ZSWatch:main Feb 21, 2026
1 check passed
@Kampi
Kampi deleted the 1.0.0_Dev branch February 21, 2026 10:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Packages and publishes “Release 1.0” production artifacts: generated KiCad/KiRI metadata, HTML navigation pages for the CHECKED build, and CI workflows to generate outputs and validate the changelog.

Changes:

  • Adds generated production/KiRI metadata files (layer SVG JSON metadata, schematic sheet lists, PCB layer lists, options).
  • Adds generated HTML navigation pages for production outputs (Manufacturing, Netlist, PCB, KiCanvas, KiRI, 3D, Testing).
  • Adds GitHub Actions workflows for production data generation/release and changelog validation, plus GitHub funding + commit message template.

Reviewed changes

Copilot reviewed 144 out of 888 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-27.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-25.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-23.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-21.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-19.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-17.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-15.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-13.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-11.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-09.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-07.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-06.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-05.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-04.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-03.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-02.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-01.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/local/KIRI/pcb/.layer-00.svg.json Adds generated KiRI PCB layer metadata for local export
production/watch-CHECKED/KiRI/5983a4b/KIRI/sch_sheets Adds generated KiRI schematic sheet index (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/sch/.options.json Adds generated KiRI schematic options metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb_layers Adds generated KiRI PCB layer mapping (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-55.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-53.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-51.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-49.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-47.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-45.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-43.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-41.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-39.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-35.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-33.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-31.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-29.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-27.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-25.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-23.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-21.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-19.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-17.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-15.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-13.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-11.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-09.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-07.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-06.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-05.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-04.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-03.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-02.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-01.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/5983a4b/KIRI/pcb/.layer-00.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/sch_sheets Adds generated KiRI schematic sheet index (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/sch/.options.json Adds generated KiRI schematic options metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb_layers Adds generated KiRI PCB layer mapping (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-55.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-53.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-51.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-49.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-47.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-45.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-43.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-41.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-39.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-35.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-33.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-31.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-29.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-27.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-25.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-23.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-21.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-19.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-17.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-15.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-13.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-11.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-09.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-07.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-06.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-05.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-04.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-03.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-02.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-01.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/39449ac/KIRI/pcb/.layer-00.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/sch_sheets Adds generated KiRI schematic sheet index (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/sch/.options.json Adds generated KiRI schematic options metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb_layers Adds generated KiRI PCB layer mapping (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-55.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-53.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-51.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-49.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-47.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-45.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-43.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-41.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-39.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-35.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-33.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-31.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-29.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-27.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-25.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-23.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-21.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-19.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-17.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-15.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-13.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-11.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-09.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-07.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-06.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-05.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-04.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-03.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-02.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-01.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/KiRI/043d58a/KIRI/pcb/.layer-00.svg.json Adds generated KiRI PCB layer metadata (rev snapshot)
production/watch-CHECKED/HTML/ZSWatch-Watch-navigate_Testing.html Adds generated HTML navigation page for Testing outputs
production/watch-CHECKED/HTML/ZSWatch-Watch-navigate_PCB_docs.html Adds generated HTML navigation page for PCB/docs outputs
production/watch-CHECKED/HTML/ZSWatch-Watch-navigate_PCB.html Adds generated HTML navigation page for PCB outputs
production/watch-CHECKED/HTML/ZSWatch-Watch-navigate_Netlist.html Adds generated HTML navigation page for Netlist outputs
production/watch-CHECKED/HTML/ZSWatch-Watch-navigate_Manufacturing.html Adds generated HTML navigation page for Manufacturing outputs
production/watch-CHECKED/HTML/ZSWatch-Watch-navigate_KiRI.html Adds generated HTML navigation page for KiRI outputs
production/watch-CHECKED/HTML/ZSWatch-Watch-navigate_KiCanvas.html Adds generated HTML navigation page for KiCanvas outputs
production/watch-CHECKED/HTML/ZSWatch-Watch-navigate_3D.html Adds generated HTML navigation page for 3D outputs
.github/workflows/watch.yaml Adds CI to generate production outputs and create zip releases on tags
.github/workflows/changelog-check.yaml Adds CI to validate Keep-a-Changelog formatting in PRs/pushes
.github/FUNDING.yml Adds GitHub Sponsors funding configuration
.github/.commit-msg-template Adds commit message template for consistent commit formatting

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +177 to +192
# Determine additional_args based on the variant
case "$kibot_variant" in
"DRAFT")
additional_args="--skip-pre draw_fancy_stackup,erc,drc ${version_arg} draft_group"
;;
"PRELIMINARY")
additional_args="--skip-pre erc,drc ${version_arg} all_group"
;;
"CHECKED"|"RELEASED")
additional_args="${version_arg} all_group"
;;
*)
echo "Unknown variant: $kibot_variant"
exit 1
;;
esac

Copilot AI Feb 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kibot_variant is never set as a shell variable in this step (only written to $GITHUB_ENV), so the case "$kibot_variant" will always hit the default branch. Set kibot_variant in the script (e.g., assign it before the case) or run the case on a value that is actually available in the current shell (for example, the workflow env value or explicitly exported variable), then build additional_args from that.

Copilot uses AI. Check for mistakes.
Comment on lines +222 to +226
revision=$(python3 kibot_resources/scripts/get_changelog_version.py -f CHANGELOG.md)
if [[ $? -ne 0 ]]; then
echo -e "${YELLOW}Warning: Unable to determine version from CHANGELOG.md. Defaulting to empty revision.${NC}"
revision=""
fi

Copilot AI Feb 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The log line references ${YELLOW} / ${NC} which are not defined in this script, so the output will include empty values (and can be confusing). Either define those color variables earlier in the step, or remove the color codes (also, revision is assigned but not used afterward in this step—consider using it or dropping it to avoid dead code).

Suggested change
revision=$(python3 kibot_resources/scripts/get_changelog_version.py -f CHANGELOG.md)
if [[ $? -ne 0 ]]; then
echo -e "${YELLOW}Warning: Unable to determine version from CHANGELOG.md. Defaulting to empty revision.${NC}"
revision=""
fi

Copilot uses AI. Check for mistakes.
push_options: '--force'

- name: Cache 3D models data
uses: set-soft/cache@main

Copilot AI Feb 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a Git ref like @main for an Action is not reproducible and can change behavior without review. Pin this to a tagged release or a commit SHA (or consider switching to actions/cache@v4), so builds are deterministic.

Suggested change
uses: set-soft/cache@main
uses: actions/cache@v4

Copilot uses AI. Check for mistakes.
branch: ${{ env.master_branch }}
commit_message: Update CHANGELOG
file_pattern: ${{ env.kibot_input_dir }}/CHANGELOG.md
push_options: '--force'

Copilot AI Feb 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

push_options: '--force' can overwrite remote history on the default branch if something goes wrong and is generally risky for CI automation. Prefer removing --force, or if there is a strong need, use a safer alternative like --force-with-lease and document why it’s required.

Suggested change
push_options: '--force'

Copilot uses AI. Check for mistakes.
Comment on lines +270 to +273
const folderStates = Array.from(document.querySelectorAll(".folder")).map(folder => ({
id: folder.querySelector("span").textContent.trim(), // Use folder name as identifier
isOpen: folder.classList.contains("open") // Check if folder is open
}));

Copilot AI Feb 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The persisted folder identifier uses the visible folder text (textContent.trim()), which is not unique in this navbar (e.g., multiple “docs” folders exist under different sections). This can cause restore to open/close the wrong folder. Persist a stable unique identifier instead (e.g., the id of the .folder-contents element like folderHeader.nextElementSibling.id, or add a data-folder-id attribute).

Suggested change
const folderStates = Array.from(document.querySelectorAll(".folder")).map(folder => ({
id: folder.querySelector("span").textContent.trim(), // Use folder name as identifier
isOpen: folder.classList.contains("open") // Check if folder is open
}));
const folderStates = Array.from(document.querySelectorAll(".folder")).map(folder => {
const contents = folder.querySelector(".folder-contents");
const folderId = contents && contents.id ? contents.id : folder.querySelector("span").textContent.trim();
return {
id: folderId, // Use a stable unique identifier (folder-contents id if available)
isOpen: folder.classList.contains("open") // Check if folder is open
};
});

Copilot uses AI. Check for mistakes.

function saveSideNavState() {
const navbar = document.getElementById("theSideNav");
const isOpen = navbar.style.width !== "0px"; // Check if navbar is open

Copilot AI Feb 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checking navbar.style.width only inspects inline styles; if the navbar is closed via CSS (and no inline width has been set yet), navbar.style.width will be "", which currently evaluates as “open” (because "" !== "0px"). Consider using getComputedStyle(navbar).width or track open/closed state via a class on the navbar to ensure the persisted isOpen matches the real UI.

Suggested change
const isOpen = navbar.style.width !== "0px"; // Check if navbar is open
const isOpen = window.getComputedStyle(navbar).width !== "0px"; // Check if navbar is open using computed style

Copilot uses AI. Check for mistakes.
Comment on lines +161 to +166
<span id="open-navbar" style="font-size:30px;cursor:pointer;" onclick="openNav()">&#9776;</span>
<span id="close-navbar" style="font-size:30px;cursor:pointer;display:none;" onclick="closeNav()">⨉</span>
<button id="back-button" onclick="history.back()" style="font-size:30px;">↩</button>
<button id="forward-button" onclick="history.forward()" style="font-size:30px;">↪</button>
<button id="up-button" onclick="location.href='ZSWatch-Watch-navigate.html'" style="font-size:44px; position: relative; top: -3px;">⌅</button>
<button id="home-button" onclick="location.href='ZSWatch-Watch-navigate.html'" style="font-size:25px; position: relative; top: -2px;">🏠︎</button>

Copilot AI Feb 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These icon-only controls don’t provide an accessible name for screen readers. Add aria-label (and consider using <button> for open/close as well) so navigation is usable with assistive tech (e.g., “Open navigation”, “Close navigation”, “Back”, “Forward”, “Up”, “Home”).

Suggested change
<span id="open-navbar" style="font-size:30px;cursor:pointer;" onclick="openNav()">&#9776;</span>
<span id="close-navbar" style="font-size:30px;cursor:pointer;display:none;" onclick="closeNav()"></span>
<button id="back-button" onclick="history.back()" style="font-size:30px;"></button>
<button id="forward-button" onclick="history.forward()" style="font-size:30px;"></button>
<button id="up-button" onclick="location.href='ZSWatch-Watch-navigate.html'" style="font-size:44px; position: relative; top: -3px;"></button>
<button id="home-button" onclick="location.href='ZSWatch-Watch-navigate.html'" style="font-size:25px; position: relative; top: -2px;">🏠︎</button>
<span id="open-navbar" style="font-size:30px;cursor:pointer;" onclick="openNav()" aria-label="Open navigation">&#9776;</span>
<span id="close-navbar" style="font-size:30px;cursor:pointer;display:none;" onclick="closeNav()" aria-label="Close navigation"></span>
<button id="back-button" onclick="history.back()" style="font-size:30px;" aria-label="Back"></button>
<button id="forward-button" onclick="history.forward()" style="font-size:30px;" aria-label="Forward"></button>
<button id="up-button" onclick="location.href='ZSWatch-Watch-navigate.html'" style="font-size:44px; position: relative; top: -3px;" aria-label="Up"></button>
<button id="home-button" onclick="location.href='ZSWatch-Watch-navigate.html'" style="font-size:25px; position: relative; top: -2px;" aria-label="Home">🏠︎</button>

Copilot uses AI. Check for mistakes.
Comment on lines +481 to +488
html: true,
linkify: true,
typographer: true
});

// Find all markdown containers and render them
document.querySelectorAll('.markdown-content').forEach(container => {
const rawMarkdown = container.innerHTML;

Copilot AI Feb 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

markdown-it is configured with html: true and then renders content sourced from container.innerHTML, which can enable scriptable HTML injection if markdown content ever becomes untrusted (even accidentally). If you don’t strictly control the markdown sources, consider setting html: false or sanitizing the rendered output before inserting it back into the DOM.

Suggested change
html: true,
linkify: true,
typographer: true
});
// Find all markdown containers and render them
document.querySelectorAll('.markdown-content').forEach(container => {
const rawMarkdown = container.innerHTML;
html: false,
linkify: true,
typographer: true
});
// Find all markdown containers and render them
document.querySelectorAll('.markdown-content').forEach(container => {
const rawMarkdown = container.textContent;

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants