green-screen-terminal 1.1.2 → 1.2.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.
@@ -9,8 +9,7 @@ import { execFile } from 'node:child_process';
9
9
  const __dirname = dirname(fileURLToPath(import.meta.url));
10
10
  const uiPath = join(__dirname, '..', 'ui');
11
11
 
12
- const isMock = process.argv.includes('--mock');
13
- const proxy = await createProxy({ port: 3001, mock: isMock });
12
+ const proxy = await createProxy({ port: 3001 });
14
13
 
15
14
  // Serve the terminal UI
16
15
  proxy.app.use(express.static(uiPath));
@@ -28,9 +27,6 @@ if (proxy.port !== 3001) {
28
27
  console.log(`Port 3001 was in use, using port ${proxy.port} instead`);
29
28
  }
30
29
  console.log(`Green Screen Terminal running at http://localhost:${proxy.port}`);
31
- if (isMock) {
32
- console.log('Running in MOCK mode');
33
- }
34
30
 
35
31
  // Open browser — prefer Chrome app mode for a native terminal-like window
36
32
  function openBrowser(target) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "green-screen-terminal",
3
- "version": "1.1.2",
3
+ "version": "1.2.1",
4
4
  "description": "Standalone web-based terminal for TN5250, TN3270, VT220, and HP 6530 hosts — run with npx green-screen-terminal",
5
5
  "type": "module",
6
6
  "bin": {
@@ -14,7 +14,7 @@
14
14
  "build:ui": "cd ../../apps/demo && VITE_BASE_URL=/ npx vite build --outDir ../../packages/standalone/ui"
15
15
  },
16
16
  "dependencies": {
17
- "green-screen-proxy": "^1.1.2",
17
+ "green-screen-proxy": "^1.2.1",
18
18
  "express": "^4.21.0"
19
19
  },
