@synergenius/flow-weaver 0.10.4 → 0.10.6

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.
@@ -61598,7 +61598,7 @@ path[data-source].port-hover { opacity: 1; }
61598
61598
  }
61599
61599
  #info-panel.visible { display: block; }
61600
61600
  #info-panel h3 {
61601
- font-size: 14px; font-weight: 700; margin-bottom: 6px;
61601
+ font-size: 14px; font-weight: 700; margin: 0;
61602
61602
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
61603
61603
  }
61604
61604
  #info-panel .node-desc { color: ${textMed}; font-size: 12px; margin-bottom: 8px; font-style: italic; }
@@ -61617,6 +61617,45 @@ path[data-source].port-hover { opacity: 1; }
61617
61617
  max-height: 300px; overflow-y: auto; margin: 6px 0 0;
61618
61618
  color: ${isDark ? "#e6edf3" : "#1a2340"};
61619
61619
  }
61620
+
61621
+ /* Custom scrollbars */
61622
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
61623
+ ::-webkit-scrollbar-track { background: transparent; }
61624
+ ::-webkit-scrollbar-thumb { background: ${isDark ? "rgba(142,158,255,0.25)" : "rgba(84,104,255,0.2)"}; border-radius: 3px; }
61625
+ ::-webkit-scrollbar-thumb:hover { background: ${isDark ? "rgba(142,158,255,0.45)" : "rgba(84,104,255,0.4)"}; }
61626
+ ::-webkit-scrollbar-corner { background: transparent; }
61627
+ * { scrollbar-width: thin; scrollbar-color: ${isDark ? "rgba(142,158,255,0.25)" : "rgba(84,104,255,0.2)"} transparent; }
61628
+
61629
+ /* Info panel header */
61630
+ #info-header {
61631
+ display: flex; align-items: center; gap: 6px; margin-bottom: 6px;
61632
+ }
61633
+ #info-header h3 { flex: 1; margin-bottom: 0; }
61634
+ .panel-btn {
61635
+ display: flex; align-items: center; justify-content: center;
61636
+ width: 24px; height: 24px; border: none; border-radius: 4px;
61637
+ background: transparent; color: ${textLow};
61638
+ cursor: pointer; transition: background 0.15s, color 0.15s;
61639
+ flex-shrink: 0;
61640
+ }
61641
+ .panel-btn:hover { background: ${surfaceHigh}; color: ${textHigh}; }
61642
+
61643
+ /* Info panel transitions */
61644
+ #info-panel {
61645
+ transition: left 0.3s cubic-bezier(0.4,0,0.2,1), bottom 0.3s cubic-bezier(0.4,0,0.2,1),
61646
+ width 0.3s cubic-bezier(0.4,0,0.2,1), height 0.3s cubic-bezier(0.4,0,0.2,1),
61647
+ max-width 0.3s cubic-bezier(0.4,0,0.2,1), max-height 0.3s cubic-bezier(0.4,0,0.2,1),
61648
+ min-width 0.3s cubic-bezier(0.4,0,0.2,1), border-radius 0.3s cubic-bezier(0.4,0,0.2,1),
61649
+ opacity 0.2s ease, transform 0.3s cubic-bezier(0.4,0,0.2,1);
61650
+ transform: translateY(8px); opacity: 0;
61651
+ }
61652
+ #info-panel.visible { transform: translateY(0); opacity: 1; }
61653
+ #info-panel.fullscreen {
61654
+ left: 16px; bottom: 16px; top: 16px; right: 16px;
61655
+ max-width: none; min-width: 0; width: auto; max-height: none;
61656
+ border-radius: 12px;
61657
+ }
61658
+ #info-panel.fullscreen pre { max-height: none; }
61620
61659
  .hl-kw { color: ${isDark ? "#8e9eff" : "#4040bf"}; }
61621
61660
  .hl-str { color: ${isDark ? "#ff7b72" : "#c4432b"}; }
61622
61661
  .hl-num { color: ${isDark ? "#f0a050" : "#b35e14"}; }
