django-lucy-assist 1.2.2__py3-none-any.whl → 1.2.4__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.
@@ -113,9 +113,17 @@
113
113
  transform: translateX(100%);
114
114
  }
115
115
 
116
+ /* Sidebar expanded (80% width) */
117
+ .lucy-sidebar.expanded {
118
+ width: 90vw;
119
+ max-width: 90vw;
120
+ }
121
+
116
122
  @media (max-width: 640px) {
117
- .lucy-sidebar {
123
+ .lucy-sidebar,
124
+ .lucy-sidebar.expanded {
118
125
  width: 100%;
126
+ max-width: 100vw;
119
127
  }
120
128
  }
121
129
 
@@ -304,6 +312,7 @@
304
312
  .lucy-messages {
305
313
  flex: 1;
306
314
  overflow-y: auto;
315
+ overflow-x: hidden;
307
316
  padding: 1rem;
308
317
  display: flex;
309
318
  flex-direction: column;
@@ -389,6 +398,7 @@
389
398
  display: flex;
390
399
  gap: 0.5rem;
391
400
  max-width: 85%;
401
+ min-width: 0;
392
402
  }
393
403
 
394
404
  .lucy-message.user {
@@ -422,6 +432,9 @@
422
432
  .lucy-message-content {
423
433
  display: flex;
424
434
  flex-direction: column;
435
+ min-width: 0;
436
+ max-width: 100%;
437
+ overflow: hidden;
425
438
  }
426
439
 
427
440
  .lucy-message-bubble {
@@ -430,6 +443,9 @@
430
443
  font-size: 0.875rem;
431
444
  line-height: 1.5;
432
445
  word-wrap: break-word;
446
+ overflow-wrap: break-word;
447
+ max-width: 100%;
448
+ overflow-x: auto;
433
449
  }
434
450
 
435
451
  .lucy-message.bot .lucy-message-bubble {
@@ -897,6 +913,9 @@
897
913
  border-radius: 0.375rem;
898
914
  overflow-x: auto;
899
915
  margin: 0.5rem 0;
916
+ max-width: 100%;
917
+ white-space: pre-wrap;
918
+ word-break: break-word;
900
919
  }
901
920
 
902
921
  .lucy-message-bubble code {
@@ -909,6 +928,34 @@
909
928
  text-decoration: underline;
910
929
  }
911
930
 
931
+ /* Tables in messages */
932
+ .lucy-message-bubble table {
933
+ border-collapse: collapse;
934
+ font-size: 0.75rem;
935
+ margin: 0.5rem 0;
936
+ width: max-content;
937
+ max-width: 100%;
938
+ }
939
+
940
+ .lucy-message-bubble th,
941
+ .lucy-message-bubble td {
942
+ border: 1px solid var(--lucy-border);
943
+ padding: 0.25rem 0.5rem;
944
+ text-align: left;
945
+ white-space: nowrap;
946
+ }
947
+
948
+ .lucy-message-bubble th {
949
+ background: var(--lucy-bg-darker);
950
+ font-weight: 600;
951
+ }
952
+
953
+ /* Markdown content wrapper for overflow */
954
+ .lucy-message-bubble .markdown-content {
955
+ overflow-x: auto;
956
+ max-width: 100%;
957
+ }
958
+
912
959
  /* ========================================
913
960
  DOCUMENTATION - COLLAPSE/ACCORDION
914
961
  ======================================== */
@@ -9,6 +9,7 @@ function lucyAssist() {
9
9
  return {
10
10
  // État de l'interface
11
11
  isOpen: false,
12
+ isExpanded: false,
12
13
  isLoading: false,
13
14
  showHistory: false,
14
15
  showDoc: false,
@@ -86,6 +87,7 @@ function lucyAssist() {
86
87
  saveState() {
87
88
  const state = {
88
89
  isOpen: this.isOpen,
90
+ isExpanded: this.isExpanded,
89
91
  currentConversationId: this.currentConversationId,
90
92
  showHistory: this.showHistory,
91
93
  showDoc: this.showDoc
@@ -102,6 +104,7 @@ function lucyAssist() {
102
104
  if (savedState) {
103
105
  const state = JSON.parse(savedState);
104
106
  this.isOpen = state.isOpen || false;
107
+ this.isExpanded = state.isExpanded || false;
105
108
  this.currentConversationId = state.currentConversationId || null;
106
109
  this.showHistory = state.showHistory || false;
107
110
  this.showDoc = state.showDoc || false;
@@ -148,6 +151,14 @@ function lucyAssist() {
148
151
  this.showDoc = false;
149
152
  },
150
153
 
154
+ /**
155
+ * Toggle du mode agrandi (80% de la fenetre)
156
+ */
157
+ toggleExpanded() {
158
+ this.isExpanded = !this.isExpanded;
159
+ this.saveState();
160
+ },
161
+
151
162
  /**
152
163
  * Vérifie si c'est le premier lancement
153
164
  */
@@ -34,7 +34,7 @@
34
34
  x-transition:leave-start="transform translate-x-0"
35
35
  x-transition:leave-end="transform translate-x-full"
36
36
  class="lucy-sidebar"
37
- :class="{ 'hidden': !isOpen }"
37
+ :class="{ 'hidden': !isOpen, 'expanded': isExpanded }"
38
38
  style="display: none;"
39
39
  x-cloak
40
40
  >
@@ -42,6 +42,16 @@
42
42
  <div class="lucy-header">
43
43
  <span class="lucy-header-title">Lucy Assist</span>
44
44
  <div class="lucy-header-actions">
45
+ {# Bouton Agrandir/Reduire #}
46
+ <button
47
+ @click="toggleExpanded()"
48
+ class="lucy-header-btn"
49
+ :class="{ 'active': isExpanded }"
50
+ :title="isExpanded ? 'Reduire la fenetre' : 'Agrandir la fenetre'"
51
+ >
52
+ <i class="fa-solid" :class="isExpanded ? 'fa-compress' : 'fa-expand'"></i>
53
+ </button>
54
+
45
55
  {# Bouton Historique #}
46
56
  <button
47
57
  @click="showHistory = !showHistory; showDoc = false"
@@ -1,18 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-01-27 09:51
2
-
3
- from django.db import migrations, models
4
-
5
-
6
- class Migration(migrations.Migration):
7
-
8
- dependencies = [
9
- ('lucy_assist', '0001_initial'),
10
- ]
11
-
12
- operations = [
13
- migrations.AddField(
14
- model_name='configurationlucyassist',
15
- name='prompt_complementaire',
16
- field=models.TextField(blank=True, default=''),
17
- ),
18
- ]
@@ -1,18 +0,0 @@
1
- # Generated by Django
2
-
3
- from django.db import migrations, models
4
-
5
-
6
- class Migration(migrations.Migration):
7
-
8
- dependencies = [
9
- ('lucy_assist', '0002_configurationlucyassist_prompt_complementaire'),
10
- ]
11
-
12
- operations = [
13
- migrations.AddField(
14
- model_name='configurationlucyassist',
15
- name='crud_views_mapping',
16
- field=models.JSONField(blank=True, default=dict),
17
- ),
18
- ]
@@ -1,22 +0,0 @@
1
- # Generated by Django
2
-
3
- from django.db import migrations, models
4
-
5
-
6
- class Migration(migrations.Migration):
7
-
8
- dependencies = [
9
- ('lucy_assist', '0003_configurationlucyassist_crud_views_mapping'),
10
- ]
11
-
12
- operations = [
13
- migrations.AddField(
14
- model_name='configurationlucyassist',
15
- name='system_prompt',
16
- field=models.TextField(
17
- blank=True,
18
- default='',
19
- help_text="Prompt système pour l'assistant IA. Initialisé automatiquement si vide."
20
- ),
21
- ),
22
- ]