Skip to content

fix(feishu): render markdown tables via Interactive Card schema 2.0 - #51245

Open
kevinwang2008 wants to merge 1 commit into
NousResearch:mainfrom
kevinwang2008:fix/feishu-table-card-v2
Open

fix(feishu): render markdown tables via Interactive Card schema 2.0#51245
kevinwang2008 wants to merge 1 commit into
NousResearch:mainfrom
kevinwang2008:fix/feishu-table-card-v2

Conversation

@kevinwang2008

Copy link
Copy Markdown

Fix Feishu markdown table rendering by upgrading to Interactive Card schema 2.0.

When a markdown table is detected, wrap content in Interactive Card (schema 2.0) instead of falling back to plain text. Feishu card 'markdown' elements natively support table rendering.

Feishu post-type 'md' elements do not render markdown tables. When
a markdown table is detected, wrap the content in an Interactive Card
using schema 2.0 format, whose 'markdown' elements natively support
table rendering.
@alt-glitch alt-glitch added type/feature New feature or request comp/gateway Gateway runner, session dispatch, delivery platform/feishu Feishu / Lark adapter P3 Low — cosmetic, nice to have duplicate This issue or pull request already exists labels Jun 23, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Duplicate of #12114 (canonical earliest-open Feishu markdown-table card-v2 PR). This is one of ~8+ open PRs implementing the same schema-2.0 interactive-card table rendering (see also #26429, #29630, #27046, #38453, #45907). Cluster tracked by consolidation issue #27469.

@teknium1

Copy link
Copy Markdown
Contributor

Thanks for targeting a real Feishu rendering gap: current main still routes detected GFM tables to raw text at plugins/platforms/feishu/adapter.py:4524-4534.

Problems

  • The PR edits gateway/platforms/feishu.py, but 5600105478ffde29d7566b45421b100eaa29c4ef moved the live adapter to plugins/platforms/feishu/adapter.py; GitHub reports this PR as conflicting.
  • The new interactive type would not use the existing invalid-payload fallback, which is restricted to post sends at plugins/platforms/feishu/adapter.py:1914-1936 and edits at :1963-1971.
  • The diff contains no tests, although both send() and edit_message() select their type through _build_outbound_payload (:1904, :1958).

Suggested changes

  • Port the implementation to plugins/platforms/feishu/adapter.py:4524 and add Interactive Card-to-text fallback coverage for send and edit.
  • Add focused payload-routing tests in tests/gateway/test_feishu.py.

This is an automated hermes-sweeper review.

@teknium1 teknium1 added sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/gateway Gateway runner, session dispatch, delivery duplicate This issue or pull request already exists P3 Low — cosmetic, nice to have platform/feishu Feishu / Lark adapter sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants