Skip to content

fix(dashboard): clarify log plugin filter scope - #10691

Merged
Soulter merged 1 commit into
AstrBotDevs:masterfrom
mantoujun12:fix/console-plugin-filter-label
Oct 24, 2026
Merged

Soulter merged 1 commit into
AstrBotDevs:masterfrom
mantoujun12:fix/console-plugin-filter-label

Conversation

@mantoujun12

@mantoujun12 mantoujun12 commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #10667

The plugin dropdown in the Logs page filters only lists plugins that appear in the retained in-memory log cache. The cache is capped (1000 entries in the frontend, roughly 500 events from the server history), so installed plugins that have never emitted a log, plugins whose logs have been evicted, and plugins whose log records are not tagged with a plugin name never appear in the list. Because the placeholder said "All plugins", users interpreted this as an incomplete or failed plugin installation (issue #10667).

This change keeps the existing filter behavior and fixes the misleading wording: the dropdown now states that it lists plugins in the current logs, and a hint clarifies that the list is not the installed-plugin list.

Modifications / 改动点

  • dashboard/src/components/shared/ConsoleDisplayer.vue: change the plugin filter placeholder from "All plugins" to "Plugins in current logs" and add a persistent hint explaining that the options come from the current logs, not the installed plugin list.

  • dashboard/src/i18n/locales/{zh-CN,en-US,ja-JP,ru-RU}/features/console.json: replace filters.allPlugins with filters.pluginsInLogs and add filters.pluginsInLogsHint.

  • dashboard/tests/consoleFilters.test.mjs: add a regression test asserting that plugin options are derived only from the retained log cache, so installed plugins known by display name alone do not create options while log-only plugins remain selectable.

  • docs/zh/use/webui.md and docs/en/use/webui.md: document that the dropdown lists plugins appearing in the current logs rather than all installed plugins.

  • This is NOT a breaking change. / 这不是一个破坏性变更。

Screenshots or Test Results / 运行截图或测试结果

Verification steps:

  1. Open the Logs page in the dashboard and open the Filters sidebar.
  2. Confirm the plugin dropdown placeholder reads "Plugins in current logs" and the hint below it states that the list comes from the current logs, not the installed plugin list.
  3. Select a plugin that appears in the current logs and confirm the console filters to that plugin's logs.
  4. Confirm an installed plugin that has never emitted logs is absent, while a plugin that only exists in historical logs remains selectable.

Test results:

$ cd dashboard && node --test tests/*.test.mjs
# tests 79
# pass 79
# fail 0

$ cd dashboard && node scripts/check-i18n-keys.mjs
PASS

$ cd dashboard && npx vue-tsc --noEmit
(no output; passed)

$ uv run ruff format --check .
520 files already formatted

$ uv run ruff check .
All checks passed!

$ cd docs && pnpm run docs:build
build complete in 11.47s.

Checklist / 检查清单

  • 😊 If there are new features added in the PR, I have discussed it with the authors through issues/emails, etc.
    / 如果 PR 中有新加入的功能,已经通过 Issue / 邮件等方式和作者讨论过。

  • 👀 My changes have been well-tested, and "Verification Steps" and "Screenshots" have been provided above.
    / 我的更改经过了良好的测试,并已在上方提供了“验证步骤”和“运行截图”。

  • 📚 I checked the affected WebUI instructions and screenshots in docs/zh and docs/en against the changed navigation, page structure, and labels, and updated them in this PR (or explained why no documentation update is needed). For renamed, moved, or merged entry points, I included an old entry → new entry mapping in the documentation and changelog.
    / 我已对照变化后的 WebUI 入口、页面结构和术语,核对并在本 PR 中更新 docs/zh 和 docs/en 的相关操作说明与截图(或说明无需更新文档的原因)。入口改名、移动或合并时,已在文档和 changelog 中补充 旧入口 → 新入口 对照。

  • 🤓 I have ensured that no new dependencies are introduced, OR if new dependencies are introduced, they have been added to the appropriate locations in requirements.txt and pyproject.toml.
    / 我确保没有引入新依赖库,或者引入了新依赖库的同时将其添加到 requirements.txt 和 pyproject.toml 文件相应位置。

  • 😮 My changes do not introduce malicious code.
    / 我的更改没有引入恶意代码。

Summary by Sourcery

Clarify the Logs plugin filter scope to prevent users from mistaking the retained log-based list for the installed-plugin list.

Bug Fixes:

  • Clarify that the Logs plugin filter lists plugins present in the retained current logs rather than all installed plugins.

Enhancements:

  • Add a persistent hint in the Logs filter UI explaining the plugin option scope.
  • Update English and Chinese WebUI documentation to describe the plugin filter scope.

Documentation:

  • Document that the Logs plugin dropdown excludes installed plugins with no entries in the current logs.

Tests:

  • Add regression coverage ensuring plugin options are derived from retained logs, including plugins no longer installed but still cached.

The plugin filter on the Logs page only lists plugins found in the retained log cache, but its placeholder said "All plugins", which made users think installed plugins were missing.

Rename the placeholder to "Plugins in current logs", add a hint that the list is not the installed-plugin list, update all locale bundles and the WebUI docs, and add a test documenting the option source.

Fixes AstrBotDevs#10667

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

@Soulter
Soulter merged commit 2883688 into AstrBotDevs:master Oct 24, 2026
23 checks passed
@mantoujun12
mantoujun12 deleted the fix/console-plugin-filter-label branch October 24, 2026 04:47
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