django-agent-studio 0.3.2__py3-none-any.whl → 0.3.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -976,17 +976,22 @@
976
976
  max-height: none !important;
977
977
  border-radius: 0;
978
978
  box-shadow: none;
979
+ display: flex;
980
+ flex-direction: column;
981
+ overflow: hidden;
979
982
  }
980
983
 
981
984
  /* Embedded widget header can have rounded corners if desired */
982
985
  .cw-widget-embedded .cw-header {
983
986
  border-radius: 0;
987
+ flex-shrink: 0;
984
988
  }
985
989
 
986
- /* Ensure messages area fills available space */
990
+ /* Ensure messages area fills available space and scrolls */
987
991
  .cw-widget-embedded .cw-messages {
988
992
  flex: 1;
989
993
  min-height: 0;
994
+ overflow-y: auto;
990
995
  }
991
996
 
992
997
  /* ============================================================================
@@ -100,6 +100,14 @@
100
100
  height: 100% !important;
101
101
  max-height: none !important;
102
102
  border-radius: 0.5rem !important;
103
+ display: flex !important;
104
+ flex-direction: column !important;
105
+ overflow: hidden !important;
106
+ }
107
+ .embedded-chat .cw-messages {
108
+ flex: 1 !important;
109
+ min-height: 0 !important;
110
+ overflow-y: auto !important;
103
111
  }
104
112
  </style>
105
113
 
@@ -119,6 +127,10 @@
119
127
  <div class="flex items-center space-x-4">
120
128
  {% if request.user.is_authenticated %}
121
129
  <span class="text-sm text-gray-600">{{ request.user.email|default:request.user }}</span>
130
+ <form method="post" action="{% url 'agent_studio:logout' %}" class="inline">
131
+ {% csrf_token %}
132
+ <button type="submit" class="text-sm text-gray-500 hover:text-gray-700">Logout</button>
133
+ </form>
122
134
  {% endif %}
123
135
  </div>
124
136
  </header>
@@ -19,7 +19,7 @@
19
19
  display: flex;
20
20
  justify-content: center;
21
21
  }
22
-
22
+
23
23
  #fullscreen-chat-container .cw-container {
24
24
  position: relative !important;
25
25
  width: 100% !important;
@@ -28,11 +28,11 @@
28
28
  border-radius: 0 !important;
29
29
  box-shadow: 0 0 20px rgba(0,0,0,0.1) !important;
30
30
  }
31
-
31
+
32
32
  #fullscreen-chat-container .cw-toggle-btn {
33
33
  display: none !important;
34
34
  }
35
-
35
+
36
36
  #fullscreen-chat-container .cw-widget {
37
37
  position: relative !important;
38
38
  width: 100% !important;
@@ -40,6 +40,14 @@
40
40
  max-height: none !important;
41
41
  border-radius: 0 !important;
42
42
  display: flex !important;
43
+ flex-direction: column !important;
44
+ overflow: hidden !important;
45
+ }
46
+
47
+ #fullscreen-chat-container .cw-messages {
48
+ flex: 1 !important;
49
+ min-height: 0 !important;
50
+ overflow-y: auto !important;
43
51
  }
44
52
  </style>
45
53
  {% endblock %}
@@ -77,7 +85,7 @@
77
85
  </div>
78
86
 
79
87
  <!-- Full Screen Chat -->
80
- <div class="flex-1 relative bg-gray-100 flex justify-center">
88
+ <div class="flex-1 min-h-0 relative bg-gray-100 flex justify-center">
81
89
  <div id="fullscreen-chat-container" class="relative w-full max-w-[800px] h-full"></div>
82
90
  </div>
83
91
  </div>
@@ -27,11 +27,11 @@
27
27
  border-radius: 0 !important;
28
28
  box-shadow: none !important;
29
29
  }
30
-
30
+
31
31
  #fullscreen-chat-container .cw-toggle-btn {
32
32
  display: none !important;
33
33
  }
34
-
34
+
35
35
  #fullscreen-chat-container .cw-widget {
36
36
  position: absolute !important;
37
37
  top: 0;
@@ -43,6 +43,14 @@
43
43
  max-height: none !important;
44
44
  border-radius: 0 !important;
45
45
  display: flex !important;
46
+ flex-direction: column !important;
47
+ overflow: hidden !important;
48
+ }
49
+
50
+ #fullscreen-chat-container .cw-messages {
51
+ flex: 1 !important;
52
+ min-height: 0 !important;
53
+ overflow-y: auto !important;
46
54
  }
47
55
  </style>
48
56
  {% endblock %}
@@ -76,7 +84,7 @@
76
84
  </div>
77
85
 
78
86
  <!-- Full Screen Chat -->
79
- <div class="flex-1 relative bg-gray-100">
87
+ <div class="flex-1 min-h-0 relative bg-gray-100">
80
88
  <div id="fullscreen-chat-container" class="absolute inset-0"></div>
81
89
  </div>
82
90
  </div>
@@ -12,6 +12,7 @@ app_name = "agent_studio"
12
12
  urlpatterns = [
13
13
  # Main studio interface
14
14
  path("", views.StudioHomeView.as_view(), name="home"),
15
+ path("logout/", views.LogoutView.as_view(), name="logout"),
15
16
 
16
17
  # Systems (multi-agent systems)
17
18
  path("systems/", views.SystemListView.as_view(), name="system_list"),
@@ -2,7 +2,10 @@
2
2
  Views for django_agent_studio.
3
3
  """
4
4
 
5
+ from django.contrib.auth import logout
5
6
  from django.db.models import Q
7
+ from django.shortcuts import redirect
8
+ from django.views import View
6
9
  from django.views.generic import TemplateView, ListView
7
10
  from django.contrib.auth.mixins import LoginRequiredMixin
8
11
 
@@ -452,3 +455,11 @@ class SystemCollaboratorsView(LoginRequiredMixin, SystemAccessMixin, TemplateVie
452
455
 
453
456
  return context
454
457
 
458
+
459
+ class LogoutView(View):
460
+ """Simple logout view that works with any auth backend."""
461
+
462
+ def post(self, request):
463
+ logout(request)
464
+ return redirect('/')
465
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-agent-studio
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Visual agent builder and management studio for Django - build custom GPTs with a two-pane interface
5
5
  Author: Chris Barry
6
6
  License: Business Source License 1.1
@@ -126,6 +126,7 @@ A visual agent builder and management interface for Django applications. Create,
126
126
 
127
127
  | Version | Date | Changes |
128
128
  |---------|------|---------|
129
+ | **0.3.3** | 2026-01-30 | **Logout & Scroll Fixes** - Added logout button to header, fixed embedded chat widget scrolling with proper flex layout |
129
130
  | **0.3.2** | 2026-01-30 | **Multi-User Access Control** - Collaborator management UI, user search autocomplete, supports both email and username-based User models, system creation from homepage, permission inheritance display |
130
131
  | **0.3.1** | 2026-01-30 | **Bug Fixes** - Fixed duplicate message emit in dynamic agents, fixed escapejs encoding in templates, added 800px max-width constraint to system test view |
131
132
  | **0.3.0** | 2026-01-29 | **System Listing & Navigation** - Browse and test multi-agent systems from homepage, fixed URL routing for My Systems/My Agents links, system creation now supports optional entry agent |
@@ -1,7 +1,7 @@
1
1
  django_agent_studio/__init__.py,sha256=E2vGoil7ZmwTebaB5ap9Lt0ptAzqYB5xJpyi4bFbqL8,378
2
2
  django_agent_studio/apps.py,sha256=L89QWn4XOvPBs2z6qHAhaE4uZQpasJntYD75aSd2p_k,607
3
- django_agent_studio/urls.py,sha256=xlL1ZkVxbLXnorAgvL3onUpCtGmzsxp5aQputRzTui8,1269
4
- django_agent_studio/views.py,sha256=IXYSWu-nDunVTQtWiq0fO89UsZQ9--25LtvLDye1wNg,15565
3
+ django_agent_studio/urls.py,sha256=qoqmIaYx2qB4Ail9AhOzH3XKrMK9T8wxk8Kms2sHbkk,1333
4
+ django_agent_studio/views.py,sha256=iAO_0oY3vlJdjaVACVXJN2Z784-Tc82PILXQqA2vHDk,15844
5
5
  django_agent_studio/agents/__init__.py,sha256=VYL_ato0DtggIo4BGRkyiz9cm1ARPXhhTQFzoG__NVM,800
6
6
  django_agent_studio/agents/builder.py,sha256=dRPQk5-AhUsTBOFxv8H4Uk2X2PfK631jjVJZ1w13GtM,146777
7
7
  django_agent_studio/agents/dynamic.py,sha256=b2bwvwF9DOjEds4c0748mjKzCWbymcSlR4B9nP9Bk4Q,25367
@@ -19,22 +19,22 @@ django_agent_studio/models/permissions.py,sha256=NepltvQzeehv5EwcOTqULj8n3N5XGVT
19
19
  django_agent_studio/services/__init__.py,sha256=06cc1eLnAbROTKFxBgvkeCpsYV5cQsyJVGXaE_rcp3M,244
20
20
  django_agent_studio/services/permissions.py,sha256=-cwe0YZCFBFYh_ScXKncsPwEkCfEyIrtOzp8Wt9GSco,7785
21
21
  django_agent_studio/static/agent-frontend/chat-widget-markdown.js,sha256=_TQCux4HPRynCiLKydITO-docIRoi454jLpX0fegAFM,3722
22
- django_agent_studio/static/agent-frontend/chat-widget.css,sha256=raGonlpfKT0lao-hDviZimmMXjHJwtrIz1Ud-9uDIEY,38268
22
+ django_agent_studio/static/agent-frontend/chat-widget.css,sha256=qz495hBIVvDj-TtDRAhejfs6LkCQR9mKp8niYDPr2nw,38381
23
23
  django_agent_studio/static/agent-frontend/chat-widget.js,sha256=Yla8YlsmMtdXZRjN45Fup-4-NTCoM3NgR3yPsA5_Ot4,60548
24
24
  django_agent_studio/static/django_agent_studio/js/builder.js,sha256=eEUw2z-pNdoU3xv3NhLQ-uDZV7tsf8Bawseg7B7dpCo,413948
25
25
  django_agent_studio/static/django_agent_studio/js/builder.js.map,sha256=sVkeGyZsBWEr4MKhqAfd3B4JL5n7D6eKc_4ZYUsbKO8,1633363
26
26
  django_agent_studio/static/django_agent_studio/js/style.css,sha256=rigQJy_oHIhgb1_7DwAQ_8G002gQnT0AXUtwxImWj1o,1626515
27
27
  django_agent_studio/templates/django_agent_studio/agent_list.html,sha256=pIW6cRQ-i_hKWB_qDUuSBbzZw2qL_qJumhrW8C4Rs14,4931
28
- django_agent_studio/templates/django_agent_studio/base.html,sha256=wSgwaqK1DAIIyYeZWsVvPlpAZyZHBEx3_NGtdRo0J3A,6019
28
+ django_agent_studio/templates/django_agent_studio/base.html,sha256=whRDhBrk-uRkHSdbRNFpp6GBEnV-_lEDFHtaGLqJ3kA,6566
29
29
  django_agent_studio/templates/django_agent_studio/builder.html,sha256=yPzb0Pdp0d7Sp7gVkJd7OouDq-toKCA8i7OJLU9x6Z8,1542
30
30
  django_agent_studio/templates/django_agent_studio/collaborators.html,sha256=qPV0YG8V8eFCdK3e--kgxh3iT4jPHAXCxkSzOBkx7bg,19482
31
31
  django_agent_studio/templates/django_agent_studio/home.html,sha256=ebA-U1HseIzY5pPeXKluzI8vsKOh1owkKZxhys27Yns,6914
32
32
  django_agent_studio/templates/django_agent_studio/system_create.html,sha256=MOhKMuiR2Iley0J7gvFk9yxLT51BqPrOhk0PbJ-QXjo,6392
33
33
  django_agent_studio/templates/django_agent_studio/system_list.html,sha256=CN2o3nFpsZHwv6Wva1DkzYaAZnK204Q6FAqVH08L6_0,4666
34
- django_agent_studio/templates/django_agent_studio/system_test.html,sha256=CANXocxO1dG2JZSSHrEIYWQovapBA2GVQ9U8MIBzRg4,4238
35
- django_agent_studio/templates/django_agent_studio/test.html,sha256=y2BjAwq0zxjdoMEM8K_rH0zCjcj1DL-Jj2BIQTJorxA,4088
36
- django_agent_studio-0.3.2.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
37
- django_agent_studio-0.3.2.dist-info/METADATA,sha256=NLLNO4VvoR9E0xXQdnEX5m_ffQac5pKQdvbSE4HGmjM,16899
38
- django_agent_studio-0.3.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
39
- django_agent_studio-0.3.2.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
40
- django_agent_studio-0.3.2.dist-info/RECORD,,
34
+ django_agent_studio/templates/django_agent_studio/system_test.html,sha256=Jo_pbIneXkTuT10lULuWa3i2BhJZv2uE4AClroaSNoE,4466
35
+ django_agent_studio/templates/django_agent_studio/test.html,sha256=pACtNyD64KJhPnkpEnixLjdxkbeHbNCBBE1NEruKZ-Q,4320
36
+ django_agent_studio-0.3.3.dist-info/licenses/LICENSE,sha256=WIh21lpD7d7xCUtLysKK-kbfW4SG7GNPf_k7_Xm_sZg,3851
37
+ django_agent_studio-0.3.3.dist-info/METADATA,sha256=Z7h7mKgUj3VCgjsbwWmgQGH4kjXTR7IFtyEWYHBJiBY,17048
38
+ django_agent_studio-0.3.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
39
+ django_agent_studio-0.3.3.dist-info/top_level.txt,sha256=O1kqZzXPOsJlqnPSAcB2fH5WpJNY8ZNfHEJzX9_SZ0A,20
40
+ django_agent_studio-0.3.3.dist-info/RECORD,,