Skip to content

OpenCCU project renaming #3162

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 18 commits into
base: master
Choose a base branch
from
Open

OpenCCU project renaming #3162

wants to merge 18 commits into from

Conversation

jens-maus
Copy link
Owner

@jens-maus jens-maus commented Aug 10, 2025

Description

This pull request is for organizing and maintaining the rename of the "RaspberryMatic" project to the new name "OpenCCU" which includes several areas/stages either in the project source code, the web page, wiki and other sources.

Summary by CodeRabbit

  • Style

    • Rebranded product from "RaspberryMatic" to "OpenCCU" across UI text, boot menus, container metadata, CI/workflow messages, and release filenames.
  • Chores / Packaging

    • Release and packaging flows renamed to OpenCCU; artifact naming, board/platform derivation, and placement simplified, impacting generated archives, OVA/OCI/LXC outputs and manifests.
    • Rootfs overlays switched to OpenCCU variants.
  • Documentation

    • Updated README(s), contributing/security/support docs, issue/PR/release templates and added WebUI image license README to reflect OpenCCU.

Copy link

coderabbitai bot commented Aug 10, 2025

Walkthrough

Repository-wide rebrand: "RaspberryMatic" → "OpenCCU" across docs, CI/workflows, overlays, Docker/OCI metadata, GRUB/OVF/OVA labels and release artifacts. Makefile: PLATFORM derivation simplified; fake-build BOARD computation widened to use full PRODUCT, altering some generated artifact names/paths.

Changes

Cohort / File(s) Change Summary
Makefile
Makefile
Simplified PLATFORM derivation to a single sed; fake-build now uses full PRODUCT as BOARD; help text updated to "OpenCCU Build Environment".
Buildroot configs & overlays
buildroot-external/configs/*.config, .../overlay/*
Replaced overlay paths: base-raspmaticbase-openccu, WebUI-raspmaticWebUI-openccu (including _oci/_lxc variants); updated BR2_ROOTFS_OVERLAY values.
/etc/issue text
buildroot-external/Buildroot.config
BR2_TARGET_GENERIC_ISSUE changed to "Welcome to OpenCCU".
GRUB / OVF / OVA templates
buildroot-external/board/*/grub.cfg, .../ova/template.ovf, .../post-image.sh
Boot menu entries, VM names and OVF/OVA filenames/manifests renamed RaspberryMatic → OpenCCU; copy/hash/archive logic unchanged.
Board post-image / post-release scripts
buildroot-external/board/*/post-release.sh, .../post-image.sh (rpi*, odroid-*, tinkerboard, oci, lxc, ova, ...)
BOARD now commonly taken from ${2} instead of parsing PRODUCT; all generated artifacts, checksums, zips/tgzs and manifests renamed to OpenCCU-${PRODUCT_VERSION}-${BOARD}; packaging flow preserved.
Docker / OCI
buildroot-external/board/oci/Dockerfile, buildroot-external/board/oci/post-image.sh, .../post-release.sh
Dockerfile labels and image metadata rebranded; build/save/tag references use openccu and ghcr.io/openccu; tar filenames and docker cleanup updated.
CI / GitHub Actions workflows
.github/workflows/*, .github/workflows/oci-repush.yml, .github/workflows/release.yml, .github/workflows/snapshot.yml
Workflow names, headers, artifact patterns, tar_prefix, image labels, upload/download steps and release/snapshot logic updated to OpenCCU naming; some workflow header/YAML front-matter adjusted.
Issue / PR templates & labels
.github/ISSUE_TEMPLATE/*, .github/pull_request_template.md, .github/label-actions.yml, .github/ISSUE_TEMPLATE/config.yml
Templates, messages, links and forum URLs updated to reference OpenCCU/OpenCCU and OpenCCU forum.
Documentation & governance
README.md, README.de.md, CONTRIBUTING.md, DEVELOPMENT.md, CODE_OF_CONDUCT.md, SECURITY.md, SUPPORT.md
Project-wide rebranding to OpenCCU: names, links, badges, descriptions and minor wording fixes.
WebUI overlay
buildroot-external/overlay/WebUI-openccu/www/ise/img/README.md
Added README with licensing/usage restrictions for graphical assets and OpenCCU logos.
Release artifacts & manifests
buildroot-external/board/*/post-release.sh, release paths, CI upload/downloads
All release artifacts (img/zip/tar/ova/mf/oci) and CI artifact names renamed to OpenCCU- prefixes; manifests/provenance references updated accordingly.

Sequence Diagram(s)

sequenceDiagram
    participant Dev as Developer/CI
    participant Make as Makefile
    participant Build as Build System
    participant Post as post-*-scripts
    participant Art as Release Artifacts

    Dev->>Make: invoke build with PRODUCT
    Make->>Make: PLATFORM = echo -n $(PRODUCT) | sed 's/_\(amd64\|arm.*\)//'
    alt fake-build
        Make->>Make: BOARD = ${PRODUCT}
        Make->>Art: produce OpenCCU-${PRODUCT_VERSION}-${PRODUCT} artifacts
    else normal build
        Make->>Build: build PRODUCT for PLATFORM
        Build->>Post: hand off PRODUCT_VERSION and BOARD
        Post->>Art: create OpenCCU-${PRODUCT_VERSION}-${BOARD}.* artifacts (img/zip/ova/oci)
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch openccu

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 13

🧹 Nitpick comments (22)
buildroot-external/configs/generic-x86_64.config (1)

7-7: Generic x86_64 overlay rename — consistent and fine.

No functional changes. If Buildroot constraints allow, consider centralizing the common overlay list to reduce duplication across defconfigs.

buildroot-external/board/odroid-n2/post-release.sh (2)

15-21: De-duplicate name construction and harden script (BASENAME + stricter shell opts)

Reduce repetition and improve robustness by centralizing the artifact basename and enabling -u/-o pipefail.

-# Stop on error
-set -e
+# Stop on error and on unset vars; fail pipelines if any part fails
+set -euo pipefail
@@
-# copy the *.img and create checksum
-cp -a "../build-${PRODUCT}/images/sdcard.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img"
-sha256sum "OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" >"OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256"
+# copy the *.img and create checksum
+cp -a "../build-${PRODUCT}/images/sdcard.img" "./${BASENAME}.img"
+sha256sum "${BASENAME}.img" >"${BASENAME}.img.sha256"
@@
-# prepare the release *.zip
-rm -f "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip"
-zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
-sha256sum "OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" >"OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip.sha256"
+# prepare the release *.zip
+rm -f "./${BASENAME}.zip"
+zip --junk-paths "./${BASENAME}.zip" "./${BASENAME}.img" "./${BASENAME}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
+sha256sum "${BASENAME}.zip" >"${BASENAME}.zip.sha256"

Add near variable setup (outside changed hunk):

BASENAME="OpenCCU-${PRODUCT_VERSION}-${BOARD}"

27-28: Tiny cleanup: avoid Useless Use of cat and align with shellcheck

Current lines are fine; if desired, remove UUoC and avoid multiple echoes.

-# shellcheck disable=SC2129
-echo "$(stat -c %s "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img") $(cat "OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256")" >>"OpenCCU-${PRODUCT_VERSION}-${BOARD}.mf"
-echo "$(stat -c %s "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip") $(cat "OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip.sha256")" >>"OpenCCU-${PRODUCT_VERSION}-${BOARD}.mf"
+img_size=$(stat -c %s "./${BASENAME}.img")
+zip_size=$(stat -c %s "./${BASENAME}.zip")
+read -r img_sha < "./${BASENAME}.img.sha256"
+read -r zip_sha < "./${BASENAME}.zip.sha256"
+{
+  printf "%s %s\n" "${img_size}" "${img_sha}"
+  printf "%s %s\n" "${zip_size}" "${zip_sha}"
+} >> "./${BASENAME}.mf"
buildroot-external/board/rpi0/post-release.sh (2)

15-21: Apply BASENAME and stricter shell opts here as well for consistency

Mirror the odroid-n2 improvements: centralize the name and harden the script.

-# Stop on error
-set -e
+# Stop on error and on unset vars; fail pipelines if any part fails
+set -euo pipefail
@@
-cp -a "../build-${PRODUCT}/images/sdcard.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img"
-sha256sum "OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" >"OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256"
+cp -a "../build-${PRODUCT}/images/sdcard.img" "./${BASENAME}.img"
+sha256sum "${BASENAME}.img" >"${BASENAME}.img.sha256"
@@
-rm -f "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip"
-zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
-sha256sum "OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" >"OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip.sha256"
+rm -f "./${BASENAME}.zip"
+zip --junk-paths "./${BASENAME}.zip" "./${BASENAME}.img" "./${BASENAME}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
+sha256sum "${BASENAME}.zip" >"${BASENAME}.zip.sha256"

Add near variable setup:

BASENAME="OpenCCU-${PRODUCT_VERSION}-${BOARD}"

27-28: Optional: simplify manifest generation (no UUoC)

-echo "$(stat -c %s "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img") $(cat "OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256")" >>"OpenCCU-${PRODUCT_VERSION}-${BOARD}.mf"
-echo "$(stat -c %s "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip") $(cat "OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip.sha256")" >>"OpenCCU-${PRODUCT_VERSION}-${BOARD}.mf"
+img_size=$(stat -c %s "./${BASENAME}.img")
+zip_size=$(stat -c %s "./${BASENAME}.zip")
+read -r img_sha < "./${BASENAME}.img.sha256"
+read -r zip_sha < "./${BASENAME}.zip.sha256"
+{
+  printf "%s %s\n" "${img_size}" "${img_sha}"
+  printf "%s %s\n" "${zip_size}" "${zip_sha}"
+} >> "./${BASENAME}.mf"
buildroot-external/board/rpi4/post-release.sh (2)

15-21: Refactor to BASENAME + robust shell options for parity with other boards

-# Stop on error
-set -e
+# Stop on error and on unset vars; fail pipelines if any part fails
+set -euo pipefail
@@
-cp -a "../build-${PRODUCT}/images/sdcard.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img"
-sha256sum "OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" >"OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256"
+cp -a "../build-${PRODUCT}/images/sdcard.img" "./${BASENAME}.img"
+sha256sum "${BASENAME}.img" >"${BASENAME}.img.sha256"
@@
-rm -f "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip"
-zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
-sha256sum "OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" >"OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip.sha256"
+rm -f "./${BASENAME}.zip"
+zip --junk-paths "./${BASENAME}.zip" "./${BASENAME}.img" "./${BASENAME}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
+sha256sum "${BASENAME}.zip" >"${BASENAME}.zip.sha256"

Add near variable setup:

BASENAME="OpenCCU-${PRODUCT_VERSION}-${BOARD}"

27-28: Optional manifest clean-up (align with shellcheck)

-echo "$(stat -c %s "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img") $(cat "OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256")" >>"OpenCCU-${PRODUCT_VERSION}-${BOARD}.mf"
-echo "$(stat -c %s "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip") $(cat "OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip.sha256")" >>"OpenCCU-${PRODUCT_VERSION}-${BOARD}.mf"
+img_size=$(stat -c %s "./${BASENAME}.img")
+zip_size=$(stat -c %s "./${BASENAME}.zip")
+read -r img_sha < "./${BASENAME}.img.sha256"
+read -r zip_sha < "./${BASENAME}.zip.sha256"
+{
+  printf "%s %s\n" "${img_size}" "${img_sha}"
+  printf "%s %s\n" "${zip_size}" "${zip_sha}"
+} >> "./${BASENAME}.mf"
buildroot-external/board/odroid-c4/post-release.sh (2)

19-21: Make release ZIPs reproducible and smaller

Use zip flags for determinism and better compression.

Apply within this hunk:

-zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
+zip -9 -X --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"

Additionally (outside this hunk), consider hardening the script header:

set -euo pipefail
IFS=$'\n\t'

27-28: Manifest generation OK; minor robustness suggestion

Current approach is fine. Optionally, avoid echo subshell nesting for clarity and portability by using printf:

Example (outside this hunk):

printf "%s %s\n" "$(stat -c %s "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img")" "$(cat "OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256")" >>"OpenCCU-${PRODUCT_VERSION}-${BOARD}.mf"
buildroot-external/board/generic-aarch64/post-release.sh (1)

20-20: Reproducible ZIPs for deterministic releases

Mirror the same improvement here: add -9 -X to zip for better compression and reproducibility.

-zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
+zip -9 -X --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
buildroot-external/board/generic-aarch64/grub.cfg (1)

24-24: Ensure consistent menu title style across all targets

Minor: standardize title formatting across GRUB configs (e.g., “OpenCCU (Recovery)” vs “OpenCCU-recovery”) for a uniform UX.

Also applies to: 28-28

buildroot-external/board/tinkerboard/post-release.sh (1)

20-20: Adopt reproducible ZIP flags

Same suggestion as other boards: add -9 -X for deterministic archives.

-zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
+zip -9 -X --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
buildroot-external/board/odroid-c2/post-release.sh (2)

20-20: Improve determinism and compression of release ZIP

Add -9 -X flags to zip.

-zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
+zip -9 -X --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"

15-16: Guard against PRODUCT format edge cases

If PRODUCT doesn’t contain an underscore, BOARD derivation could be empty/incorrect. If feasible, validate PRODUCT format before use.

Also applies to: 19-21, 24-24, 27-28

buildroot-external/board/rpi3/post-release.sh (1)

37-38: All in-repo references updated, please verify external consumers

Ripgrep confirms there are no remaining RaspberryMatic-*-ccu3.tgz references in the repository. The only occurrences of the new name are in

  • buildroot-external/board/rpi3/post-release.sh lines 37–38 (creating/signing OpenCCU-${PRODUCT_VERSION}-ccu3.tgz)
  • line 47 (appending its size/checksum to the manifest)

No in-repo changes are required.

Please manually verify and update any external tooling and resources:

  • Distribution pages or release notes that list the tarball
  • OTA/update scripts or CI pipelines that fetch the artifact
  • Downstream documentation or automation expecting the old RaspberryMatic-*-ccu3.tgz name

Consider publishing a symlink or duplicate using the old filename for one release cycle to smooth the transition.

buildroot-external/board/rpi2/post-release.sh (1)

4-4: Harden script options (optional).

Consider stricter bash flags to fail early on unset vars and pipeline errors.

-set -e
+set -euo pipefail
buildroot-external/board/ova/template.ovf (1)

1-1: Nit: potential UTF-8 BOM at start of file.

The leading BOM can confuse strict parsers. Save as UTF-8 without BOM if your tooling allows.

buildroot-external/board/ova/post-release.sh (1)

4-4: Harden script options (optional).

Use stricter bash flags for robustness.

-set -e
+set -euo pipefail
buildroot-external/overlay/WebUI-openccu/www/ise/img/README.md (2)

3-3: Grammar and clarity: fix pronoun agreement and scope wording

Use “their sole authors” (plural) and simplify the sentence to avoid ambiguity.

-The following graphical images in this directory and within binary images of OpenCCU as well as the OpenCCU logo in general and all graphical image files with a "rm-" prefix are copyrighted by its sole authors (the OpenCCU team, i.e. Jens Maus <[email protected]>):
+The following graphical images in this directory, any such images embedded in OpenCCU binary builds, the OpenCCU logo, and legacy assets with an "rm-" prefix are copyrighted by their sole authors (the OpenCCU team, i.e., Jens Maus <[email protected]>):

17-17: Tighten the restriction sentence; explicitly require permission

More precise phrasing avoids misinterpretation and states the permission requirement.

-Any commercial and non-commercial (re-)use of these graphical image files or use of the OpenCCU logo are strictly prohibited when distributing own binary distributions or forked versions of OpenCCU.
+Any commercial or non-commercial reuse of these graphical image files, or of the OpenCCU logo, in redistributed binaries (including forked distributions) is prohibited without prior written permission from the OpenCCU team.
buildroot-external/board/oci/Dockerfile (2)

8-19: Casing and wording consistency for product names

Unify “Homematic/Homematic IP” naming for a consistent presentation.

-      org.opencontainers.image.title=OpenCCU \
-      org.opencontainers.image.description="Alternative OS for your homematicIP CCU" \
+      org.opencontainers.image.title=OpenCCU \
+      org.opencontainers.image.description="Alternative OS for your Homematic IP CCU" \
       org.opencontainers.image.vendor="OpenCCU OpenSource Project" \
       org.opencontainers.image.authors="OpenCCU OpenSource Team" \
       org.opencontainers.image.licenses="Apache-2.0" \
       org.opencontainers.image.url="https://openccu.de" \
       org.opencontainers.image.source="https://github.com/openccu/openccu" \
       org.opencontainers.image.documentation="https://github.com/openccu/openccu/wiki" \
-      io.hass.name="OpenCCU" \
-      io.hass.description="HomeMatic/homematicIP OpenCCU central" \
+      io.hass.name="OpenCCU" \
+      io.hass.description="Homematic / Homematic IP OpenCCU central" \
       io.hass.url="https://github.com/openccu/openccu/tree/master/home-assistant-addon" \
       io.hass.type=addon

8-19: Optional: standardize quoting across label values

Docker permits unquoted values, but consistent quoting improves readability and reduces escaping pitfalls.

-      org.opencontainers.image.title=OpenCCU \
+      org.opencontainers.image.title="OpenCCU" \

(Apply similar quoting to other unquoted string values in this block if you prefer uniform style.)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8800fcd and 4f7154d.

⛔ Files ignored due to path filters (37)
  • buildroot-external/overlay/WebUI-openccu/www/config/img/devices/250/CCU3.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/config/img/devices/50/CCU3_thumb.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/favicon.ico is excluded by !**/*.ico
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuCreateDiagram.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuCreateGroups.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuDeviceFirmwareInformation.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuDeviceInbox.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuDevices.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuDiagramListPage.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuDirectLinks.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuFavorites.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuFunction.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuPrograms.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuProgramsLinks.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuRooms.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuScriptExecutor.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuSysControl.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuSysProtocol.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuSysVar.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/menuicons/submenuUserManagement.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-android-chrome-192x192.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-android-chrome-512x512.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-favicon-16x16.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-favicon-32x32.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-favicon.ico is excluded by !**/*.ico
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-favicon.svg is excluded by !**/*.svg
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-logo.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-logo_small.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-logo_small_gray.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-logo_small_red.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-touch-icon-iphone-retina.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rm-touch-icon-iphone.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/rssi-icon.png is excluded by !**/*.png
  • buildroot-external/overlay/WebUI-openccu/www/rega/favicon.ico is excluded by !**/*.ico
  • buildroot-external/overlay/WebUI-openccu/www/rega/pages/favicon.ico is excluded by !**/*.ico
  • buildroot-external/overlay/WebUI-openccu/www/rega/pages/rm-favicon.ico is excluded by !**/*.ico
  • buildroot-external/overlay/WebUI-openccu/www/rega/rm-favicon.ico is excluded by !**/*.ico