20
20
  "keywords": [
@@ -0,0 +1 @@
1
+ :root{--gs-green: #10b981;--gs-white: #FFFFFF;--gs-blue: #7B93FF;--gs-cyan: #00FFFF;--gs-turquoise: #00FFFF;--gs-yellow: #FFFF00;--gs-red: #FF5555;--gs-pink: #FF55FF;--gs-bg: #000000;--gs-card-bg: #0e1422;--gs-card-border: #1e293b;--gs-header-bg: #090e1a;--gs-muted: #94a3b8;--gs-font: "JetBrains Mono", "Courier New", "MS Gothic", "Osaka-Mono", "Hiragino Kaku Gothic ProN", "Noto Sans Mono CJK JP", "Noto Sans CJK JP", "Source Han Code JP", "DejaVu Sans Mono", monospace}.gs-terminal{background-color:var(--gs-card-bg);border:1px solid var(--gs-card-border);display:flex;flex-direction:column;height:100%;overflow:hidden;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.gs-terminal-focused{border-color:#10b98166;box-shadow:0 0 6px #10b9811a}.gs-header{background-color:var(--gs-header-bg);border-bottom:1px solid var(--gs-card-border);padding:.5rem 1rem;font-family:var(--gs-font);font-size:.75rem;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--gs-muted);display:flex;align-items:center;justify-content:space-between}.gs-terminal-focused .gs-header{background-color:#10b9810a;border-bottom-color:#10b9814d}.gs-header-left{display:flex;align-items:center;gap:8px}.gs-header-right{display:flex;align-items:center;gap:12px}.gs-status-group{display:flex;align-items:center;gap:8px}.gs-badge-focused{padding:2px 8px;background-color:#10b98126;color:var(--gs-green);font-size:10px;font-weight:600;border-radius:4px;border:1px solid rgba(16,185,129,.3)}.gs-badge-lock{padding:2px 6px;background-color:#ef4444;color:#fff;font-size:10px;font-weight:700;border-radius:4px}.gs-badge-ins{padding:2px 6px;background-color:#f59e0b;color:#000;font-size:10px;font-weight:700;border-radius:4px}.gs-timestamp{font-family:var(--gs-font);font-size:10px;color:gray}.gs-hint{font-family:var(--gs-font);font-size:10px;color:#7a8594}.gs-host{font-family:var(--gs-font);font-size:12px;color:gray}.gs-disconnected-text{font-family:var(--gs-font);font-size:12px;color:#ff6b00}.gs-btn-icon{background:transparent;border:none;padding:4px;border-radius:4px;color:var(--gs-muted);cursor:pointer;transition:background-color .15s,color .15s}.gs-btn-icon:hover{background-color:#1a1a1a;color:var(--gs-green)}.gs-btn-icon:disabled{opacity:.5;cursor:not-allowed}.gs-body{background-color:var(--gs-bg);flex:1;display:flex;justify-content:center;padding:0;overflow:hidden}.gs-screen{position:relative;display:flex;flex-direction:column;flex-shrink:0;cursor:text}.gs-screen-embedded{flex:1}.gs-screen-content{padding:8px 12px;flex-shrink:0}.gs-cursor{display:block;background-color:var(--gs-green);animation:gs-cursor-blink 1s infinite;box-shadow:0 0 5px #10b98180}@keyframes gs-cursor-blink{0%,50%{opacity:.8}51%,to{opacity:0}}.gs-row-title{color:var(--gs-white)}.gs-row-subtitle,.gs-row-fkey{color:var(--gs-blue)}.gs-row-content{color:var(--gs-green)}.gs-input-field{display:inline-block;position:relative;border-bottom:1px solid rgba(16,185,129,.45)}.gs-field-active{box-shadow:inset 0 -2px 0 0 var(--gs-yellow, #FFFF00)}.gs-dbcs-field{background:#7b93ff14}@keyframes gs-blink{0%,49%{visibility:visible}50%,to{visibility:hidden}}.gs-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#000000b3;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10;pointer-events:none;color:#ff6b00;font-family:var(--gs-font);font-size:14px;gap:12px}.gs-error-banner{position:absolute;top:16px;left:50%;transform:translate(-50%);z-index:10;padding:12px;background-color:#1a0000;border:1px solid #FF6B00;border-radius:4px;display:flex;align-items:center;gap:8px;font-family:var(--gs-font);font-size:12px;color:#ff6b00}.gs-shortcuts-panel{position:absolute;bottom:8px;right:8px;z-index:8;background-color:#0e1422f2;border:1px solid var(--gs-card-border);border-radius:4px;padding:8px 12px;font-family:var(--gs-font);font-size:11px;color:var(--gs-muted);pointer-events:auto;animation:gs-fade-in .2s ease-out;max-width:320px}.gs-shortcuts-section-title{color:var(--gs-muted);text-transform:uppercase;letter-spacing:.08em;font-size:9px;margin:8px 0 4px;opacity:.7}.gs-shortcut-row{cursor:pointer;transition:background-color .1s}.gs-shortcut-row:hover{background-color:#10b9811f}.gs-shortcuts-fkeys{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}.gs-shortcut-fkey{background:transparent;border:1px solid var(--gs-card-border);border-radius:3px;padding:3px 0;color:var(--gs-green);font-family:var(--gs-font);font-size:10px;cursor:pointer;transition:background-color .1s,border-color .1s}.gs-shortcut-fkey:hover{background-color:#10b98126;border-color:var(--gs-green)}.gs-shortcuts-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;color:var(--gs-green);font-size:11px;letter-spacing:.05em}.gs-shortcuts-table{border-collapse:collapse;width:100%}.gs-shortcuts-table td{padding:2px 0}.gs-shortcut-key{color:var(--gs-green);padding-right:12px;white-space:nowrap;font-weight:500}.gs-signin{display:flex;flex-direction:column;gap:12px;width:280px;color:var(--gs-green);font-family:var(--gs-font)}.gs-signin-row{display:flex;gap:8px}.gs-signin input:focus,.gs-signin select:focus{border-color:var(--gs-green);box-shadow:0 0 4px #10b9814d}.gs-signin select option{background-color:#0e1422;color:var(--gs-green)}.gs-signin-btn{width:100%;padding:8px;margin-top:4px;background-color:#10b98126;border:1px solid var(--gs-green);color:var(--gs-green);font-family:var(--gs-font);font-size:12px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:background-color .15s}.gs-signin-btn:hover:not(:disabled){background-color:#10b98140}.gs-signin-btn:disabled{opacity:.4;cursor:not-allowed}@keyframes gs-pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes gs-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.gs-spin{animation:gs-spin 1s linear infinite}@keyframes gs-fade-in{0%{opacity:0}to{opacity:1}}.gs-fade-in{animation:gs-fade-in .4s ease-out forwards}*{margin:0;padding:0;box-sizing:border-box}body{background:#0a0a0a;color:#e2e8f0;font-family:IBM Plex Mono,Courier New,monospace;min-height:100vh}.demo-page{max-width:920px;margin:0 auto;padding:2rem 1rem}.demo-header{text-align:center;margin-bottom:1.5rem}.demo-title{font-size:2rem;font-weight:600;color:#3f3;letter-spacing:-.02em}.demo-subtitle{font-size:.875rem;color:#6b7280;margin-top:.25rem}.protocol-tabs{display:flex;gap:0;justify-content:center;margin-bottom:0;border-bottom:1px solid #1e1e1e}.protocol-tab{background:none;border:none;color:#6b7280;font-family:inherit;font-size:.8rem;font-weight:500;padding:.5rem 1.25rem;cursor:pointer;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.protocol-tab:hover{color:#a0a0a0}.protocol-tab.active{color:#3f3;border-bottom-color:#3f3}.connect-tab.active{color:#60a5fa;border-bottom-color:#60a5fa}.demo-hint{text-align:center;font-size:.75rem;color:#4b5563;padding:.5rem 0;letter-spacing:.03em}.terminal-wrapper{border-radius:8px;overflow:hidden;box-shadow:0 0 40px #33ff330d}.connect-panel{padding:1.5rem}.connect-info{margin-bottom:1.5rem}.connect-info h3{font-size:1rem;color:#e2e8f0;margin-bottom:.5rem}.connect-info p{font-size:.8rem;color:#6b7280;line-height:1.5}.connect-info code{background:#161616;color:#3f3;padding:.15rem .4rem;border-radius:3px;font-size:.75rem}.connect-steps{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem}.step{display:flex;align-items:flex-start;gap:.75rem;font-size:.8rem;color:#9ca3af}.step-num{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:50%;background:#1e1e1e;color:#3f3;font-size:.7rem;font-weight:600;flex-shrink:0}.step code{display:block;background:#161616;color:#3f3;padding:.15rem .4rem;border-radius:3px;font-size:.75rem;margin-bottom:.25rem}.step-desc{font-size:.7rem;color:#4b5563}.connect-form{display:flex;flex-direction:column;gap:1rem}.connect-label{display:block;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:#6b7280}.connect-input{display:block;width:100%;margin-top:.25rem;padding:.5rem .625rem;background:#10b9810d;border:1px solid #1e293b;color:#3f3;font-family:inherit;font-size:.85rem;outline:none;border-radius:3px}.connect-input:focus{border-color:#3f3}.connect-input::placeholder{color:#374151}.connect-note{margin-top:.75rem;font-size:.7rem;color:#4b5563;font-style:italic}.connect-error{color:#ef4444;font-size:.75rem;font-family:inherit}.connect-status{font-size:.75rem;font-family:inherit}.connect-status.connected{color:#3f3}.disconnect-btn{background:none;border:1px solid #374151;color:#9ca3af;font-family:inherit;font-size:.7rem;padding:.3rem .75rem;cursor:pointer;border-radius:3px;text-transform:uppercase;letter-spacing:.05em;transition:color .15s,border-color .15s}.disconnect-btn:hover{color:#ef4444;border-color:#ef4444}.demo-footer{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-top:1.5rem;font-size:.8rem}.install-cmd{background:#161616;color:#3f3;padding:.4rem .75rem;border-radius:4px;border:1px solid #2a2a2a}.github-link{color:#6b7280;text-decoration:none;transition:color .15s}.github-link:hover{color:#e2e8f0}body.standalone{background:#000;overflow:hidden}.standalone-page{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background:#000}.standalone-page .terminal-wrapper{border-radius:0;box-shadow:none}.standalone-page .gs-terminal{border:none;border-radius:0}