@@ -61704,7 +61743,19 @@ path[data-source].port-hover { opacity: 1; }
61704
61743
  </button>
61705
61744
  </div>
61706
61745
  <div id="info-panel">
61707
- <h3 id="info-title"></h3>
61746
+ <div id="info-header">
61747
+ <h3 id="info-title"></h3>
61748
+ <button class="panel-btn" id="btn-expand" title="Expand panel" aria-label="Expand panel">
61749
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
61750
+ <path d="M1 5V1h4M9 1h4v4M13 9v4H9M5 13H1V9"/>
61751
+ </svg>
61752
+ </button>
61753
+ <button class="panel-btn" id="btn-close-panel" title="Close panel" aria-label="Close panel">
61754
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
61755
+ <path d="M2 2l10 10M12 2L2 12"/>
61756
+ </svg>
61757
+ </button>
61758
+ </div>
61708
61759
  <div id="info-body"></div>
61709
61760
  </div>
61710
61761
  <a id="branding" href="https://flowweaver.ai" target="_blank" rel="noopener">
@@ -61725,8 +61776,12 @@ path[data-source].port-hover { opacity: 1; }
61725
61776
  var infoPanel = document.getElementById('info-panel');
61726
61777
  var infoTitle = document.getElementById('info-title');
61727
61778
  var infoBody = document.getElementById('info-body');
61779
+ var btnExpand = document.getElementById('btn-expand');
61780
+ var btnClosePanel = document.getElementById('btn-close-panel');
61728
61781
  var scrollHint = document.getElementById('scroll-hint');
61729
61782
  var studioHint = document.getElementById('studio-hint');
61783
+ var expandIcon = '<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M1 5V1h4M9 1h4v4M13 9v4H9M5 13H1V9"/></svg>';
61784
+ var collapseIcon = '<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M5 1v4H1M13 5H9V1M9 13V9h4M1 9h4v4"/></svg>';
61730
61785
 
61731
61786
  // Parse the original viewBox (diagram bounding box)
61732
61787
  var vbParts = '${viewBox}'.split(/\\s+/).map(Number);
@@ -62235,6 +62290,8 @@ path[data-source].port-hover { opacity: 1; }
62235
62290
  selectedNodeId = null;
62236
62291
  document.body.classList.remove('node-active');
62237
62292
  infoPanel.classList.remove('visible');
62293
+ infoPanel.classList.remove('fullscreen');
62294
+ btnExpand.innerHTML = expandIcon;
62238
62295
  removeNodeGlow();
62239
62296
  content.querySelectorAll('path[data-source].dimmed').forEach(function(p) {
62240
62297
  p.classList.remove('dimmed');
@@ -62466,6 +62523,21 @@ path[data-source].port-hover { opacity: 1; }
62466
62523
  deselectNode();
62467
62524
  });
62468
62525
 
62526
+ // ---- Panel expand/collapse ----
62527
+ btnExpand.addEventListener('click', function(e) {
62528
+ e.stopPropagation();
62529
+ infoPanel.classList.toggle('fullscreen');
62530
+ btnExpand.innerHTML = infoPanel.classList.contains('fullscreen') ? collapseIcon : expandIcon;
62531
+ btnExpand.title = infoPanel.classList.contains('fullscreen') ? 'Collapse panel' : 'Expand panel';
62532
+ });
62533
+ btnClosePanel.addEventListener('click', function(e) {
62534
+ e.stopPropagation();
62535
+ deselectPort();
62536
+ deselectNode();
62537
+ infoPanel.classList.remove('fullscreen');
62538
+ btnExpand.innerHTML = expandIcon;
62539
+ });
62540
+
62469
62541
  // ---- Init ----
62470
62542
  requestAnimationFrame(fitToView);
62471
62543
  window.addEventListener('resize', fitToView);
@@ -97096,7 +97168,7 @@ function displayInstalledPackage(pkg) {
97096
97168
  }
97097
97169
 
97098
97170
  // src/cli/index.ts
97099
- var version2 = true ? "0.10.4" : "0.0.0-dev";
97171
+ var version2 = true ? "0.10.6" : "0.0.0-dev";
97100
97172
  var program2 = new Command();
97101
97173
  program2.name("flow-weaver").description("Flow Weaver Annotations - Compile and validate workflow files").version(version2, "-v, --version", "Output the current version");
97102
97174
  program2.configureOutput({
@@ -132,7 +132,7 @@ path[data-source].port-hover { opacity: 1; }
132
132
  }
133
133
  #info-panel.visible { display: block; }
134
134
  #info-panel h3 {
135
- font-size: 14px; font-weight: 700; margin-bottom: 6px;
135
+ font-size: 14px; font-weight: 700; margin: 0;
136
136
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
137
137
  }
138
138
  #info-panel .node-desc { color: ${textMed}; font-size: 12px; margin-bottom: 8px; font-style: italic; }
@@ -151,6 +151,45 @@ path[data-source].port-hover { opacity: 1; }
151
151
  max-height: 300px; overflow-y: auto; margin: 6px 0 0;
152
152
  color: ${isDark ? '#e6edf3' : '#1a2340'};
153
153
  }
154
+
155
+ /* Custom scrollbars */
156
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
157
+ ::-webkit-scrollbar-track { background: transparent; }
158
+ ::-webkit-scrollbar-thumb { background: ${isDark ? 'rgba(142,158,255,0.25)' : 'rgba(84,104,255,0.2)'}; border-radius: 3px; }
159
+ ::-webkit-scrollbar-thumb:hover { background: ${isDark ? 'rgba(142,158,255,0.45)' : 'rgba(84,104,255,0.4)'}; }
160
+ ::-webkit-scrollbar-corner { background: transparent; }
161
+ * { scrollbar-width: thin; scrollbar-color: ${isDark ? 'rgba(142,158,255,0.25)' : 'rgba(84,104,255,0.2)'} transparent; }
162
+
163
+ /* Info panel header */
164
+ #info-header {
165
+ display: flex; align-items: center; gap: 6px; margin-bottom: 6px;
166
+ }
167
+ #info-header h3 { flex: 1; margin-bottom: 0; }
168
+ .panel-btn {
169
+ display: flex; align-items: center; justify-content: center;
170
+ width: 24px; height: 24px; border: none; border-radius: 4px;
171
+ background: transparent; color: ${textLow};
172
+ cursor: pointer; transition: background 0.15s, color 0.15s;
173
+ flex-shrink: 0;
174
+ }
175
+ .panel-btn:hover { background: ${surfaceHigh}; color: ${textHigh}; }
176
+
177
+ /* Info panel transitions */
178
+ #info-panel {
179
+ transition: left 0.3s cubic-bezier(0.4,0,0.2,1), bottom 0.3s cubic-bezier(0.4,0,0.2,1),
180
+ width 0.3s cubic-bezier(0.4,0,0.2,1), height 0.3s cubic-bezier(0.4,0,0.2,1),
181
+ max-width 0.3s cubic-bezier(0.4,0,0.2,1), max-height 0.3s cubic-bezier(0.4,0,0.2,1),
182
+ min-width 0.3s cubic-bezier(0.4,0,0.2,1), border-radius 0.3s cubic-bezier(0.4,0,0.2,1),
183
+ opacity 0.2s ease, transform 0.3s cubic-bezier(0.4,0,0.2,1);
184
+ transform: translateY(8px); opacity: 0;
185
+ }
186
+ #info-panel.visible { transform: translateY(0); opacity: 1; }
187
+ #info-panel.fullscreen {
188
+ left: 16px; bottom: 16px; top: 16px; right: 16px;
189
+ max-width: none; min-width: 0; width: auto; max-height: none;
190
+ border-radius: 12px;
191
+ }
192
+ #info-panel.fullscreen pre { max-height: none; }
154
193
  .hl-kw { color: ${isDark ? '#8e9eff' : '#4040bf'}; }
155
194
  .hl-str { color: ${isDark ? '#ff7b72' : '#c4432b'}; }