📒 Files selected for processing (42)
  • Makefile (2 hunks)
  • buildroot-external/Buildroot.config (1 hunks)
  • buildroot-external/board/generic-aarch64/grub.cfg (1 hunks)
  • buildroot-external/board/generic-aarch64/post-release.sh (1 hunks)
  • buildroot-external/board/generic-x86_64/grub.cfg (1 hunks)
  • buildroot-external/board/generic-x86_64/post-release.sh (1 hunks)
  • buildroot-external/board/lxc/post-release.sh (1 hunks)
  • buildroot-external/board/oci/Dockerfile (1 hunks)
  • buildroot-external/board/oci/post-image.sh (1 hunks)
  • buildroot-external/board/oci/post-release.sh (1 hunks)
  • buildroot-external/board/odroid-c2/post-release.sh (1 hunks)
  • buildroot-external/board/odroid-c4/post-release.sh (1 hunks)
  • buildroot-external/board/odroid-n2/post-release.sh (1 hunks)
  • buildroot-external/board/ova/grub.cfg (1 hunks)
  • buildroot-external/board/ova/post-image.sh (1 hunks)
  • buildroot-external/board/ova/post-release.sh (1 hunks)
  • buildroot-external/board/ova/template.ovf (4 hunks)
  • buildroot-external/board/rpi0/post-release.sh (1 hunks)
  • buildroot-external/board/rpi2/post-release.sh (1 hunks)
  • buildroot-external/board/rpi3/post-release.sh (2 hunks)
  • buildroot-external/board/rpi4/post-release.sh (1 hunks)
  • buildroot-external/board/rpi5/post-release.sh (1 hunks)
  • buildroot-external/board/tinkerboard/post-release.sh (1 hunks)
  • buildroot-external/configs/generic-aarch64.config (1 hunks)
  • buildroot-external/configs/generic-x86_64.config (1 hunks)
  • buildroot-external/configs/lxc_amd64.config (1 hunks)
  • buildroot-external/configs/lxc_arm.config (1 hunks)
  • buildroot-external/configs/lxc_arm64.config (1 hunks)
  • buildroot-external/configs/oci_amd64.config (1 hunks)
  • buildroot-external/configs/oci_arm.config (1 hunks)
  • buildroot-external/configs/oci_arm64.config (1 hunks)
  • buildroot-external/configs/odroid-c2.config (1 hunks)
  • buildroot-external/configs/odroid-c4.config (1 hunks)
  • buildroot-external/configs/odroid-n2.config (1 hunks)
  • buildroot-external/configs/ova.config (1 hunks)
  • buildroot-external/configs/rpi0.config (1 hunks)
  • buildroot-external/configs/rpi2.config (1 hunks)
  • buildroot-external/configs/rpi3.config (1 hunks)
  • buildroot-external/configs/rpi4.config (1 hunks)
  • buildroot-external/configs/rpi5.config (1 hunks)
  • buildroot-external/configs/tinkerboard.config (1 hunks)
  • buildroot-external/overlay/WebUI-openccu/www/ise/img/README.md (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: CI build [odroid-n2]
  • GitHub Check: CI build [odroid-c4]
  • GitHub Check: CI build [lxc_arm]
  • GitHub Check: CI build [odroid-c2]
  • GitHub Check: CI build [oci_amd64]
  • GitHub Check: CI build [oci_arm64]
  • GitHub Check: CI build [generic-x86_64]
  • GitHub Check: CI build [lxc_arm64]
  • GitHub Check: CI build [generic-aarch64]
  • GitHub Check: CI build [rpi0]
  • GitHub Check: CI build [rpi2]
🔇 Additional comments (36)
buildroot-external/Buildroot.config (1)

13-13: Login banner updated to OpenCCU – no overlay overrides detected

  • No /etc/issue files in any overlay/** path that would override BR2_TARGET_GENERIC_ISSUE
  • overlay/base-openccu and overlay/WebUI-openccu directories exist
  • No old overlay names (base-raspmatic/WebUI-raspmatic) in buildroot-external/configs
  • Note: the repo still contains many “RaspberryMatic” references in docs, add‐on metadata and release artifacts – update these only if you intend a full rebrand
buildroot-external/configs/generic-aarch64.config (1)

7-7: Overlay rename to base-openccu/WebUI-openccu — ordering looks sane.

OpenCCU overlays follow the generic ones, ensuring correct override behavior. Confirm this overlay ordering is consistent across all defconfigs to avoid subtle deltas.

buildroot-external/configs/odroid-n2.config (1)

7-7: Overlay paths updated to OpenCCU variants — OK.

Matches the global rebranding. Ensure the OpenCCU overlays contain any odroid-n2-specific branding/assets previously found under the raspmatic overlays.

buildroot-external/configs/rpi5.config (1)

7-7: rpi5 overlays switched to OpenCCU — good.

Please double-check rpi5 post-build/image scripts don’t reference the old raspmatic overlay paths.

buildroot-external/configs/odroid-c4.config (1)

7-7: Overlay chain and override order LGTM

OpenCCU-specific overlays are appended after their base/WebUI counterparts, preserving intended override behavior. No other build settings affected.

buildroot-external/configs/rpi4.config (1)

6-6: Consistent rebranding of overlays; ordering is correct

OpenCCU overlays follow base/WebUI, enabling targeted overrides without altering unrelated layers.

buildroot-external/configs/rpi3.config (1)

6-6: Overlay rename is correct and consistent with other boards

No functional changes beyond the overlay path update; override ordering remains intact.

buildroot-external/configs/rpi2.config (1)

6-6: Overlay update matches the project rename; override precedence maintained

No other config deltas; this should be a no-op build-wise apart from picking up OpenCCU assets.

buildroot-external/board/ova/grub.cfg (1)

24-32: Menu entries rebranded correctly across all GRUB configs
No remaining “RaspberryMatic” entries detected. Verified in:

  • buildroot-external/board/ova/grub.cfg
  • buildroot-external/board/generic-x86_64/grub.cfg
  • buildroot-external/board/generic-aarch64/grub.cfg

Boot arguments, defaults and recovery logic remain unchanged.

buildroot-external/configs/ova.config (1)

5-5: Update leftover Raspmatic paths in scripts/update-codemirror.sh

The repository still contains hard-coded references to WebUI-raspmatic in the Codemirror updater script. These should be updated to use the new WebUI-openccu overlay path.

Please update the following locations:

  • scripts/update-codemirror.sh:31
    - rm -rf buildroot-external/overlay/WebUI-raspmatic/www/webui/js/extern/codemirror/*
    + rm -rf buildroot-external/overlay/WebUI-openccu/www/webui/js/extern/codemirror/*
  • scripts/update-codemirror.sh:34
    - unzip-strip /tmp/codemirror.zip buildroot-external/overlay/WebUI-raspmatic/www/webui/js/extern/codemirror/
    + unzip-strip /tmp/codemirror.zip buildroot-external/overlay/WebUI-openccu/www/webui/js/extern/codemirror/
  • scripts/update-codemirror.sh:37 (patch-dir path)
    - patch -p1 -d buildroot-external/overlay/WebUI-raspmatic/www/webui/js/extern/codemirror <<'EOF'
    + patch -p1 -d buildroot-external/overlay/WebUI-openccu/www/webui/js/extern/codemirror <<'EOF'

After making these changes, rerun the verification script to confirm no further raspmatic references remain.

Likely an incorrect or invalid review comment.

buildroot-external/configs/lxc_amd64.config (1)

8-8: Overlay paths exist and no stale references detected
Verified that all configured overlay directories under buildroot-external/overlay are present and no “raspmatic” mentions remain in the configs. Ordering of generic vs. OpenCCU-specific overlays is correct—ready to merge.

buildroot-external/configs/odroid-c2.config (1)

7-7: All overlays verified and correctly ordered

  • Confirmed presence of all overlay directories under buildroot-external/overlay:
    • base
    • base-openccu
    • WebUI
    • WebUI-openccu
    • RFD
  • No stale “raspmatic” references found in buildroot-external/configs

Ready to merge.

buildroot-external/board/odroid-c4/post-release.sh (1)

15-16: Rebranding applied correctly; logic unaffected

Filename prefix changes to OpenCCU look consistent here. No functional changes introduced.

buildroot-external/board/generic-aarch64/post-release.sh (1)

15-16: Consistent rename to OpenCCU across artifacts

All artifact names (.img, .sha256, .zip, .mf) updated coherently. No behavioral change. LGTM.

Also applies to: 19-21, 24-24, 27-28

buildroot-external/board/generic-aarch64/grub.cfg (1)

24-27: Boot menu titles rebranded only; boot logic unchanged

Titles updated to “OpenCCU” and “OpenCCU-recovery”. Kernel paths and params unchanged. Looks good.

Also applies to: 28-32

buildroot-external/board/tinkerboard/post-release.sh (1)

15-16: Renaming is consistent; script behavior preserved

Artifact naming now uses OpenCCU across the board. No logic changes. Approved.

Also applies to: 19-21, 24-24, 27-28

buildroot-external/board/odroid-c2/post-release.sh (1)

15-16: OpenCCU artifact naming applied correctly

Consistent rename across image, checksums, ZIP, and manifest. No change in control flow. LGTM.

Also applies to: 19-21, 24-24, 27-28

buildroot-external/board/rpi5/post-release.sh (1)

24-24: No remaining references to old manifest names

Ran rg -n 'RaspberryMatic-.*\.mf' across the repository and found zero matches. All tooling and scripts now correctly reference the new OpenCCU-*.mf filenames (including lines 24 and 27–28 in buildroot-external/board/rpi5/post-release.sh). No further changes are needed.

buildroot-external/board/rpi3/post-release.sh (1)

15-21: Artifact rename to OpenCCU is consistent.

Good and consistent with other boards.

buildroot-external/board/generic-x86_64/grub.cfg (1)

24-24: Verified: GRUB menu entries rename is consistent across all boards.
Ran rg -n 'menuentry "RaspberryMatic' buildroot-external/board/ and found no remaining occurrences.

  • buildroot-external/board/generic-x86_64/grub.cfg now correctly uses menuentry "OpenCCU"
    All other GRUB configs under buildroot-external/board/ are up to date.
buildroot-external/configs/lxc_arm.config (1)

9-9: Overlay path updates verified and approved
All updated overlay directories exist and no raspmatic references remain:

  • buildroot-external/overlay/base-openccu/
  • buildroot-external/overlay/WebUI-openccu/
  • buildroot-external/overlay/base-openccu_lxc/

No occurrences of “raspmatic” found in buildroot-external/configs.

buildroot-external/configs/oci_arm64.config (1)

10-10: Overlay rename/order looks correct.

OpenCCU overlays follow the base ones, preserving override semantics. No logic change; naming is consistent.

buildroot-external/configs/oci_amd64.config (2)

8-8: Consistent overlay renaming for amd64 OCI.

Naming and order match the arm64 config; looks good.


8-8: Overlays Verified for amd64 OCI Target
All directories referenced in BR2_ROOTFS_OVERLAY exist:

  • overlay/base
  • overlay/base-openccu
  • overlay/base-openccu_oci
  • overlay/WebUI
  • overlay/WebUI-openccu
  • overlay/RFD

No missing overlays—this config is complete.

buildroot-external/board/rpi2/post-release.sh (1)

15-16: Artifact rename to OpenCCU is complete and consistent.

.img, .zip, .ova manifest entries are renamed coherently; paths are quoted and checksums preserved.

Also applies to: 19-22, 24-25, 28-28, 31-33

buildroot-external/board/ova/template.ovf (2)

4-4: OVF identifiers, VM name, and disk href updated to OpenCCU.

Renaming is thorough and internally consistent.

Also applies to: 16-16, 18-18, 28-28, 124-124


4-4: Packaging pipeline names match template OVF
Verified that the post-image and post-release scripts consistently reference OpenCCU.vmdk and OpenCCU.ova as defined in template.ovf, and no stale RaspberryMatic references remain.

• buildroot-external/board/ova/post-image.sh copies to OpenCCU.vmdk and packages OpenCCU.ova
• buildroot-external/board/ova/post-release.sh generates OpenCCU-.ova
• template.ovf’s <File ovf:href="OpenCCU.vmdk" …> aligns with these scripts

All names are in sync—no changes required.

buildroot-external/board/ova/post-release.sh (2)

15-16: OpenCCU artifact naming for OVA flow looks good.

Copy, checksum, zip, and manifest entries have been consistently updated.

Also applies to: 19-22, 24-26, 28-28, 31-33


24-26: Build output filename confirmed
The post-image.sh script creates ${BINARIES_DIR}/OpenCCU.ova (i.e. images/OpenCCU.ova), and post-release.sh correctly copies that file to OpenCCU-${PRODUCT_VERSION}.ova. No changes required.

buildroot-external/board/lxc/post-release.sh (1)

12-15: No RaspberryMatic references found; artifact naming validated

Renaming to OpenCCU is consistent across .tar → .tar.xz → .sha256 → .mf, and there are no remaining “RaspberryMatic” mentions in the LXC board scripts.

• buildroot-external/board/lxc: verified no occurrences of “RaspberryMatic”
• post-release.sh (lines 12–15, 18, 21): naming and logic unchanged and correct

buildroot-external/board/oci/post-release.sh (1)

12-17: OCI artifact naming consistency confirmed

  • post-image.sh (line 42) generates
    OpenCCU-${PRODUCT_VERSION}-${BOARD_NAME}_${DOCKER_ARCH}.tar
  • post-release.sh (lines 12–15) expects the same archive as
    OpenCCU-${PRODUCT_VERSION}-${BOARD}.tar with
    BOARD="${BOARD_NAME}_${DOCKER_ARCH}"
  • Compression to .tgz and checksum steps are consistent
  • No lingering “RaspberryMatic” references found

No changes required.

buildroot-external/board/ova/post-image.sh (1)

41-45: Update leftover RaspberryMatic references in install-proxmox.sh

The rename to OpenCCU.* in post-image.sh is correct, but there’s still a hardcoded reference to RaspberryMatic.ovf:

• scripts/install-proxmox.sh:789

-    IMG_FILE="RaspberryMatic.ovf"
+    IMG_FILE="OpenCCU.ovf"

Please update this (and any related .vmdk, .mf, .ova references) to match the new OpenCCU naming.

Likely an incorrect or invalid review comment.

Makefile (1)

78-79: Makefile artifact names updated – no remaining RaspberryMatic references found

I searched the repository for any lingering RaspberryMatic tar/OVA names and found none. The help banner at line 177 is correctly updated to “OpenCCU Build Environment.” No CI or release scripts need adjustments.

buildroot-external/overlay/WebUI-openccu/www/ise/img/README.md (1)

1-21: Overall: clear asset licensing addition

Good to explicitly scope image/logo licensing apart from code licensing; helps downstream packagers avoid accidental misuse.

buildroot-external/board/oci/Dockerfile (2)

8-19: Rebranding labels look correct

Metadata reflects OpenCCU ownership and resources; no functional changes to the image build.


14-19: URLs confirmed post-rebrand – no action needed
All four endpoints resolve successfully and continue to point to the intended resources after the RaspberryMatic→OpenCCU rename:

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🔭 Outside diff range comments (1)
.github/release-template.md (1)

68-86: Broken Wiki Links in Release Template
The installation wiki links in .github/release-template.md (lines 68–86) all return HTTP 404 and need to be updated to the correct page names or paths:

https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi
https://github.com/OpenCCU/OpenCCU/wiki/Installation-Tinkerboard
https://github.com/OpenCCU/OpenCCU/wiki/Installation-Odroid
https://github.com/OpenCCU/OpenCCU/wiki/Installation-IntelNUC
https://github.com/OpenCCU/OpenCCU/wiki/Installation-Proxmox-VE
https://github.com/OpenCCU/OpenCCU/wiki/Installation-VirtualBox
https://github.com/OpenCCU/OpenCCU/wiki/Installation-vmWare-ESXi
https://github.com/OpenCCU/OpenCCU/wiki/Installation-Synology-VMM
https://github.com/OpenCCU/OpenCCU/wiki/Installation-QNAP-VirtualizationStation
https://github.com/OpenCCU/OpenCCU/wiki/Installation-vmWare-Workstation-Player
https://github.com/OpenCCU/OpenCCU/wiki/Installation-QEmu
https://github.com/OpenCCU/OpenCCU/wiki/Installation-UNRAID
https://github.com/OpenCCU/OpenCCU/wiki/Installation-HyperV
https://github.com/OpenCCU/OpenCCU/wiki/Installation-Docker-OCI
https://github.com/OpenCCU/OpenCCU/wiki/Installation-LXC
https://github.com/OpenCCU/OpenCCU/wiki/Installation-Kubernetes
https://github.com/OpenCCU/OpenCCU/wiki/Installation-HomeAssistant

Please verify the current wiki page titles and update the links so they return HTTP 200.

🧹 Nitpick comments (2)
.github/release-template.md (2)

37-52: Consistent product naming: use “Raspberry Pi” (with space) everywhere

This also addresses the LanguageTool warnings around lines 47 and 50.

-- RaspberryPi5 Model B – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
+- Raspberry Pi 5 Model B – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
 <sub>📦 [OpenCCU-${VERSION}-rpi5.zip](https://github.com/OpenCCU/OpenCCU/releases/download/${VERSION}/OpenCCU-${VERSION}-rpi5.zip)<br/>SHA256: XSHArpi5.zipX</sub>

-- RaspberryPi4 Model B, RaspberryPi Compute Module 4, RaspberryPi 400 – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
+- Raspberry Pi 4 Model B, Raspberry Pi Compute Module 4, Raspberry Pi 400 – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
 <sub>📦 [OpenCCU-${VERSION}-rpi4.zip](https://github.com/OpenCCU/OpenCCU/releases/download/${VERSION}/OpenCCU-${VERSION}-rpi4.zip)<br/>SHA256: XSHArpi4.zipX</sub>

-- [CCU3](https://github.com/OpenCCU/OpenCCU/wiki/Installation-CCU3), [ELV-Charly](https://github.com/OpenCCU/OpenCCU/wiki/Installation-ELV-Charly), RaspberryPi3 Model B+, RaspberryPi3 Model B, RaspberryPi3 Model A+, RaspberryPi Compute Module 3, RaspberryPi Compute Module 3 lite, RaspberryPi Zero 2 W – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
+- [CCU3](https://github.com/OpenCCU/OpenCCU/wiki/Installation-CCU3), [ELV-Charly](https://github.com/OpenCCU/OpenCCU/wiki/Installation-ELV-Charly), Raspberry Pi 3 Model B+, Raspberry Pi 3 Model B, Raspberry Pi 3 Model A+, Raspberry Pi Compute Module 3, Raspberry Pi Compute Module 3 lite, Raspberry Pi Zero 2 W – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
 <sub>📦 [OpenCCU-${VERSION}-rpi3.zip](https://github.com/OpenCCU/OpenCCU/releases/download/${VERSION}/OpenCCU-${VERSION}-rpi3.zip)<br/>SHA256: XSHArpi3.zipX</sub>
 <sub>📦 [OpenCCU-${VERSION}-ccu3.tgz](https://github.com/OpenCCU/OpenCCU/releases/download/${VERSION}/OpenCCU-${VERSION}-ccu3.tgz) (only for initial CCU3 Firmware -> OpenCCU Upgrade)<br/> SHA256: XSHAccu3.tgzX</sub>

-- RaspberryPi2 Model B – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
+- Raspberry Pi 2 Model B – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
 <sub>📦 [OpenCCU-${VERSION}-rpi2.zip](https://github.com/OpenCCU/OpenCCU/releases/download/${VERSION}/OpenCCU-${VERSION}-rpi2.zip)<br/>SHA256: XSHArpi2.zipX</sub>

-- RaspberryPi Zero W, RaspberryPi Zero, RaspberryPi Compute Module 1, RaspberryPi1 (A+/B+) – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
+- Raspberry Pi Zero W, Raspberry Pi Zero, Raspberry Pi Compute Module 1, Raspberry Pi 1 (A+/B+) – ([installation](https://github.com/OpenCCU/OpenCCU/wiki/Installation-RaspberryPi)):
 <sub>📦 [OpenCCU-${VERSION}-rpi0.zip](https://github.com/OpenCCU/OpenCCU/releases/download/${VERSION}/OpenCCU-${VERSION}-rpi0.zip)<br/>SHA256: XSHArpi0.zipX</sub>

1-1: Template placeholders: ensure “XXXXX” values are replaced on release

The intro line and the German forum link include “XXXXX” placeholders; leaving them will confuse readers.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4f7154d and c60dfd1.

📒 Files selected for processing (13)
  • .github/ISSUE_TEMPLATE/bug-report.yml (4 hunks)
  • .github/ISSUE_TEMPLATE/config.yml (1 hunks)
  • .github/ISSUE_TEMPLATE/feature-request.yml (2 hunks)
  • .github/label-actions.yml (4 hunks)
  • .github/pull_request_template.md (2 hunks)
  • .github/release-template.md (2 hunks)
  • .github/workflows/ci.yml (11 hunks)
  • .github/workflows/label-actions.yml (1 hunks)
  • .github/workflows/oci-repush.yml (5 hunks)
  • .github/workflows/release-proxy.yml (3 hunks)
  • .github/workflows/release.yml (21 hunks)
  • .github/workflows/snapshot.yml (22 hunks)
  • .github/workflows/stale.yml (2 hunks)
✅ Files skipped from review due to trivial changes (12)
  • .github/pull_request_template.md
  • .github/workflows/label-actions.yml
  • .github/ISSUE_TEMPLATE/feature-request.yml
  • .github/ISSUE_TEMPLATE/bug-report.yml
  • .github/label-actions.yml
  • .github/workflows/stale.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/workflows/release.yml
  • .github/workflows/oci-repush.yml
  • .github/workflows/ci.yml
  • .github/workflows/snapshot.yml
  • .github/workflows/release-proxy.yml
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
.github/release-template.md

7-7: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


7-7: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


34-34: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


34-34: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

🪛 LanguageTool
.github/release-template.md

[grammar] ~47-~47: Ensure spelling is correct
Context: ...de)
SHA256: XSHAccu3.tgzX - RaspberryPi2 Model B – ([installation](https://githu...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~50-~50: Ensure spelling is correct
Context: ...yPi Zero, RaspberryPi Compute Module 1, RaspberryPi1 (A+/B+) – ([installation](https://githu...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: CI build [lxc_arm]
  • GitHub Check: CI build [oci_arm]
  • GitHub Check: CI build [lxc_arm64]
  • GitHub Check: CI build [generic-aarch64]
  • GitHub Check: CI build [generic-x86_64]
  • GitHub Check: CI build [rpi2]
  • GitHub Check: CI build [oci_amd64]
  • GitHub Check: CI build [odroid-c2]
  • GitHub Check: CI build [rpi5]
  • GitHub Check: CI build [tinkerboard]
  • GitHub Check: CI build [rpi0]

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (20)
SECURITY.md (1)

5-5: Compound adjective: add hyphen(s).

Use “community-driven, open-source project” to improve clarity.

-As OpenCCU is a community-driven open source project and our resources are limited
+As OpenCCU is a community-driven, open-source project and our resources are limited
CONTRIBUTING.md (3)

1-3: Fix typos and tighten wording.

-# Contributing to OpenCCU
-
-There are many ways to contribute to the OpenCCU project! We welcome and truly appreciate contribution in all forms - issues and pull requests or just modifications of documentation or user support in the corresponding support fora. And of course we love to hear about any successfull use of OpenCCU to be shared with the community!
+# Contributing to OpenCCU
+
+There are many ways to contribute to the OpenCCU project! We welcome and truly appreciate contributions in all forms — issues and pull requests, documentation improvements, or user support in the corresponding support fora. And of course, we love to hear about any successful use of OpenCCU to be shared with the community!

21-29: Use “PRs” (no apostrophe) and minor copyedits.

-PR's are even better than issues. We gladly accept community pull requests. In general across the whole OpenCCU codebase, there are a few necessary steps before we can accept a pull request:
+PRs are even better than issues. We gladly accept community pull requests. In general, across the whole OpenCCU codebase, there are a few necessary steps before we can accept a pull request:
@@
-- Ideally, squash your commits into a single commit with a clear message of what the PR does. If it absolutely makes sense to keep multiple commits, that's OK - or perhaps consider making two separate PR's.
+- Ideally, squash your commits into a single commit with a clear message of what the PR does. If it absolutely makes sense to keep multiple commits, that's OK — or perhaps consider making two separate PRs.

42-42: Fix spelling: “explicitly”, “completely”.

-... please explictly state so or completly refrain from contributing any source code whatsoever.
+... please explicitly state so or completely refrain from contributing any source code whatsoever.
SUPPORT.md (2)

5-5: Minor style improvement.

-If you are seeking for help in using OpenCCU we ask you to use the OpenCCU fora ...
+If you are seeking help with OpenCCU, we ask you to use the OpenCCU fora ...

9-9: German: fix “Plattform” forms and “dass”.

-Für jegliche Hilfe bei der Verwendung von OpenCCU bitten wir darum das OpenCCU Forum (...) zu verwenden. Wir nutzen GitHub als reine Entwicklungsplatform und nicht als Platform um Endnutzern Hilfestellungen zu geben. ... Aber auch hier bitten wir darum das die Fehler- bzw. Featurewünsche zuerst im OpenCCU Forum ...
+Für jegliche Hilfe bei der Verwendung von OpenCCU bitten wir darum, das OpenCCU Forum (...) zu verwenden. Wir nutzen GitHub als reine Entwicklungsplattform und nicht als Plattform, um Endnutzern Hilfestellungen zu geben. ... Aber auch hier bitten wir darum, dass die Fehler- bzw. Featurewünsche zuerst im OpenCCU Forum ...
README.de.md (4)

10-10: Typo in badge label.

-[![Snaphot Build](https://github.com/OpenCCU/OpenCCU/workflows/Snaphot%20Build/badge.svg)](https://github.com/OpenCCU/OpenCCU/releases/tag/snapshots)
+[![Snapshot Build](https://github.com/OpenCCU/OpenCCU/workflows/Snapshot%20Build/badge.svg)](https://github.com/OpenCCU/OpenCCU/releases/tag/snapshots)

23-23: German: fix minor typos (“sog.”, “Betriebssystem”).

-... den kompletten Funktionsumfang einer sogn. _HomeMatic CCU SmartHome-Zentrale_ ... (WebUI, Linux-Betriebsystem, etc.) ...
+... den kompletten Funktionsumfang einer sog. _HomeMatic CCU SmartHome-Zentrale_ ... (WebUI, Linux-Betriebssystem, etc.) ...

29-29: German: “dieselben”, “in puncto”.

-... die selben HomeMatic/homematicIP Geräte ... in Punkto Funktionalität ...
+... dieselben HomeMatic/homematicIP Geräte ... in puncto Funktionalität ...

65-65: German: “Voraussetzungen” (spelling).

If the wiki anchors use the correct spelling, update link text/anchors accordingly. If the existing wiki slug still uses “vorraussetzungen”, keep as-is to avoid breaking links.

-[mehr...](https://github.com/OpenCCU/OpenCCU/wiki/Einleitung#vorraussetzungen)
+[mehr...](https://github.com/OpenCCU/OpenCCU/wiki/Einleitung#voraussetzungen)

Also applies to: 76-76

README.md (5)

24-24: Consistency: “Add-on” (hyphen, lowercase “on”).

-... or even as a pure [Home Assistant](https://www.home-assistant.io/) Add-On.
+... or even as a pure [Home Assistant](https://www.home-assistant.io/) add-on.

30-30: Typo: “compatible”.

-Due to the used base components, OpenCCU is 100% compatibile to the standard CCU control center ...
+Due to the used base components, OpenCCU is 100% compatible with the standard CCU control center ...

69-69: Grammar: “the normal CCU WebUI”.

-... Afterwards you should then find yourself in then normal CCU WebUI ...
+... Afterwards you should then find yourself in the normal CCU WebUI ...

150-150: Fix typos: “completely”, “intention(s)”.

-... is distributed completly free of charge and without any commercial intension whatsoever.
+... is distributed completely free of charge and without any commercial intention whatsoever.

160-160: Typo: “documentation”.

-If after reading through this documentatin anyone is still unsure ...
+If after reading through this documentation anyone is still unsure ...
DEVELOPMENT.md (5)

5-5: Minor rephrase for clarity.

-The fastest and recommended way to develop is using a local [Visual Studio Code] ...
+The fastest, recommended way to develop is to use a local [Visual Studio Code] ...

14-15: Clarify target wording and spacing.

-2. Use `make` to build any of the OpenCCU. If you run `make`without targets the list of available commands is printed.
+2. Use `make` to build any OpenCCU target. If you run `make` without targets, the list of available commands is printed.

21-24: Fix product term and spelling (“Supervisor”, “useful”).

-4. Install the OpenCCU from the supervisord menu.
+4. Install the OpenCCU add-on from the Supervisor menu.
@@
-6. It is usefull to enable the `Show in sidebar` so you can open the OpenCCU WebUI ...
+6. It is useful to enable `Show in sidebar` so you can open the OpenCCU WebUI ...

25-28: Correct “Continuous Integration”.

-## Continous integration
+## Continuous integration
@@
-OpenCCU uses GitHub Workflows for Continous Integrations. The actions tab shows available workflows.
+OpenCCU uses GitHub Workflows for Continuous Integration. The Actions tab shows available workflows.

56-57: Keep list tone consistent and explicit.

-  - bumps all public version references in `release/LATEST-VERSION.js`, `helm/openccu/Chart.yaml`, `release/rpi-imager.json` and `home-assistant-addon/config.yaml`.
+  - Bumps all public version references in `release/LATEST-VERSION.js`, `helm/openccu/Chart.yaml`, `release/rpi-imager.json`, and `home-assistant-addon/config.yaml`.
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c60dfd1 and 2607ee8.

📒 Files selected for processing (7)
  • CODE_OF_CONDUCT.md (2 hunks)
  • CONTRIBUTING.md (3 hunks)
  • DEVELOPMENT.md (3 hunks)
  • README.de.md (3 hunks)
  • README.md (3 hunks)
  • SECURITY.md (1 hunks)
  • SUPPORT.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
README.de.md

[grammar] ~23-~23: Ensure spelling is correct
Context: ...ur den kompletten Funktionsumfang einer sogn. HomeMatic CCU SmartHome-Zentrale für ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~23-~23: Ensure spelling is correct
Context: ...räten für frei erhältliche Single-Board-Computern (SBC) wie z.B. den [RaspberryPi](https:...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~23-~23: Ensure spelling is correct
Context: ... auf verschiedenen Ebenen (WebUI, Linux-Betriebsystem, etc.) Verbesserungen bzw. Bugfixes mit...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~29-~29: Ensure spelling is correct
Context: ...tet, das nicht nur die selben HomeMatic/homematicIP Geräte angelernt/genutzt werden können,...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~29-~29: Ensure spelling is correct
Context: ...en können, auch verhält sich OpenCCU in Punkto Funktionalität und WebUI vollkommen kom...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~31-~31: Ensure spelling is correct
Context: ...rmware von der Firma eQ3/ELV übernommen wurde oder aus kommerzieller Sicht nicht über...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~69-~69: Ensure spelling is correct
Context: ...://github.com/OpenCCU/OpenCCU/releases) steht für die jeweilige Target-Hardware Datei...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~69-~69: Ensure spelling is correct
Context: ...man z.B. die SD Karte in den jeweiligen RaspberryPi ein und startet diesen. Danach sollte d...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~73-~73: Ensure spelling is correct
Context: ...i/Installation#schnellstart) ## 📝 Dokumentation 1. [Einleitung](https://github.com/Ope...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~134-~134: Ensure spelling is correct
Context: ...ren Personen bestätigter Bug in OpenCCU herauskristallieren wird darum gebeten diesen Bug bzw. dies...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~136-~136: Ensure spelling is correct
Context: ... von vielen Nutzern reproduziert werden könnte und man sich dort an etwaigen Diskussio...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~144-~144: Ensure spelling is correct
Context: ...ird selbst komplett kostenfrei und ohne jeglichen kommerziellen Intensionen entwickelt und zur komplett kostenfreie...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~148-~148: Ensure spelling is correct
Context: ...ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTS...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

README.md

[style] ~24-~24: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ...https://www.home-assistant.io/) Add-On. On top of that wider range of supported operating envi...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[style] ~31-~31: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ...open-source based CCU system software. On top of that, OpenCCU provides a whole bunch of enha...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[style] ~32-~32: Consider using “bunch”.
Context: ...re. On top of that, OpenCCU provides a whole bunch of enhancements or even bugfixes in the...

(WHOLE_LOT)


[locale-violation] ~69-~69: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ... http://openccu/ in your web browser. Afterwards you should then find yourself in then n...

(AFTERWARDS_US)


[style] ~142-~142: Consider using a less common alternative to make your writing sound more unique and professional.
Context: ...tribution in any way is highly welcome. Please feel free to contribute not only by using the offici...

(FEEL_FREE_TO_STYLE_ME)


[style] ~143-~143: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ... any documentation pages in this wiki. On top of that, direct contributions by sending in Pul...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[uncategorized] ~144-~144: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... however, that any contribution to this open source project have to be in accordance to the...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~144-~144: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...e to be in accordance to the Apache-2.0 open source license under which OpenCCU itself is d...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[style] ~150-~150: Two successive sentences begin with the same adverb. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ob/master/LicenseEN.txt) license terms. Furthermore, the OpenCCU logo and all other graphic...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

CONTRIBUTING.md

[grammar] ~3-~3: Ensure spelling is correct
Context: ...And of course we love to hear about any successfull use of OpenCCU to be shared with the co...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~13-~13: Consider using a different verb to strengthen your wording.
Context: ...to track all bugs and features. If you find an issue, please do file it on the repo...

(FIND_ENCOUNTER)


[style] ~17-~17: Consider using a less common alternative to make your writing sound more unique and professional.
Context: ...ue - please don't take this personally! Please feel free to re-open issues we've closed if there's ...

(FEEL_FREE_TO_STYLE_ME)


[style] ~35-~35: Consider using a more concise synonym.
Context: ...CCU team Beyond GitHub, we try to have a variety of different lines of communication open: ...

(A_VARIETY_OF)


[grammar] ~42-~42: Ensure spelling is correct
Context: ...ed under the Apache 2.0 license, please explictly state so or completly refrain from cont...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~42-~42: Ensure spelling is correct
Context: ...0 license, please explictly state so or completly refrain from contributing any source co...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

SUPPORT.md

[grammar] ~9-~9: Ensure spelling is correct
Context: ... verwenden. Wir nutzen GitHub als reine Entwicklungsplatform und nicht als Platform um Endnutzern Hi...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

DEVELOPMENT.md

[style] ~23-~23: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...open the OpenCCU WebUI (NOTE: you might need to wait some seconds until it is available...

(REP_NEED_TO_VB)

SECURITY.md

[uncategorized] ~5-~5: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...sions As OpenCCU is a community-driven open source project and our resources are limited w...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

🪛 markdownlint-cli2 (0.17.2)
DEVELOPMENT.md

5-5: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

🔇 Additional comments (5)
CODE_OF_CONDUCT.md (3)

5-5: Rebranding looks correct.


9-9: Rebranding looks correct.


62-62: Rebranding looks correct.

README.de.md (1)

107-107: Verify wiki anchors carried over after rebrand.

These links still reference “raspberrymatic” or seem truncated:

  • Umstieg-Link: “umstieg-zu-virtuellem-raspberrymatic”
  • USV anchor ends with “...-nut”

Please confirm these anchors exist in the new wiki; adjust to the OpenCCU slug if needed (e.g., “...-virtuellem-openccu”, “...-usv-clientserver-nutzung”).

Also applies to: 122-122

README.md (1)

109-109: Verify wiki anchors after rebrand.

  • “umstieg-zu-virtuellem-raspberrymatic” likely needs an OpenCCU slug
  • “usv-clientserver-nut” appears truncated

Please confirm and update to the correct anchors.

Also applies to: 125-125

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🔭 Outside diff range comments (2)
.github/workflows/snapshot.yml (1)

144-163: Update snapshot workflow: externalize release_id and correct repository gate

The snapshot job still gates on jens-maus/RaspberryMatic and hard-codes 22744592 in every release step. Let’s:

  • Change the if check to target OpenCCU/OpenCCU
  • Define RELEASE_ID once in env:
  • Replace all release_id: 22744592 and hard-wired upload URLs with the new variable

Locations to update in .github/workflows/snapshot.yml:

  • Line 43: repository conditional
  • Lines 145, 160, 174, 188, 202, 216, 230, 244, 258, 272: release_id and upload_url

Suggested diff:

 jobs:
   snapshot:
+    env:
+      RELEASE_ID: 22744592
     steps:
       # update gate to current repo
-      if: ${{ github.repository == 'jens-maus/RaspberryMatic' && (github.event_name != 'schedule' || needs.repo-check.outputs.has-commits > 0) }}
+      if: ${{ github.repository == 'OpenCCU/OpenCCU' && (github.event_name != 'schedule' || needs.repo-check.outputs.has-commits > 0) }}

       # for each upload step…
-      upload_url: https://uploads.github.com/repos/OpenCCU/OpenCCU/releases/22744592/assets{?name,label}
-      release_id: 22744592
+      upload_url: https://uploads.github.com/repos/${{ github.repository }}/releases/${{ env.RELEASE_ID }}/assets{?name,label}
+      release_id: ${{ env.RELEASE_ID }}

Apply these changes to all snapshot upload steps to avoid drift and streamline future updates.

.github/workflows/release.yml (1)

513-515: Update container provenance subject-name
The container image is published under ghcr.io/openccu/openccu, so the provenance subject-name in your release workflow needs to be updated accordingly.

• .github/workflows/release.yml (around line 513)

-          subject-name: ghcr.io/${{ github.repository_owner }}/raspberrymatic
+          subject-name: ghcr.io/openccu/openccu
🧹 Nitpick comments (3)
.github/workflows/snapshot.yml (2)

401-445: OCI metadata partially rebranded — update vendor/URL?

Titles/authors moved to OpenCCU, but:

  • vendor remains “RasperryMatic OpenSource Project” (typo + old brand).
  • url points to raspberrymatic.de.

If the project/vendor and website changed, update accordingly.

- org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+ org.opencontainers.image.vendor=OpenCCU OpenSource Project
- org.opencontainers.image.url=https://raspberrymatic.de
+ org.opencontainers.image.url=https://openccu.org

If the canonical site remains raspberrymatic.de, keep it; otherwise switch to the new domain.


584-596: Container retention policy refers to raspberrymatic — align with image rename

If your GHCR image name changes, update image-names accordingly.

- image-names: raspberrymatic
+ image-names: openccu

If you intend to keep publishing to the legacy name for continuity, consider retaining both names here.

.github/workflows/release.yml (1)

479-499: OCI metadata labels: update vendor/title/url for full rebrand

  • vendor still “RasperryMatic OpenSource Project” (typo + legacy).
  • url points to raspberrymatic.de.

Align to OpenCCU if applicable.

- org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+ org.opencontainers.image.vendor=OpenCCU OpenSource Project
- org.opencontainers.image.url=https://raspberrymatic.de
+ org.opencontainers.image.url=https://openccu.org
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2607ee8 and e3798df.

📒 Files selected for processing (3)
  • .github/workflows/lock.yml (1 hunks)
  • .github/workflows/release.yml (23 hunks)
  • .github/workflows/snapshot.yml (23 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Linter Checks
🔇 Additional comments (18)
.github/workflows/lock.yml (1)

1-3: Header/metadata updates only — OK

No functional changes; safe rebranding + yaml front matter. LGTM.

.github/workflows/snapshot.yml (7)

39-41: Permissions tightened for provenance — good

Granting contents/id-token/attestations write is appropriate for artifact and provenance attestation.


115-117: Build rename and manifest SHA tagging — OK

OpenCCU-* cleanup and SHA-suffixed .mf are consistent with the rebrand.


286-288: Artifact naming and provenance attestation — OK

Naming aligns with OpenCCU and attestation config is correct.

Also applies to: 295-295, 305-307, 311-312


457-458: tar_prefix rebrand — OK

Matches artifact naming for OpenCCU OCI layers.


345-354: OCI artifact download/extraction rename — OK

Artifact names and extraction glob updated consistently to OpenCCU.

Also applies to: 360-360


1-1: Summary mismatch: rebrand not “entirely” complete in this workflow

The AI summary claims complete rebranding across repo gating and container naming. This workflow still uses:

  • If-gate tied to jens-maus/RaspberryMatic (Line 43).
  • GHCR subject-name and cleanup using raspberrymatic.

Flagging for clarity; changes are mostly textual/path renames, but some identifiers remain on the legacy name.

Also applies to: 318-330


473-476: Verify GHCR image subject-name in provenance attestation
The workflow is currently attesting the image as

subject-name: ghcr.io/${{ github.repository_owner }}/raspberrymatic

which resolves to ghcr.io/openccu/raspberrymatic. If you’ve renamed the image to ghcr.io/openccu/openccu, update this value; if you intend to continue using the old path, leave it as is.

• File: .github/workflows/snapshot.yml
• Step: Attest container provenance

Suggested diff (if renaming):

- subject-name: ghcr.io/${{ github.repository_owner }}/raspberrymatic
+ subject-name: ghcr.io/openccu/openccu

Please confirm the intended GHCR repository name to ensure your attestations are accurate.

.github/workflows/release.yml (10)

94-95: Release draft title rebrand — OK

‘OpenCCU ’ looks correct.


109-111: Permissions extended for attestation — OK

Required for upload/artifact provenance.


173-175: Build cleanup and OpenCCU artifact prefix — OK

Consistent with rebrand.


191-205: Asset path/name rebrand — OK

All platform-specific release uploads reflect the OpenCCU naming.

Also applies to: 206-225, 226-245, 246-265, 266-285


294-306: Artifact + manifest uploads and attestations — OK

OpenCCU names carried through consistently.

Also applies to: 313-321


393-402: OCI artifact downloads/extraction — OK

OpenCCU names/globs are consistent.

Also applies to: 408-416


541-567: rpi manifest handling — OK

OpenCCU manifest names wired through to rpi-imager update script.


571-572: LATEST-VERSION.js product identifier

Still “HM-RASPBERRYMATIC”; assuming this must remain for OEM/client compatibility. Please confirm.


579-580: Helm Chart release notes link rebrand — OK

Release notes URL updated to OpenCCU repo; good.


1-1: Summary mismatch: rebrand not fully reflected in image path/provenance

AI summary implies OCI metadata and image paths rebranded. This workflow still pushes/attests “raspberrymatic” images. If that’s intentional, ignore; otherwise update paths and retention in tandem.

Also applies to: 447-466

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
README.de.md (1)

148-148: Disclaimer brand fixed to OPENCCU.

The previous issue about leftover “RASPBERRMATIC” is resolved here.

🧹 Nitpick comments (4)
Makefile (1)

63-63: Avoid needless subshell; assign BOARD directly.

Subshelling for a no-op echo is unnecessary. Assign BOARD from PRODUCT directly.

-	$(eval BOARD := $(shell echo $(PRODUCT)))
+	$(eval BOARD := $(PRODUCT))
README.de.md (3)

10-10: Typo in badge: “Snaphot” → “Snapshot”.

Fix the workflow badge label/URL.

-[![Snaphot Build](https://github.com/OpenCCU/OpenCCU/workflows/Snaphot%20Build/badge.svg)](https://github.com/OpenCCU/OpenCCU/releases/tag/snapshots)
+[![Snapshot Build](https://github.com/OpenCCU/OpenCCU/workflows/Snapshot%20Build/badge.svg)](https://github.com/OpenCCU/OpenCCU/releases/tag/snapshots)

12-13: Use HTTPS for isitmaintained badges to avoid mixed-content issues.

Switch to https to prevent warnings and ensure secure embeds.

-[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)
-[![Percentage of issues still open](http://isitmaintained.com/badge/open/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)
+[![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)
+[![Percentage of issues still open](https://isitmaintained.com/badge/open/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)

69-69: Update Etcher link to the current official URL.

The Etcher project’s canonical site is under balena.

-... Imaging-Tool [Etcher](https://etcher.io) ...
+... Imaging-Tool [Etcher](https://etcher.balena.io) ...

If unsure, please confirm the current official URL.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e3798df and dab0958.

📒 Files selected for processing (2)
  • Makefile (6 hunks)
  • README.de.md (3 hunks)
🧰 Additional context used
🪛 checkmake (0.2.2)
Makefile

[warning] 20-20: Target "PLATFORM" should be declared PHONY.

(phonydeclared)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Linter Checks
🔇 Additional comments (3)
Makefile (2)

177-177: Help banner rebranding LGTM.

OpenCCU Build Environment wording is consistent with the project rename.


78-84: Artifacts renamed successfully – no stale references found.

All searches confirm there are no remaining RaspberryMatic-named artifacts, and every downstream script now references the new OpenCCU names:

  • Makefile (lines 78–84) emits OpenCCU-$(PRODUCT_VERSION)-$(BOARD).tar and OpenCCU.ova.
  • Post-image/post-release scripts under buildroot-external/board/* correctly use OpenCCU-…tar, .ova, and related extensions.
  • Fake-build inputs in release/updatepkg/*/files-images.txt exist for lxc_arm64, oci_arm64, and rpi3, ensuring dummy artifacts are generated.

No further updates needed.

README.de.md (1)

107-107: Verify and align anchor slug in README.de.md

Please confirm the exact anchor ID on the “Installation” wiki page and update the link in README.de.md if needed:

  • File: README.de.md
  • Line: 107

Proposed change:

- * [Umstieg zu virtuellem OpenCCU](https://github.com/OpenCCU/OpenCCU/wiki/Installation#umstieg-zu-virtuellem-raspberrymatic)
+ * [Umstieg zu virtuellem OpenCCU](https://github.com/OpenCCU/OpenCCU/wiki/Installation#umstieg-zu-virtuellem-openccu)

Before merging, double-check on https://github.com/OpenCCU/OpenCCU/wiki/Installation that the “Umstieg zu virtuellem OpenCCU” section’s anchor is indeed #umstieg-zu-virtuellem-openccu (without any -1 suffix).

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (7)
buildroot-external/board/odroid-c4/post-release.sh (1)

9-29: OpenCCU artifact rename is correct; ensure dependent consumers are updated

The rename and manifest updates are consistent. Using BOARD=${2} aligns with other boards.

Confirm no remaining references to RaspberryMatic-*.{img,zip,mf,sha256} in workflows/docs/scripts:

#!/bin/bash
set -euo pipefail
rg -n --hidden -S 'RaspberryMatic-[^"]+\.(zip|img|mf|sha256)'
buildroot-external/board/generic-aarch64/post-release.sh (1)

9-9: LGTM — rename is consistent; update downstream references accordingly

The switch to OpenCCU-* and BOARD from arg2 is consistent. Ensure CI workflows, upload scripts, release templates, and docs no longer expect RaspberryMatic-* artifact names.

#!/bin/bash
set -euo pipefail
rg -n --hidden -S 'RaspberryMatic-[^"]+\.(zip|img|mf|sha256)'

Also applies to: 15-21, 24-24, 27-28

buildroot-external/board/odroid-n2/post-release.sh (2)

19-21: Double-check EULA paths exist for this PRODUCT

The zip includes ./updatepkg/${PRODUCT}/EULA.de and EULA.en. Ensure those files exist for odroid-n2’s PRODUCT to avoid zip failure with set -e.

#!/bin/bash
set -euo pipefail
fd -Ht f -g "buildroot-external/board/odroid-n2/updatepkg/*/EULA.*" | sort

9-9: OpenCCU artifact naming looks correct; verify consumers

Rename is coherent; BOARD from arg2 matches other boards. Confirm release ingestion and docs are updated.

Also applies to: 15-16, 21-21, 24-24, 27-28

buildroot-external/board/generic-x86_64/post-release.sh (2)

15-21: Artifacts correctly renamed; ensure workflows/docs are updated to OpenCCU-

Matches the new naming scheme. Update any CI steps and README links still using RaspberryMatic-*.

#!/bin/bash
set -euo pipefail
rg -n 'RaspberryMatic-' .github/workflows README* docs || true

24-24: Manifest rename mirrored; update ingestion points

The manifest filename and entries now use OpenCCU-*.mf. Ensure workflow steps that move/upload .mf are updated.

Also applies to: 27-28

Makefile (1)

20-20: Fix sed portability and end-anchor handling in PLATFORM/BOARD_DIR derivation

Current sed uses GNU grouping/alternation and lacks end-of-line anchoring; make will also swallow single $ anchors. Use portable sed with explicit end anchors using $$.

Apply:

-PLATFORM:=$(shell echo -n $(PRODUCT) | sed 's/_\(amd64\|arm.*\)//')
+PLATFORM:=$(shell echo -n $(PRODUCT) | sed -e 's/_amd64$$//' -e 's/_arm.*$$//')
-$(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | sed 's/_\(amd64\|arm.*\)//'))
+$(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | sed -e 's/_amd64$$//' -e 's/_arm.*$$//'))
-$(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | sed 's/_\(amd64\|arm.*\)//'))
+$(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | sed -e 's/_amd64$$//' -e 's/_arm.*$$//'))

