Repository navigation
Closed
Labels
agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDsOne or more coding-agent tasks currently claim this issue; see claim comments for task IDsarea:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Description
Parent: #1107 · ADR-0142 · after slice 2
What to build
- Schema: drop the unique index
messaging_binding_bot_platform. Keepmessaging_binding_accountandmessaging_binding_principal, so one app still belongs to one Bot. - Host:
- Remove the
bot_slug = ? AND platform = ?conflict from the identity bind and authorize commands inoutbound.ts. - Check every per-platform lookup that assumed one Binding per platform: snapshot, pairing receivers, approvals destinations, defaults inheritance.
- Shared-source replies (ADR-0122) accept the responder's explicit or implicit entry and refuse
reply-target-ambiguouswhen the responder has two apps in that conversation. - Expose an app-usage projection that lists each Provider account with its bound Bot, if any.
- Remove the
- Client:
- The Bind app dialog lists only apps no Bot uses (hidden, not merely disabled) and allows a second app of the same platform.
- The External identities entry lists every app, grouped by platform.
- New IM apps (IM 应用) list in Bot settings: app, platform, connection state, used by Bot (links to that Bot's DM), unbound apps, and a link to the Provider settings for credentials.
Acceptance criteria
- One Bot binds two Lark apps. Each receives its own DMs and mentions into the same Inbox with distinct source attribution, and replies go out through the receiving app.
- An app bound to Bot A is not offered in Bot B's dialog. A direct command still refuses with
binding-conflict. - The IM apps list shows the correct Bot for every app and updates live after bind and unbind.
- A shared reply by a Bot with two apps in the same group refuses with a clear message. With one app, it works.
- Migration test covers dropping the index on a database with existing bindings.
- Screenshots zh/en, light/dark.
Blocked by
Slice 2.
Metadata
Metadata
Assignees
Labels
agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDsOne or more coding-agent tasks currently claim this issue; see claim comments for task IDsarea:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Type
Projects
- StatusShow more project fieldsDone
- StatusShow more project fieldsDone
Activity
DoodleBears commentedon Oct 7, 2026
Agent work trace: Claude Code (cloud, for Vain) opened #1121 from branch
claude/1110-several-apps. It is stacked on #1120 (#1109) and retargets tomainafter that merges. Covers the gen-63 index drop, the bind/authorize conflict change, themessagingAppsprojection, Bind app filtering, platform-sorted identities, the IM apps list in Bot settings, docs and zh/en light/dark screenshots, verified on a real Host with the real model.Generated by Claude Code
Show every app in Bind app instead of an IM apps settings list
Merge the Bind app overview and align conversation cards
feat(messaging): several apps per platform, Bind app shows every app'…
feat(messaging): compact conversation rows and relabel External conne…
fix(messaging): show apps the IM plugin can't serve as greyed out in …
fix(messaging): leave this Bot's own apps out of Bind app (#1127) (#1130