meta_workflows 0.9.0 → 0.9.1
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.
- checksums.yaml +4 -4
- data/README.md +33 -2
- data/app/assets/stylesheets/meta_workflows/application.css +239 -153
- data/app/controllers/meta_workflows/base_debug_controller.rb +1 -1
- data/app/views/layouts/meta_workflows/application.html.erb +60 -6
- data/app/views/meta_workflows/_lexi_chat_alpha_tray.html.erb +2 -2
- data/app/views/meta_workflows/_lexi_chat_right_tray.html.erb +3 -3
- data/app/views/meta_workflows/_response_form_lexi.html.erb +2 -2
- data/app/views/meta_workflows/_response_lexi.html.erb +3 -3
- data/lib/meta_workflows/version.rb +1 -1
- metadata +2 -3
- data/app/views/layouts/meta_workflows/debug.html.erb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50ae604291373e74675fbac7838bb9cbbdcef8beb635a07ac40f06c89f784a75
|
4
|
+
data.tar.gz: cefff5fe7d2a949941dee57e2a642e7eb54d2eaec220a489e252799fb8888f1c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec4974b30bfe8c3c17fbd779228e2bdf469ba86fd808fcfdfa792b4bad5419591e919d23570a42c70aedc06c68021321174a33d91faaf1b935eced1aa5504072
|
7
|
+
data.tar.gz: 940604b1494c067ead7d9dbf6da6be88b10538e59bba4551e90a575ac070ff6fe882134a170e0f1d4f2045d2a9cffb75a3116fc010d3591361bbd74666e4efb5
|
data/README.md
CHANGED
@@ -518,13 +518,44 @@ For development contributions:
|
|
518
518
|
|
519
519
|
For detailed information about the MetaWorkflows system:
|
520
520
|
- [Setup Guide](https://strongmind.atlassian.net/wiki/spaces/MW/pages/3929833507) - Configuration and workflow setup
|
521
|
-
- [File Structure Guide](https://strongmind.atlassian.net/wiki/spaces/MW/pages/3930521627) - Complete file organization reference
|
522
|
-
- [Dummy App Guide](https://strongmind.atlassian.net/wiki/spaces/MW/pages/3941072927) - Test application documentation
|
523
521
|
|
524
522
|
## License
|
525
523
|
|
526
524
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
527
525
|
|
526
|
+
## Styling Setup
|
527
|
+
|
528
|
+
To apply or customize the styles for the `meta_workflows` engine, follow these steps:
|
529
|
+
|
530
|
+
### 1. Where to Add Your Styles
|
531
|
+
|
532
|
+
- All styles should be placed in this file:
|
533
|
+
`app/assets/stylesheets/meta_workflows/application.css`
|
534
|
+
|
535
|
+
### 2. How to Copy the Stylesheet
|
536
|
+
|
537
|
+
- To bring the stylesheet into your app (host app or dummy app), run this command from your terminal:
|
538
|
+
|
539
|
+
```bash
|
540
|
+
rails meta_workflows:install:assets
|
541
|
+
```
|
542
|
+
|
543
|
+
### 3. Location in Dummy App
|
544
|
+
|
545
|
+
- If you're using the dummy app (located at `spec/dummy`), the stylesheet will be copied to:
|
546
|
+
`spec/dummy/app/assets/stylesheets/meta_workflows/application.css`.
|
547
|
+
|
548
|
+
### 4. ⚠️ Important Note
|
549
|
+
|
550
|
+
- Do not edit the copied stylesheet in the dummy app (spec/dummy/...) directly.
|
551
|
+
- Changes made there will not carry over to the host app and will be overwritten if you re-run the install:assets task.
|
552
|
+
|
553
|
+
### 5. Avoid Using Tailwind's Custom Properties
|
554
|
+
|
555
|
+
- **Do not use Tailwind’s custom properties (CSS variables)** in your styles.
|
556
|
+
- These properties **won’t be compiled** because the layout files are accessed directly from the engine.
|
557
|
+
- As a result, the host app doesn’t recognize that it needs to compile them, and the styles will not work as expected.
|
558
|
+
|
528
559
|
## Tray System (Sidebar, Bottom, and Main Content Trays)
|
529
560
|
|
530
561
|
MetaWorkflows provides a flexible tray system for building modern, multi-pane layouts. The tray system supports left (Beta), right (Gamma), and bottom (Delta) trays, as well as a main content area (Alpha). Each tray can be shown, hidden, or made collapsible on a per-controller or per-page basis.
|
@@ -1,165 +1,200 @@
|
|
1
|
-
/*
|
1
|
+
/* Meta Workflows Styles Installed in Main App */
|
2
2
|
.meta-workflows.chat {
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
display: flex;
|
4
|
+
flex-direction: column;
|
5
|
+
gap: 1.5rem;
|
6
|
+
color: var(--slate-800);
|
7
|
+
font-size: 1.125rem;
|
8
|
+
line-height: 1.75;
|
9
|
+
|
10
|
+
h1 {
|
11
|
+
color: var(--slate-800);
|
12
|
+
font-weight: 600;
|
13
|
+
margin-bottom: 0.5rem;
|
14
|
+
font-size: 1.875rem;
|
15
|
+
line-height: 1.25;
|
16
|
+
}
|
17
|
+
|
18
|
+
h2 {
|
6
19
|
color: var(--slate-800);
|
20
|
+
font-weight: 600;
|
21
|
+
margin-bottom: 0.5rem;
|
22
|
+
font-size: 1.5rem;
|
23
|
+
line-height: 1.25;
|
24
|
+
}
|
25
|
+
|
26
|
+
h3 {
|
27
|
+
color: var(--slate-800);
|
28
|
+
font-weight: 600;
|
29
|
+
margin-bottom: 0.5rem;
|
30
|
+
font-size: 1.25rem;
|
31
|
+
line-height: 1.25;
|
32
|
+
}
|
33
|
+
|
34
|
+
h4 {
|
35
|
+
color: var(--slate-800);
|
36
|
+
font-weight: 600;
|
37
|
+
margin-bottom: 0.5rem;
|
7
38
|
font-size: 1.125rem;
|
8
|
-
line-height: 1.
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
39
|
+
line-height: 1.25;
|
40
|
+
}
|
41
|
+
|
42
|
+
h5 {
|
43
|
+
color: var(--slate-800);
|
44
|
+
font-weight: 600;
|
45
|
+
margin-bottom: 0.5rem;
|
46
|
+
font-size: 1rem;
|
47
|
+
line-height: 1.25;
|
48
|
+
}
|
49
|
+
|
50
|
+
h6 {
|
51
|
+
color: var(--slate-800);
|
52
|
+
font-weight: 600;
|
53
|
+
margin-bottom: 0.5rem;
|
54
|
+
font-size: 0.875rem;
|
55
|
+
line-height: 1.25;
|
56
|
+
}
|
57
|
+
|
58
|
+
/* combined list styles */
|
59
|
+
ul,
|
60
|
+
ol {
|
61
|
+
display: flex;
|
62
|
+
flex-direction: column;
|
63
|
+
gap: .5rem;
|
64
|
+
padding-left: 0;
|
65
|
+
list-style-type: none;
|
66
|
+
|
67
|
+
li {
|
68
|
+
display: flex;
|
69
|
+
padding: 1rem 1.375rem;
|
70
|
+
border: 1px solid var(--slate-300);
|
71
|
+
border-radius: 0.875rem;
|
72
|
+
background-color: white;
|
30
73
|
font-size: 1.25rem;
|
31
|
-
line-height: 1.25;
|
32
|
-
}
|
33
|
-
|
34
|
-
h4 {
|
35
|
-
color: var(--slate-800);
|
36
|
-
font-weight: 600;
|
37
|
-
margin-bottom: 0.5rem;
|
38
|
-
font-size: 1.125rem;
|
39
|
-
line-height: 1.25;
|
40
|
-
}
|
41
|
-
|
42
|
-
h5 {
|
43
|
-
color: var(--slate-800);
|
44
|
-
font-weight: 600;
|
45
|
-
margin-bottom: 0.5rem;
|
46
|
-
font-size: 1rem;
|
47
|
-
line-height: 1.25;
|
48
|
-
}
|
49
|
-
|
50
|
-
h6 {
|
51
|
-
color: var(--slate-800);
|
52
74
|
font-weight: 600;
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
/* Combined list styles */
|
59
|
-
ul,
|
60
|
-
ol {
|
61
|
-
display: flex;
|
62
|
-
flex-direction: column;
|
63
|
-
gap: .5rem;
|
64
|
-
padding-left: 0;
|
65
|
-
list-style-type: none;
|
66
|
-
|
67
|
-
li {
|
68
|
-
display: flex;
|
69
|
-
padding: 1rem 1.375rem;
|
70
|
-
border: 1px solid var(--slate-300);
|
71
|
-
border-radius: 0.875rem;
|
72
|
-
background-color: white;
|
73
|
-
font-size: 1.25rem;
|
74
|
-
font-weight: 600;
|
75
|
-
line-height: 1.375;
|
76
|
-
|
77
|
-
&::before {
|
78
|
-
display: none;
|
79
|
-
}
|
80
|
-
}
|
81
|
-
}
|
82
|
-
|
83
|
-
/* Ordered list specific styles */
|
84
|
-
ol {
|
85
|
-
counter-reset: list-counter;
|
86
|
-
|
87
|
-
li::before {
|
88
|
-
content: counter(list-counter) ".";
|
89
|
-
counter-increment: list-counter;
|
90
|
-
display: inline-block;
|
91
|
-
width: 1.5em;
|
92
|
-
margin-right: 0.5em;
|
93
|
-
color: var(--slate-400);
|
94
|
-
}
|
95
|
-
}
|
96
|
-
|
97
|
-
a {
|
98
|
-
color: #2563eb;
|
99
|
-
text-decoration: underline;
|
100
|
-
|
101
|
-
&:hover {
|
102
|
-
color: #1d4ed8;
|
75
|
+
line-height: 1.375;
|
76
|
+
|
77
|
+
&::before {
|
78
|
+
display: none;
|
103
79
|
}
|
104
80
|
}
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
font-size: 0.875rem;
|
119
|
-
font-family: ui-monospace, monospace;
|
120
|
-
}
|
121
|
-
|
122
|
-
blockquote {
|
123
|
-
border-left: 4px solid #e5e7eb;
|
124
|
-
padding-left: 1rem;
|
125
|
-
font-style: italic;
|
126
|
-
color: #374151;
|
127
|
-
margin: 1rem 0;
|
128
|
-
}
|
129
|
-
|
130
|
-
table {
|
131
|
-
width: 100%;
|
132
|
-
border-collapse: collapse;
|
133
|
-
margin: 1rem 0;
|
134
|
-
}
|
135
|
-
|
136
|
-
th,
|
137
|
-
td {
|
138
|
-
border: 1px solid #e5e7eb;
|
139
|
-
padding: 0.5rem;
|
140
|
-
text-align: left;
|
141
|
-
}
|
142
|
-
|
143
|
-
th {
|
144
|
-
background-color: #f9fafb;
|
145
|
-
font-weight: 600;
|
146
|
-
}
|
147
|
-
|
148
|
-
img {
|
149
|
-
border-radius: 0.5rem;
|
150
|
-
margin: 1rem 0;
|
151
|
-
}
|
152
|
-
|
153
|
-
strong {
|
154
|
-
font-weight: 600;
|
155
|
-
color: var(--slate-800);
|
81
|
+
}
|
82
|
+
|
83
|
+
/* ordered list specific styles */
|
84
|
+
ol {
|
85
|
+
counter-reset: list-counter;
|
86
|
+
|
87
|
+
li::before {
|
88
|
+
content: counter(list-counter) ".";
|
89
|
+
counter-increment: list-counter;
|
90
|
+
display: inline-block;
|
91
|
+
width: 1.5em;
|
92
|
+
margin-right: 0.5em;
|
93
|
+
color: var(--slate-400);
|
156
94
|
}
|
157
|
-
|
158
|
-
|
159
|
-
|
95
|
+
}
|
96
|
+
|
97
|
+
a {
|
98
|
+
color: #2563eb;
|
99
|
+
text-decoration: underline;
|
100
|
+
|
101
|
+
&:hover {
|
102
|
+
color: #1d4ed8;
|
160
103
|
}
|
161
104
|
}
|
162
105
|
|
106
|
+
pre {
|
107
|
+
background-color: #f9fafb;
|
108
|
+
padding: 1rem;
|
109
|
+
border-radius: 0.5rem;
|
110
|
+
overflow-x: auto;
|
111
|
+
margin: 1rem 0;
|
112
|
+
}
|
113
|
+
|
114
|
+
code {
|
115
|
+
background-color: #f9fafb;
|
116
|
+
padding: 0.125rem 0.375rem;
|
117
|
+
border-radius: 0.25rem;
|
118
|
+
font-size: 0.875rem;
|
119
|
+
font-family: ui-monospace, monospace;
|
120
|
+
}
|
121
|
+
|
122
|
+
blockquote {
|
123
|
+
border-left: 4px solid #e5e7eb;
|
124
|
+
padding-left: 1rem;
|
125
|
+
font-style: italic;
|
126
|
+
color: #374151;
|
127
|
+
margin: 1rem 0;
|
128
|
+
}
|
129
|
+
|
130
|
+
table {
|
131
|
+
width: 100%;
|
132
|
+
border-collapse: collapse;
|
133
|
+
margin: 1rem 0;
|
134
|
+
}
|
135
|
+
|
136
|
+
th,
|
137
|
+
td {
|
138
|
+
border: 1px solid #e5e7eb;
|
139
|
+
padding: 0.5rem;
|
140
|
+
text-align: left;
|
141
|
+
}
|
142
|
+
|
143
|
+
th {
|
144
|
+
background-color: #f9fafb;
|
145
|
+
font-weight: 600;
|
146
|
+
}
|
147
|
+
|
148
|
+
img {
|
149
|
+
border-radius: 0.5rem;
|
150
|
+
margin: 1rem 0;
|
151
|
+
}
|
152
|
+
|
153
|
+
strong {
|
154
|
+
font-weight: 600;
|
155
|
+
color: var(--slate-800);
|
156
|
+
}
|
157
|
+
|
158
|
+
em {
|
159
|
+
font-style: italic;
|
160
|
+
}
|
161
|
+
}
|
162
|
+
|
163
|
+
|
164
|
+
/* Lexi Chat Component Heights */
|
165
|
+
.lexi-chat-container {
|
166
|
+
height: 95vh;
|
167
|
+
}
|
168
|
+
|
169
|
+
.lexi-chat-container-full {
|
170
|
+
height: 100vh;
|
171
|
+
}
|
172
|
+
|
173
|
+
.lexi-avatar-large {
|
174
|
+
height: 375px;
|
175
|
+
}
|
176
|
+
|
177
|
+
.lexi-avatar-medium {
|
178
|
+
height: 300px;
|
179
|
+
}
|
180
|
+
|
181
|
+
.lexi-input-container {
|
182
|
+
height: 335px;
|
183
|
+
}
|
184
|
+
|
185
|
+
/* Lexi Chat Component Constraints */
|
186
|
+
.lexi-input-max-height {
|
187
|
+
max-height: 200px;
|
188
|
+
}
|
189
|
+
|
190
|
+
.lexi-textarea-min-height {
|
191
|
+
min-height: 35px;
|
192
|
+
}
|
193
|
+
|
194
|
+
.lexi-message-max-width {
|
195
|
+
max-width: 80%;
|
196
|
+
}
|
197
|
+
|
163
198
|
/* Tray Animations */
|
164
199
|
.tray-container {
|
165
200
|
transition: all 500ms ease-in-out;
|
@@ -212,7 +247,58 @@
|
|
212
247
|
|
213
248
|
/* Common content transitions */
|
214
249
|
.tray-content {
|
215
|
-
transition: opacity
|
250
|
+
transition: opacity 300ms ease-in-out, transform 500ms ease-in-out;
|
216
251
|
opacity: 1;
|
217
252
|
transform: translate(0);
|
218
|
-
}
|
253
|
+
}
|
254
|
+
|
255
|
+
/* Lexi Tray Overrides */
|
256
|
+
.gamma-tray.lexi-tray.collapsed {
|
257
|
+
width: 0px; /* Completely hide the tray */
|
258
|
+
border: none; /* Remove border when collapsed */
|
259
|
+
overflow: visible; /* Allow avatar to show outside tray bounds */
|
260
|
+
}
|
261
|
+
|
262
|
+
.gamma-tray.lexi-tray.collapsed .tray-content {
|
263
|
+
opacity: 0;
|
264
|
+
transform: translateX(-1rem);
|
265
|
+
pointer-events: none;
|
266
|
+
}
|
267
|
+
|
268
|
+
/* Fast fade out when collapsing */
|
269
|
+
.gamma-tray.lexi-tray.collapsed .tray-content {
|
270
|
+
transition: opacity 200ms ease-in-out, transform 500ms ease-in-out;
|
271
|
+
}
|
272
|
+
|
273
|
+
/* Delayed fade in when expanding - wait for width animation to mostly complete */
|
274
|
+
.gamma-tray.lexi-tray:not(.collapsed) .tray-content {
|
275
|
+
transition: opacity 200ms ease-in-out 300ms, transform 500ms ease-in-out;
|
276
|
+
}
|
277
|
+
|
278
|
+
/* Hide standard collapse button when Lexi tray is collapsed */
|
279
|
+
.gamma-tray.lexi-tray.collapsed > button[data-action="click->tray#toggle"]:not(.lexi-floating-avatar) {
|
280
|
+
display: none;
|
281
|
+
}
|
282
|
+
|
283
|
+
/* Show floating Lexi avatar button when collapsed - with delay to avoid overlap */
|
284
|
+
.gamma-tray.lexi-tray.collapsed .lexi-floating-avatar {
|
285
|
+
display: block !important;
|
286
|
+
opacity: 0;
|
287
|
+
animation: lexi-avatar-appear 200ms ease-in-out 400ms forwards;
|
288
|
+
}
|
289
|
+
|
290
|
+
@keyframes lexi-avatar-appear {
|
291
|
+
from {
|
292
|
+
opacity: 0;
|
293
|
+
transform: scale(0.8);
|
294
|
+
}
|
295
|
+
to {
|
296
|
+
opacity: 1;
|
297
|
+
transform: scale(1);
|
298
|
+
}
|
299
|
+
}
|
300
|
+
|
301
|
+
/* Hide floating avatar when tray is expanded */
|
302
|
+
.gamma-tray.lexi-tray:not(.collapsed) .lexi-floating-avatar {
|
303
|
+
display: none !important;
|
304
|
+
}
|
@@ -4,7 +4,7 @@ module MetaWorkflows
|
|
4
4
|
class BaseDebugController < MetaWorkflows::ApplicationController
|
5
5
|
include MetaWorkflows::DebugHelper
|
6
6
|
|
7
|
-
layout 'meta_workflows/
|
7
|
+
layout 'meta_workflows/application'
|
8
8
|
|
9
9
|
# Apply authentication only in production environment
|
10
10
|
before_action :authenticate_with_basic_auth, if: :production_environment?
|
@@ -1,16 +1,70 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html>
|
3
3
|
<head>
|
4
|
-
<title>
|
4
|
+
<title>MetaWorkflows Debug Tool</title>
|
5
5
|
<%= csrf_meta_tags %>
|
6
6
|
<%= csp_meta_tag %>
|
7
7
|
|
8
|
-
<%=
|
9
|
-
|
8
|
+
<%= yield :head %>
|
9
|
+
|
10
|
+
<!-- Tailwind CSS -->
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
12
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
13
|
+
|
14
|
+
<!-- JSON Viewer Web Component -->
|
15
|
+
<script src="https://unpkg.com/@alenaksu/json-viewer@2.1.0/dist/json-viewer.bundle.js"></script>
|
10
16
|
</head>
|
11
17
|
|
12
|
-
<body>
|
13
|
-
|
14
|
-
|
18
|
+
<body class="bg-gray-50 min-h-screen">
|
19
|
+
<!-- Flash Messages -->
|
20
|
+
<% flash.each do |type, message| %>
|
21
|
+
<% icon, color_classes = case type.to_sym
|
22
|
+
when :notice
|
23
|
+
["fa-circle-check", "bg-green-50 border-green-200 text-green-800"]
|
24
|
+
when :alert
|
25
|
+
["fa-triangle-exclamation", "bg-red-50 border-red-200 text-red-800"]
|
26
|
+
else
|
27
|
+
["fa-info-circle", "bg-blue-50 border-blue-200 text-blue-800"]
|
28
|
+
end %>
|
29
|
+
<div class="flex items-center gap-3 border-l-4 p-4 mb-4 shadow-sm rounded-md <%= color_classes %>" role="alert">
|
30
|
+
<i class="fa-solid <%= icon %> text-xl"></i>
|
31
|
+
<div class="flex-1">
|
32
|
+
<%= message %>
|
33
|
+
</div>
|
34
|
+
<button type="button" class="ml-4 text-gray-400 hover:text-gray-600 focus:outline-none" onclick="this.parentElement.style.display='none'" aria-label="Dismiss">
|
35
|
+
<i class="fa-solid fa-xmark"></i>
|
36
|
+
</button>
|
37
|
+
</div>
|
38
|
+
<% end %>
|
39
|
+
|
40
|
+
<!-- Header Navigation -->
|
41
|
+
<nav class="bg-white shadow-sm border-b border-gray-200">
|
42
|
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
43
|
+
<div class="flex justify-between items-center h-16">
|
44
|
+
<!-- Logo/Title -->
|
45
|
+
<div class="flex items-center">
|
46
|
+
<h1 class="text-xl font-semibold text-gray-900">
|
47
|
+
MetaWorkflows Debug Tool
|
48
|
+
</h1>
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<!-- Navigation Links -->
|
52
|
+
<div class="flex space-x-8">
|
53
|
+
<%= link_to "Workflows", workflows_path,
|
54
|
+
class: "#{current_page?(workflows_path) || params[:action] == 'workflows' || params[:action] == 'show_workflow' ? 'text-blue-600 border-b-2 border-blue-600' : 'text-gray-500 hover:text-gray-700'} px-3 py-2 text-sm font-medium" %>
|
55
|
+
<%= link_to "Executions", executions_path,
|
56
|
+
class: "#{current_page?(executions_path) || params[:action] == 'executions' || params[:action] == 'show_execution' ? 'text-blue-600 border-b-2 border-blue-600' : 'text-gray-500 hover:text-gray-700'} px-3 py-2 text-sm font-medium" %>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
</nav>
|
61
|
+
|
62
|
+
<!-- Main Content -->
|
63
|
+
<main class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
|
64
|
+
<%= yield %>
|
65
|
+
</main>
|
66
|
+
|
67
|
+
<!-- Optional JavaScript -->
|
68
|
+
<%= yield :javascripts %>
|
15
69
|
</body>
|
16
70
|
</html>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%# Lexi Chat Alpha Tray (Center Display) %>
|
2
|
-
<div class="relative flex flex-col
|
2
|
+
<div class="relative flex flex-col lexi-chat-container bg-white px-4">
|
3
3
|
<%# Header with Lexi logo and action icons - spans full width %>
|
4
4
|
<div class="flex-shrink-0 flex items-center justify-between pb-2 border-b border-gray-200">
|
5
5
|
<div class="flex items-center space-x-2">
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<div class="flex-1 flex min-h-0">
|
20
20
|
<!-- Lexi auto-width side column -->
|
21
21
|
<div class="flex-shrink-0 flex flex-col justify-end pb-4">
|
22
|
-
<%= image_tag("lexi-expanded.png", alt: "Lexi Avatar", class: "
|
22
|
+
<%= image_tag("lexi-expanded.png", alt: "Lexi Avatar", class: "lexi-avatar-large w-auto") %>
|
23
23
|
</div>
|
24
24
|
|
25
25
|
<!-- Main content area (chat + input) -->
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%# Lexi Chat Tray %>
|
2
|
-
<div class="relative flex flex-col
|
2
|
+
<div class="relative flex flex-col lexi-chat-container-full bg-white px-4">
|
3
3
|
<%# Header with Lexi logo and action icons %>
|
4
4
|
<div class="flex-shrink-0 flex items-center justify-between pb-2 border-b border-gray-200">
|
5
5
|
<div class="flex items-center space-x-2">
|
@@ -21,7 +21,7 @@
|
|
21
21
|
</div>
|
22
22
|
|
23
23
|
<%# Lexi avatar and input area pinned to bottom %>
|
24
|
-
<div class="relative bg-white
|
24
|
+
<div class="relative bg-white lexi-input-container">
|
25
25
|
<!-- Bottom section with recording notice and input area -->
|
26
26
|
<div class="absolute bottom-15 left-0 right-0 flex flex-col space-y-2 z-10">
|
27
27
|
<!-- Recording notice -->
|
@@ -35,6 +35,6 @@
|
|
35
35
|
</div>
|
36
36
|
|
37
37
|
<!-- Lexi image positioned absolutely to the left -->
|
38
|
-
<%= image_tag("lexi-expanded.png", alt: "Lexi Avatar", class: "absolute bottom-10 left-0
|
38
|
+
<%= image_tag("lexi-expanded.png", alt: "Lexi Avatar", class: "absolute bottom-10 left-0 lexi-avatar-medium w-auto pointer-events-none") %>
|
39
39
|
</div>
|
40
40
|
</div>
|
@@ -5,10 +5,10 @@
|
|
5
5
|
<fieldset>
|
6
6
|
<div class="flex flex-col gap-1">
|
7
7
|
<!-- Input Container -->
|
8
|
-
<div class="flex flex-col max-
|
8
|
+
<div class="flex flex-col lexi-input-max-height border border-gray-300 rounded-lg bg-white/80 p-2">
|
9
9
|
<!-- Input area with icons -->
|
10
10
|
<div class="flex-1 relative">
|
11
|
-
<%= form.text_area :message, rows: 1, placeholder: random_chat_placeholder, disabled: local_assigns[:responding] || !local_assigns[:response_enabled], class: "w-full min-
|
11
|
+
<%= form.text_area :message, rows: 1, placeholder: random_chat_placeholder, disabled: local_assigns[:responding] || !local_assigns[:response_enabled], class: "w-full lexi-textarea-min-height border-0 resize-none focus:outline-none focus:ring-0 bg-transparent text-base overflow-y-auto" %>
|
12
12
|
</div>
|
13
13
|
|
14
14
|
<div class="flex justify-between">
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<% if message.role == 'user' %>
|
12
12
|
<!-- User message bubble (right-aligned, amber background) -->
|
13
13
|
<div class="flex justify-end">
|
14
|
-
<div class="max-
|
14
|
+
<div class="lexi-message-max-width bg-amber-100 rounded-xl px-6 py-3">
|
15
15
|
<div class="text-sm">
|
16
16
|
<%= simple_format(message.content) %>
|
17
17
|
</div>
|
@@ -22,7 +22,7 @@
|
|
22
22
|
<!-- Lexi message bubble (left-aligned) -->
|
23
23
|
<div class="flex justify-start">
|
24
24
|
<!-- Message Bubble -->
|
25
|
-
<div class="max-
|
25
|
+
<div class="lexi-message-max-width bg-slate-100 rounded-xl px-6 py-3">
|
26
26
|
<div class="prose prose-sm max-w-none">
|
27
27
|
<%= markdown(message.content) %>
|
28
28
|
</div>
|
@@ -35,7 +35,7 @@
|
|
35
35
|
<% if is_streaming %>
|
36
36
|
<div class="flex justify-start">
|
37
37
|
<!-- Streaming Message Bubble -->
|
38
|
-
<div class="max-
|
38
|
+
<div class="lexi-message-max-width bg-slate-100 rounded-xl px-6 py-3">
|
39
39
|
<div class="prose prose-sm max-w-none">
|
40
40
|
<%= markdown(full_response) %>
|
41
41
|
</div>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module MetaWorkflows
|
4
4
|
MAJOR = 0
|
5
5
|
MINOR = 9
|
6
|
-
PATCH =
|
6
|
+
PATCH = 1 # this is automatically incremented by the build process
|
7
7
|
|
8
8
|
VERSION = "#{MetaWorkflows::MAJOR}.#{MetaWorkflows::MINOR}.#{MetaWorkflows::PATCH}".freeze
|
9
9
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meta_workflows
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leonid Medovyy
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2025-
|
12
|
+
date: 2025-07-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -157,7 +157,6 @@ files:
|
|
157
157
|
- app/services/meta_workflows/workflow_import_service.rb
|
158
158
|
- app/sidekiq/meta_workflows/tools/meta_workflow_tool.rb
|
159
159
|
- app/views/layouts/meta_workflows/application.html.erb
|
160
|
-
- app/views/layouts/meta_workflows/debug.html.erb
|
161
160
|
- app/views/meta_workflows/_lexi_chat_alpha_tray.html.erb
|
162
161
|
- app/views/meta_workflows/_lexi_chat_right_tray.html.erb
|
163
162
|
- app/views/meta_workflows/_loader.html.erb
|
@@ -1,50 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>MetaWorkflows Debug Tool</title>
|
5
|
-
<%= csrf_meta_tags %>
|
6
|
-
<%= csp_meta_tag %>
|
7
|
-
|
8
|
-
<%= yield :head %>
|
9
|
-
|
10
|
-
<%= stylesheet_link_tag "meta_workflows/application", media: "all" %>
|
11
|
-
|
12
|
-
<!-- Tailwind CSS -->
|
13
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
14
|
-
<script src="https://cdn.tailwindcss.com"></script>
|
15
|
-
|
16
|
-
<!-- JSON Viewer Web Component -->
|
17
|
-
<script src="https://unpkg.com/@alenaksu/json-viewer@2.1.0/dist/json-viewer.bundle.js"></script>
|
18
|
-
</head>
|
19
|
-
<body class="bg-gray-50 min-h-screen">
|
20
|
-
<!-- Header Navigation -->
|
21
|
-
<nav class="bg-white shadow-sm border-b border-gray-200">
|
22
|
-
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
23
|
-
<div class="flex justify-between items-center h-16">
|
24
|
-
<!-- Logo/Title -->
|
25
|
-
<div class="flex items-center">
|
26
|
-
<h1 class="text-xl font-semibold text-gray-900">
|
27
|
-
MetaWorkflows Debug Tool
|
28
|
-
</h1>
|
29
|
-
</div>
|
30
|
-
|
31
|
-
<!-- Navigation Links -->
|
32
|
-
<div class="flex space-x-8">
|
33
|
-
<%= link_to "Workflows", workflows_path,
|
34
|
-
class: "#{current_page?(workflows_path) || params[:action] == 'workflows' || params[:action] == 'show_workflow' ? 'text-blue-600 border-b-2 border-blue-600' : 'text-gray-500 hover:text-gray-700'} px-3 py-2 text-sm font-medium" %>
|
35
|
-
<%= link_to "Executions", executions_path,
|
36
|
-
class: "#{current_page?(executions_path) || params[:action] == 'executions' || params[:action] == 'show_execution' ? 'text-blue-600 border-b-2 border-blue-600' : 'text-gray-500 hover:text-gray-700'} px-3 py-2 text-sm font-medium" %>
|
37
|
-
</div>
|
38
|
-
</div>
|
39
|
-
</div>
|
40
|
-
</nav>
|
41
|
-
|
42
|
-
<!-- Main Content -->
|
43
|
-
<main class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
|
44
|
-
<%= yield %>
|
45
|
-
</main>
|
46
|
-
|
47
|
-
<!-- Optional JavaScript -->
|
48
|
-
<%= yield :javascripts %>
|
49
|
-
</body>
|
50
|
-
</html>
|