Also applies to: 92-92, 101-101

🧹 Nitpick comments (2)
buildroot-external/board/rpi3/post-release.sh (1)

37-38: Avoid command substitution with ls in tar for robustness

Using $(ls ...) can break on unusual filenames and is unnecessary here.

Apply:

-# shellcheck disable=SC2046
-tar -C "/tmp/${PRODUCT}-${PRODUCT_VERSION}" --owner=root --group=root -cvzhf "./OpenCCU-${PRODUCT_VERSION}-ccu3.tgz" $(ls "/tmp/${PRODUCT}-${PRODUCT_VERSION}")
+tar -C "/tmp/${PRODUCT}-${PRODUCT_VERSION}" --owner=root --group=root -cvzhf "./OpenCCU-${PRODUCT_VERSION}-ccu3.tgz" .
Makefile (1)

63-63: Minor: avoid subshell for BOARD; assign directly

No need to fork a shell here.

-$(eval BOARD := $(shell echo $(PRODUCT)))
+$(eval BOARD := $(PRODUCT))
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dab0958 and 497bd85.

📒 Files selected for processing (15)
  • Makefile (6 hunks)
  • buildroot-external/board/generic-aarch64/post-release.sh (1 hunks)
  • buildroot-external/board/generic-x86_64/post-release.sh (1 hunks)
  • buildroot-external/board/lxc/post-release.sh (1 hunks)
  • buildroot-external/board/oci/post-release.sh (1 hunks)
  • buildroot-external/board/odroid-c2/post-release.sh (1 hunks)
  • buildroot-external/board/odroid-c4/post-release.sh (1 hunks)
  • buildroot-external/board/odroid-n2/post-release.sh (1 hunks)
  • buildroot-external/board/ova/post-release.sh (1 hunks)
  • buildroot-external/board/rpi0/post-release.sh (1 hunks)
  • buildroot-external/board/rpi2/post-release.sh (1 hunks)
  • buildroot-external/board/rpi3/post-release.sh (2 hunks)
  • buildroot-external/board/rpi4/post-release.sh (1 hunks)
  • buildroot-external/board/rpi5/post-release.sh (1 hunks)
  • buildroot-external/board/tinkerboard/post-release.sh (1 hunks)
