Skip to content

ci: skip auto-release when a merge is marked [no-release] - #127

Merged
simons-plugins merged 1 commit into
mainfrom
ci/no-release-marker
Aug 5, 2026
Merged

ci: skip auto-release when a merge is marked [no-release]#127
simons-plugins merged 1 commit into
mainfrom
ci/no-release-marker

Conversation

@simons-plugins

@simons-plugins simons-plugins commented Aug 5, 2026

Copy link
Copy Markdown
Owner

Summary

Every merge to main mints a GitHub release. During the Matter export build that produced seven releases nobody installs (now deleted). This adds an opt-out.

  • create-release job gains if: ${{ !contains(github.event.head_commit.message, '[no-release]') }}
  • The marker goes in the PR title — GitHub's default merge commit is Merge pull request #N from … followed by the PR title, which is what the job reads
  • version-check is deliberately untouched: every PR still needs a PluginVersion bump whether or not it releases
  • Workspace CLAUDE.md documents the convention

This PR's own title carries the marker, so merging it is also its own test: if the change works, no release is created for it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JxqGhP3DcENf68AZK21U4S

Summary by CodeRabbit

  • New Features

    • Added support for an independently managed Matter export bridge.
    • Added bridge configuration for storage, ports, logging, and optional network interface selection.
    • Improved bridge installation, startup, shutdown, restart, and diagnostics.
    • Enhanced pairing and fabric-management workflows, including clearer status and error handling.
    • Added pairing QR page and configuration readouts with improved validation and security handling.
  • Bug Fixes

    • Improved export behavior during preference changes, reconnects, and pairing transitions.
    • Added safer handling for invalid port settings and final-fabric removal.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@simons-plugins, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 51 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9671bd59-7a5d-4e2f-90be-b5a0381b36e4

📥 Commits

Reviewing files that changed from the base of the PR and between 57647c5 and 1ac05b5.

📒 Files selected for processing (2)
  • .github/workflows/create-release.yml
  • indigo-matter.indigoPlugin/Contents/Info.plist
📝 Walkthrough

Walkthrough

Changes

Matter bridge integration

Layer / File(s) Summary
Bridge process and LaunchAgent implementation
indigo-matter.indigoPlugin/Contents/Server Plugin/bridge_agent.py
Adds bridge-specific metadata, storage and port handling, command construction, and LaunchAgent installation.
Bridge configuration and lifecycle validation
tests/test_bridge_agent.py
Tests bridge identity, storage paths, command arguments, installation, preflight handling, and uninstall behavior.
Export and pairing control-flow validation
tests/test_export_agent_wiring.py, tests/test_pairing_menu.py
Tests export-agent lifecycle, pairing callbacks, fabric handling, pairing pages, bridge wiring, and configuration readouts.

Release metadata controls

Layer / File(s) Summary
Release workflow and plugin version
.github/workflows/create-release.yml, indigo-matter.indigoPlugin/Contents/Info.plist
Skips releases for commits containing [no-release] and updates the plugin version to 2026.8.2.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant BridgeProcess
  participant LaunchAgent
  participant MatterBridgeNode
  BridgeProcess->>LaunchAgent: Install bridge package and plist
  LaunchAgent->>MatterBridgeNode: Launch configured entrypoint
  BridgeProcess->>MatterBridgeNode: Pass storage, port, and mDNS settings
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: skipping automatic releases when the [no-release] marker is present.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/no-release-marker

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
tests/test_bridge_agent.py (1)

103-103: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Fix the capitalization in the test name.

test_storage_is_the_siblING_of_the_controllers contains stray capitals. Every other test in this file uses lower-case words with deliberate emphasis only on whole words such as BEFORE. Rename it to test_storage_is_the_sibling_of_the_controllers.

♻️ Proposed rename
-def test_storage_is_the_siblING_of_the_controllers(tmp_path, mock_logger):
+def test_storage_is_the_sibling_of_the_controllers(tmp_path, mock_logger):
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/test_bridge_agent.py` at line 103, Rename the test function
test_storage_is_the_siblING_of_the_controllers to
test_storage_is_the_sibling_of_the_controllers, preserving the test
implementation unchanged.
tests/test_pairing_menu.py (1)

570-573: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Make the BridgeProcess stand-in tolerant of the real call shape.

_factory accepts exactly two positional arguments. bridge_agent.BridgeProcess.__init__ also accepts the keyword-only arguments home, npx_path, runner, exists and sleep. If _start_bridge_agent passes any of them, _factory raises TypeError and the test fails for a reason unrelated to the prefs snapshot it verifies. Every other monkeypatch in this class already uses *_a, **_k.

♻️ Proposed change
-        def _factory(prefs, _logger):
+        def _factory(prefs, _logger=None, **_kwargs):
             built.append(dict(prefs))
             return Mock(ensure_installed=Mock(return_value=True), ws_port="5581",
                         matter_port="5540")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/test_pairing_menu.py` around lines 570 - 573, Update the local _factory
stand-in in the pairing menu test to accept arbitrary additional positional and
keyword arguments, matching the tolerant signatures used by the other
monkeypatches. Preserve its existing prefs snapshot and Mock return behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@tests/test_bridge_agent.py`:
- Line 103: Rename the test function
test_storage_is_the_siblING_of_the_controllers to
test_storage_is_the_sibling_of_the_controllers, preserving the test
implementation unchanged.

In `@tests/test_pairing_menu.py`:
- Around line 570-573: Update the local _factory stand-in in the pairing menu
test to accept arbitrary additional positional and keyword arguments, matching
the tolerant signatures used by the other monkeypatches. Preserve its existing
prefs snapshot and Mock return behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7486053f-2635-4bda-8995-c0cc7b1b6486

📥 Commits

Reviewing files that changed from the base of the PR and between 57647c5 and 8d576b0.

📒 Files selected for processing (6)
  • .github/workflows/create-release.yml
  • indigo-matter.indigoPlugin/Contents/Info.plist
  • indigo-matter.indigoPlugin/Contents/Server Plugin/bridge_agent.py
  • tests/test_bridge_agent.py
  • tests/test_export_agent_wiring.py
  • tests/test_pairing_menu.py

Every merge to main currently mints a GitHub release, so a multi-PR
feature arc produces a string of releases nobody installs — seven of them
during the Matter export build, since deleted.

The create-release job now skips when the head commit message contains
[no-release]. GitHub's default merge commit is 'Merge pull request #N
from ...' followed by the PR title, so the marker goes in the PR title.
version-check is deliberately unaffected: every PR still needs its own
PluginVersion bump, whether or not it releases.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JxqGhP3DcENf68AZK21U4S
@simons-plugins
simons-plugins merged commit 47ec5e9 into main Aug 5, 2026
3 checks passed
@simons-plugins
simons-plugins deleted the ci/no-release-marker branch August 5, 2026 22:09
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