Skip to content

feat(about): list the open source libraries the instance is built on - #177

Merged
frousselet merged 1 commit into
mainfrom
feat/about-dialog-libraries
Aug 28, 2026
Merged

feat(about): list the open source libraries the instance is built on#177
frousselet merged 1 commit into
mainfrom
feat/about-dialog-libraries

Conversation

@frousselet

Copy link
Copy Markdown
Owner

Summary

The About dialog stated the version and the licence but said nothing about what the instance is built on. It now lists every third-party component, each linking to its official repository, and the same inventory is available over the REST API and MCP.

Related issue

None.

Type of change

  • Bug fix
  • New feature
  • Refactor / tech debt
  • Documentation
  • Build / CI / tooling

Changes

  • core/dependencies.py : one registry for both halves of the stack (41 components, grouped backend / frontend / development), each with its official repository URL and what it is used for. Python versions are resolved from the installed metadata, so a deployed instance reports what it actually runs; front-end versions are the ones pinned in the templates.
  • About dialog : a collapsed "Open source libraries" section (the dialog stays an identity card until expanded), two columns on desktop, one on phones. The dialog is now modal-dialog-scrollable with the Close button in a fixed footer.
  • GET /api/v1/dependencies : read-only, any authenticated user, same registry.
  • list_dependencies MCP tool, optionally filtered by group.
  • core/tests/test_dependencies.py : the registry must match requirements.txt exactly (both directions) and the front-end pins must be the versions actually loaded, so a library added without a registry entry fails the suite.
  • Documentation : spec sections 6.7 and 7.8 in docs/specs/m0-accounts/README.md, the stack section of docs/technical/architecture.md, a new "About this instance" section in the user guide, README, CHANGELOG, and the regenerated reference.

Screenshots

Captured against a throwaway seeded database at 1440x900 (desktop) and 390x844 (mobile), with the section expanded :

  • Light : the list reads as two calm columns, muted versions next to each name, uppercase group eyebrows with positive tracking.
  • Dark : identical structure, all text on the dark canvas verified legible (links --text-secondary, versions --text-muted).
  • Mobile : below 576 px the grid collapses to a single column, because two truncated the longer package names (djangorestframework-simplejwt).

Checklist

  • Tests added or updated, and pytest passes (3124 passed)
  • ruff check passes
  • New feature exposed as MCP tools in mcp/tools.py (accurate docstrings and parameter descriptions)
  • New feature has REST API endpoints under the app's api/ (serializers, viewsets, routes under /api/v1/)
  • UI renders correctly in light and dark mode
  • UI renders correctly on mobile (multi-selects, sticky bars, form layouts)
  • User-facing strings use _() / {% trans %} with French translations in locale/fr/LC_MESSAGES/django.po (no duplicate msgid; compilemessages passes)
  • Lifecycle / workflow respected (state metadata and generic stepper UI; no hardcoded status values) - not applicable, no domain entity involved
  • README.md updated (features, MCP tools, tech stack, install) when behaviour changed
  • CHANGELOG.md updated under ## [Unreleased]
  • Brand guidelines respected (docs/brand/brand-guidelines.md); no em dash characters
  • Relevant spec under docs/specs/ updated in the same PR
  • Project / documentation screenshots captured at 2560x1440 (16:9, 1440p) - not applicable, the documentation screenshot set is unchanged
  • Audit-grade rigor preserved (approval workflows, versioning, history, permission checks not bypassed)

The About dialog stated the version and the licence but said nothing about the
components underneath, and neither did any API : answering "what is this
instance made of" meant reading requirements.txt and grepping the templates for
CDN pins.

core/dependencies.py is now the single registry for both halves of the stack.
Python versions are resolved from the installed metadata, so a deployed instance
reports what it actually runs rather than what was declared; front-end versions
are the ones pinned in the templates, and the test suite fails if either drifts.

The dialog gains a collapsed "Open source libraries" section grouping the
components into backend, frontend and development, each linking to its official
repository. The same registry answers at GET /api/v1/dependencies and through
the list_dependencies MCP tool.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@frousselet
frousselet merged commit 275676e into main Aug 28, 2026
7 checks passed
@frousselet
frousselet deleted the feat/about-dialog-libraries branch August 28, 2026 09:33
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