🔥 Files not summarized due to errors (1)
  • buildroot-external/board/ova/post-release.sh: Error: Server error: no LLM provider could handle the message
🚧 Files skipped from review as they are similar to previous changes (8)
  • buildroot-external/board/rpi5/post-release.sh
  • buildroot-external/board/lxc/post-release.sh
  • buildroot-external/board/rpi4/post-release.sh
  • buildroot-external/board/tinkerboard/post-release.sh
  • buildroot-external/board/odroid-c2/post-release.sh
  • buildroot-external/board/rpi2/post-release.sh
  • buildroot-external/board/oci/post-release.sh
  • buildroot-external/board/rpi0/post-release.sh
🧰 Additional context used
🪛 checkmake (0.2.2)
Makefile

[warning] 20-20: Target "PLATFORM" should be declared PHONY.

(phonydeclared)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Linter Checks
🔇 Additional comments (2)
Makefile (2)

177-177: Help text branding updated

OpenCCU Build Environment message looks good.


78-80: OpenCCU naming verified: no RaspberryMatic artifacts remaining

A repository-wide search for RaspberryMatic.*\.(tar|ova) returned no matches. CI/upload workflows and documentation no longer reference RaspberryMatic tarballs or .ova files—no further changes needed.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.github/workflows/ci.yml (1)

111-111: Update workflow repo guard to new repository name

This condition still targets the old repository. After the rename/move, CI builds will be skipped.

Apply this diff:

-    if: ${{ (github.event_name != 'pull_request' || github.event.pull_request.user.login == 'jens-maus') && github.actor != 'dependabot[bot]' && github.repository == 'jens-maus/RaspberryMatic' }}
+    if: ${{ (github.event_name != 'pull_request' || github.event.pull_request.user.login == 'jens-maus') && github.actor != 'dependabot[bot]' && github.repository == 'OpenCCU/OpenCCU' }}
.github/workflows/release.yml (1)

453-466: Vendor label still “RasperryMatic OpenSource Project” — update to OpenCCU

Branding inconsistency plus a typo. Use “OpenCCU OpenSource Project”.

Apply this diff in both labels and annotations blocks:

-            org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+            org.opencontainers.image.vendor=OpenCCU OpenSource Project
♻️ Duplicate comments (2)
.github/workflows/release.yml (1)

113-114: Workflow if-gate still tied to jens-maus/RaspberryMatic

This will prevent the release build from running after the repo rename.

Apply this diff:

-    if: github.repository == 'jens-maus/RaspberryMatic'
+    if: github.repository == 'OpenCCU/OpenCCU'
.github/workflows/snapshot.yml (1)

103-104: Guard EULA nightly file moves

Same issue as discussed previously: protect mv when nightly files are missing.

Apply this diff:

-          mv -f release/updatepkg/${{ matrix.platform }}/EULA.de_nightly release/updatepkg/${{ matrix.platform }}/EULA.de
-          mv -f release/updatepkg/${{ matrix.platform }}/EULA.en_nightly release/updatepkg/${{ matrix.platform }}/EULA.en
+          for lang in de en; do
+            src="release/updatepkg/${{ matrix.platform }}/EULA.${lang}_nightly"
+            dst="release/updatepkg/${{ matrix.platform }}/EULA.${lang}"
+            if [[ -f "$src" ]]; then
+              mv -f "$src" "$dst"
+            fi
+          done
🧹 Nitpick comments (4)
.github/workflows/ci.yml (1)

1-1: Typo: “Continious” → “Continuous”

Minor spelling fix in the workflow header comment.

Apply this diff:

-# OpenCCU Continious Integration Check Workflow
+# OpenCCU Continuous Integration Check Workflow
.github/workflows/release-proxy.yml (1)

85-89: Standardize vendor field in build labels

Same vendor inconsistency here. Update to OpenCCU.

Apply this diff:

-            org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+            org.opencontainers.image.vendor=OpenCCU OpenSource Project
.github/workflows/release.yml (1)

479-499: OCI labels: align vendor and branding

Same vendor inconsistency; authors already updated to OpenCCU.

Apply this diff:

-            org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+            org.opencontainers.image.vendor=OpenCCU OpenSource Project
.github/workflows/snapshot.yml (1)

406-425: Docker metadata: vendor label still “RasperryMatic” and authors updated — standardize

Update vendor to “OpenCCU OpenSource Project” for consistency across labels and annotations.

Apply this diff in both sections:

-            org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+            org.opencontainers.image.vendor=OpenCCU OpenSource Project
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 497bd85 and 21c6b82.

