Skip to content

feat(configure): add "About mureo" menu — version + installed extension packages (#229)#232

Merged
hyoshi merged 2 commits into
mainfrom
feat/configure-about-menu
Jun 12, 2026
Merged

feat(configure): add "About mureo" menu — version + installed extension packages (#229)#232
hyoshi merged 2 commits into
mainfrom
feat/configure-about-menu

Conversation

@hyoshi

@hyoshi hyoshi commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds an "About mureo" menu to the configure dashboard (#229): the mureo logo, the installed mureo version, and every installed extension package (bridges/agency) with its version — so operators and support can see the full stack at a glance.

Design

  • Server — new mureo/web/about.py: collect_about_info() resolves every distribution contributing to the entry-point groups mureo.providers, mureo.runtime_context_factory, mureo.web_extensions to {name, version} via stdlib importlib.metadata, deduplicated by distribution name and name-sorted, with mureo itself always seeded first (seed wins over entry-point duplicates). Per-group and per-entry-point fault isolation mirrors mureo/web/extensions.py — one broken plugin never breaks the endpoint. Python 3.10's EntryPoint.dist is None is handled via a packages_distributions() fallback; PackageNotFoundError (dev installs) falls back to "unknown".
  • EndpointGET /api/about in mureo/web/handlers.py, behind the same Host-header gate (DNS-rebinding defense) as every other GET JSON route. Response: {"mureo": {"name", "version"}, "packages": [{"name", "version"}, ...]}. No secrets, no file paths.
  • UI — new About tab in the dashboard nav (app.html), read-only section reusing the existing logo light/dark pair; renderAbout() in dashboard.js builds the table with textContent only (no innerHTML) and re-renders on locale change; 6 i18n keys × en/ja in i18n.json ("About mureo" / 「mureoについて」).

Because discovery is entry-point based, multi-account backends and future plugins appear automatically with no per-package wiring.

Test plan

  • tests/test_web_about.py — module tests with mocked metadata surfaces (mureo always present, dedup across groups, sorted order, seed-wins, fault isolation, dist-None and PackageNotFoundError fallbacks) + asset pins (HTML tab, JS fetch, i18n keys)
  • tests/test_web_handlers.py::TestServeAbout — documented JSON shape (mocked), unmocked smoke test tolerant of locally installed plugins, spoofed-Host 403
  • 210 tests pass across the web test files; ruff + black clean
  • CI green on the PR

Closes #229

@hyoshi
hyoshi merged commit f889f3d into main Jun 12, 2026
9 checks passed
@hyoshi
hyoshi deleted the feat/configure-about-menu branch June 12, 2026 22:42
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.

configure: add an "About mureo" menu — logo, mureo version, and installed extension packages (bridges/agency) with versions

1 participant