neural-loom 0.2.68 → 0.2.69

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.
Files changed (51) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/cache/.previewinfo +1 -1
  4. package/.next/cache/.rscinfo +1 -1
  5. package/.next/cache/.tsbuildinfo +1 -1
  6. package/.next/diagnostics/route-bundle-stats.json +1 -1
  7. package/.next/fallback-build-manifest.json +3 -3
  8. package/.next/prerender-manifest.json +3 -3
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.html +1 -1
  17. package/.next/server/app/_not-found.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  24. package/.next/server/app/index.html +1 -1
  25. package/.next/server/app/index.rsc +2 -2
  26. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  27. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  28. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  29. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  30. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  31. package/.next/server/app/page/react-loadable-manifest.json +3 -3
  32. package/.next/server/app/page_client-reference-manifest.js +1 -1
  33. package/.next/server/chunks/[root-of-the-server]__0tq0maq._.js +1 -1
  34. package/.next/server/chunks/[root-of-the-server]__0tq0maq._.js.map +1 -1
  35. package/.next/server/middleware-build-manifest.js +3 -3
  36. package/.next/server/pages/404.html +1 -1
  37. package/.next/server/pages/500.html +1 -1
  38. package/.next/server/server-reference-manifest.js +1 -1
  39. package/.next/server/server-reference-manifest.json +1 -1
  40. package/.next/static/chunks/{0fdyrz6c97v4y.js → 008bf~h8rh5_3.js} +1 -1
  41. package/.next/static/chunks/{0cbr3_t9j1ilb.js → 00pgauqedvo01.js} +2 -2
  42. package/.next/static/chunks/{09at8yg03trv8.js → 0ii_nb0g40rmj.js} +1 -1
  43. package/.next/trace +1 -1
  44. package/.next/trace-build +1 -1
  45. package/README.md +5 -5
  46. package/package.json +1 -1
  47. package/src/app/components/IdeLayout.tsx +1 -1
  48. package/src/app/components/TerminalConsole.tsx +16 -1
  49. /package/.next/static/{7qXcDZENU2sMQ6EyGkMNq → EglcK14vXeSWIjxjJCP9A}/_buildManifest.js +0 -0
  50. /package/.next/static/{7qXcDZENU2sMQ6EyGkMNq → EglcK14vXeSWIjxjJCP9A}/_clientMiddlewareManifest.js +0 -0
  51. /package/.next/static/{7qXcDZENU2sMQ6EyGkMNq → EglcK14vXeSWIjxjJCP9A}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  NeuralLoom is a local Next.js orchestration cockpit and terminal bridge designed to manage multiple concurrent terminal agent sessions (such as **Claude Code** and **Aider**) in isolated or overlapping workspaces. It streams pseudo-terminal (PTY) streams to the browser over secure WebSockets, manages system prompt environments, compiles directory maps, tracks active token costs, and displays visual resource telemetry.
4
4
 
5
5
  > [!TIP]
6
- > **UI Capabilities & Gap Audit**: You can view the live interactive [UI Capabilities & Gap Audit Dashboard](http://localhost:3000/ui-audit.html) (or access it locally at `/ui-audit.html` on the server) to explore current layout components, read-only diff viewers, and the built-in database/terminal consoles.
6
+ > **UI Capabilities & Gap Audit**: You can view the live interactive [UI Capabilities & Gap Audit Dashboard](http://localhost:9600/ui-audit.html) (or access it locally at `/ui-audit.html` on the server) to explore current layout components, read-only diff viewers, and the built-in database/terminal consoles.
7
7
 
8
8
  ---
9
9
 
@@ -33,9 +33,9 @@ NeuralLoom is a local Next.js orchestration cockpit and terminal bridge designed
33
33
  > It depends on a persistent server runtime to manage active node-pty terminal threads, keep sockets connected, write to the local filesystem, and interface with Docker/SSH.
34
34
 
35
35
  ### Core Components
36
- 1. **Next.js Frontend (Port 3000)**: Visual IDE layout containing the file explorer, Monaco-style editor textareas, resource telemetry gauges, and xterm.js terminals.
36
+ 1. **Next.js Frontend (Port 9600)**: Visual IDE layout containing the file explorer, Monaco-style editor textareas, resource telemetry gauges, and xterm.js terminals.
37
37
  2. **Next.js Backend API routes**: Filesystem operations, git diff generator, context compilers, and launcher configurations.
38
- 3. **WebSocket Server Gateway (Port 3001)**: Intercepts raw keystrokes from the browser, pipes them to respective PTY child processes on the server, and routes stdout buffers back to the UI terminal wrapper.
38
+ 3. **WebSocket Server Gateway (Port 9601)**: Intercepts raw keystrokes from the browser, pipes them to respective PTY child processes on the server, and routes stdout buffers back to the UI terminal wrapper.
39
39
 
40
40
  ## 🚀 Instant Run via npx (Recommended)
41
41
 
@@ -58,7 +58,7 @@ npm install -g neural-loom
58
58
  neural-loom
59
59
  ```
60
60
 
61
- Once started, open **[http://localhost:3000](http://localhost:3000)** in your browser to start launching and managing your AI coding agent sessions.
61
+ Once started, open **[http://localhost:9600](http://localhost:9600)** in your browser to start launching and managing your AI coding agent sessions.
62
62
 
63
63
  > [!NOTE]
64
64
  > On Windows, ensure you run this command in a terminal that has access to Git Bash (for runner wrapping) and Node/NPM. If `npm` is not in your global path, you can prepend the path:
@@ -93,7 +93,7 @@ Launches the Next.js app and the background WebSocket gateway concurrently:
93
93
  ```bash
94
94
  npm run dev
95
95
  ```
96
- Open **[http://localhost:3000](http://localhost:3000)** to launch your dashboard.
96
+ Open **[http://localhost:9600](http://localhost:9600)** to launch your dashboard.
97
97
 
98
98
  ### 5. Compiling for Production Local Run
99
99
  To build the bundle and boot up the production server locally:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neural-loom",
3
- "version": "0.2.68",
3
+ "version": "0.2.69",
4
4
  "bin": {
5
5
  "neural-loom": "./bin/cli.js"
6
6
  },
@@ -221,7 +221,7 @@ interface OpenFile {
221
221
  isModified: boolean;
222
222
  }
223
223
 
224
- export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClose, sessions, onSwitchSession, onRefreshSessions, wsPort = 3001 }: IdeLayoutProps) {
224
+ export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClose, sessions, onSwitchSession, onRefreshSessions, wsPort = 9601 }: IdeLayoutProps) {
225
225
  const scopedDirsStr = JSON.stringify(scopedDirs);
226
226
  const activeSession = sessions.find(s => s.id === sessionId);
227
227
  const [workspace, setWorkspace] = useState<WorkspaceData | null>(null);
@@ -46,7 +46,7 @@ function copyTextToClipboard(text: string): boolean {
46
46
  }
47
47
  }
48
48
 
49
- export default function TerminalConsole({ sessionId, height = "400px", wsPort = 3001 }: TerminalConsoleProps) {
49
+ export default function TerminalConsole({ sessionId, height = "400px", wsPort = 9601 }: TerminalConsoleProps) {
50
50
  const terminalRef = useRef<HTMLDivElement>(null);
51
51
  const xtermRef = useRef<Terminal | null>(null);
52
52
  const wsRef = useRef<WebSocket | null>(null);
@@ -182,13 +182,26 @@ export default function TerminalConsole({ sessionId, height = "400px", wsPort =
182
182
  term.focus();
183
183
 
184
184
  const container = terminalRef.current;
185
+ const handleMouseDown = (e: MouseEvent) => {
186
+ if (e.button === 2 && term.hasSelection()) {
187
+ e.stopPropagation();
188
+ }
189
+ };
190
+ const handleMouseUp = (e: MouseEvent) => {
191
+ if (e.button === 2 && term.hasSelection()) {
192
+ e.stopPropagation();
193
+ }
194
+ };
185
195
  const handleContextMenu = (e: MouseEvent) => {
186
196
  if (term.hasSelection()) {
187
197
  e.preventDefault();
188
198
  copyTextToClipboard(term.getSelection());
199
+ term.clearSelection();
189
200
  }
190
201
  };
191
202
  if (container) {
203
+ container.addEventListener("mousedown", handleMouseDown, true);
204
+ container.addEventListener("mouseup", handleMouseUp, true);
192
205
  container.addEventListener("contextmenu", handleContextMenu);
193
206
  }
194
207
 
@@ -390,6 +403,8 @@ export default function TerminalConsole({ sessionId, height = "400px", wsPort =
390
403
  resizeObserver.disconnect();
391
404
  ws.close();
392
405
  if (container) {
406
+ container.removeEventListener("mousedown", handleMouseDown, true);
407
+ container.removeEventListener("mouseup", handleMouseUp, true);
393
408
  container.removeEventListener("contextmenu", handleContextMenu);
394
409
  }
395
410
  try {