📒 Files selected for processing (12)
  • .github/workflows/ci.yml (11 hunks)
  • .github/workflows/oci-repush.yml (5 hunks)
  • .github/workflows/release-proxy.yml (3 hunks)
  • .github/workflows/release.yml (23 hunks)
  • .github/workflows/snapshot.yml (23 hunks)
  • buildroot-external/configs/generic-aarch64.config (1 hunks)
  • buildroot-external/configs/generic-x86_64.config (1 hunks)
  • buildroot-external/configs/odroid-c2.config (1 hunks)
  • buildroot-external/configs/odroid-c4.config (1 hunks)
  • buildroot-external/configs/odroid-n2.config (1 hunks)
  • buildroot-external/configs/ova.config (1 hunks)
  • buildroot-external/configs/tinkerboard.config (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (7)
  • buildroot-external/configs/tinkerboard.config
  • buildroot-external/configs/odroid-n2.config
  • buildroot-external/configs/generic-aarch64.config
  • buildroot-external/configs/ova.config
  • buildroot-external/configs/generic-x86_64.config
  • buildroot-external/configs/odroid-c4.config
  • .github/workflows/oci-repush.yml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: CI build [lxc_amd64]
  • GitHub Check: CI build [oci_amd64]
  • GitHub Check: CI build [generic-x86_64]
  • GitHub Check: CI build [odroid-c4]
  • GitHub Check: CI build [odroid-n2]
  • GitHub Check: CI build [odroid-c2]
  • GitHub Check: CI build [rpi2]
  • GitHub Check: CI build [rpi4]
  • GitHub Check: CI build [tinkerboard]
  • GitHub Check: CI build [rpi3]
  • GitHub Check: CI build [rpi5]
🔇 Additional comments (10)
buildroot-external/configs/odroid-c2.config (2)

7-7: Overlay rename looks correct and preserves override order

base-raspmaticbase-openccu and WebUI-raspmaticWebUI-openccu are updated consistently while keeping the original overlay ordering, which is important for expected precedence. RFD overlay remains unchanged, which aligns with the rest of the PR.


7-7: All overlay directories correctly renamed and no stale references remain

Verification confirmed:

  • No -raspmatic overlays in buildroot-external/configs/
  • base-openccu and WebUI-openccu directories present under buildroot-external/overlay/
  • No occurrences of “raspberrymatic” or “raspmatic” in the overlay tree

No further action required.

.github/workflows/ci.yml (2)

258-260: Container registry path still uses “raspberrymatic”

The registry repository name is unchanged. If the intention is to retain ghcr.io//raspberrymatic for continuity, fine; otherwise, update to ghcr.io//openccu (or similar) for brand consistency.

If you want to migrate, consider:

-          echo "CCU_OCI_REPO=ghcr.io/${{ github.repository_owner }}/raspberrymatic" >> $GITHUB_ENV
+          echo "CCU_OCI_REPO=ghcr.io/${{ github.repository_owner }}/openccu" >> $GITHUB_ENV

Note: also update any retention policies and consumers accordingly if changing the image name.


309-322: Confirm public URL branding

Labels/annotations still reference https://raspberrymatic.de. If OpenCCU has a new site, update; if not, keeping the established URL is fine.

Applies here and in the repeated label blocks below.

.github/workflows/release-proxy.yml (1)

51-52: Confirm URL branding

org.opencontainers.image.url still points to raspberrymatic.de. If OpenCCU continues to use this domain, fine; otherwise, update.

.github/workflows/release.yml (3)

421-431: Container image tag base remains “raspberrymatic” — intentional?

BASE_TAG uses ghcr.io//raspberrymatic. If you plan to keep the image name for continuity, OK. If not, rename to an OpenCCU repo and update downstream consumers.

Example:

-          BASE_TAG="ghcr.io/${{ github.repository_owner }}/raspberrymatic"
+          BASE_TAG="ghcr.io/${{ github.repository_owner }}/openccu"

Also update the attestation subject (Line 513) accordingly.


571-580: Helm release notes URL updated — good

The link now points to OpenCCU releases. Looks consistent with the rebrand.


569-572: Confirm legacy identifier HM-RASPBERRYMATIC

LATEST-VERSION.js still uses HM-RASPBERRYMATIC. If this is required by the upstream ecosystem, keep it; otherwise, consider aligning with the new naming.

.github/workflows/snapshot.yml (2)

373-384: OCI tag base uses ‘raspberrymatic’ — verify intent

If you intend to keep publishing to ghcr.io//raspberrymatic for continuity, leave as-is. Otherwise, switch to an OpenCCU image name and update references.

Example:

-          BASE_TAG="ghcr.io/${{ github.repository_owner }}/raspberrymatic"
+          BASE_TAG="ghcr.io/${{ github.repository_owner }}/openccu"

Also align the attestation subject-name (Line 473) and retention policy (Line 590) if you switch.


590-596: Container retention policy scoped to ‘raspberrymatic’

If the image name changes, adjust image-names accordingly. If keeping the historical name, no action needed.

@jens-maus
Copy link
Owner Author

@coderabbitai Can you please delete all your comments and perform a completely fresh code review on this pull request?

Copy link

coderabbitai bot commented Aug 20, 2025

@jens-maus I'll resolve all my existing comments and perform a completely fresh code review of this pull request.

✅ Actions performed

Comments resolved and changes approved.


Full review triggered.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 26

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (8)
CODE_OF_CONDUCT.md (1)

56-56: Typo: double punctuation

There is an extra period at the end: “as soon as possible. .”

Proposed fix:

  • Replace “as soon as possible. .” with “as soon as possible.”
.github/workflows/oci-repush.yml (3)

62-69: Tags are still pushed to ghcr.io//raspberrymatic — rename to openccu to avoid split repository

Metadata images use ghcr.io/${{ github.repository }} (OpenCCU/OpenCCU), but the actual push tags point to ghcr.io/${{ github.repository_owner }}/raspberrymatic. This will publish under a different image name than intended.

-          BASE_TAG="ghcr.io/${{ github.repository_owner }}/raspberrymatic"
+          BASE_TAG="ghcr.io/${{ github.repository_owner }}/openccu"

Optionally align metadata “images” as well if you want a single source of truth (it already expands to ghcr.io/OpenCCU/OpenCCU).


91-106: Outdated vendor name and URL in image metadata; also “RasperryMatic” typo

Keep branding and links consistent post-rename; fix the typo.

-          images: ghcr.io/${{ github.repository }}
+          images: ghcr.io/${{ github.repository }}
           labels: |
             org.opencontainers.image.description=Alternative OS for your homematicIP CCU
-            org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+            org.opencontainers.image.vendor=OpenCCU OpenSource Project
             org.opencontainers.image.authors=OpenCCU OpenSource Team
             org.opencontainers.image.version=${{ env.BUILD_VERSION }}-${{ env.GITHUB_SHA7 }}
-            org.opencontainers.image.url=https://raspberrymatic.de
+            org.opencontainers.image.url=https://github.com/${{ github.repository }}
             org.opencontainers.image.created=${{ env.BUILD_DATETIME }}
           annotations: |
             org.opencontainers.image.description=Alternative OS for your homematicIP CCU
-            org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+            org.opencontainers.image.vendor=OpenCCU OpenSource Project
             org.opencontainers.image.authors=OpenCCU OpenSource Team
             org.opencontainers.image.version=${{ env.BUILD_VERSION }}-${{ env.GITHUB_SHA7 }}
-            org.opencontainers.image.url=https://raspberrymatic.de
+            org.opencontainers.image.url=https://github.com/${{ github.repository }}
             org.opencontainers.image.created=${{ env.BUILD_DATETIME }}

If there’s a new project homepage (e.g., openccu.*), use that instead of the GitHub URL.


118-136: Labels: fix vendor typo and fully switch to OpenCCU branding

Vendor still says “RasperryMatic” and authors are already OpenCCU. Make the vendor consistent.

           labels: |
             org.opencontainers.image.title=OpenCCU
             org.opencontainers.image.description=Alternative OS for your homematicIP CCU
-            org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+            org.opencontainers.image.vendor=OpenCCU OpenSource Project
             org.opencontainers.image.authors=OpenCCU OpenSource Team
             org.opencontainers.image.licenses=Apache-2.0
-            org.opencontainers.image.url=https://raspberrymatic.de
+            org.opencontainers.image.url=https://github.com/${{ github.repository }}
             org.opencontainers.image.source=https://github.com/${{ github.repository }}
             org.opencontainers.image.documentation=https://github.com/${{ github.repository }}/wiki
             org.opencontainers.image.created=${{ env.BUILD_DATETIME }}
             org.opencontainers.image.ref.name=${{ env.GIT_REF }}
             org.opencontainers.image.revision=${{ github.sha }}
             org.opencontainers.image.version=${{ github.event.inputs.release_tag }}
             io.hass.name=OpenCCU
             io.hass.description=HomeMatic/homematicIP CCU central based on OpenCCU
.github/workflows/ci.yml (2)

111-111: Update repo guard to new org/repo or builds will be skipped after the rename.

-    if: ${{ (github.event_name != 'pull_request' || github.event.pull_request.user.login == 'jens-maus') && github.actor != 'dependabot[bot]' && github.repository == 'jens-maus/RaspberryMatic' }}
+    if: ${{ (github.event_name != 'pull_request' || github.event.pull_request.user.login == 'jens-maus') && github.actor != 'dependabot[bot]' && github.repository == 'OpenCCU/OpenCCU' }}

134-137: Bug: grep runs without a file and will always append to sudoers.

grep is missing the target file, so the condition is effectively always true and duplicates are appended.

-          if ! grep -q ^builder; then echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers; fi
+          if ! grep -q '^builder' /etc/sudoers; then echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers; fi
.github/workflows/release.yml (1)

135-138: Bug: grep without file will always append sudoers line.

Same issue as in CI workflow.

-          if ! grep -q ^builder; then echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers; fi
+          if ! grep -q '^builder' /etc/sudoers; then echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers; fi
.github/workflows/snapshot.yml (1)

66-69: Bug: grep without file will always append sudoers line.

-          if ! grep -q ^builder; then echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers; fi
+          if ! grep -q '^builder' /etc/sudoers; then echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers; fi
♻️ Duplicate comments (22)
buildroot-external/board/ova/post-release.sh (1)

20-21: Confirm EULA source paths exist from ./release.

Zip collects EULA files from ./updatepkg/${PRODUCT}/... after cd ./release. This likely points to a non-existent relative path unless those EULAs are copied into release beforehand.

Run this to verify existence and catch path issues:

#!/bin/bash
set -euo pipefail
# From repo root
echo "EULAs found:"
fd -Ht f -g 'EULA.*' | sort
echo
echo "Referencing scripts:"
rg -nP -C2 'updatepkg/\$\{?PRODUCT\}?/EULA\.(de|en)' buildroot-external/board | sed -E 's/^/ref: /'
buildroot-external/overlay/WebUI-openccu/www/ise/img/README.md (1)

21-21: Fix invalid GitHub anchor: replace #scroll-licenses

#scroll-licenses is not a valid anchor on GitHub README pages. Link to the standard “License” section instead.

Apply this diff:

-<https://github.com/openccu/openccu#scroll-licenses>
+<https://github.com/openccu/openccu#license>

If the repository does not have a “License” section in README, use a direct link to the license file instead (adjust branch as appropriate):

buildroot-external/board/rpi3/post-release.sh (1)

9-9: Scan for stale RaspberryMatic artifact URLs in release metadata

Past releases used RaspberryMatic artifact names in imager JSONs. Ensure they’re updated to OpenCCU.

Run:

#!/bin/bash
set -euo pipefail
# Find lingering RaspberryMatic artifact references in release metadata
rg -n -C2 --hidden -S \
  -g 'release/*.json' \
  -P 'RaspberryMatic-.*\.(img|zip|mf|tgz|sha256)'

Expected: no matches. If any, update URLs/filenames to OpenCCU equivalents.

.github/release-template.md (4)

7-8: Satisfy markdownlint: remove trailing colon and add blank line after heading

-## 🚧 Changes:
+## 🚧 Changes
+
 <sub>For all changes, see the [full commit log](https://github.com/OpenCCU/OpenCCU/compare/${PREVIOUS_TAG}...${VERSION}).</sub>

29-32: Broken GitHub links: update Wiki/Discussions URLs or enable features

The following return 404 today:

Either enable the Wiki/Discussions on the repo or update these links to the correct destinations. Placeholders to fill:

-[OpenCCU - Documentation :us:](https://github.com/OpenCCU/OpenCCU/wiki/en.Home)
-[OpenCCU - Discussions :us:](https://github.com/OpenCCU/OpenCCU/discussions)
-[OpenCCU - Dokumentation :de:](https://github.com/OpenCCU/OpenCCU/wiki)
+[OpenCCU - Documentation :us:](<correct-English-wiki-URL-or-docs-site>)
+[OpenCCU - Discussions :us:](<enable-or-correct-discussions-URL>)
+[OpenCCU - Dokumentation :de:](<correct-German-wiki-URL-or-docs-site>)

I can re-run a URL status check once decided.


34-35: Satisfy markdownlint: remove trailing colon and add blank line after heading

-## 📦 Download:
+## 📦 Download
+
 The following installation archives can be downloaded for different hardware platforms. To verify their integrity a `sha256` checksum is provided as well. You can either upload these files using the WebUI-based update mechanism or unarchive them to e.g. flash the included `*.img` files on a fresh installation media (e.g. microSD card):

3-3: Fix release link (GitHub requires /releases/tag/${VERSION})

Apply:

-[![Downloads](https://img.shields.io/github/downloads/OpenCCU/OpenCCU/${VERSION}/total.svg?style=flat-square)](https://github.com/OpenCCU/OpenCCU/releases/${VERSION}) ![License](https://img.shields.io/github/license/OpenCCU/OpenCCU.svg?style=flat-square) [![Donate](https://img.shields.io/badge/donate-PayPal-green.svg?style=flat-square)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RAQSDY9YNZVCL) [![GitHub sponsors](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&link=https://github.com/sponsors/jens-maus)](https://github.com/sponsors/jens-maus)
+[![Downloads](https://img.shields.io/github/downloads/OpenCCU/OpenCCU/${VERSION}/total.svg?style=flat-square)](https://github.com/OpenCCU/OpenCCU/releases/tag/${VERSION}) ![License](https://img.shields.io/github/license/OpenCCU/OpenCCU.svg?style=flat-square) [![Donate](https://img.shields.io/badge/donate-PayPal-green.svg?style=flat-square)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RAQSDY9YNZVCL) [![GitHub sponsors](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&link=https://github.com/sponsors/jens-maus)](https://github.com/sponsors/jens-maus)
buildroot-external/board/oci/post-image.sh (1)

36-47: LGTM on registry/image rename; ensure ecosystem-wide references are aligned

The switch to DOCKER_REGISTRY=ghcr.io/openccu and tagging ghcr.io/openccu/openccu looks correct and consistent across build/save/cleanup.

To avoid broken pulls, verify no lingering references to the old registry remain:

#!/bin/bash
# Find old GHCR paths
rg -n --no-heading -S 'ghcr\.io/jens-maus' || true

# Find docker image/tag names with raspberrymatic under OCI board area
rg -n --no-heading -S 'raspberrymatic' buildroot-external/board/oci || true
buildroot-external/board/generic-x86_64/post-release.sh (1)

24-28: Ensure CI/workflows and docs also reference OpenCCU-.mf and OpenCCU- artifacts

The script writes OpenCCU-.mf and OpenCCU-.zip. Several workflows/docs may still reference RaspberryMatic-*.

Search and adjust:

#!/bin/bash
# Update any remaining RaspberryMatic- artifact references in workflows/docs
rg -n 'RaspberryMatic-' .github/workflows README.md || true

# Specific .mf references to update
rg -n '\.mf' .github/workflows || true
buildroot-external/board/odroid-n2/post-release.sh (1)

20-21: Ensure EULA files exist for ${PRODUCT} so the ZIP step doesn’t fail or ship without EULAs

The ZIP bundles ./updatepkg/${PRODUCT}/EULA.de and EULA.en. Please make sure these files exist under this board’s updatepkg path for the new product.

Quick check:

#!/bin/bash
fd -Ht f -g 'buildroot-external/board/**/updatepkg/*/EULA.*' | sort

If missing, add both EULAs at:

  • buildroot-external/board/odroid-n2/updatepkg/${PRODUCT}/EULA.de
  • buildroot-external/board/odroid-n2/updatepkg/${PRODUCT}/EULA.en
.github/workflows/release-proxy.yml (1)

48-48: Fix vendor label: still “RasperryMatic …” (typo + old brand)

Align vendor with OpenCCU branding in all label/annotation blocks.

-            org.opencontainers.image.vendor=RasperryMatic OpenSource Project
+            org.opencontainers.image.vendor=OpenCCU OpenSource Project

Repeat the same change in:

  • Line 55 (annotations of metadata step)
  • Line 87 (labels of build-push step)

Also applies to: 55-55, 87-87

Makefile (1)

20-20: Make sed portable and correctly anchored in a Makefile context

Current sed uses GNU alternation and an unescaped end-anchor. On BSD/macOS sed this breaks, and Make will swallow a single $ anchor.

-PLATFORM:=$(shell echo -n $(PRODUCT) | sed 's/_\(amd64\|arm.*\)//')
+PLATFORM:=$(shell echo -n $(PRODUCT) | sed -e 's/_amd64$$//' -e 's/_arm.*$$//')
-	$(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | sed 's/_\(amd64\|arm.*\)//'))
+	$(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | sed -e 's/_amd64$$//' -e 's/_arm.*$$//'))
-	$(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | sed 's/_\(amd64\|arm.*\)//'))
+	$(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | sed -e 's/_amd64$$//' -e 's/_arm.*$$//'))

Benefits:

  • Works on GNU and BSD sed.
  • Correctly strips only trailing platform suffixes.
  • Avoids Make consuming the $ anchor.

Also applies to: 92-92, 101-101

buildroot-external/board/rpi2/post-release.sh (1)

19-22: Guard EULA presence or provide clearer failure

Several board scripts zip EULA files from ./updatepkg/${PRODUCT} but not all products have corresponding EULA files/dirs yet, causing confusing failures.

Consider a preflight check to fail fast with a clear message, or include EULAs conditionally:

-rm -f "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip"
-zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
-sha256sum "OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" >"OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip.sha256"
+rm -f "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip"
+EULA_DE="./updatepkg/${PRODUCT}/EULA.de"
+EULA_EN="./updatepkg/${PRODUCT}/EULA.en"
+if [ ! -f "${EULA_DE}" ] || [ ! -f "${EULA_EN}" ]; then
+  echo "ERROR: Missing EULA files for ${PRODUCT} in ./updatepkg/${PRODUCT}/ (expected EULA.de and EULA.en)" >&2
+  exit 1
+fi
+zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" \
+  "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" \
+  "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" \
+  ../LICENSE "${EULA_DE}" "${EULA_EN}"
+sha256sum "OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" >"OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip.sha256"

If intentional to allow builds without EULAs (e.g., dev runs), we can instead include them conditionally and warn.

.github/workflows/ci.yml (1)

171-172: Guard EULA nightly moves to avoid failing when files are absent.

-          mv -f release/updatepkg/${{ matrix.platform }}/EULA.de_nightly release/updatepkg/${{ matrix.platform }}/EULA.de
-          mv -f release/updatepkg/${{ matrix.platform }}/EULA.en_nightly release/updatepkg/${{ matrix.platform }}/EULA.en
+          for lang in de en; do
+            src="release/updatepkg/${{ matrix.platform }}/EULA.${lang}_nightly"
+            dst="release/updatepkg/${{ matrix.platform }}/EULA.${lang}"
+            if [[ -f "$src" ]]; then
+              mv -f "$src" "$dst"
+            fi
+          done
.github/workflows/release.yml (1)

113-114: Update workflow repo guard to new org/repo.

-    if: github.repository == 'jens-maus/RaspberryMatic'
+    if: github.repository == 'OpenCCU/OpenCCU'
.github/workflows/snapshot.yml (2)

103-105: Guard EULA nightly moves to avoid job failures when files are missing.

-          mv -f release/updatepkg/${{ matrix.platform }}/EULA.de_nightly release/updatepkg/${{ matrix.platform }}/EULA.de
-          mv -f release/updatepkg/${{ matrix.platform }}/EULA.en_nightly release/updatepkg/${{ matrix.platform }}/EULA.en
+          for lang in de en; do
+            src="release/updatepkg/${{ matrix.platform }}/EULA.${lang}_nightly"
+            dst="release/updatepkg/${{ matrix.platform }}/EULA.${lang}"
+            if [[ -f "$src" ]]; then
+              mv -f "$src" "$dst"
+            fi
+          done

43-43: Update repo guard to new org/repo so snapshots run post-rename.

-    if: ${{ github.repository == 'jens-maus/RaspberryMatic' && (github.event_name != 'schedule' || needs.repo-check.outputs.has-commits > 0) }}
+    if: ${{ github.repository == 'OpenCCU/OpenCCU' && (github.event_name != 'schedule' || needs.repo-check.outputs.has-commits > 0) }}
buildroot-external/configs/tinkerboard.config (1)

7-7: Overlay rename and ordering look correct; reconfirm no stale raspmatic references

Change is consistent with other boards. Prior reviews flagged lingering WebUI-raspmatic references in scripts/update-codemirror.sh; please recheck and update if still present.

Run from repo root to verify overlay directories and scan for stale references:

#!/usr/bin/env bash
set -euo pipefail

echo "1) Check for required overlay directories:"
for d in buildroot-external/overlay/base-openccu buildroot-external/overlay/WebUI-openccu; do
  [[ -d "$d" ]] && echo "OK: $d" || echo "MISSING: $d"
done

echo
echo "2) Check (optional) OCI overlay exists (only for OCI targets):"
d=buildroot-external/overlay/base-openccu_oci
[[ -d "$d" ]] && echo "OK: $d" || echo "Note: Not found (only required by OCI configs)."

echo
echo "3) Scan for stale overlay references to *-raspmatic:"
rg -n -C2 -S 'overlay/(base|WebUI)-raspmatic' || echo "No stale overlay references found."

echo
echo "4) Specifically check scripts/update-codemirror.sh:"
if [[ -f scripts/update-codemirror.sh ]]; then
  rg -n -C2 -S 'WebUI-raspmatic|base-raspmatic' scripts/update-codemirror.sh || echo "No raspmatic references in scripts/update-codemirror.sh"
else
  echo "scripts/update-codemirror.sh not present."
fi
buildroot-external/configs/oci_arm.config (1)

9-9: Overlay rename includes OCI variant; verify no stale raspmatic paths remain

base-openccu_oci correctly replaces base-raspmatic_oci and is appended last. Re-run the stale reference check, particularly for scripts/update-codemirror.sh, as previously noted.

Run from repo root:

#!/usr/bin/env bash
set -euo pipefail

echo "1) Verify OpenCCU overlays (including OCI) exist:"
for d in buildroot-external/overlay/base-openccu buildroot-external/overlay/WebUI-openccu buildroot-external/overlay/base-openccu_oci; do
  [[ -d "$d" ]] && echo "OK: $d" || echo "MISSING: $d"
done

echo
echo "2) Scan the repo for stale '*-raspmatic' overlays:"
rg -n -C2 -S 'overlay/(base|WebUI)-raspmatic|base-raspmatic_oci' || echo "No stale raspmatic overlay references found."

echo
echo "3) Focus check in scripts/update-codemirror.sh:"
if [[ -f scripts/update-codemirror.sh ]]; then
  rg -n -C2 -S 'WebUI-raspmatic|base-raspmatic' scripts/update-codemirror.sh || echo "No raspmatic references in scripts/update-codemirror.sh"
else
  echo "scripts/update-codemirror.sh not present."
fi
buildroot-external/configs/rpi0.config (1)

5-5: Update stale WebUI-raspmatic references in scripts/update-codemirror.sh

There are still references to WebUI-raspmatic in scripts/update-codemirror.sh that should target WebUI-openccu instead. Please update/remove those lines.

Run this to verify and locate any leftovers and ensure new overlay dirs exist:

#!/bin/bash
set -euo pipefail

echo "Leftover 'raspmatic' overlay references (expect none):"
rg -n -S 'overlay/(base|WebUI)(-raspmatic|_raspmatic|_raspmatic_[a-z0-9_-]+)'

echo
echo "Ensure new overlays exist (report missing if any):"
for d in buildroot-external/overlay/base-openccu \
         buildroot-external/overlay/WebUI-openccu \
         buildroot-external/overlay/base-openccu_lxc; do
  [[ -d "$d" ]] || echo "MISSING: $d"
done

echo
echo "Check update-codemirror.sh for old WebUI-raspmatic path:"
rg -n -S 'overlay/WebUI-raspmatic' scripts/update-codemirror.sh || echo "OK: no stale references"
buildroot-external/configs/lxc_arm64.config (1)

10-10: Remove outdated WebUI-raspmatic references in update script

scripts/update-codemirror.sh still uses WebUI-raspmatic; switch to WebUI-openccu.

Use the same verification script as provided in rpi0.config to detect and fix stale references.

buildroot-external/configs/oci_arm64.config (1)

10-10: Re-verify no stale raspmatic overlay references remain across configs.

This looks good here; as a safety check, scan the repo for any lingering base-raspmatic/WebUI-raspmatic references and ensure the new overlay directories exist.

#!/bin/bash
set -euo pipefail

echo "Checking for stale raspmatic overlays in configs (expect no matches):"
rg -n -C2 -g '!**/build/**' -P '\b(base-raspmatic|WebUI-raspmatic|base-raspmatic_oci)\b' || true

echo
echo "Verifying new overlay directories exist (expect at least one path for each):"
fd -t d -a '^base-openccu$' overlay || true
fd -t d -a '^WebUI-openccu$' overlay || true
fd -t d -a '^base-openccu_oci$' overlay || true
🧹 Nitpick comments (31)
SECURITY.md (1)

5-5: Minor grammar polish on the updated line

Consider hyphenating “open-source” and adding a comma after the introductory clause.

Apply this diff to Line 5:

-As OpenCCU is a community-driven open source project and our resources are limited
+As OpenCCU is a community-driven, open-source project and our resources are limited,

Note: While you’re touching this file, there are two typos later in the document you may want to fix as a drive-by: “explainations” → “explanations” and “fas” → “fast”.

.github/workflows/stale.yml (1)

40-42: Issue message rebrand LGTM; consider aligning PR message wording.

Issue stale message references OpenCCU appropriately. The PR stale message below remains generic (fine), but if you want strict consistency, mirror the OpenCCU mention there too.

Please confirm whether you also want “OpenCCU” explicitly mentioned in the “stale-pr-message” block (Lines 50–52 currently read fine but don’t mention the project by name).

buildroot-external/board/odroid-c2/post-release.sh (1)

3-5: Harden script error handling.

Optional but recommended: use set -euo pipefail for stricter failure detection (undefined vars and pipe failures).

You can update the header like:

#!/bin/bash
# Stop on error
set -euo pipefail
buildroot-external/board/ova/post-release.sh (1)

3-5: Optional: strengthen error handling.

Consider set -euo pipefail for safer exits on undefined variables and piped command failures.

Header suggestion:

#!/bin/bash
# Stop on error
set -euo pipefail
.github/pull_request_template.md (1)

7-7: Fix typos and grammar in contribution requirement line.

Minor wording issues: “requirments” → “requirements”, “In sort” → “In short”, “contribute have” → “contribute has”.

Apply:

-* Make sure you have read and understood the CONTRIBUTING.md file in the top-level directory with information related to licensing requirments, etc. In sort: Everything you contribute have to be able to be (re)licensed under the Apache 2.0 license to be able to be contributed to OpenCCU
+* Make sure you have read and understood the CONTRIBUTING.md file in the top-level directory with information related to licensing requirements, etc. In short: Everything you contribute has to be (re)licensable under the Apache 2.0 license to be accepted into OpenCCU.
.github/ISSUE_TEMPLATE/config.yml (1)

16-21: German links: verify wiki landing and forum category.

  • The German docs link goes to the wiki root; consider wiki/de.Home if you have a localized landing page.
  • The forum URL remains the Homematic RaspberryMatic category; confirm this is still the intended venue for OpenCCU support.

Would you like to point the German docs to a specific localized page (e.g., https://github.com/OpenCCU/OpenCCU/wiki/de.Home) and confirm with maintainers that the Homematic forum category remains canonical for OpenCCU?

buildroot-external/board/rpi4/post-release.sh (1)

9-29: Unify BOARD/PRODUCT usage in post-release.sh

Across all post-release.sh scripts, both PRODUCT and BOARD are set to $2. To eliminate redundancy and prevent drift, use BOARD exclusively when deriving paths and artifact names.

• Location: buildroot-external/board/rpi4/post-release.sh
• Update the image copy and ZIP commands to reference BOARD instead of PRODUCT:

@@ buildroot-external/board/rpi4/post-release.sh
- cp -a "../build-${PRODUCT}/images/sdcard.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img"
+ cp -a "../build-${BOARD}/images/sdcard.img" "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img"
@@
- zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" \
-     "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" \
-     "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" \
-     ../LICENSE "./updatepkg/${PRODUCT}/EULA.de" "./updatepkg/${PRODUCT}/EULA.en"
+ zip --junk-paths "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.zip" \
+     "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img" \
+     "./OpenCCU-${PRODUCT_VERSION}-${BOARD}.img.sha256" \
+     ../LICENSE "./updatepkg/${BOARD}/EULA.de" "./updatepkg/${BOARD}/EULA.en"

Optionally, remove the PRODUCT=${2} assignment entirely (or collapse it into PRODUCT="$BOARD" for backward compatibility) since it’s no longer needed.

buildroot-external/board/oci/Dockerfile (1)

8-20: LGTM. Consider adding standard OCI metadata (version, revision, created).

Branding updates are correct. For traceability in registries, it’s useful to include dynamic labels:

  • org.opencontainers.image.version
  • org.opencontainers.image.revision
  • org.opencontainers.image.created

Example (add build args and labels):

 ARG tar_prefix=rootfs
+ARG VERSION
+ARG VCS_REF
+ARG BUILD_DATE
@@
 LABEL maintainer="OpenCCU OpenSource Team" \
       org.opencontainers.image.title=OpenCCU \
       org.opencontainers.image.description="Alternative OS for your homematicIP CCU" \
       org.opencontainers.image.vendor="OpenCCU OpenSource Project" \
       org.opencontainers.image.authors="OpenCCU OpenSource Team" \
       org.opencontainers.image.licenses="Apache-2.0" \
       org.opencontainers.image.url="https://openccu.de" \
       org.opencontainers.image.source="https://github.com/openccu/openccu" \
       org.opencontainers.image.documentation="https://github.com/openccu/openccu/wiki" \
+      org.opencontainers.image.version="${VERSION}" \
+      org.opencontainers.image.revision="${VCS_REF}" \
+      org.opencontainers.image.created="${BUILD_DATE}" \
       io.hass.name="OpenCCU" \
       io.hass.description="HomeMatic/homematicIP OpenCCU central" \
       io.hass.url="https://github.com/openccu/openccu/tree/master/home-assistant-addon" \
       io.hass.type=addon
.github/workflows/lock.yml (1)

20-21: Consider pinning the action to a commit SHA for supply-chain hardening

Using a version tag is good; pinning to a specific commit SHA is stronger and prevents tag-hijacking.

.github/ISSUE_TEMPLATE/bug-report.yml (1)

66-66: Minor wording polish (optional)

Reads a bit smoother without “on” after “run”.

-        This is the platform you are using to run OpenCCU on and corresponds to the image you are usually downloading for updating OpenCCU.
+        This is the platform you use to run OpenCCU and corresponds to the image you usually download to update OpenCCU.
buildroot-external/board/ova/post-image.sh (1)

41-44: Artifact rename to OpenCCU is consistent; add pipefail for robustness

The renames and OVA contents ordering look good. Since you pipe openssl into sed, consider enabling pipefail to avoid silent failures if openssl errors.

Add near Line 4:

set -e
set -o pipefail

Optional: avoid repetition via a variable to simplify future renames:

NAME="OpenCCU"
cp -a "${BINARIES_DIR}/sdcard.vmdk" "${OVADIR}/${NAME}.vmdk"
cp -a "${BOARD_DIR}/template.ovf" "${OVADIR}/${NAME}.ovf"
( cd "${OVADIR}" && "${HOST_DIR}/bin/openssl" sha256 ${NAME}.* | sed 's/SHA2-256/SHA256/' > "${NAME}.mf" )
tar -C "${OVADIR}" --owner=root --group=root -cf "${BINARIES_DIR}/${NAME}.ova" "${NAME}.ovf" "${NAME}.vmdk" "${NAME}.mf"
.github/label-actions.yml (2)

40-41: Slight grammar improvement (optional)

“OpenCCU just uses” can read more neutral as “that OpenCCU uses”.

-      OpenCCU just uses. So please consider creating an additional
+      that OpenCCU uses. So please consider creating an additional

51-51: Tone/grammar nit (optional)

Same phrasing nit as above for consistency.

-      project OpenCCU is just using. However, for being able to
+      project that OpenCCU uses. However, to
CODE_OF_CONDUCT.md (1)

62-62: Grievances reference updated correctly

“authors of OpenCCU” fits the rename; consider adding a concrete contact method in a follow-up.

buildroot-external/overlay/WebUI-openccu/www/ise/img/README.md (1)

3-3: Clarify wording and verify intended prefix (“rm-” vs “occu-”)

Minor language nit: “its sole authors” → “their sole authors”. Also, please confirm the “rm-” prefix mention is intentional post-rebrand; if you meant the new “occu-” prefix (as listed below), update accordingly or include both prefixes for clarity.

Possible rewording:

-The following graphical images in this directory and within binary images of OpenCCU as well as the OpenCCU logo in general and all graphical image files with a "rm-" prefix are copyrighted by its sole authors (the OpenCCU team, i.e. Jens Maus <[email protected]>):
+The following graphical images in this directory and within binary images of OpenCCU, as well as the OpenCCU logo in general, and all graphical image files with an "occu-" prefix (and any legacy "rm-" prefix, if applicable) are copyrighted by their sole authors (the OpenCCU team, i.e., Jens Maus <[email protected]>):
buildroot-external/board/odroid-c4/post-release.sh (1)

9-9: Redundant variable assignments for BOARD and PRODUCT

Both BOARD and PRODUCT are set to ${2}. If they’re intended to be identical, prefer a single source of truth to avoid drift; otherwise, clarify the argument mapping.

If PRODUCT should mirror BOARD:

# outside selected range (illustrative)
#BOARD_DIR=${1}
BOARD=${2}
PRODUCT=${BOARD}
PRODUCT_VERSION=${3}

If they should differ, please document the expected arguments in a usage comment.

buildroot-external/board/rpi0/post-release.sh (1)

9-9: Use a single source of truth for BOARD/PRODUCT

Same as other boards: BOARD and PRODUCT both read ${2}. Consolidate to reduce ambiguity, or document intended argument semantics.

Illustrative adjustment:

# outside selected range (illustrative)
BOARD=${2}
PRODUCT=${BOARD}
PRODUCT_VERSION=${3}
buildroot-external/board/rpi3/post-release.sh (2)

9-9: Clarify BOARD/PRODUCT argument mapping

BOARD and PRODUCT both use ${2}. If intentional, consider deriving one from the other to avoid divergence; otherwise, document usage.

Example (illustrative, outside selected range):

BOARD=${2}
PRODUCT=${BOARD}
PRODUCT_VERSION=${3}

37-38: Avoid word-splitting and arg list expansion in tar; remove need for SC2046 suppression

Using $(ls …) expands to many args and can break with spaces. Tar can archive the directory via . with -C.

Apply this diff:

-# shellcheck disable=SC2046
-tar -C "/tmp/${PRODUCT}-${PRODUCT_VERSION}" --owner=root --group=root -cvzhf "./OpenCCU-${PRODUCT_VERSION}-ccu3.tgz" $(ls "/tmp/${PRODUCT}-${PRODUCT_VERSION}")
+tar -C "/tmp/${PRODUCT}-${PRODUCT_VERSION}" --owner=root --group=root -cvzhf "./OpenCCU-${PRODUCT_VERSION}-ccu3.tgz" .

This also lets you drop the shellcheck suppression.

SUPPORT.md (1)

5-5: Minor English phrasing nit

“fora” is correct but uncommon; “forums” may read more naturally for most users. Optional.

Possible tweak:

-If you are seeking for help in using OpenCCU we ask you to use the OpenCCU fora (<https://homematic-forum.de/forum/viewforum.php?f=65>) instead.
+If you are seeking help using OpenCCU, please use the OpenCCU forums (<https://homematic-forum.de/forum/viewforum.php?f=65>) instead.
buildroot-external/board/oci/post-release.sh (1)

19-22: Manifest generation OK; consider including tar size pre-compression if consumers expect it.

If downstream tooling previously parsed both raw tar and compressed sizes, you may want to append both entries to the manifest for parity.

buildroot-external/board/lxc/post-release.sh (1)

9-9: Ambiguous BOARD assignment (BOARD=${2})

As with other post-release scripts, PRODUCT=${2} and BOARD=${2} conflict. This may misname artifacts or break paths. Confirm intended arg positions.

I can open a follow-up PR to normalize the arg mapping once confirmed.

.github/workflows/release-proxy.yml (1)

51-51: Verify homepage URL branding (“raspberrymatic.de” vs “openccu.de”)

The URL still points to raspberrymatic.de. If the public website has moved, update now; if not, consider a TODO comment to track this.

Proposed diff (only if the OpenCCU site is live and intended here):

-            org.opencontainers.image.url=https://raspberrymatic.de
+            org.opencontainers.image.url=https://openccu.de

Apply at:

  • Line 51 (metadata labels)
  • Line 58 (metadata annotations)
  • Line 90 (build-push labels)

Also applies to: 58-58, 90-90

Makefile (1)

63-63: Minor: avoid subshell for BOARD assignment in FAKE_BUILD

No need to spawn a shell; this is a plain variable assignment.

-	$(eval BOARD := $(shell echo $(PRODUCT)))
+	$(eval BOARD := $(PRODUCT))
DEVELOPMENT.md (1)

45-45: Markdown list formatting and numbering are off

Numbers and list indentation under “How to draft a release” don’t follow markdownlint guidance (MD029/MD007/MD032). Consider normalizing numbering and indentation, and adding blank lines around lists.

Minimal, localized changes that reduce linter noise:

-5. Go to [_Actions_ -> _Release Build_](https://github.com/OpenCCU/OpenCCU/actions?query=workflow%3A%22Release+Build%22)
+4. Go to [_Actions_ -> _Release Build_](https://github.com/OpenCCU/OpenCCU/actions?query=workflow%3A%22Release+Build%22)
-   - bumps all public version references in `release/LATEST-VERSION.js`, `helm/openccu/Chart.yaml`, `release/rpi-imager.json` and `home-assistant-addon/config.yaml`.
+  - Bumps all public version references in `release/LATEST-VERSION.js`, `helm/openccu/Chart.yaml`, `release/rpi-imager.json`, and `home-assistant-addon/config.yaml`.
-   - substitutes all SHA256 checksums in the release draft with the actual binary sha256 checksums.
+  - Substitutes all SHA256 checksums in the release draft with the actual binary SHA256 checksums.

Note: Adding blank lines before the sub-list and ensuring consistent two-space indentation for sub-bullets will further improve linting.

Also applies to: 56-56, 57-57

README.de.md (1)

65-66: “Vorraussetzungen” is misspelled (should be “Voraussetzungen”). Verify wiki anchors before changing.

This appears both in visible link text and in the fragment anchors. If the wiki sections are also misspelled today, fix the wiki headings/anchors first, then update these links; otherwise update only the visible text here.

Example (only if the wiki anchor is corrected as well):

-[mehr...](https://github.com/OpenCCU/OpenCCU/wiki/Einleitung#vorraussetzungen)
+[mehr...](https://github.com/OpenCCU/OpenCCU/wiki/Einleitung#voraussetzungen)

And within the document section list:

-   * [Vorraussetzungen](https://github.com/OpenCCU/OpenCCU/wiki/Einleitung#vorraussetzungen)
+   * [Voraussetzungen](https://github.com/OpenCCU/OpenCCU/wiki/Einleitung#voraussetzungen)

Also applies to: 73-77

.github/workflows/ci.yml (1)

1-1: Correct title typo: “Continious” → “Continuous”.

-# OpenCCU Continious Integration Check Workflow
+# OpenCCU Continuous Integration Check Workflow
.github/workflows/release.yml (2)

20-21: Nit: “seperated” → “separated”.

-        description: 'List of platforms to build (comma seperated, e.g. "rpi3","rpi4")'
+        description: 'List of platforms to build (comma separated, e.g. "rpi3","rpi4")'

577-580: Helm chart path and release notes updated—URL good; verify chart name strategy.

You kept helm/raspberrymatic; if the chart is being renamed, coordinate a migration path (deprecation notice, alias).

.github/workflows/snapshot.yml (1)

17-21: Nit: “seperated” → “separated”.

-        description: 'List of platforms to build (comma seperated, e.g. "rpi3","rpi4")'
+        description: 'List of platforms to build (comma separated, e.g. "rpi3","rpi4")'
buildroot-external/configs/rpi3.config (1)

6-6: Optional: centralize overlay list to reduce duplication across configs

If Buildroot variable expansion fits your setup, consider defining a single overlay list in BR2_EXTERNAL make context (e.g., EQ3_OVERLAYS) and referencing it here to avoid repeating paths across many defconfigs. This is optional and only if it doesn’t complicate your build process.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 11

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (7)
.github/workflows/snapshot.yml (3)

62-70: Fix sudoers grep: missing file argument can hang or misbehave

The grep test lacks a target file and may block or return an unexpected status. Point it at /etc/sudoers and tighten the regex to avoid partial matches.

-          if ! grep -q ^builder; then echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers; fi
+          if ! grep -qE '^builder\b' /etc/sudoers; then
+            echo "builder ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers
+          fi

360-368: OCI artifact glob misses the GITHUB_SHA7 segment — extraction will find nothing

Artifacts are named OpenCCU-${BUILD_VERSION}-${GITHUB_SHA7}-oci_*.tgz, but the glob omits -${GITHUB_SHA7}-, so the loop won’t match. This will cause tar to fail on a non-existent path.

-          for f in ../OpenCCU-${{ env.BUILD_VERSION }}-oci_*.tgz; do
+          for f in ../OpenCCU-${{ env.BUILD_VERSION }}-${{ env.GITHUB_SHA7 }}-oci_*.tgz; do
             echo "extracting ${f}..."
             DIR=$(basename "${f}" .tgz)
             mkdir -p "${DIR}"
             tar -C "${DIR}" -xf "${f}"
             LAYER=$(jq -r '.[0].Layers[0]' "${DIR}/manifest.json")
             mv -f "${DIR}/${LAYER}" "./${DIR}.tar"
             rm -rf "${DIR}" "${f}"*
           done

229-275: Invalid hardcoded release ID – release 22744592 not found in OpenCCU/OpenCCU

The GitHub API call for release 22744592 returned a 404, indicating that no such release exists. All nightly upload steps referencing this ID and upload_url will fail.

Locations needing attention in .github/workflows/snapshot.yml:

  • Lines 143–149: Upload build snapshot [deb]
  • Lines 159–165: Upload build snapshot checksum [deb]
  • Lines 173–179: Upload build snapshot [oci]
  • Lines 187–193: Upload build snapshot checksum [oci]
  • Lines 201–207: Upload build snapshot [lxc]
  • Lines 215–221: Upload build snapshot checksum [lxc]
  • Lines 229–275: (final Linux/macOS snapshots)

Next steps:

  • Ensure a draft or published release with ID 22744592 exists in the OpenCCU/OpenCCU repository, or
  • Update each release_id and corresponding upload_url to point to a valid release.
README.md (1)

61-62: Standardize vendor capitalization: VMware

Public vendor name should be “VMware”.

-  * [vmWare ESXi](https://www.vmware.com/de/products/esxi-and-esx.html)
-  * [vmWare Workstation Player](https://www.vmware.com/de/products/workstation-player/workstation-player-evaluation.html)
+  * [VMware ESXi](https://www.vmware.com/de/products/esxi-and-esx.html)
+  * [VMware Workstation Player](https://www.vmware.com/de/products/workstation-player/workstation-player-evaluation.html)
.github/workflows/release.yml (3)

421-428: Container tags use old image name “raspberrymatic”

Update the base to “openccu” and consider publishing both tags for backward compatibility.

-          BASE_TAG="ghcr.io/${{ github.repository_owner }}/raspberrymatic"
+          BASE_TAG="ghcr.io/${{ github.repository_owner }}/openccu"

Optional dual-tag approach (keeps existing consumers working):

-          echo "unique_tag=${UNIQUE_TAG}" >> $GITHUB_OUTPUT
-          echo "branch_tag=${BRANCH_TAG}" >> $GITHUB_OUTPUT
+          echo "unique_tag=${UNIQUE_TAG}" >> $GITHUB_OUTPUT
+          echo "branch_tag=${BRANCH_TAG}" >> $GITHUB_OUTPUT
+          echo "compat_unique_tag=ghcr.io/${{ github.repository_owner }}/raspberrymatic:${{ needs.release_draft.outputs.version }}" >> $GITHUB_OUTPUT
+          echo "compat_branch_tag=ghcr.io/${{ github.repository_owner }}/raspberrymatic:${BRANCH_TAG##*:}" >> $GITHUB_OUTPUT

And add the two compat tags to the tags: block later.


447-466: Brand URLs: replace raspberrymatic.de with openccu.de

Public metadata should reflect the new website.

-            org.opencontainers.image.url=https://raspberrymatic.de
+            org.opencontainers.image.url=https://openccu.de
...
-            org.opencontainers.image.url=https://raspberrymatic.de
+            org.opencontainers.image.url=https://openccu.de

513-515: Provenance subject-name still references old image path

Align with new image name to avoid confusing attestations.

-          subject-name: ghcr.io/${{ github.repository_owner }}/raspberrymatic
+          subject-name: ghcr.io/${{ github.repository_owner }}/openccu
♻️ Duplicate comments (6)
.github/workflows/snapshot.yml (2)

43-43: Repo guard still points to old repository — update to OpenCCU/OpenCCU

The build job will be skipped after the rename because the repo check targets the old full name.

-    if: ${{ github.repository == 'jens-maus/RaspberryMatic' && (github.event_name != 'schedule' || needs.repo-check.outputs.has-commits > 0) }}
+    if: ${{ github.repository == 'OpenCCU/OpenCCU' && (github.event_name != 'schedule' || needs.repo-check.outputs.has-commits > 0) }}

101-104: Guard EULA nightly file moves to avoid failing when sources are absent

Unconditional mv will fail the job if EULA.*_nightly is missing for a platform.

-          mv -f release/updatepkg/${{ matrix.platform }}/EULA.de_nightly release/updatepkg/${{ matrix.platform }}/EULA.de
-          mv -f release/updatepkg/${{ matrix.platform }}/EULA.en_nightly release/updatepkg/${{ matrix.platform }}/EULA.en
+          for lang in de en; do
+            src="release/updatepkg/${{ matrix.platform }}/EULA.${lang}_nightly"
+            dst="release/updatepkg/${{ matrix.platform }}/EULA.${lang}"
+            if [[ -f "$src" ]]; then
+              mv -f "$src" "$dst"
+            fi
+          done
README.md (1)

30-30: Spelling was previously flagged; confirm resolved

The earlier typo “compatibile” is fixed. The remaining preposition “compatible to” still needed correction (see separate comment).

If you want, I can scan the README for any remaining minor typos and open a follow-up PR with all fixes in one commit.

CONTRIBUTING.md (1)

3-3: Grammar: plural “contributions”; tighten sentence

Minor polish in the opening paragraph.

-There are many ways to contribute to the OpenCCU project! We welcome and truly appreciate contribution in all forms - issues and pull requests or just modifications of documentation or user support in the corresponding support fora. And of course we love to hear about any successful use of OpenCCU to be shared with the community!
+There are many ways to contribute to the OpenCCU project! We welcome and truly appreciate contributions in all forms—issues and pull requests, documentation improvements, or user support in the corresponding support forums. And of course, we love to hear about any successful use of OpenCCU to be shared with the community!
README.de.md (1)

148-148: German disclaimer: corrected brand already — looks good

The previous “RASPBERRMATIC” reference has been replaced with “OPENCCU”. No further action needed.

.github/workflows/release.yml (1)

113-114: Critical: workflow still gated to old repository

This prevents builds from running under the new repo.

-    if: github.repository == 'jens-maus/RaspberryMatic'
+    if: github.repository == 'OpenCCU/OpenCCU'
🧹 Nitpick comments (11)
.github/workflows/snapshot.yml (7)

62-65: Package presence check is unreliable — simplify install logic

dpkg-query -l with multiple packages isn’t a reliable existence check and can succeed while some packages are missing. For CI, it’s fine to install idempotently; apt will skip already-installed packages.

-          if ! dpkg-query -l wget bc cpio rsync zip python3 file >/dev/null 2>&1; then
-            apt update
-            apt install -y --no-install-recommends wget bc cpio rsync zip python3 file
-          fi
+          apt-get update
+          apt-get install -y --no-install-recommends wget bc cpio rsync zip python3 file

If you prefer conditional installs, probe each package with dpkg -s in a loop and set a flag to trigger a single apt-get install.


341-354: Ensure jq is available on the runner before extraction

The Extract OCI artifacts step uses jq, but the oci-multiarch-build-push job doesn’t install it. Ubuntu images might not ship jq by default.

Add a quick install step before extraction:

       - name: Extract OCI artifacts
+        shell: bash
+        run: |
+          if ! command -v jq >/dev/null 2>&1; then
+            sudo apt-get update && sudo apt-get install -y jq
+          fi
+          rm -rf oci_build
+          mkdir -p oci_build
+          cd oci_build || exit 1
-        run: |
-          rm -rf oci_build
-          mkdir -p oci_build
-          cd oci_build || exit 1
           for f in ../OpenCCU-${{ env.BUILD_VERSION }}-${{ env.GITHUB_SHA7 }}-oci_*.tgz; do
             ...
           done

Also confirm download-artifact places the files one level up as expected (set with.path: . if needed).


373-385: Container repository name still “raspberrymatic” — verify if intentional for continuity

BASE_TAG points to ghcr.io//raspberrymatic while metadata labels/title are “OpenCCU”. If the image repo is meant to move to ghcr.io//openccu, adjust BASE_TAG (and downstream references). If you want to keep the legacy name for consumers, this is fine as-is but should be documented.

Possible update:

-          BASE_TAG="ghcr.io/${{ github.repository_owner }}/raspberrymatic"
+          BASE_TAG="ghcr.io/${{ github.repository_owner }}/openccu"

Or derive from a single variable (e.g., IMAGE_REPO) to avoid drift with metadata.


473-475: Attestation subject uses legacy image name

If you move the image to a new repo, keep attestation subject-name in sync with the actual pushed tags.

-          subject-name: ghcr.io/${{ github.repository_owner }}/raspberrymatic
+          subject-name: ghcr.io/${{ github.repository_owner }}/openccu

400-445: Public facing URLs still reference raspberrymatic.de

If a new canonical site exists for OpenCCU, update org.opencontainers.image.url accordingly. Otherwise, consider keeping as-is with an explicit comment stating the site remains unchanged post-rename.

-            org.opencontainers.image.url=https://raspberrymatic.de
+            org.opencontainers.image.url=<new OpenCCU site if applicable>

Apply to both labels and annotations.


448-466: Align metadata “images” with actual tags (optional)

docker/metadata-action images points to ghcr.io/${{ github.repository }} (OpenCCU/OpenCCU) while you push tags under BASE_TAG. This is harmless since you pass explicit tags, but aligning improves clarity and future-proofing.

-          images: ghcr.io/${{ github.repository }}
+          images: ghcr.io/${{ github.repository_owner }}/raspberrymatic

If you move to ghcr.io//openccu, update consistently in one place.


585-596: Container retention policy still targets “raspberrymatic”

If the image repo is renamed, update image-names. If keeping the legacy repo for continuity, consider adding the new name alongside to cover both.

-          image-names: raspberrymatic
+          image-names: raspberrymatic,openccu
README.md (2)

69-69: Optional: American English variant “Afterward,”

Consistent with en-US style elsewhere; purely stylistic.

-Afterwards, you should find yourself in the normal CCU WebUI
+Afterward, you should find yourself in the normal CCU WebUI

150-150: Polish punctuation; avoid repetition of “Furthermore”

Minor readability improvements without changing meaning.

-... Please note, that on top of the Apache-2.0 license, under which OpenCCU itself is distributed, other components ...
-Furthermore, the [eQ-3 OCCU](...) components OpenCCU uses ...
+... Please note that, on top of the Apache-2.0 license under which OpenCCU itself is distributed, other components ...
+In addition, the [eQ-3 OCCU](...) components OpenCCU uses ...
CONTRIBUTING.md (1)

42-42: License paragraph readability: commas/em dashes

Keeps the legal meaning while improving flow.

-... That means, any source code contributed (as long as you have the right to do so), either as part of a pull request or embedded in an issue in the issue tracker will be exclusively distributed under the Apache 2.0 license. With your contribution you are accepting this and you are signing off this agreement. So if you - for some reason - cannot accept that your source code will be (re)licensed under the Apache 2.0 license, ...
+... That means any source code contributed (as long as you have the right to do so), either as part of a pull request or embedded in an issue in the issue tracker, will be exclusively distributed under the Apache 2.0 license. With your contribution, you accept this and sign off on the agreement. So if you—for some reason—cannot accept that your source code will be (re)licensed under the Apache 2.0 license, ...
README.de.md (1)

69-69: German: small style/punctuation improvements

Reads more naturally; minimal changes.

-... eine `*.img` Imagedatei die man auf ein geeignetes Medium ... "flashen" lassen kann. Danach legt man z.B. die SD Karte ...
+... eine `*.img`-Imagedatei, die man auf ein geeignetes Medium ... „flashen“ kann. Danach legt man z. B. die SD‑Karte ...
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 21c6b82 and 1df9810.

📒 Files selected for processing (10)
  • .github/ISSUE_TEMPLATE/bug-report.yml (4 hunks)
  • .github/ISSUE_TEMPLATE/feature-request.yml (2 hunks)
  • .github/workflows/release-proxy.yml (3 hunks)
  • .github/workflows/release.yml (23 hunks)
  • .github/workflows/snapshot.yml (23 hunks)
  • CONTRIBUTING.md (3 hunks)
  • DEVELOPMENT.md (3 hunks)
  • README.de.md (3 hunks)
  • README.md (3 hunks)
  • SUPPORT.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • SUPPORT.md
  • .github/ISSUE_TEMPLATE/bug-report.yml
  • .github/ISSUE_TEMPLATE/feature-request.yml
  • .github/workflows/release-proxy.yml
🧰 Additional context used
🪛 LanguageTool
CONTRIBUTING.md

[style] ~13-~13: Consider using a different verb to strengthen your wording.
Context: ...to track all bugs and features. If you find an issue, please do file it on the repo...

(FIND_ENCOUNTER)


[style] ~17-~17: Consider using a less common alternative to make your writing sound more unique and professional.
Context: ...ue - please don't take this personally! Please feel free to re-open issues we've closed if there's ...

(FEEL_FREE_TO_STYLE_ME)


[style] ~35-~35: Consider using a more concise synonym.
Context: ...CCU team Beyond GitHub, we try to have a variety of different lines of communication open: ...

(A_VARIETY_OF)


[grammar] ~37-~37: There might be a mistake here.
Context: ...: - HomeMatic/OpenCCU Discussion Forum - Homepage ### Cont...

(QB_NEW_EN)

DEVELOPMENT.md

[grammar] ~8-~8: There might be a mistake here.
Context: ...lect 'Rebuild and Reopen in Container'). 3. Follow one of the subsections bellow dep...

(QB_NEW_EN)


[grammar] ~9-~9: Ensure spelling is correct
Context: ...ner'). 3. Follow one of the subsections bellow depending on what component you want to...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~13-~13: There might be a mistake here.
Context: ...t a terminal (Terminal -> New Terminal). 2. Use make to build OpenCCU images. If y...

(QB_NEW_EN)


[grammar] ~18-~18: There might be a mistake here.
Context: ...bootstrap Supervisor and Home Assistant. 2. You'll then be able to access the normal...

(QB_NEW_EN)


[grammar] ~20-~20: There might be a mistake here.
Context: ...e found in the Local Add-ons repository. 4. Install the OpenCCU add-on from the Supe...

(QB_NEW_EN)


[grammar] ~22-~22: There might be a mistake here.
Context: ...installed you need to start the adapter. 6. It is useful to enable the `Show in side...

(QB_NEW_EN)


[style] ~23-~23: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...open the OpenCCU WebUI (NOTE: you might need to wait some seconds until it is available...

(REP_NEED_TO_VB)


[grammar] ~42-~42: There might be a mistake here.
Context: ...less technical details what was changed. 3. If you are done with finetuning the Chan...

(QB_NEW_EN)


[grammar] ~56-~56: There might be a mistake here.
Context: ... and home-assistant-addon/config.yaml. - substitutes all SHA256 checksums in the ...

(QB_NEW_EN)


[grammar] ~57-~57: There might be a mistake here.
Context: ...with the actual binary sha256 checksums. 10. While the draft is being built, the rele...

(QB_NEW_EN)


[grammar] ~59-~59: There might be a mistake here.
Context: ...ear in the release draft assets section. 12. Verify everything and click "Publish" to...

(QB_NEW_EN)

README.de.md

[grammar] ~21-~21: There might be a mistake here.
Context: .../OpenCCU/stargazers/) Click here for 🇬🇧🇺🇸 english readme</su...

(QB_NEW_EN)


[grammar] ~23-~23: There might be a mistake here.
Context: ... english readme](README.md) ___ Bei OpenCCU handelt es sich um ein alterna...

(QB_NEW_EN)


[grammar] ~23-~23: Ensure spelling is correct
Context: ...ur den kompletten Funktionsumfang einer sogn. HomeMatic CCU SmartHome-Zentrale für...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~23-~23: Ensure spelling is correct
Context: ...räten für frei erhältliche Single-Board-Computern (SBC) wie z.B. den [RaspberryPi](https:...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~23-~23: Ensure spelling is correct
Context: ... auf verschiedenen Ebenen (WebUI, Linux-Betriebsystem, etc.) Verbesserungen bzw. Bugfixes mit...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~29-~29: Ensure spelling is correct
Context: ...tet, das nicht nur die selben HomeMatic/homematicIP Geräte angelernt/genutzt werden können,...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~29-~29: Ensure spelling is correct
Context: ...en können, auch verhält sich OpenCCU in Punkto Funktionalität und WebUI vollkommen kom...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~31-~31: Ensure spelling is correct
Context: ...rmware von der Firma eQ3/ELV übernommen wurde oder aus kommerzieller Sicht nicht über...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~69-~69: Ensure spelling is correct
Context: ...://github.com/OpenCCU/OpenCCU/releases) steht für die jeweilige Target-Hardware Datei...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~69-~69: Ensure spelling is correct
Context: ...man z.B. die SD Karte in den jeweiligen RaspberryPi ein und startet diesen. Danach sollte d...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~73-~73: Ensure spelling is correct
Context: ...i/Installation#schnellstart) ## 📝 Dokumentation 1. [Einleitung](https://github.com/OpenCCU/O...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~134-~134: Ensure spelling is correct
Context: ...ren Personen bestätigter Bug in OpenCCU herauskristallieren wird darum gebeten diesen Bug bzw. dies...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~136-~136: Ensure spelling is correct
Context: ... von vielen Nutzern reproduziert werden könnte und man sich dort an etwaigen Diskussio...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~148-~148: Ensure spelling is correct
Context: ...ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTS...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~157-~157: There might be a mistake here.
Context: ...SmDcrkHb7M/hqdefault.jpg" width=320> <a href="https://www.youtube.com/watch?v...

(QB_NEW_EN)

README.md

[grammar] ~24-~24: There might be a mistake here.
Context: ...?🇭 ReadMe](README.de.md) ___ OpenCCU is a free and non-commercial open-sour...

(QB_NEW_EN)


[style] ~24-~24: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ...https://www.home-assistant.io/) Add-On. On top of that wider range of supported operating envi...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[grammar] ~30-~30: Ensure spelling is correct
Context: ... not only it can use the same HomeMatic/homematicIP IoT hardware like a CCU3 central with t...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~31-~31: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ...open-source based CCU system software. On top of that, OpenCCU provides a whole bunch of enha...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[style] ~32-~32: Consider using “bunch”.
Context: ...re. On top of that, OpenCCU provides a whole bunch of enhancements or even bugfixes in the...

(WHOLE_LOT)


[grammar] ~32-~32: Ensure spelling is correct
Context: ...s a whole bunch of enhancements or even bugfixes in the WebUI or underlying Linux operat...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[locale-violation] ~69-~69: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ... http://openccu/ in your web browser. Afterwards, you should find yourself in the normal...

(AFTERWARDS_US)


[style] ~142-~142: Consider using a less common alternative to make your writing sound more unique and professional.
Context: ...tribution in any way is highly welcome. Please feel free to contribute not only by using the offici...

(FEEL_FREE_TO_STYLE_ME)


[style] ~143-~143: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ... any documentation pages in this wiki. On top of that, direct contributions by sending in Pul...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[grammar] ~144-~144: Ensure spelling is correct
Context: ...fixed and has enough free resources and knowhow, please feel free to directly send in P...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~150-~150: Two successive sentences begin with the same adverb. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ob/master/LicenseEN.txt) license terms. Furthermore, the OpenCCU logo and all other graphic...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[grammar] ~172-~172: Ensure spelling is correct
Context: ...om/OpenCCU/OpenCCU/graphs/contributors) which have contributed to the success of Open...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~182-~182: There might be a mistake here.
Context: ...leases/) section of this GitHub project.

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Linter Checks
🔇 Additional comments (3)
CONTRIBUTING.md (1)

21-28: Retain “PRs” (no apostrophe) — looks good

This fixes a common pluralization mistake; no further changes needed here.

.github/workflows/release.yml (2)

571-571: Product code in LATEST-VERSION.js remains “HM-RASPBERRYMATIC” — intentional?

If this identifier is used by client updaters, it may be intentionally retained. Otherwise, consider introducing or aliasing an OpenCCU product code to avoid user confusion.

Would you like me to propose a minimal change that writes both identifiers (e.g., keep HM-RASPBERRYMATIC for legacy clients and add HM-OPENCCU for new ones), along with a deprecation note in the website/update server?


369-373: Good: permissions updated for attestations

Proper OIDC/attestations permissions are in place. No changes needed.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (4)
README.md (1)

69-69: US English variant: “Afterward”

The doc otherwise leans American English (“License”, “Behavior”). Consider the US variant “Afterward,” here.

-Afterwards, you should find yourself in the normal CCU WebUI
+Afterward, you should find yourself in the normal CCU WebUI
DEVELOPMENT.md (1)

41-46: Update docs to match workflow input names and fix list numbering gaps

The release workflow input was renamed to test_workflow with the description “Test workflow (dry-run)?”. The text still says “Skip build”. Also, numbering jumps from 3 → 5.

-1. As a first step and to prepare a draft release in which a raw ChangeLog will be added, go into the [Release Build](https://github.com/OpenCCU/OpenCCU/actions?query=workflow%3A%22Release+Build%22) action and run it, but make sure "Skip build" is set to true and you are using the upcoming release date in the "Release date override" setting
+1. As a first step and to prepare a draft release in which a raw ChangeLog will be added, go into the [Release Build](https://github.com/OpenCCU/OpenCCU/actions?query=workflow%3A%22Release+Build%22) action and run it, but make sure “Test workflow (dry-run)?” is set to true and you are using the upcoming release date in the “Release date override” setting
@@
-5. Go to [_Actions_ -> _Release Build_](https://github.com/OpenCCU/OpenCCU/actions?query=workflow%3A%22Release+Build%22)
+4. Go to [_Actions_ -> _Release Build_](https://github.com/OpenCCU/OpenCCU/actions?query=workflow%3A%22Release+Build%22)
@@
-9. Set the "Skip build" to `false` or otherwise the workflow will just be tested without actually running the time consuming build job or releasing the helm charts, docker, etc.
+8. Set “Test workflow (dry-run)?” to `false` or otherwise the workflow will only simulate without building or publishing artifacts (Helm charts, Docker, etc.).
-10. Click on _Run Workflow_ to start the build. The build does the following
+9. Click on _Run workflow_ to start the build. The build does the following

Optional: renumber the entire list automatically by using “1.” for each item in Markdown. This also resolves markdownlint MD029 complaints.

Also applies to: 49-49

README.de.md (1)

144-144: German legal section: agreement and hyphenation

Fix “jeglichen” → “jegliche”, add missing “unter”, and hyphenate compounds.

-... OpenSource [Apache License 2.0] lizenziert. OpenCCU wird selbst komplett kostenfrei und ohne jeglichen kommerziellen Intentionen entwickelt und zur komplett kostenfreien Nutzung bereitgestellt. Hierbei gilt zu beachten, dass die Komponenten der genutzten Buildroot/Linux Umgebung jeweils anderen Lizenzen stehen können ...
+... OpenSource [Apache License 2.0] lizenziert. OpenCCU wird komplett kostenfrei und ohne jegliche kommerzielle Intentionen entwickelt und zur komplett kostenfreien Nutzung bereitgestellt. Hierbei gilt zu beachten, dass die Komponenten der genutzten Buildroot/Linux‑Umgebung jeweils unter anderen Lizenzen stehen können ...
.github/workflows/release.yml (1)

113-114: Repository gate still targets old repo; build job will never run here

Update the repository check to the new org/repo so builds run after the rename.

-    if: github.repository == 'jens-maus/RaspberryMatic'
+    if: github.repository == 'OpenCCU/OpenCCU'
🧹 Nitpick comments (10)
README.md (2)

24-24: Fix idiom: “compatible to” → “compatible with”; tighten phrasing

Use the idiomatic “compatible with” and a clearer product name. Also normalize “Add-On” → “add-on”.

-OpenCCU has the aim to be 100% compatible to the vendor-developed _HomeMatic CCU3 control central_ (CCU3) system. ... or even as a pure [Home Assistant](https://www.home-assistant.io/) Add-On.
+OpenCCU aims to be 100% compatible with the vendor-developed _HomeMatic CCU3 central control unit_ (CCU3). ... or even as a pure [Home Assistant](https://www.home-assistant.io/) add-on.

13-14: Prefer HTTPS for badges (if supported by the provider)

The isitmaintained badges use http. Switch to https if the service supports it to avoid mixed-content warnings.

-[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)
-[![Percentage of issues still open](http://isitmaintained.com/badge/open/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)
+[![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)
+[![Percentage of issues still open](https://isitmaintained.com/badge/open/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)

If isitmaintained does not serve these over HTTPS, keep http. Would you like me to verify?

DEVELOPMENT.md (1)

25-28: Capitalize “Actions” consistently

Minor style: use “Actions” (as in the GitHub UI) instead of “actions”.

-OpenCCU uses GitHub Workflows for Continuous Integration. The actions tab shows available workflows.
+OpenCCU uses GitHub Workflows for Continuous Integration. The Actions tab shows available workflows.
README.de.md (2)

23-23: German grammar: case agreement and wording fixes

Accusative after “für”; fix “Single-Board-Computern” → “Single-Board-Computer”. Also insert commas for readability.

-... für eine Cloudfreie Nutzung von HomeMatic Geräten für frei erhältliche Single-Board-Computern (SBC) ...
+... für eine cloudfreie Nutzung von HomeMatic‑Geräten für frei erhältliche Single‑Board‑Computer (SBC) ...

69-69: Polish Schnellstart paragraph: typos, commas, and hyphenation

Tighten phrasing and correct common spelling/hyphenation.

-Unter [Releases](https://github.com/OpenCCU/OpenCCU/releases) steht für die jeweilige Target-Hardware Dateien im Format `OpenCCU-X.XX.XX.YYYYMMDD-XXX.zip` als Download zur Verfügung. Nach Entpacken dieser Datei erhält man eine `*.img` Imagedatei die man auf ein geeignetes Medium (SD-Karte, USB-Stick, SSD oder als virtuelle Disk) mit z.B. dem Imaging-Tool [Etcher](https://etcher.io) "flashen" lassen kann. Danach legt man z.B. die SD Karte in den jeweiligen RaspberryPi ein und startet diesen. Danach sollte dann OpenCCU starten und versuchen im Laufe des Startes das passende HomeMatic/homematicIP Funkmodul zu initialisieren (das man vorher installiert hat). Ist dies erfolgt kann man mittels Webbrowser in seinem lokalen Netzwerk unter Nutzung der Adresse `http://openccu/` auf die Weboberfläche (WebUI) von OpenCCU normal zugreifen und HomeMatic/homematicIP Geräte anlernen, konfigurieren oder bedienen.
+Unter [Releases](https://github.com/OpenCCU/OpenCCU/releases) stehen für die jeweilige Ziel‑Hardware Dateien im Format `OpenCCU-X.XX.XX.YYYYMMDD-XXX.zip` zum Download bereit. Nach dem Entpacken dieser Datei erhält man eine `*.img`‑Imagedatei, die man mit einem Imaging‑Tool wie [Etcher](https://etcher.io) auf ein geeignetes Medium (SD‑Karte, USB‑Stick, SSD oder virtuelle Disk) „flashen“ kann. Anschließend die SD‑Karte in den jeweiligen Raspberry Pi einlegen und starten. OpenCCU sollte dann booten und während des Starts das passende HomeMatic/homematicIP‑Funkmodul initialisieren (sofern vorhanden). Ist dies erfolgt, kann man im lokalen Netzwerk unter `http://openccu/` auf die Weboberfläche (WebUI) zugreifen, Geräte anlernen, konfigurieren und bedienen.
.github/workflows/release.yml (5)

20-23: Spelling: “comma seperated” → “comma-separated”

Minor typo in the workflow_dispatch input description.

-        description: 'List of platforms to build (comma seperated, e.g. "rpi3","rpi4")'
+        description: 'List of platforms to build (comma-separated, e.g., "rpi3","rpi4")'

18-18: Boolean default should be a boolean, not a quoted string

For type: boolean inputs, GitHub expects an actual boolean. Use false without quotes.

-        default: 'false'
+        default: false

81-84: Use grep -E instead of deprecated egrep

Busybox/modern grep deprecates egrep. Future-proof with grep -E.

-          export CHANGELOG="$(cat <<'EOF' | egrep -v  "${FILTER}"
+          export CHANGELOG="$(cat <<'EOF' | grep -E -v "${FILTER}"

571-571: Intentional? LATEST-VERSION product key still “HM-RASPBERRYMATIC”

If update notifications rely on this exact identifier for client compatibility, keeping it makes sense. Otherwise consider renaming to an OpenCCU key and aligning downstream consumers.

-echo "homematic.com.setLatestVersion('${{ needs.release_draft.outputs.version }}', 'HM-RASPBERRYMATIC');" >release/LATEST-VERSION.js
+# If safe to change the product key:
+# echo "homematic.com.setLatestVersion('${{ needs.release_draft.outputs.version }}', 'HM-OPENCCU');" >release/LATEST-VERSION.js

Follow-up: confirm which identifier endpoints/clients expect. I can help adapt server-side mappings if needed.


439-446: Action versions: validate major tags exist

actions/checkout@v5, docker/[email protected], docker/[email protected], etc. Look good if these tags exist. If any tag is not published yet, the workflow will fail at runtime.

Would you like me to run a quick check against the GitHub API for these action tags and propose pinned SHAs?

Also applies to: 470-478

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 1df9810 and ef900c8.

📒 Files selected for processing (4)
  • .github/workflows/release.yml (24 hunks)
  • DEVELOPMENT.md (3 hunks)
  • README.de.md (3 hunks)
  • README.md (3 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[grammar] ~24-~24: There might be a mistake here.
Context: ...?🇭 ReadMe](README.de.md) ___ OpenCCU is a free and non-commercial open-sour...

(QB_NEW_EN)


[style] ~24-~24: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ...https://www.home-assistant.io/) Add-On. On top of that wider range of supported operating envi...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[grammar] ~30-~30: Ensure spelling is correct
Context: ... not only can it use the same HomeMatic/homematicIP IoT hardware as a CCU3 running the same...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~31-~31: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ...open-source based CCU system software. On top of that, OpenCCU provides a whole bunch of enha...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[style] ~32-~32: Consider using “bunch”.
Context: ...re. On top of that, OpenCCU provides a whole bunch of enhancements or even bugfixes in the...

(WHOLE_LOT)


[grammar] ~32-~32: Ensure spelling is correct
Context: ...s a whole bunch of enhancements or even bugfixes in the WebUI or underlying Linux operat...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[locale-violation] ~69-~69: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ... http://openccu/ in your web browser. Afterwards, you should find yourself in the normal...

(AFTERWARDS_US)


[style] ~142-~142: Consider using a less common alternative to make your writing sound more unique and professional.
Context: ...tribution in any way is highly welcome. Please feel free to contribute not only by using the offici...

(FEEL_FREE_TO_STYLE_ME)


[style] ~143-~143: ‘On top of that’ might be wordy. Consider a shorter alternative.
Context: ... any documentation pages in this wiki. On top of that, direct contributions by sending in Pul...

(EN_WORDINESS_PREMIUM_ON_TOP_OF_THAT)


[grammar] ~144-~144: Ensure spelling is correct
Context: ...fixed and has enough free resources and knowhow, please feel free to directly send in P...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~150-~150: Two successive sentences begin with the same adverb. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ob/master/LicenseEN.txt) license terms. Furthermore, the OpenCCU logo and all other graphic...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[grammar] ~172-~172: Ensure spelling is correct
Context: ...om/OpenCCU/OpenCCU/graphs/contributors) which have contributed to the success of Open...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~182-~182: There might be a mistake here.
Context: ...leases/) section of this GitHub project.

(QB_NEW_EN)

README.de.md

[grammar] ~21-~21: There might be a mistake here.
Context: .../OpenCCU/stargazers/) Click here for 🇬🇧🇺🇸 english readme</su...

(QB_NEW_EN)


[grammar] ~23-~23: There might be a mistake here.
Context: ... english readme](README.md) ___ Bei OpenCCU handelt es sich um ein alterna...

(QB_NEW_EN)


[grammar] ~23-~23: Ensure spelling is correct
Context: ...räten für frei erhältliche Single-Board-Computern (SBC) wie z.B. den [RaspberryPi](https:...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~29-~29: There might be a mistake here.
Context: ...enutzt werden können, auch verhält sich OpenCCU in Punkto Funktionalität und WebUI voll...

(QB_NEW_EN)


[grammar] ~29-~29: Ensure spelling is correct
Context: ...en können, auch verhält sich OpenCCU in Punkto Funktionalität und WebUI vollkommen kom...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~31-~31: Ensure spelling is correct
Context: ...rmware von der Firma eQ3/ELV übernommen wurde oder aus kommerzieller Sicht nicht über...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~69-~69: Ensure spelling is correct
Context: ...://github.com/OpenCCU/OpenCCU/releases) steht für die jeweilige Target-Hardware Datei...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~69-~69: Ensure spelling is correct
Context: ...man z.B. die SD Karte in den jeweiligen RaspberryPi ein und startet diesen. Danach sollte d...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~73-~73: Ensure spelling is correct
Context: ...i/Installation#schnellstart) ## 📝 Dokumentation 1. [Einleitung](https://github.com/OpenCCU/O...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~134-~134: Ensure spelling is correct
Context: ...ren Personen bestätigter Bug in OpenCCU herauskristallieren wird darum gebeten diesen Bug bzw. dies...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~136-~136: Ensure spelling is correct
Context: ... von vielen Nutzern reproduziert werden könnte und man sich dort an etwaigen Diskussio...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~148-~148: Ensure spelling is correct
Context: ...ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTS...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~157-~157: There might be a mistake here.
Context: ...SmDcrkHb7M/hqdefault.jpg" width=320> <a href="https://www.youtube.com/watch?v...

(QB_NEW_EN)

DEVELOPMENT.md

[grammar] ~8-~8: There might be a mistake here.
Context: ...lect 'Rebuild and Reopen in Container'). 3. Follow one of the subsections below depe...

(QB_NEW_EN)


[grammar] ~13-~13: There might be a mistake here.
Context: ...t a terminal (Terminal -> New Terminal). 2. Use make to build OpenCCU images. If y...

(QB_NEW_EN)


[grammar] ~18-~18: There might be a mistake here.
Context: ...bootstrap Supervisor and Home Assistant. 2. You'll then be able to access the normal...

(QB_NEW_EN)


[grammar] ~20-~20: There might be a mistake here.
Context: ...e found in the Local Add-ons repository. 4. Install the OpenCCU add-on from the Supe...

(QB_NEW_EN)


[style] ~23-~23: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...open the OpenCCU WebUI (Note: you might need to wait a few seconds until it is availabl...

(REP_NEED_TO_VB)


[grammar] ~42-~42: There might be a mistake here.
Context: ...less technical details what was changed. 3. If you are done with finetuning the Chan...

(QB_NEW_EN)


[grammar] ~56-~56: There might be a mistake here.
Context: ... and home-assistant-addon/config.yaml. - substitutes all SHA256 checksums in the ...

(QB_NEW_EN)


[grammar] ~57-~57: There might be a mistake here.
Context: ...with the actual binary sha256 checksums. 10. While the draft is being built, the rele...

(QB_NEW_EN)


[grammar] ~59-~59: There might be a mistake here.
Context: ...ear in the release draft assets section. 12. Verify everything and click "Publish" to...

(QB_NEW_EN)

🪛 markdownlint-cli2 (0.17.2)
DEVELOPMENT.md

45-45: Ordered list item prefix
Expected: 4; Actual: 5; Style: 1/2/3

(MD029, ol-prefix)


56-56: Unordered list indentation
Expected: 0; Actual: 3

(MD007, ul-indent)


57-57: Unordered list indentation
Expected: 0; Actual: 3

(MD007, ul-indent)


57-57: Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


58-58: Ordered list item prefix
Expected: 1; Actual: 10; Style: 1/2/3

(MD029, ol-prefix)


58-58: Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


59-59: Ordered list item prefix
Expected: 2; Actual: 11; Style: 1/2/3

(MD029, ol-prefix)


60-60: Ordered list item prefix
Expected: 3; Actual: 12; Style: 1/2/3

(MD029, ol-prefix)


61-61: Ordered list item prefix
Expected: 4; Actual: 13; Style: 1/2/3

(MD029, ol-prefix)

🔇 Additional comments (4)
README.md (1)

109-109: Outdated wiki anchor still mentions “raspberrymatic”

The link text says “Upgrade to virtual OpenCCU,” but the anchor remains “umstieg-zu-virtuellem-raspberrymatic”. Ensure the wiki slug matches the new page name, or confirm there is a redirect.

Follow-up: if the wiki page was renamed, update the anchor to the new slug; if a redirect exists, keeping this is fine. Do you want me to scan the repo/wiki for current anchors?

DEVELOPMENT.md (2)

5-5: LGTM: Dev container note reads well

Clear guidance on using the VS Code dev container. No issues spotted.


21-23: Home Assistant steps read clearly and use consistent “add-on” terminology

Good consistency with “Supervisor” and “add-on”, and the availability note is helpful.

.github/workflows/release.yml (1)

173-175: LGTM: Rebrand propagation and artifact paths look consistent

Nice job aligning artifact prefixes, upload paths, OCI labels, and Helm chart paths with OpenCCU. The helm/openccu/Chart.yaml sed targets and the tar_prefix now match the new naming.

Also applies to: 191-204, 212-223, 231-243, 251-263, 271-283, 294-315, 319-321, 393-402, 408-416, 421-431, 479-487, 481-495, 513-514, 541-558, 563-567, 576-579

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
README.de.md (1)

65-65: Past nit on “Voraussetzungen” display text is already addressed elsewhere.

Previously flagged misspelling in link text has been corrected in the documentation index below; the anchor remains intentionally unchanged. Nothing to do here.

🧹 Nitpick comments (11)
README.de.md (11)

21-21: Capitalize “English”.

Minor polish in the language switcher.

-<sub>[Click here for 🇬🇧🇺🇸 english readme](README.md)</sub>
+<sub>[Click here for 🇬🇧🇺🇸 English readme](README.md)</sub>

23-23: Intro: fix hyphenation, brand names, and a couple of grammar nits.

  • Open‑Source, cloudfrei, Raspberry Pi, VMware, CCU‑Firmware, consistent “eQ‑3/ELV”.
  • “Single‑Board‑Computer” (Akkusativ), comma before the relative clause “die …”.
-Bei _OpenCCU_ handelt es sich um ein alternatives, freies und nicht-kommerziell vertriebenes OpenSource Betriebssystem ... für eine Cloudfreie Nutzung ... für frei erhältliche Single-Board-Computern (SBC) ... den [RaspberryPi] ... (z.B. vmWare ESXi, Proxmox, VirtualBox, Docker/OCI, Kubernetes/K8s, etc.) ... mitzubringen die in der originalen CCU Firmware von eQ3/ELV (noch) nicht vorhanden sind.
+Bei _OpenCCU_ handelt es sich um ein alternatives, freies und nicht-kommerziell vertriebenes Open‑Source‑Betriebssystem ... für eine cloudfreie Nutzung ... für frei erhältliche Single‑Board‑Computer (SBC) ... den [Raspberry Pi] ... (z. B. VMware ESXi, Proxmox, VirtualBox, Docker/OCI, Kubernetes/K8s, etc.) ... mitzubringen, die in der originalen CCU‑Firmware von eQ‑3/ELV (noch) nicht vorhanden sind.

31-31: Plural agreement and missing comma in “Verbesserungen … die … übernommen wurden”.

Relative clause needs a comma and plural verb.

-Darüber hinaus bringt OpenCCU jedoch eine ganze Reihe von Verbesserungen/Erweiterungen, neuen Features und teilweise bereits integrierten Bugfixes mit sich die entweder _noch_ nicht in der originalen CCU Firmware von der Firma eQ3/ELV übernommen wurde oder aus kommerzieller Sicht nicht übernommen werden soll.
+Darüber hinaus bringt OpenCCU jedoch eine ganze Reihe von Verbesserungen/Erweiterungen, neuen Features und teilweise bereits integrierten Bugfixes mit sich, die entweder _noch_ nicht in der originalen CCU‑Firmware von der Firma eQ‑3/ELV übernommen wurden oder aus kommerzieller Sicht nicht übernommen werden sollen.

44-47: Normalize brand capitalization (Raspberry Pi, VMware, Hyper‑V).

Consistent vendor spelling improves polish and searchability.

-  * [RaspberryPi](https://www.raspberrypi.org/)
+  * [Raspberry Pi](https://www.raspberrypi.org/)
@@
-  * [vmWare ESXi](https://www.vmware.com/de/products/esxi-and-esx.html)
+  * [VMware ESXi](https://www.vmware.com/de/products/esxi-and-esx.html)
@@
-  * [vmWare Workstation Player](https://www.vmware.com/de/products/workstation-player/workstation-player-evaluation.html)
+  * [VMware Workstation Player](https://www.vmware.com/de/products/workstation-player/workstation-player-evaluation.html)
@@
-  * [HyperV](https://docs.microsoft.com/de-de/virtualization/hyper-v-on-windows/)
+  * [Hyper‑V](https://docs.microsoft.com/de-de/virtualization/hyper-v-on-windows/)
@@
-     * [vmWare ESXi](https://github.com/OpenCCU/OpenCCU/wiki/Installation-vmWare-ESXi)
+     * [VMware ESXi](https://github.com/OpenCCU/OpenCCU/wiki/Installation-vmWare-ESXi)
@@
-     * [vmWare Workstation Player](https://github.com/OpenCCU/OpenCCU/wiki/Installation-vmWare-Workstation-Player)
+     * [VMware Workstation Player](https://github.com/OpenCCU/OpenCCU/wiki/Installation-vmWare-Workstation-Player)

Note: The wiki page slugs may still contain “vmWare”. Only change the link text; keep URLs unless the wiki slugs are updated.

Also applies to: 52-52, 57-57, 60-60, 91-91, 96-96


69-69: Schnellstart: verb agreement, commas, and hyphenation.

  • “stehen … Dateien … zur Verfügung” (Plural)
  • SD‑Karte, Image‑Datei, Raspberry Pi
  • Comma after “Ist dies erfolgt,” and slightly more idiomatic phrasing.
-Unter [Releases](https://github.com/OpenCCU/OpenCCU/releases) steht für die jeweilige Target-Hardware Dateien im Format `OpenCCU-X.XX.XX.YYYYMMDD-XXX.zip` als Download zur Verfügung. Nach Entpacken dieser Datei erhält man eine `*.img` Imagedatei die man auf ein geeignetes Medium (SD-Karte, USB-Stick, SSD oder als virtuelle Disk) mit z.B. dem Imaging-Tool [Etcher](https://etcher.io) "flashen" lassen kann. Danach legt man z.B. die SD Karte in den jeweiligen RaspberryPi ein und startet diesen. Danach sollte dann OpenCCU starten und versuchen im Laufe des Startes das passende HomeMatic/homematicIP Funkmodul zu initialisieren (das man vorher installiert hat). Ist dies erfolgt kann man mittels Webbrowser in seinem lokalen Netzwerk unter Nutzung der Adresse `http://openccu/` auf die Weboberfläche (WebUI) von OpenCCU normal zugreifen und HomeMatic/homematicIP Geräte anlernen, konfigurieren oder bedienen.
+Unter [Releases](https://github.com/OpenCCU/OpenCCU/releases) stehen für die jeweilige Target‑Hardware Dateien im Format `OpenCCU-X.XX.XX.YYYYMMDD-XXX.zip` als Download zur Verfügung. Nach dem Entpacken dieser Datei erhält man eine `*.img`‑Image‑Datei, die man mit z. B. dem Imaging‑Tool [Etcher](https://etcher.io) auf ein geeignetes Medium (SD‑Karte, USB‑Stick, SSD oder als virtuelle Disk) flashen kann. Anschließend legt man z. B. die SD‑Karte in den jeweiligen Raspberry Pi ein und startet diesen. Danach sollte OpenCCU starten und im Laufe des Bootvorgangs das passende HomeMatic/homematicIP‑Funkmodul initialisieren (vorausgesetzt, es ist installiert). Ist dies erfolgt, kann man im lokalen Netzwerk über die Adresse `http://openccu/` auf die Weboberfläche (WebUI) zugreifen und HomeMatic/homematicIP‑Geräte anlernen, konfigurieren oder bedienen.

If mDNS is required in your environment, consider documenting http://openccu.local/ as the default hostname.


134-136: Support section: commas, plural agreement, and minor hyphenation.

  • Add commas for readability.
  • “könnten” (plural) and remove double space.
  • “OpenCCU‑Teil” hyphen.
-Für Feedback jeglicher Art, Fragen, Vorschläge, Wünsche und Fehlerberichte wird darum gebeten bitte zuerst im jeweiligen OpenCCU Teil des HomeMatic-Forum (<https://homematic-forum.de/forum/viewforum.php?f=65>) einen entsprechenden Beitrag zu erstellen oder an bereits existierenden Beiträgen dort sich zu beteiligen. Sollte aus den Diskussionen dort sich dann ein spezieller Feature-Wunsch oder von anderen Personen bestätigter Bug in OpenCCU herauskristallieren wird darum gebeten diesen Bug bzw. diesen Feature-Request im [Issue Tracker](https://github.com/OpenCCU/OpenCCU/issues) von OpenCCU entsprechend einzutragen bzw. zu melden.
+Für Feedback jeglicher Art, Fragen, Vorschläge, Wünsche und Fehlerberichte wird darum gebeten, bitte zuerst im jeweiligen OpenCCU‑Teil des HomeMatic‑Forums (<https://homematic-forum.de/forum/viewforum.php?f=65>) einen entsprechenden Beitrag zu erstellen oder sich an bereits existierenden Beiträgen zu beteiligen. Sollte sich aus den Diskussionen dort ein spezieller Feature‑Wunsch oder ein von anderen Personen bestätigter Bug in OpenCCU herauskristallisieren, wird darum gebeten, diesen Bug bzw. Feature‑Request im [Issue Tracker](https://github.com/OpenCCU/OpenCCU/issues) entsprechend zu melden.
@@
-Beteiligung in jeder Form ist willkommen und ausdrücklich gewünscht, insbesondere sind alle Nutzer aufgefordert etwaige Probleme so früh wie möglich zu melden damit diese in zukünftigen Versionen entsprechend repariert werden können. Auch wäre es schön wenn noch offene Issues im  [Issue Tracker](https://github.com/OpenCCU/OpenCCU/issues) von vielen Nutzern reproduziert werden könnte und man sich dort an etwaigen Diskussionen zur Lösungsfindung beteiligen würde. Ausdrücklich erwünscht ist auch an der permanenten Verbesserung und Erweiterung der [Dokumentation](https://github.com/OpenCCU/OpenCCU/wiki) mitzuarbeiten. Deshalb sind die Schreibrechte für die Dokumentation auch so gesetzt das dort Korrekturen/Änderungen von jedem GitHub Nutzer sofort durchgeführt werden können.
+Beteiligung in jeder Form ist willkommen und ausdrücklich gewünscht, insbesondere sind alle Nutzer aufgefordert, etwaige Probleme so früh wie möglich zu melden, damit diese in zukünftigen Versionen entsprechend behoben werden können. Auch wäre es schön, wenn noch offene Issues im [Issue Tracker](https://github.com/OpenCCU/OpenCCU/issues) von vielen Nutzern reproduziert werden könnten und man sich dort an etwaigen Diskussionen zur Lösungsfindung beteiligen würde. Ausdrücklich erwünscht ist auch die permanente Verbesserung und Erweiterung der [Dokumentation](https://github.com/OpenCCU/OpenCCU/wiki). Deshalb sind die Schreibrechte für die Dokumentation so gesetzt, dass dort Korrekturen/Änderungen von jedem GitHub‑Nutzer sofort durchgeführt werden können.

138-138: Contributing: hyphenation and flow.

Minor hyphenation and punctuation for consistency.

-Erwünscht sind natürlich auch direkte Entwicklungsbeteiligungen in Form von PullRequests und Source Code submissions (Bugs, Features). Falls hier jemand also gerne ein Feature umsetzen oder einen Bug selbst ausmerzen will, so wird darum gebeten hierfür die unter Git/GitHub zur Verfügung stehenden Mechanismen zu verwenden. Hierbei gilt jedoch die Lizenzierung von OpenCCU und dessen genutzter Drittpakete (z.B. OCCU von eQ3) zu beachten und entsprechend zu akzeptieren. Mehr Informationen dazu kann man unter [CONTRIBUTING.md](CONTRIBUTING.md) nachlesen. Zusätzlich dazu wird darum gebeten für jegliche Beteiligung an diesem Projekt zuerst unseren [CODE OF CONDUCT](CODE_OF_CONDUCT.md) zu studieren und erst dann Beteiligungen in Betracht zu ziehen wenn dieser vollumfänglich akzeptiert werden kann.
+Erwünscht sind natürlich auch direkte Entwicklungsbeteiligungen in Form von Pull‑Requests und Source‑Code‑Beiträgen (Bugs, Features). Falls jemand ein Feature umsetzen oder einen Bug selbst ausmerzen will, wird darum gebeten, hierfür die unter Git/GitHub zur Verfügung stehenden Mechanismen zu verwenden. Hierbei sind die Lizenzierung von OpenCCU und die genutzten Drittpakete (z. B. OCCU von eQ‑3) zu beachten und entsprechend zu akzeptieren. Mehr Informationen dazu finden sich unter [CONTRIBUTING.md](CONTRIBUTING.md). Zusätzlich wird darum gebeten, für jegliche Beteiligung an diesem Projekt zuerst unseren [CODE OF CONDUCT](CODE_OF_CONDUCT.md) zu studieren und Beteiligungen nur dann in Betracht zu ziehen, wenn dieser vollumfänglich akzeptiert werden kann.

144-144: License section: fix wording (“Intentionen”, hyphenation, and prepositions).

  • “ohne jegliche kommerziellen Intentionen” → “ohne jegliche kommerzielle Intention” (or plural with matching adjective ending).
  • “bereitgestellt” together.
  • Buildroot/Linux‑Umgebung; components “unter anderen Lizenzen stehen”.
-Die OpenCCU Buildumgebung selbst – die Dateien die hier in diesem Git Repository zu finden sind – sowie die frei herunterladbaren OpenCCU Images sind unter der OpenSource [Apache License 2.0](https://opensource.org/licenses/Apache-2.0) lizenziert. OpenCCU wird selbst komplett kostenfrei und ohne jeglichen kommerziellen Intentionen entwickelt und zur komplett kostenfreien Nutzung bereitgestellt. Hierbei gilt zu beachten, dass die Komponenten der genutzten Buildroot/Linux Umgebung jeweils anderen Lizenzen stehen können wobei Buildroot/Linux hier selbst unter der [GPLv2](http://www.gnu.org/licenses/gpl-2.0.html) lizenziert ist. Des Weiteren stehen die mit OpenCCU mitgelieferten [eQ-3 OCCU](https://github.com/eq-3/occu) Komponenten (Binär+Textdateien), die zur Nutzung der HomeMatic/homematicIP Interoperabilität notwendig sind, unter der sogenannten [HMSL](https://github.com/eq-3/occu/blob/master/LicenseDE.txt) Lizenz.
+Die OpenCCU‑Buildumgebung selbst – die Dateien, die hier in diesem Git‑Repository zu finden sind – sowie die frei herunterladbaren OpenCCU‑Images sind unter der Open‑Source‑Lizenz [Apache License 2.0](https://opensource.org/licenses/Apache-2.0) lizenziert. OpenCCU wird komplett kostenfrei und ohne jegliche kommerzielle Intention entwickelt und zur vollständig kostenfreien Nutzung bereitgestellt. Hierbei gilt zu beachten, dass die Komponenten der genutzten Buildroot/Linux‑Umgebung jeweils unter anderen Lizenzen stehen können, wobei Buildroot/Linux selbst unter der [GPLv2](http://www.gnu.org/licenses/gpl-2.0.html) lizenziert ist. Des Weiteren stehen die mit OpenCCU mitgelieferten [eQ‑3 OCCU](https://github.com/eq-3/occu)‑Komponenten (Binär‑ und Textdateien), die zur Nutzung der HomeMatic/homematicIP‑Interoperabilität notwendig sind, unter der sogenannten [HMSL](https://github.com/eq-3/occu/blob/master/LicenseDE.txt)‑Lizenz.

148-148: Haftungsausschluss: tiny grammar fix (“ODER EINEN BESTIMMTEN ZWECK”).

Keeps the original all‑caps style; adjusts “einem” → “einen”.

-OPENCCU WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIEẞLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.
+OPENCCU WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIEẞLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEN BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.

154-154: Stylistic: “der eine oder andere” lowercased in running text.

Minor German style correction.

-Wenn der Eine oder Andere bzgl. Einsatz von OpenCCU noch unentschlossen ist ...
+Wenn der eine oder andere bzgl. Einsatz von OpenCCU noch unentschlossen ist ...

168-170: Danksagungen: singular “Open‑Source‑Projekt”; unify eQ‑3 spelling.

-Zusätzlich zu den Personen die sich als [Contributors](https://github.com/OpenCCU/OpenCCU/graphs/contributors) im Rahmen des OpenCCU OpenSource Projekte indirekt oder direkt beteiligt haben, soll hier natürlich folgenden Personen ausdrücklich gedankt werden:
+Zusätzlich zu den Personen, die sich als [Contributors](https://github.com/OpenCCU/OpenCCU/graphs/contributors) im Rahmen des OpenCCU‑Open‑Source‑Projekts indirekt oder direkt beteiligt haben, soll hier natürlich folgenden Personen ausdrücklich gedankt werden:
@@
-* _Alexander Reinert (@alexreinert)_ – für sein Low-Latency [generic_raw_uart](https://github.com/alexreinert/piVCCU/tree/master/kernel) Kernelmodul, welches es erlaubt die von eQ3 angebotenen Funkmodule (RPI-RF-MOD, HM-MOD-RPI-PCB) zu nutzen sowie für seine [HB-RF-USB](https://github.com/alexreinert/PCB/tree/master/HB-RF-USB), [HB-RF-USB-2](https://github.com/alexreinert/PCB/tree/master/HB-RF-USB-2) und [HB-RF-ETH](https://github.com/alexreinert/PCB/tree/master/HB-RF-ETH) OpenHardware Projekte für eine USB- bzw. Ethernet-basierte Nutzung dieser Funkmodule.
+* _Alexander Reinert (@alexreinert)_ – für sein Low‑Latency‑[generic_raw_uart](https://github.com/alexreinert/piVCCU/tree/master/kernel)‑Kernelmodul, welches es erlaubt, die von eQ‑3 angebotenen Funkmodule (RPI‑RF‑MOD, HM‑MOD‑RPI‑PCB) zu nutzen, sowie für seine [HB‑RF‑USB](https://github.com/alexreinert/PCB/tree/master/HB-RF-USB), [HB‑RF‑USB‑2](https://github.com/alexreinert/PCB/tree/master/HB-RF-USB-2) und [HB‑RF‑ETH](https://github.com/alexreinert/PCB/tree/master/HB-RF-ETH) Open‑Hardware‑Projekte für eine USB‑ bzw. Ethernet‑basierte Nutzung dieser Funkmodule.
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between ef900c8 and adffc6e.

📒 Files selected for processing (1)
  • README.de.md (3 hunks)
🧰 Additional context used
🪛 LanguageTool
README.de.md

[grammar] ~21-~21: There might be a mistake here.
Context: .../OpenCCU/stargazers/) Click here for 🇬🇧🇺🇸 english readme</su...

(QB_NEW_EN)


[grammar] ~23-~23: There might be a mistake here.
Context: ... english readme](README.md) ___ Bei OpenCCU handelt es sich um ein alterna...

(QB_NEW_EN)


[grammar] ~23-~23: Ensure spelling is correct
Context: ...räten für frei erhältliche Single-Board-Computern (SBC) wie z.B. den [RaspberryPi](https:...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~29-~29: There might be a mistake here.
Context: ...enutzt werden können, auch verhält sich OpenCCU in puncto Funktionalität und WebUI voll...

(QB_NEW_EN)


[grammar] ~31-~31: Ensure spelling is correct
Context: ...rmware von der Firma eQ3/ELV übernommen wurde oder aus kommerzieller Sicht nicht über...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~69-~69: Ensure spelling is correct
Context: ...://github.com/OpenCCU/OpenCCU/releases) steht für die jeweilige Target-Hardware Datei...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~69-~69: Ensure spelling is correct
Context: ...man z.B. die SD Karte in den jeweiligen RaspberryPi ein und startet diesen. Danach sollte d...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~73-~73: Ensure spelling is correct
Context: ...i/Installation#schnellstart) ## 📝 Dokumentation 1. [Einleitung](https://github.com/OpenCCU/O...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~134-~134: Ensure spelling is correct
Context: ...ren Personen bestätigter Bug in OpenCCU herauskristallieren wird darum gebeten diesen Bug bzw. dies...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~136-~136: Ensure spelling is correct
Context: ... von vielen Nutzern reproduziert werden könnte und man sich dort an etwaigen Diskussio...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~148-~148: Ensure spelling is correct
Context: ...ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTS...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~157-~157: There might be a mistake here.
Context: ...SmDcrkHb7M/hqdefault.jpg" width=320> <a href="https://www.youtube.com/watch?v...

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Linter Checks
🔇 Additional comments (2)
README.de.md (2)

7-16: Apply HTTPS to IsItMaintained Badges & Confirm Workflow Names

The two isitmaintained.com badges were correctly switched to HTTPS to prevent mixed-content issues, and the workflow names have been verified:

  • The file .github/workflows/ci.yml contains
    name: CI Build
  • The file .github/workflows/snapshot.yml contains
    name: Snapshot Build

No further changes are required beyond updating the badge URLs:

-[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)
-[![Percentage of issues still open](http://isitmaintained.com/badge/open/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)
+[![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)
+[![Percentage of issues still open](https://isitmaintained.com/badge/open/OpenCCU/OpenCCU.svg)](https://github.com/OpenCCU/OpenCCU/issues)

122-122: Ignore incorrect anchor suggestion – the existing “#usv-clientserver-nut” is correct

The section on the OpenCCU wiki is actually titled “USV Client/Server-NUT” (NUT = Network UPS Tools), so GitHub’s automatic slug generation produces usv-clientserver-nut. The proposed change to #usv-clientserver-betrieb would break the link.

• README.de.md, line 122 – keep the fragment as #usv-clientserver-nut

Likely an incorrect or invalid review comment.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
buildroot-external/configs/odroid-n2.config (1)

7-7: Tiny nit: document overlay precedence to prevent future regressions.

A short comment above the setting helps maintainers preserve the intentional override order when adding/removing layers later.

Apply this diff to add a clarifying comment:

- BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_EQ3_PATH)/overlay/base $(BR2_EXTERNAL_EQ3_PATH)/overlay/base-openccu $(BR2_EXTERNAL_EQ3_PATH)/overlay/WebUI $(BR2_EXTERNAL_EQ3_PATH)/overlay/WebUI-openccu $(BR2_EXTERNAL_EQ3_PATH)/overlay/RFD"
+ # Overlay precedence (left → right): generic base first, then OpenCCU overrides;
+ # generic WebUI, then OpenCCU WebUI overrides; RFD last.
+ BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_EQ3_PATH)/overlay/base $(BR2_EXTERNAL_EQ3_PATH)/overlay/base-openccu $(BR2_EXTERNAL_EQ3_PATH)/overlay/WebUI $(BR2_EXTERNAL_EQ3_PATH)/overlay/WebUI-openccu $(BR2_EXTERNAL_EQ3_PATH)/overlay/RFD"
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between adffc6e and 8401016.

📒 Files selected for processing (7)
  • buildroot-external/configs/generic-aarch64.config (1 hunks)
  • buildroot-external/configs/generic-x86_64.config (1 hunks)
  • buildroot-external/configs/odroid-c2.config (1 hunks)
  • buildroot-external/configs/odroid-c4.config (1 hunks)
  • buildroot-external/configs/odroid-n2.config (1 hunks)
  • buildroot-external/configs/ova.config (1 hunks)
  • buildroot-external/configs/tinkerboard.config (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (6)
  • buildroot-external/configs/odroid-c4.config
  • buildroot-external/configs/odroid-c2.config
  • buildroot-external/configs/generic-aarch64.config
  • buildroot-external/configs/generic-x86_64.config
  • buildroot-external/configs/tinkerboard.config
  • buildroot-external/configs/ova.config
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (11)
  • GitHub Check: CI build [tinkerboard]
  • GitHub Check: CI build [ova]
  • GitHub Check: CI build [oci_arm]
  • GitHub Check: CI build [rpi3]
  • GitHub Check: CI build [lxc_arm]
  • GitHub Check: CI build [oci_arm64]
  • GitHub Check: CI build [rpi2]
  • GitHub Check: CI build [odroid-c4]
  • GitHub Check: CI build [odroid-n2]
  • GitHub Check: CI build [rpi5]
  • GitHub Check: CI build [rpi0]
🔇 Additional comments (1)
buildroot-external/configs/odroid-n2.config (1)

7-7: Overlay rename and ordering look correct for OpenCCU overrides.

Placing base-openccu after base and WebUI-openccu after WebUI ensures OpenCCU-specific files override the generic layers as intended. Keeping overlay/RFD last preserves any radio stack overrides. Looks consistent with the PR’s rebrand goals.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant