@imenam/self-register-proxy 1.0.38 → 1.0.41

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imenam/self-register-proxy",
3
- "version": "1.0.38",
3
+ "version": "1.0.41",
4
4
  "description": "Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port",
5
5
  "main": "proxy-client.js",
6
6
  "bin": {
@@ -19,7 +19,7 @@ function renderDashboard(routes, availablePorts, proxyName, hasAuth, cleanUpComm
19
19
  <span class="service-name">${escapeHtml(route.name)}</span>
20
20
  </div>
21
21
  <div class="service-actions">
22
- <a href="${escapeHtml(route.path)}" class="action-btn primary" title="Acc&eacute;der">Ouvrir</a>
22
+ <a href="${escapeHtml(route.path)}" class="action-btn primary" title="Acc&eacute;der" target="_blank" rel="noopener noreferrer">Ouvrir</a>
23
23
  </div>
24
24
  </div>
25
25
  `).join('')}
@@ -130,7 +130,7 @@ function renderDashboard(routes, availablePorts, proxyName, hasAuth, cleanUpComm
130
130
  <span class="service-config"></span>
131
131
  </div>
132
132
  <div class="service-actions">
133
- <a href="${escapeHtml(route.path)}" class="action-btn primary" title="Acc&eacute;der">Ouvrir</a>
133
+ <a href="${escapeHtml(route.path)}" class="action-btn primary" title="Acc&eacute;der" target="_blank" rel="noopener noreferrer">Ouvrir</a>
134
134
  <button onclick="checkHealth('${escapeHtml(route.path)}', this)" class="action-btn" title="V&eacute;rifier la sant&eacute;">Sant&eacute;</button>
135
135
  <button onclick="killPort(${route.port}, this)" class="action-btn danger" title="Tuer le process">Tuer</button>
136
136
  </div>
@@ -148,23 +148,6 @@
148
148
  .sb-icon-btn-blue { background: rgba(99,102,241,0.75); }
149
149
  .sb-icon-btn-amber { background: rgba(245,158,11,0.75); }
150
150
  .sb-icon-btn-purple { background: linear-gradient(135deg, #6366f1, #8b5cf6); }
151
- .sb-modal-fullscreen {
152
- width: calc(100vw - 6rem); height: calc(100vh - 2rem);
153
- background: #0f0f1a;
154
- border-radius: 10px; padding: 0;
155
- border: 1px solid rgba(139,92,246,0.4);
156
- box-shadow: 0 0 0 4px rgba(99,102,241,0.15), 0 24px 48px rgba(0,0,0,0.6);
157
- display: flex; flex-direction: column; overflow: hidden;
158
- }
159
- .sb-modal-fullscreen-bar {
160
- display: flex; align-items: center; justify-content: space-between;
161
- padding: 0.5rem 1rem;
162
- background: rgba(255,255,255,0.04);
163
- border-bottom: 1px solid rgba(255,255,255,0.08);
164
- flex-shrink: 0;
165
- }
166
- .sb-modal-fullscreen-bar span { font-size: 0.85rem; font-weight: 600; color: #d4d4d8; }
167
- .sb-modal-fullscreen iframe { flex: 1; border: none; width: 100%; background: #fff; }
168
151
  .sb-section-label {
169
152
  font-size: 0.65rem; font-weight: 700; letter-spacing: 0.08em;
170
153
  color: #52525b; text-transform: uppercase;
@@ -370,16 +353,6 @@
370
353
  <div id="terminal-container"></div>
371
354
  </div>
372
355
 
373
- <div class="sb-modal-overlay" id="mcpIframeModal" onclick="if(event.target===this)closeMcpIframeModal()">
374
- <div class="sb-modal-fullscreen">
375
- <div class="sb-modal-fullscreen-bar">
376
- <span id="mcpIframeTitle"></span>
377
- <button class="sb-icon-btn sb-icon-btn-ghost" onclick="closeMcpIframeModal()" title="Fermer">&#x2715;</button>
378
- </div>
379
- <iframe id="mcpIframeEl" src="about:blank" allowfullscreen></iframe>
380
- </div>
381
- </div>
382
-
383
356
  <div class="sb-modal-overlay" id="sbModalOverlay" onclick="if(event.target===this)closeSbModal()">
384
357
  <div class="sb-modal">
385
358
  <div class="sb-modal-header">
@@ -965,11 +938,11 @@
965
938
  return;
966
939
  }
967
940
  el.innerHTML = routes.map(r =>
968
- '<div class="sb-service-card" data-path="' + sbEsc(r.path) + '" data-name="' + sbEsc(r.name || r.path) + '" onclick="openMcpIframeModal(this.dataset.path, this.dataset.name)">'
941
+ '<div class="sb-service-card" data-path="' + sbEsc(r.path) + '" onclick="sidebarOpenRoute(this.dataset.path)">'
969
942
  + '<span class="sb-service-name" title="' + sbEsc(r.name || r.path) + '">' + sbEsc(r.name || r.path) + '</span>'
970
943
  + '<div class="sb-service-actions">'
971
- + '<button class="sb-icon-btn sb-icon-btn-purple" data-path="' + sbEsc(r.path) + '" data-name="' + sbEsc(r.name || r.path) + '" onclick="event.stopPropagation(); openMcpIframeModal(this.dataset.path, this.dataset.name)" title="Ouvrir dans une fen&#234;tre">&#x26F6;</button>'
972
- + '<button class="sb-icon-btn sb-icon-btn-blue" data-path="' + sbEsc(r.path) + '" onclick="event.stopPropagation(); sidebarOpenRoute(this.dataset.path)" title="Ouvrir">&#8599;</button>'
944
+ + '<button class="sb-icon-btn sb-icon-btn-purple" data-path="' + sbEsc(r.path) + '" onclick="event.stopPropagation(); sidebarOpenRoute(this.dataset.path)" title="Ouvrir dans une nouvelle fen&#234;tre">&#x26F6;</button>'
945
+ + '<button class="sb-icon-btn sb-icon-btn-blue" data-path="' + sbEsc(r.path) + '" onclick="event.stopPropagation(); sidebarOpenRoute(this.dataset.path)" title="Ouvrir dans une nouvelle fen&#234;tre">&#8599;</button>'
973
946
  + '<button class="sb-icon-btn sb-icon-btn-amber" data-path="' + sbEsc(r.path) + '" onclick="event.stopPropagation(); sidebarCheckHealth(this.dataset.path, this)" title="Sant&#233;">&#10084;</button>'
974
947
  + '</div></div>'
975
948
  ).join('');
@@ -979,17 +952,6 @@
979
952
  window.open(path, '_blank');
980
953
  }
981
954
 
982
- function openMcpIframeModal(path, name) {
983
- document.getElementById('mcpIframeEl').src = path;
984
- document.getElementById('mcpIframeTitle').textContent = name || path;
985
- document.getElementById('mcpIframeModal').classList.add('active');
986
- }
987
-
988
- function closeMcpIframeModal() {
989
- document.getElementById('mcpIframeModal').classList.remove('active');
990
- document.getElementById('mcpIframeEl').src = 'about:blank';
991
- }
992
-
993
955
  async function sidebarCheckHealth(path, btn) {
994
956
  btn.disabled = true;
995
957
  btn.innerHTML = '<span class="sb-spinner"></span>';