feat: add plugin recommendation lists to market page#2001
Merged
Conversation
RockChinQ
added a commit
that referenced
this pull request
Feb 25, 2026
* fix a bag updata * Update page.tsx * Update page.tsx * Append text area to body for selection * Update page.tsx * Update mcp.py * fix(web): Handle null/undefined starCount and installCount (#1970) * Initial plan * fix(web): Handle null/undefined values for starCount and installCount Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * fix(web): Hide star count badge when API fails instead of showing '0' Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Add files via upload * Update README.md * Update README_EN.md * Update README_TW.md * Add Satori to communication tools list * Add Satori to supported platforms list * Add Satori to the supported LLMs list * Add Satori to the supported platforms list * Add Satori to supported platforms list * Add Satori to the supported platforms list * Add files via upload * Update README_TW.md * Add files via upload * Add files via upload * chore(deps): bump pillow from 12.1.0 to 12.1.1 (#1977) Bumps [pillow](https://github.com/python-pillow/Pillow) from 12.1.0 to 12.1.1. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) - [Commits](python-pillow/Pillow@12.1.0...12.1.1) --- updated-dependencies: - dependency-name: pillow dependency-version: 12.1.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump cryptography from 46.0.4 to 46.0.5 (#1978) Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.4 to 46.0.5. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](pyca/cryptography@46.0.4...46.0.5) --- updated-dependencies: - dependency-name: cryptography dependency-version: 46.0.5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump axios from 1.13.4 to 1.13.5 in /web (#1979) Bumps [axios](https://github.com/axios/axios) from 1.13.4 to 1.13.5. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](axios/axios@v1.13.4...v1.13.5) --- updated-dependencies: - dependency-name: axios dependency-version: 1.13.5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Revise bug report instructions for clarity Updated bug report template to request export files for external platforms. * Update bug-report_en.yml * Replace English README with Chinese version and update language links across all README files * Update README files across multiple languages to reflect new platform capabilities and improve clarity. Enhanced descriptions for AI bot development and deployment, and added links for further documentation. * Update src/langbot/pkg/platform/sources/satori.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/langbot/pkg/platform/sources/satori.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Add files via upload * Delete README_EN.md * Update README.md * Add Satori support to README_TW.md * Update README_VI.md * Add Satori support to the README_KO.md * Update README_RU.md * Update fmt.Println message from 'Hello' to 'Goodbye' * Update print statement from 'Hello' to 'Goodbye' * ruff * Add files via upload * Change type from int to integer in satori.yaml * fix: correct license declaration in OpenAPI spec from AGPL-3.0 to Apache-2.0 (#1988) * Initial plan * fix: update license from AGPL-3.0 to Apache-2.0 in service-api-openapi.json Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Update satori.py * Update satori.py * Update satori.py * feat: Implement extension and bot limitations across services and UI (#1991) - Added checks for maximum allowed extensions, bots, and pipelines in the backend services (PluginsRouterGroup, BotService, MCPService, PipelineService). - Updated system configuration to include limitation settings for max_bots, max_pipelines, and max_extensions. - Enhanced frontend components to handle limitations, providing user feedback when limits are reached. - Added internationalization support for limitation messages in English, Japanese, Simplified Chinese, and Traditional Chinese. * feat: Add unsaved changes tracking to PipelineFormComponent * chore: Update logo in README files to new resource location * chore: Standardize section headers in multiple language README files * chore: Bump version to 4.8.4 and update langbot-plugin dependency to 0.2.6 * feat: add plugin recommendation lists to market page (#2001) * fix: Add the file upload function and optimize the media message proc… (#2002) * fix: Add the file upload function and optimize the media message processing * fix: Optimize the message processing logic, improve the concatenation of text elements and the sending of media messages * fix: Simplify the file request construction and message processing logic to enhance code readability * fix(web): emit initial form values on mount to prevent saving empty config (#2004) DynamicFormComponent uses form.watch(callback) to notify parent of form values, but react-hook-form's watch callback only fires on subsequent changes, not on mount. This causes PluginForm's currentFormValues to remain as {} if the user saves without modifying any field, overwriting the existing plugin config with an empty object in the database. * feat(platform): add Forward message support for aiocqhttp adapter (#2003) * feat(platform): add Forward message support for aiocqhttp adapter - Add _send_forward_message method to send merged forward cards via OneBot API - Support NapCat's send_forward_msg API with fallback to send_group_forward_msg - Fix MessageChain deserialization for Forward messages in handler.py - Properly deserialize nested ForwardMessageNode.message_chain to preserve data This enables plugins to send QQ merged forward cards through the standard LangBot send_message API using the Forward message component. * style: fix ruff lint and format issues - Remove f-string prefix from log message without placeholders - Apply ruff format to aiocqhttp.py and handler.py * refactor: remove custom deserializer, rely on SDK for Forward deserialization - Remove _deserialize_message_chain from handler.py; use standard MessageChain.model_validate() (Forward handling fixed in SDK via langbot-app/langbot-plugin-sdk#38) - Fix group_id type: use int instead of str for OneBot compatibility - Add warning log when Forward message is used with non-group target * chore: bump langbot-plugin to 0.2.7 (Forward deserialization fix) --------- Co-authored-by: RockChinQ <rockchinq@gmail.com> * feat: message aggregator (#1985) * feat: aggregator * fix: resolve deadlock, mutation, and safety issues in message aggregator - Fix deadlock: don't await cancelled timer tasks inside the lock; _flush_buffer acquires the same lock, causing a deadlock cycle - Fix message_event mutation: keep original message_event unmodified to preserve message_id/metadata for reply/quote; only pass merged message_chain separately - Fix Plain positional arg: Plain('\n') → Plain(text='\n') - Fix float() ValueError: wrap delay cast in try/except - Add MAX_BUFFER_MESSAGES (10) cap to prevent unbounded buffer growth - Default enabled to false to avoid surprising latency on upgrade - Fix flush_all: cancel all timers under one lock acquisition, then flush outside the lock to avoid deadlock --------- Co-authored-by: RockChinQ <rockchinq@gmail.com> * feat: add session message monitoring tab to bot detail dialog Add a new "Sessions" tab in the bot detail dialog that displays sent & received messages grouped by sessions. Users can select any session to view its messages in a chat-bubble style layout. Backend changes: - Add sessionId filter to monitoring messages endpoint - Add role column to MonitoringMessage (user/assistant) - Record bot responses in monitoring via record_query_response() - Add DB migration (dbm019) for the new role column Frontend changes: - New BotSessionMonitor component with session list + message viewer - Add Sessions sidebar tab to BotDetailDialog - Add getBotSessions/getSessionMessages API methods to BackendClient - Add i18n translations (en-US, zh-Hans, zh-Hant, ja-JP) Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * refactor: remove outdated version comment from PipelineManager class * fix: bump required_database_version to 19 to trigger monitoring_messages.role migration * fix: prevent session message auto-scroll from pushing dialog content out of view Replace scrollIntoView (which scrolls all ancestor containers) with direct scrollTop manipulation on the ScrollArea viewport. This keeps the scroll contained within the messages panel only. * ui: redesign BotSessionMonitor with polished chat UI - Wider session list (w-72) with avatar circles and cleaner layout - Richer chat header with avatar, platform info, and active indicator - User messages now use blue-500 (solid) instead of blue-100 for clear visual distinction - Metadata (time, runner) shown on hover below bubbles, not inside - Proper empty state illustrations for both panels - Better spacing, rounded corners, and shadow treatment - Consistent dark mode styling * fix: infinite re-render loop in DynamicFormComponent The useEffect depended on onSubmit which was a new closure every parent render. Calling onSubmit inside the effect triggered parent state update → re-render → new onSubmit ref → effect re-runs → loop. Fix: use useRef to hold a stable reference to onSubmit, removing it from the useEffect dependency array. Also add DialogDescription to BotDetailDialog to suppress Radix aria-describedby warning. * fix: remove .html suffix from docs.langbot.app links (Mintlify migration) * style: fix prettier and ruff formatting --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Typer_Body <mcjiekejiemi@163.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Typer_Body <marcelacelani74@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Guanchao Wang <wangcham233@gmail.com> Co-authored-by: fdc310 <82008029+fdc310@users.noreply.github.com> Co-authored-by: Dongze Yang <50231148+ydzat@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Happy <yesreply@happy.engineering>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR adds a recommendation list section to the plugin marketplace page.
Features:
Changes:
RecommendationLists.tsxcomponent.PluginMarketComponent.tsxto fetch and render recommendation lists.CloudServiceClient.tsto includegetRecommendationListsAPI.Screenshots:
(Auto-generated UI preview if available)