{% extends 'admin/base.html' %} {% load static %} {% load unfold %} {% load django_cfg %} {% block extrahead %} {{ block.super }} {# JWT Token Injection for localStorage #} {% if user.is_authenticated %} {% endif %} {% endblock %} {% block breadcrumbs %}{% endblock %} {% block coltype %}{% endblock %} {% block title %} {% if subtitle %}{{ subtitle }} | {% endif %} {{ title }} | {{ site_title|default:'Django site admin' }} {% endblock %} {% block branding %} {% include "unfold/helpers/site_branding.html" %} {% endblock %} {% block content %} {% component "unfold/components/container.html" %} {# Version update banner #} {% version_update_info as version %} {% if version.update_available %}
system_update
New django-cfg version available
{{ version.current_version }} → {{ version.latest_version }} poetry add django-cfg@latest
open_in_new
{% endif %} {# Two-column grid: tabs left, chat right #} {% get_dashboard_config as dashboard %} {% has_mcp_chat as show_chat %}
{# LEFT — dashboard tabs with iframe #}
{% if dashboard %} {# Alpine component: tracks active tab slug + iframe src #}
{ this.src = url + '?iframe=1'; }); } }"> {# Tab bar #}
open_in_new
{# Loading overlay #}
{# iframe #}
{% else %}
dashboard

No dashboard tabs configured.

Add dashboard=DashboardConfig(...) to your config.

{% endif %}
{# RIGHT — MCP chat (only when MCP is configured and user can access it) #} {% if show_chat %}
smart_toy MCP Agent
{% lib_name %}
{% include "django_mcp/admin_chat.html" %}
{% endif %}
{% endcomponent %} {% endblock %} {% block footer %} {{ block.super }} {% endblock %}