156
195
  .hl-num { color: ${isDark ? '#f0a050' : '#b35e14'}; }
@@ -238,7 +277,19 @@ path[data-source].port-hover { opacity: 1; }
238
277
  </button>
239
278
  </div>
240
279
  <div id="info-panel">
241
- <h3 id="info-title"></h3>
280
+ <div id="info-header">
281
+ <h3 id="info-title"></h3>
282
+ <button class="panel-btn" id="btn-expand" title="Expand panel" aria-label="Expand panel">
283
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
284
+ <path d="M1 5V1h4M9 1h4v4M13 9v4H9M5 13H1V9"/>
285
+ </svg>
286
+ </button>
287
+ <button class="panel-btn" id="btn-close-panel" title="Close panel" aria-label="Close panel">
288
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
289
+ <path d="M2 2l10 10M12 2L2 12"/>
290
+ </svg>
291
+ </button>
292
+ </div>
242
293
  <div id="info-body"></div>
243
294
  </div>
244
295
  <a id="branding" href="https://flowweaver.ai" target="_blank" rel="noopener">
@@ -259,8 +310,12 @@ path[data-source].port-hover { opacity: 1; }
259
310
  var infoPanel = document.getElementById('info-panel');
260
311
  var infoTitle = document.getElementById('info-title');
261
312
  var infoBody = document.getElementById('info-body');
313
+ var btnExpand = document.getElementById('btn-expand');
314
+ var btnClosePanel = document.getElementById('btn-close-panel');
262
315
  var scrollHint = document.getElementById('scroll-hint');
263
316
  var studioHint = document.getElementById('studio-hint');
317
+ var expandIcon = '<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M1 5V1h4M9 1h4v4M13 9v4H9M5 13H1V9"/></svg>';
318
+ var collapseIcon = '<svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M5 1v4H1M13 5H9V1M9 13V9h4M1 9h4v4"/></svg>';
264
319
 
265
320
  // Parse the original viewBox (diagram bounding box)
266
321
  var vbParts = '${viewBox}'.split(/\\s+/).map(Number);
@@ -769,6 +824,8 @@ path[data-source].port-hover { opacity: 1; }
769
824
  selectedNodeId = null;
770
825
  document.body.classList.remove('node-active');
771
826
  infoPanel.classList.remove('visible');
827
+ infoPanel.classList.remove('fullscreen');
828
+ btnExpand.innerHTML = expandIcon;
772
829
  removeNodeGlow();
773
830
  content.querySelectorAll('path[data-source].dimmed').forEach(function(p) {
774
831
  p.classList.remove('dimmed');
@@ -1000,6 +1057,21 @@ path[data-source].port-hover { opacity: 1; }
1000
1057
  deselectNode();
1001
1058
  });
1002
1059
 
1060
+ // ---- Panel expand/collapse ----
1061
+ btnExpand.addEventListener('click', function(e) {
1062
+ e.stopPropagation();
1063
+ infoPanel.classList.toggle('fullscreen');
1064
+ btnExpand.innerHTML = infoPanel.classList.contains('fullscreen') ? collapseIcon : expandIcon;
1065
+ btnExpand.title = infoPanel.classList.contains('fullscreen') ? 'Collapse panel' : 'Expand panel';
1066
+ });
1067
+ btnClosePanel.addEventListener('click', function(e) {
1068
+ e.stopPropagation();
1069
+ deselectPort();
1070
+ deselectNode();
1071
+ infoPanel.classList.remove('fullscreen');
1072
+ btnExpand.innerHTML = expandIcon;
1073
+ });
1074
+
1003
1075
  // ---- Init ----
1004
1076
  requestAnimationFrame(fitToView);
1005
1077
  window.addEventListener('resize', fitToView);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synergenius/flow-weaver",
3
- "version": "0.10.4",
3
+ "version": "0.10.6",
4
4
  "description": "Deterministic workflow compiler for AI agents. Compiles to standalone TypeScript, no runtime dependencies.",
5
5
  "private": false,
6
6
  "type": "module",