Commit Graph

13 Commits

Author SHA1 Message Date
Peter Lee
2d764dd8fe fix(feishu): preserve button command values in fallback text and add Feishu comment guidance with callback privacy (#94385)
* fix(interactive): preserve button command values in fallback text for degraded approval UX

* fix(interactive): keep callback values private in fallback text and narrow Feishu interactive detection

- P1: Skip rendering action.type === "callback" values in
  renderMessagePresentationFallbackText to avoid leaking opaque
  channel/plugin data into user-visible text. Command and legacy
  values are still rendered.
- P2: Replace hasMessagePresentationBlocks/hasInteractiveReplyBlocks
  with isMessagePresentationInteractiveBlock so Feishu comment
  guidance only appears when the presentation actually contains
  buttons or selects, not for text-only blocks.
- Update tests: callback button now shows label-only; all 137 tests pass.

* fix(interactive): only render typed command values in fallback text, keep legacy value private

* fix(feishu): gate document-comment command guidance on actual command action

* docs(message-presentation): document command/callback value fallback visibility

* fix(feishu): omit command guidance when URL overrides fallback command text

* docs: regenerate docs_map.md

* fix(interactive): exclude disabled buttons from fallback command rendering and guidance

* fix(interactive): extract hasRenderedCommandAction, exclude disabled buttons from command fallback

* fix(feishu): preserve command guidance marker through core presentation rendering

* fix(feishu): type-narrow channelData.feishu with isRecord before reading rendered-command marker

* fix(feishu): move hasRenderedCommandAction from public SDK into Feishu plugin as local helper

Keep the helper local to the only caller (Feishu outbound) instead of
adding a new public plugin SDK API contract. The shared fallback renderer
in renderMessagePresentationFallbackText already inlines the same
command-visibility logic; a local helper is sufficient for the Feishu
comment-thread guidance gate.

* refactor(feishu): tighten fallback command marker

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-02 12:42:31 -07:00
Peter Steinberger
d641126c1d feat(plugin-sdk): add typed presentation command actions (#88721)
* feat(plugin-sdk): add typed presentation command actions

* test: use shared env helper in telegram bot tests

* test: expect typed approval actions

* test: expect typed sdk approval actions
2026-05-31 18:48:45 +01:00
100menotu001
0212188cb6 fix(discord): preserve reusable presentation buttons
Preserve `reusable` for portable message presentation buttons and carry it through Discord component registration so repeatable callbacks stay available after a successful interaction.

Also keeps `reusable` through legacy presentation-to-interactive conversion and documents the user-visible change in the changelog.

Verification:
- `pnpm test src/interactive/payload.test.ts extensions/discord/src/shared-interactive.test.ts extensions/discord/src/components.test.ts -- --reporter=verbose`
- `git diff --check`
- `AUTOREVIEW_AUTO_TESTS=0 .agents/skills/autoreview/scripts/autoreview --mode local`
- PR CI at `52f25221b3e01f3255d8df37df73d0357ab7410b`: all completed checks green/skipped/neutral except pending CodeQL `Security High (mcp-process-tool-boundary)` at time auto-merge was armed.

Co-authored-by: OpenClaw Contributor <100menotu001@users.noreply.github.com>
2026-05-21 22:02:16 +01:00
Peter Steinberger
ee72ce8cf7 refactor: deprecate legacy interactive reply APIs 2026-05-17 14:18:23 +01:00
Peter Steinberger
ad861d4c9d feat: add presentation capability limits 2026-05-17 14:18:23 +01:00
Peter Steinberger
5f8e1dd399 feat(telegram): support web app presentation buttons
Refs #81356
Co-authored-by: Jamil Zakirov <jamil@zakirov.com>
2026-05-13 12:08:29 +01:00
Peter Steinberger
0071f67fe6 feat(plugin-sdk): share presentation control helpers 2026-05-09 10:11:56 +01:00
Vincent Koc
d43bf6de0a docs: batch sentence-case headings across high-Title-Case offenders
- pi.md: 9 H2 + 14 H3 (Package Dependencies, File Structure, Tool Pipeline, etc.)
- cli/hooks.md: 6 H2 (List All Hooks, Get Hook Information, etc.)
- plugins/message-presentation.md: 8 H2 (Producer Examples, Renderer Contract, etc.)
- plan/ui-channels.md: 7 H2 (Non Goals, Target Model, Refactor Steps, etc.)
- install/ansible.md: 6 H2 + 1 H3 (What You Get, Quick Start, etc.)

Mintlify anchor generation prefers sentence case for predictable URLs.
2026-04-26 23:52:28 -07:00
Vincent Koc
9153598e65 docs(plugins): split architecture by extracting internals (load pipeline, runtime hooks, HTTP routes, schemas) 2026-04-23 20:03:22 -07:00
Vincent Koc
c5c163d078 docs: standardize frontmatter field order (summary before title) 2026-04-23 13:18:17 -07:00
Vincent Koc
2777b089b5 docs: normalize frontmatter titles to sentence case 2026-04-23 13:15:17 -07:00
Vincent Koc
4a2cd533ac docs: remove duplicate H1 where frontmatter title already sets it 2026-04-23 13:11:14 -07:00
Peter Steinberger
674feda214 docs(plugins): document message presentation cards 2026-04-21 21:29:44 +01:00