Skip to content

fix(messaging): show apps the IM plugin can't serve as greyed out in Bind app (#1123) - #1128

Merged
DoodleBears merged 9 commits into
mainfrom
claude/1123-unsupported-apps
Oct 7, 2026
Merged

DoodleBears merged 9 commits into
mainfrom
claude/1123-unsupported-apps

Conversation

@DoodleBears

@DoodleBears DoodleBears commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Vain · project thread

Part of #1123 (the BotHarness half) · part of #1107 · stacked on #1121 (base switches to main once #1120 and #1121 merge)

Before: the dsh-im provider dropped any app whose IM plugin lacks proactive-text-checked. With the pinned dsh-im, every Discord app silently vanished from Bind app, with no hint why.

After: such apps stay in Bind app, greyed out, with update the IM plugin to bind this app. Binding them is still refused.

The other half of #1123, adding Discord proactive-text-checked to the dsh-im fork and repinning, ships with the dsh-im release for #1111/#1115. That push needs the Claude GitHub App on DoodleBears/dsh-im.

How

  • createDshImProvider splits describe (shape checks) from account (adds the capability check). accounts() uses describe and marks a missing capability as unsupported: 'checked-send'. inspectAccount still throws provider-incompatible, so bind, reception and sends keep refusing those apps.
  • The two fallbacks that look an account up from accounts() when there is no inspectAccount skip unsupported accounts.
  • Bind app disables unsupported accounts, sorts them with the other unavailable ones and shows the reason in the hint.

Screenshots

From a real Host with a simulated provider; "旧版插件应用" lacks the capability. All variants: https://github.com/BotHarness/BotHarness/tree/claude/1123-unsupported-apps/docs/assets/pr/1123-unsupported-apps

zh light en dark

Tests

  • dsh-im-unsupported.test.ts: a Discord app without checked send is listed as unsupported and refused by inspectAccount; a capable app is listed plainly and inspects fine.
  • external-identity-list.test.ts: Bind app shows the unsupported app disabled with its reason, next to apps bound to this Bot or another Bot.
  • Core messaging plus client: 142 files / 1103 tests pass. tsc, lint, oxfmt and pnpm changelog:check are clean.

Human verification

  1. With the pinned dsh-im, connect a Discord bot under Settings → IM bots.
  2. Open any Bot's Bind app. The Discord app is listed, greyed out, and says to update the IM plugin.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WXjBatxGTRyRSxZYeJpqgH


Generated by Claude Code

Summary by CodeRabbit

  • Bug Fixes
    • Apps that the messaging plugin cannot currently support are now shown in the Bind app list as disabled, with a note to update the plugin. Previously, these apps were omitted.
    • Unsupported apps can’t be bound or selected for messaging until they’re supported.

claude added 5 commits October 7, 2026 15:27
…llow again (#1109)

The app's Conversations list in Edit identity sorts entries into Waiting,
Active, Muted and Blocked. Mute admits silently, Rules reuses the group
reception editor, Block revokes the entry, cancels unsent replies and
writes a durable block per Bot, app fingerprint and conversation that
survives restart and rebind; Allow again creates a fresh entry with no
backfill. New conversations can be admitted automatically or held for
the user, and new entries are bounded to 20 per hour and 500 active per
app with at most 200 held.

Issue: #1109
Agent-Task: claude-code/cloud/session_01WXjBatxGTRyRSxZYeJpqgH
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WXjBatxGTRyRSxZYeJpqgH
A Bot can now bind several apps of the same platform; one app still
belongs to one Bot. Generation 63 drops messaging_binding_bot_platform
and the bind and authorize commands no longer refuse a second app of a
platform. A new apps projection lists every Provider account with its
bound Bot; Bind app hides apps another Bot uses, External identities
groups apps by platform, and Bot settings gets an IM apps list that
refreshes on roster changes. Shared replies from a Bot with two apps in
the same group refuse with reply-target-ambiguous.

Issue: #1110
Agent-Task: claude-code/cloud/session_01WXjBatxGTRyRSxZYeJpqgH
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WXjBatxGTRyRSxZYeJpqgH
Per review, the app overview lives where apps are chosen. Bind app now
lists every connected app: apps a Bot already uses are disabled and name
that Bot (or say they are bound to this Bot), disconnected apps say so,
and Manage app credentials opens IM bots settings. The IM apps list in
Bot settings and its messagingApps bridge method are removed; the
snapshot's accounts already carry the owner.

Issue: #1110
Agent-Task: claude-code/cloud/session_01WXjBatxGTRyRSxZYeJpqgH
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WXjBatxGTRyRSxZYeJpqgH
The dsh-im provider used to drop any app whose plugin lacks
proactive-text-checked, so Discord apps on the pinned dsh-im silently
vanished from Bind app. The account list now reports such apps with
unsupported: 'checked-send', inspection for binding still refuses them,
and Bind app shows them disabled with an update-the-plugin reason.

Issue: #1123
Agent-Task: claude-code/cloud/session_01WXjBatxGTRyRSxZYeJpqgH
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WXjBatxGTRyRSxZYeJpqgH
Issue: #1123
Agent-Task: claude-code/cloud/session_01WXjBatxGTRyRSxZYeJpqgH
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WXjBatxGTRyRSxZYeJpqgH
@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

📝 Walkthrough

Walkthrough

The Discord provider now lists accounts without checked-send support as unsupported. Bind app displays these accounts as disabled with an IM-plugin update hint. Inspection rejects unsupported accounts, and fallback lookup paths exclude them.

Changes

Unsupported account handling

Layer / File(s) Summary
Provider account description and capability marking
packages/core/src/messaging/provider.ts, packages/core/src/messaging/dsh-im.ts, packages/core/test/dsh-im-unsupported.test.ts
MessagingAccount now supports the unsupported: 'checked-send' marker. The Discord provider lists accounts without proactive-text-checked with this marker, while inspection rejects them. Tests cover accounts with and without the capability.
Bind app unsupported-account display
packages/client/src/client/external-identity-list.tsx, packages/client/src/client/locale.ts, packages/client/test/external-identity-list.test.ts, CHANGELOG.md, CHANGELOG.zh.md, docs/assets/pr/1123-unsupported-apps/README.md
Bind app sorts unsupported accounts with bound or disconnected accounts, disables them, and displays an IM-plugin update hint. English and Chinese translations, UI tests, changelog entries, and screenshot documentation are included.
Supported-account fallback lookup
packages/core/src/messaging/channel-media.ts, packages/core/src/messaging/outbound.ts
Fallback account lookup skips matching accounts marked unsupported.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Merge Risk: 🔵 Low · up to ba719

The messaging change appears mergeable, subject to the planned pinned-plugin check. The remaining concern is limited to screenshot descriptions.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 8 files. (3 skipped: 3 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 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: unsupported apps remain visible but disabled in Bind app.
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.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 8 files. (3 skipped: 3 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

claude added 3 commits October 7, 2026 17:11
# Conflicts:
#	CHANGELOG.md
#	CHANGELOG.zh.md
#	packages/client/src/client/external-entries.tsx
#	packages/client/src/client/external-identity-list.tsx
#	packages/client/src/client/locale.ts
#	packages/client/test/external-identity-list.test.ts
#	packages/core/src/database/schema-plan.ts
…ed-apps

# Conflicts:
#	packages/client/src/client/external-identity-list.tsx
#	packages/client/src/client/locale.ts
#	packages/client/test/external-identity-list.test.ts
@DoodleBears
DoodleBears changed the base branch from claude/1110-several-apps to main October 7, 2026 17:16

@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.

🔇 Additional comments (12)
packages/core/src/messaging/provider.ts (1)

7-7: LGTM!

packages/core/src/messaging/dsh-im.ts (2)

310-343: LGTM!


383-383: LGTM!

packages/core/test/dsh-im-unsupported.test.ts (1)

1-32: LGTM!

packages/client/src/client/external-identity-list.tsx (1)

283-310: LGTM!

packages/client/src/client/locale.ts (1)

817-817: LGTM!

Also applies to: 2965-2965

packages/client/test/external-identity-list.test.ts (1)

255-255: LGTM!

Also applies to: 267-272, 319-319

CHANGELOG.md (1)

51-52: LGTM!

CHANGELOG.zh.md (1)

51-52: LGTM!

packages/core/src/messaging/channel-media.ts (1)

145-147: LGTM!

packages/core/src/messaging/outbound.ts (1)

382-384: LGTM!

docs/assets/pr/1123-unsupported-apps/README.md (1)

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

⚠️ Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.

Add alt text to the images.

markdownlint reports MD045 on both image rows. Add descriptive alt text, for example ![Bind app, Chinese, light theme](bind-zh-light.webp).

Source: Linters/SAST tools


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5751d545-94c1-4afe-9b0a-74f01b8b85a7
📥 Commits

Reviewing files that changed from the base of the PR and between 13ca500 and ba71901.

📒 Files selected for processing (15)
  • CHANGELOG.md
  • CHANGELOG.zh.md
  • docs/assets/pr/1123-unsupported-apps/README.md
  • docs/assets/pr/1123-unsupported-apps/bind-en-dark.webp
  • docs/assets/pr/1123-unsupported-apps/bind-en-light.webp
  • docs/assets/pr/1123-unsupported-apps/bind-zh-dark.webp
  • docs/assets/pr/1123-unsupported-apps/bind-zh-light.webp
  • packages/client/src/client/external-identity-list.tsx
  • packages/client/src/client/locale.ts
  • packages/client/test/external-identity-list.test.ts
  • packages/core/src/messaging/channel-media.ts
  • packages/core/src/messaging/dsh-im.ts
  • packages/core/src/messaging/outbound.ts
  • packages/core/src/messaging/provider.ts
  • packages/core/test/dsh-im-unsupported.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

@DoodleBears
DoodleBears merged commit 289489f into main Oct 7, 2026
2 checks passed
@DoodleBears
DoodleBears deleted the claude/1123-unsupported-apps branch October 28, 2026 04:24
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.

2 participants