openclaw - ✅(Solved) Fix synology-chat missing from .github/labeler.yml [2 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#65852Fetched 2026-04-14 05:40:02
View on GitHub
Comments
0
Participants
1
Timeline
2
Reactions
0
Author
Participants
Timeline (top)
cross-referenced ×2

extensions/synology-chat/ and docs/channels/synology-chat.md exist, but .github/labeler.yml has no channel: synology-chat rule. All other bundled channel extensions have corresponding labeler entries.

Root Cause

extensions/synology-chat/ and docs/channels/synology-chat.md exist, but .github/labeler.yml has no channel: synology-chat rule. All other bundled channel extensions have corresponding labeler entries.

Fix Action

Fixed

PR fix notes

PR #65850: chore: channel infra consistency -- qqbot guardrails, synology-chat labeler, onboarding scopes

Description (problem / solution / changelog)

Summary

Three small infra gaps found while auditing bundled channel and provider extensions:

  • Problem 1: qqbot is a bundled channel plugin but was missing from package-manifest.contract.test.ts and channel-import-guardrails.test.ts, while all other bundled channels (feishu, zalo, telegram, discord, etc.) are covered. This means dependency drift and import boundary violations in qqbot would not be caught by CI.
  • Problem 2: extensions/synology-chat/ and docs/channels/synology-chat.md exist, but .github/labeler.yml has no channel: synology-chat rule. PRs touching Synology Chat files are not auto-labeled.
  • Problem 3: runway and alibaba are video-generation-only providers (no text providers key) but had no onboardingScopes set, defaulting to ["text-inference"] and appearing in the text model onboarding wizard. Other media-only providers (fal, vydra) correctly set ["image-generation"].
  • What changed: Added qqbot to two test guardrail lists with its 3 mirrored runtime deps; added synology-chat labeler rule; set onboardingScopes: ["image-generation"] for runway and alibaba manifests.
  • What did NOT change (scope boundary): No runtime logic, no new dependencies, no config migration. Pure additive test/infra/metadata fixes.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #65851
  • Closes #65852
  • Closes #65854
  • This PR fixes a bug or regression

Root Cause (if applicable)

  • Root cause: qqbot was added as a bundled channel but never included in the guardrail test lists. synology-chat was similarly missed in the labeler. runway and alibaba were contributed as video-only providers without explicit onboardingScopes, inheriting the default text-inference scope.
  • Missing detection / guardrail: No automated check ensures all bundled channels appear in the guardrail lists or that the labeler covers all extension directories.
  • Contributing context: Additive oversights from when the extensions were first contributed.

Regression Test Plan (if applicable)

  • Coverage level that should have caught this:
    • Existing coverage already sufficient
  • Target test or file: package-manifest.contract.test.ts, channel-import-guardrails.test.ts
  • Scenario the test should lock in: qqbot dependencies stay mirrored in root package.json; qqbot imports respect the plugin-sdk boundary
  • Existing test that already covers this: The contract tests themselves -- this PR adds qqbot to them
  • If no new test is added, why not: Adding qqbot to the existing test infrastructure IS the coverage fix

User-visible / Behavior Changes

  1. QQBot dependency and import boundary violations will now be caught in CI (previously silent)
  2. PRs touching extensions/synology-chat/** or docs/channels/synology-chat.md will get the channel: synology-chat label
  3. Runway and Alibaba will no longer appear in the text-inference onboarding wizard; they will appear in the image-generation wizard instead (matching fal and vydra behavior)

Diagram (if applicable)

N/A

Security Impact (required)

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? No
  • Data access scope changed? No

Repro + Verification

Environment

  • OS: macOS (darwin 25.1.0)
  • Runtime/container: Node 22+, pnpm
  • Model/provider: N/A (infra changes)
  • Integration/channel: qqbot, synology-chat, runway, alibaba

Steps

  1. pnpm vitest run src/plugins/contracts/package-manifest.contract.test.ts -- 39 tests pass (was 38)
  2. pnpm vitest run src/channels/plugins/contracts/channel-import-guardrails.test.ts -- 12 tests pass
  3. Verify .github/labeler.yml contains channel: synology-chat
  4. Verify extensions/runway/openclaw.plugin.json and extensions/alibaba/openclaw.plugin.json have onboardingScopes: ["image-generation"]

Expected

  • All tests pass; labeler rule present; manifests correctly scoped

Actual

  • Confirmed all of the above

Evidence

  • Failing test/log before + passing after
  • Contract tests: 39 passed (was 38 before qqbot)
  • Guardrail tests: 12 passed
  • Pre-commit hooks (lint + typecheck + format + import cycles) all pass

Human Verification (required)

  • Verified scenarios: Both contract test suites pass locally; pre-commit hooks pass; manual diff review of all 5 changed files
  • Edge cases checked: Confirmed byteplus and together are NOT changed because they register text providers (so defaulting to text-inference is correct for them); only pure video providers (runway, alibaba) get the scope fix
  • What you did NOT verify: Actual onboarding UI rendering (would need interactive openclaw configure flow)

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? Yes
  • Config/env changes? No
  • Migration needed? No

Risks and Mitigations

  • Risk: If qqbot currently has import boundary violations that were previously undetected, the guardrail test will now catch them and fail CI.
    • Mitigation: This is the intended behavior -- surfaces real issues rather than hiding them. Verified locally that qqbot passes the guardrails.
  • Risk: Runway/Alibaba users who relied on finding these providers in the text-inference wizard will now need to look in the image-generation wizard.
    • Mitigation: These are video-only providers with no text model support, so appearing in text-inference was always incorrect.

Changed files

  • .github/labeler.yml (modified, +5/-0)
  • extensions/alibaba/openclaw.plugin.json (modified, +1/-0)
  • extensions/runway/openclaw.plugin.json (modified, +1/-0)
  • src/channels/plugins/contracts/channel-import-guardrails.test.ts (modified, +2/-0)
  • src/plugins/contracts/package-manifest.contract.test.ts (modified, +5/-0)

PR #65855: chore: add qqbot to channel contract guardrails and fix synology-chat labeler

Description (problem / solution / changelog)

Summary

  • Problem: Two infra gaps found while auditing bundled channel extensions:
    1. qqbot is a bundled channel plugin (extensions/qqbot/) with 3 runtime dependencies (mpg123-decoder, silk-wasm, ws) mirrored in the root package.json, but it was missing from package-manifest.contract.test.ts and both lists in channel-import-guardrails.test.ts (GUARDED_CHANNEL_EXTENSIONS, LOCAL_EXTENSION_API_BARREL_GUARDS). Every other bundled channel (feishu, zalo, telegram, discord, slack, synology-chat, etc.) is in these lists.
    2. extensions/synology-chat/ and docs/channels/synology-chat.md exist, but .github/labeler.yml has no channel: synology-chat rule. All other bundled channels have labeler entries.
  • Why it matters: Without guardrails, dependency drift and import boundary violations in qqbot go undetected in CI. Without the labeler rule, PRs touching synology-chat are not auto-labeled for triage.
  • What changed: Added qqbot to package-manifest.contract.test.ts (with its 3 mirrored deps), GUARDED_CHANNEL_EXTENSIONS, and LOCAL_EXTENSION_API_BARREL_GUARDS; added channel: synology-chat rule to .github/labeler.yml.
  • What did NOT change (scope boundary): No runtime logic, no new dependencies, no config changes. Purely additive test and CI infra fixes.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #65851
  • Closes #65852
  • This PR fixes a bug or regression

Root Cause (if applicable)

  • Root cause: qqbot was added as a bundled channel but never included in the guardrail test lists. synology-chat was similarly missed in the labeler config.
  • Missing detection / guardrail: No automated check ensures all bundled channels appear in the guardrail lists or that the labeler covers all extension directories.
  • Contributing context: Additive oversights from when the extensions were first contributed.

Regression Test Plan (if applicable)

  • Coverage level that should have caught this:
    • Existing coverage already sufficient
  • Target test or file: package-manifest.contract.test.ts, channel-import-guardrails.test.ts
  • Scenario the test should lock in: qqbot dependencies stay mirrored in root package.json; qqbot imports respect the plugin-sdk boundary
  • Existing test that already covers this: The contract tests themselves -- this PR adds qqbot to them
  • If no new test is added, why not: Adding qqbot to the existing test infrastructure IS the coverage fix

User-visible / Behavior Changes

  1. QQBot dependency and import boundary violations will now be caught in CI (previously silent)
  2. PRs touching extensions/synology-chat/** or docs/channels/synology-chat.md will get the channel: synology-chat label

Diagram (if applicable)

N/A

Security Impact (required)

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? No
  • Data access scope changed? No

Repro + Verification

Environment

  • OS: macOS (darwin 25.1.0)
  • Runtime/container: Node 22+, pnpm
  • Model/provider: N/A
  • Integration/channel: qqbot, synology-chat

Steps

  1. pnpm vitest run src/plugins/contracts/package-manifest.contract.test.ts -- 39 tests pass (was 38)
  2. pnpm vitest run src/channels/plugins/contracts/channel-import-guardrails.test.ts -- 12 tests pass
  3. Verify .github/labeler.yml contains channel: synology-chat

Expected

  • All tests pass; labeler rule present

Actual

  • Confirmed

Evidence

  • Failing test/log before + passing after
  • Contract tests: 39 passed (was 38 before qqbot)
  • Guardrail tests: 12 passed
  • Pre-commit hooks all pass

Human Verification (required)

  • Verified scenarios: Both contract test suites pass locally; pre-commit hooks pass; diff review of all 3 changed files
  • Edge cases checked: Verified qqbot's 3 runtime deps (mpg123-decoder, silk-wasm, ws) are all present in root package.json
  • What you did NOT verify: N/A -- all changes are test/CI config

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? Yes
  • Config/env changes? No
  • Migration needed? No

Risks and Mitigations

  • Risk: If qqbot currently has import boundary violations that were previously undetected, the guardrail test will now fail CI.
    • Mitigation: Intended behavior. Verified locally that qqbot passes all guardrails.

Changed files

  • .github/labeler.yml (modified, +5/-0)
  • src/channels/plugins/contracts/channel-import-guardrails.test.ts (modified, +2/-0)
  • src/plugins/contracts/package-manifest.contract.test.ts (modified, +5/-0)
RAW_BUFFERClick to expand / collapse

Description

extensions/synology-chat/ and docs/channels/synology-chat.md exist, but .github/labeler.yml has no channel: synology-chat rule. All other bundled channel extensions have corresponding labeler entries.

Impact

PRs that touch extensions/synology-chat/** or docs/channels/synology-chat.md do not get the channel: synology-chat label automatically, making triage harder.

Expected

Add the labeler rule, consistent with other channel entries (e.g., channel: slack, channel: telegram).

extent analysis

TL;DR

Add a channel: synology-chat rule to the .github/labeler.yml file to automatically label relevant PRs.

Guidance

  • Verify that the .github/labeler.yml file is correctly formatted and has rules for other channels (e.g., channel: slack, channel: telegram) to ensure consistency.
  • Check the documentation for the labeler configuration to understand the required syntax and structure for adding a new rule.
  • Add a new rule to the .github/labeler.yml file with the channel: synology-chat label, following the pattern of existing rules.
  • Test the updated labeler configuration by creating a new PR that touches extensions/synology-chat/** or docs/channels/synology-chat.md and verify that the channel: synology-chat label is automatically applied.

Example

labels:
  - channel: synology-chat
    paths:
      - extensions/synology-chat/**
      - docs/channels/synology-chat.md

Notes

This solution assumes that the labeler configuration is correctly set up and that the channel: synology-chat label exists in the repository.

Recommendation

Apply workaround: Add the missing channel: synology-chat rule to the .github/labeler.yml file, as this will fix the issue and ensure consistent labeling of PRs.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING