@lardexx/arenacode 2.5.5 → 2.5.7
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/README.md +17 -14
- package/docs/TUI.md +1 -1
- package/docs/tui-approve.html +1 -1
- package/docs/tui-approve.png +0 -0
- package/docs/tui-home.html +1 -1
- package/docs/tui-home.png +0 -0
- package/docs/tui-palette.html +1 -1
- package/docs/tui-palette.png +0 -0
- package/docs/tui-plan.html +1 -1
- package/docs/tui-plan.png +0 -0
- package/docs/tui-preview.html +1 -1
- package/docs/tui-session.png +0 -0
- package/docs/tui-slash.html +1 -1
- package/docs/tui-slash.png +0 -0
- package/package.json +1 -1
- package/src/cli.js +4 -3
- package/src/config.js +5 -2
- package/src/tui/app.js +14 -26
- package/src/tui/logo.js +4 -1
package/docs/tui-preview.html
CHANGED
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
<body>
|
|
25
25
|
<h1>arenacode — terminal UI</h1>
|
|
26
26
|
<p>captured from a real pty · opencode-style layout, ANSI colours preserved</p>
|
|
27
|
-
<div class="frame"><pre><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">read hello.txt and run a command</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(245,167,66)">⠙ Thinking: Looking at the folder</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">→</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">Reading file: hello.txt</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (23 B)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">hello from the project</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">$</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">echo from-pc</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (exit 0)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">from-pc</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">←</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">Writing file: written.txt</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (17 B)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">`write written.txt`</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(238,238,238)">All done: the client answered every card.</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(250,178,131)">▣</span> <span style="color:rgb(238,238,238)">Build</span><span style="color:rgb(128,128,128)"> · arenacode · 0.2s</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">Ask anything… "Read package.json and add a lint script"</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(92,156,245);background:rgb(30,30,30)">Build</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">·</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">arenacode</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">bridge 2.5.2</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">╹</span><span style="color:rgb(30,30,30)">▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀</span> </div><div class="ln"> <span style="color:rgb(238,238,238)">tab</span> <span style="color:rgb(128,128,128)">agents</span> <span style="color:rgb(238,238,238)">ctrl+p</span> <span style="color:rgb(128,128,128)">commands</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(128,128,128)">/tmp/arenacode-tui-4BFYh5/project</span> <span style="color:rgb(128,128,128)">1c4600 · v2.5.2</span> </div></pre></div>
|
|
27
|
+
<div class="frame"><pre><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">read hello.txt and run a command</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(245,167,66)">⠙ Thinking: Looking at the folder</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">→</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">Reading file: hello.txt</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (23 B)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">hello from the project</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">$</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">echo from-pc</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (exit 0)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">from-pc</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">←</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">Writing file: written.txt</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (17 B)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">`write written.txt`</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(238,238,238)">All done: the client answered every card.</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(250,178,131)">▣</span> <span style="color:rgb(238,238,238)">Build</span><span style="color:rgb(128,128,128)"> · auto · 0.2s</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">Ask anything… "Read package.json and add a lint script"</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(92,156,245);background:rgb(30,30,30)">Build</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">·</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">auto</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">arena</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">╹</span><span style="color:rgb(30,30,30)">▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀</span> </div><div class="ln"> <span style="color:rgb(238,238,238)">tab</span> <span style="color:rgb(128,128,128)">agents</span> <span style="color:rgb(238,238,238)">ctrl+p</span> <span style="color:rgb(128,128,128)">commands</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(128,128,128)">/tmp/arenacode-tui-jEk6WF/project</span> <span style="color:rgb(128,128,128)">9d5325 · v2.5.2</span> </div></pre></div>
|
|
28
28
|
</body></html>
|
package/docs/tui-session.png
CHANGED
|
Binary file
|
package/docs/tui-slash.html
CHANGED
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
<body>
|
|
25
25
|
<h1>arenacode — terminal UI</h1>
|
|
26
26
|
<p>captured from a real pty · opencode-style layout, ANSI colours preserved</p>
|
|
27
|
-
<div class="frame"><pre><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30);font-weight:700">/new</span><span style="color:rgb(128,128,128);background:rgb(30,30,30)"> Start a new session</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">ctrl+x n</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/tasks</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Show the task queue</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x l</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/files</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Browse the workspace files</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/mode</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Switch agent / plan</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">tab</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/theme</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Cycle the colour theme</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x t</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/status</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Ping the bridge</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/help</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Every keybinding</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">f1</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(250,178,131)">/connect</span><span style="color:rgb(128,128,128)"> bridge offline at http://127.0.0.1:9</span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">/</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(92,156,245);background:rgb(30,30,30)">Build</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">·</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">arenacode</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">bridge 2.5.2</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">╹</span><span style="color:rgb(30,30,30)">▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀</span> </div><div class="ln"> <span style="color:rgb(238,238,238)">tab</span> <span style="color:rgb(128,128,128)">agents</span> <span style="color:rgb(238,238,238)">ctrl+p</span> <span style="color:rgb(128,128,128)">commands</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(245,167,66)">● Tip </span><span style="color:rgb(128,128,128)">Press </span><span style="color:rgb(238,238,238)">ctrl+p</span><span style="color:rgb(128,128,128)"> for every command</span> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(128,128,128)">~/arenacode-cli</span> <span style="color:rgb(128,128,128)">v2.5.2</span> </div><div class="ln">Script done on 2026-11-02 16:40:06+00:00 [COMMAND_EXIT_CODE="0"]</div><div class="ln"> </div></pre></div>
|
|
27
|
+
<div class="frame"><pre><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30);font-weight:700">/new</span><span style="color:rgb(128,128,128);background:rgb(30,30,30)"> Start a new session</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">ctrl+x n</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/tasks</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Show the task queue</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x l</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/mode</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Switch agent / plan</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">tab</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/theme</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Cycle the colour theme</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x t</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/status</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Ping the bridge</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/help</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Every keybinding</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">f1</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/quit</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Leave arenacode</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x q</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">/</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(92,156,245);background:rgb(30,30,30)">Build</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">·</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">auto</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">arena</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">╹</span><span style="color:rgb(30,30,30)">▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀</span> </div><div class="ln"> <span style="color:rgb(238,238,238)">tab</span> <span style="color:rgb(128,128,128)">agents</span> <span style="color:rgb(238,238,238)">ctrl+p</span> <span style="color:rgb(128,128,128)">commands</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(245,167,66)">● Tip </span><span style="color:rgb(128,128,128)">Press </span><span style="color:rgb(238,238,238)">ctrl+p</span><span style="color:rgb(128,128,128)"> for every command</span> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(128,128,128)">/home/user/arenacode-cli</span> <span style="color:rgb(128,128,128)">v2.5.2</span> </div><div class="ln">Script done on 2026-11-02 17:40:42+00:00 [COMMAND_EXIT_CODE="0"]</div><div class="ln"> </div></pre></div>
|
|
28
28
|
</body></html>
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lardexx/arenacode",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.7",
|
|
4
4
|
"description": "Terminal client for ArenaCode: talks to an arena-bridge, streams the Agent Mode timeline, and runs local commands and file operations on your PC. Node port of the ArenaCode desktop client.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "commonjs",
|
package/src/cli.js
CHANGED
|
@@ -144,9 +144,10 @@ async function cmdInit(flags, { tail = true } = {}) {
|
|
|
144
144
|
write('');
|
|
145
145
|
const url = await ask(` Bridge URL ${cfg.url ? c.gray(`[${cfg.url}]`) : ''}: `, { default: cfg.url });
|
|
146
146
|
const key = await ask(` API key ${cfg.key ? c.gray('[configured]') : ''}: `, { default: cfg.key });
|
|
147
|
-
const folder = await ask(` Open folder ${c.gray(`[${cfg.folder || process.cwd()}]`)}: `, { default: cfg.folder || process.cwd() });
|
|
148
147
|
|
|
149
|
-
|
|
148
|
+
// no folder question: arenacode always works in the directory it was started from
|
|
149
|
+
const next = { ...cfg, url: String(url).replace(/\/+$/, ''), key: String(key) };
|
|
150
|
+
delete next.folder;
|
|
150
151
|
const file = writeConfig(next);
|
|
151
152
|
write(` ${c.green('✓')} saved ${c.gray(file)}`);
|
|
152
153
|
|
|
@@ -184,7 +185,7 @@ function cmdConfig(positional, flags) {
|
|
|
184
185
|
const name = key;
|
|
185
186
|
const val = rest.join(' ');
|
|
186
187
|
if (!name || val === '') {
|
|
187
|
-
write(`usage: ${SELF} config set <url|key|
|
|
188
|
+
write(`usage: ${SELF} config set <url|key|lang|mode|pc_access> <value>`);
|
|
188
189
|
return 2;
|
|
189
190
|
}
|
|
190
191
|
const patch = {};
|
package/src/config.js
CHANGED
|
@@ -121,9 +121,12 @@ function resolveKey(cfg, flagKey) {
|
|
|
121
121
|
return String(flagKey || process.env.ARENACODE_KEY || cfg.key || '').trim();
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
+
/**
|
|
125
|
+
* The folder arenacode works in: the one you launched it from. No stored default, so starting it in
|
|
126
|
+
* another project just works — `--folder` (or ARENACODE_FOLDER) still forces one.
|
|
127
|
+
*/
|
|
124
128
|
function openFolder(cfg, flagFolder) {
|
|
125
|
-
|
|
126
|
-
return folder;
|
|
129
|
+
return path.resolve(flagFolder || process.env.ARENACODE_FOLDER || process.cwd());
|
|
127
130
|
}
|
|
128
131
|
|
|
129
132
|
module.exports = {
|
package/src/tui/app.js
CHANGED
|
@@ -59,7 +59,6 @@ class App {
|
|
|
59
59
|
mode: opts.mode === 'plan' ? 'plan' : cfg.mode || 'agent',
|
|
60
60
|
status: 'idle',
|
|
61
61
|
details: true,
|
|
62
|
-
sidebar: true,
|
|
63
62
|
items: [],
|
|
64
63
|
seqItems: new Map(),
|
|
65
64
|
input: '',
|
|
@@ -95,7 +94,10 @@ class App {
|
|
|
95
94
|
// ---------------------------------------------------------------- lifecycle
|
|
96
95
|
async start() {
|
|
97
96
|
this.term.enter();
|
|
98
|
-
this.term.on('key', (chunk) =>
|
|
97
|
+
this.term.on('key', (chunk) => {
|
|
98
|
+
this.parser.feed(chunk);
|
|
99
|
+
this.flush();
|
|
100
|
+
});
|
|
99
101
|
this.term.on('resize', () => this.invalidate());
|
|
100
102
|
this.running = true;
|
|
101
103
|
|
|
@@ -124,6 +126,14 @@ class App {
|
|
|
124
126
|
this.dirty = true;
|
|
125
127
|
}
|
|
126
128
|
|
|
129
|
+
/**
|
|
130
|
+
* Keys used to wait for the render loop's next turn (up to 33 ms), which on Windows reads as
|
|
131
|
+
* lag when tapping through a list. Paint on the keystroke itself and keep the loop as fallback.
|
|
132
|
+
*/
|
|
133
|
+
flush() {
|
|
134
|
+
if (this.dirty && !this.rendering) this.render();
|
|
135
|
+
}
|
|
136
|
+
|
|
127
137
|
maybeRender() {
|
|
128
138
|
if (this.dirty && !this.rendering) this.render();
|
|
129
139
|
}
|
|
@@ -276,10 +286,6 @@ class App {
|
|
|
276
286
|
st.details = !st.details;
|
|
277
287
|
this.toast(`details ${st.details ? 'on' : 'off'}`);
|
|
278
288
|
return undefined;
|
|
279
|
-
case 'b':
|
|
280
|
-
st.sidebar = !st.sidebar;
|
|
281
|
-
this.invalidate();
|
|
282
|
-
return undefined;
|
|
283
289
|
case 's':
|
|
284
290
|
return this.stopTurn();
|
|
285
291
|
case 'p':
|
|
@@ -443,9 +449,6 @@ class App {
|
|
|
443
449
|
this.state.details = !this.state.details;
|
|
444
450
|
this.toast(`details ${this.state.details ? 'on' : 'off'}`);
|
|
445
451
|
} },
|
|
446
|
-
{ title: 'Toggle sidebar', hint: 'ctrl+x b', run: () => {
|
|
447
|
-
this.state.sidebar = !this.state.sidebar;
|
|
448
|
-
} },
|
|
449
452
|
{ title: 'Switch mode (agent / plan)', hint: 'tab', run: () => {
|
|
450
453
|
this.state.mode = this.state.mode === 'agent' ? 'plan' : 'agent';
|
|
451
454
|
this.toast(`mode: ${this.state.mode}`);
|
|
@@ -463,7 +466,6 @@ class App {
|
|
|
463
466
|
if (h) this.push({ kind: 'system', text: `bridge v${h.version} · ${h.executor_mode} · claimable ${h.tasks.claimable}` });
|
|
464
467
|
else this.toast('bridge unreachable', 'error');
|
|
465
468
|
} },
|
|
466
|
-
{ title: 'Bridge workspace files', run: () => this.openFiles() },
|
|
467
469
|
{ title: 'Help', hint: 'f1', run: () => this.openHelp() },
|
|
468
470
|
{ title: 'Quit', hint: 'ctrl+x q', run: () => this.quit() },
|
|
469
471
|
].map((cmd) => ({ ...cmd, slash: '/' + cmd.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/-+$/, ''), group: 'Commands' }));
|
|
@@ -474,7 +476,6 @@ class App {
|
|
|
474
476
|
return [
|
|
475
477
|
{ slash: '/new', title: 'Start a new session', hint: 'ctrl+x n', group: 'Session', run: () => this.commands()[1].run() },
|
|
476
478
|
{ slash: '/tasks', title: 'Show the task queue', hint: 'ctrl+x l', group: 'Session', run: () => this.openTasks() },
|
|
477
|
-
{ slash: '/files', title: 'Browse the workspace files', hint: '', group: 'Session', run: () => this.openFiles() },
|
|
478
479
|
{ slash: '/mode', title: 'Switch agent / plan', hint: 'tab', group: 'Session', run: () => this.commands()[5].run() },
|
|
479
480
|
{ slash: '/theme', title: 'Cycle the colour theme', hint: 'ctrl+x t', group: 'Session', run: () => this.commands()[6].run() },
|
|
480
481
|
{ slash: '/status', title: 'Ping the bridge', hint: '', group: 'Session', run: () => this.commands()[7].run() },
|
|
@@ -1071,12 +1072,11 @@ class App {
|
|
|
1071
1072
|
}
|
|
1072
1073
|
|
|
1073
1074
|
modelName() {
|
|
1074
|
-
return
|
|
1075
|
+
return 'auto';
|
|
1075
1076
|
}
|
|
1076
1077
|
|
|
1077
1078
|
providerLabel() {
|
|
1078
|
-
|
|
1079
|
-
return `bridge ${v}`;
|
|
1079
|
+
return 'Arena';
|
|
1080
1080
|
}
|
|
1081
1081
|
|
|
1082
1082
|
statusText() {
|
|
@@ -1105,13 +1105,11 @@ class App {
|
|
|
1105
1105
|
|
|
1106
1106
|
if (this.isHome()) {
|
|
1107
1107
|
const logo = W2.centerLines(logoLines(t), W);
|
|
1108
|
-
const notify = this.notifyLine(W);
|
|
1109
1108
|
const blockH = logo.length + 1 + prompt.lines.length + 2 + 1;
|
|
1110
1109
|
const top = Math.max(1, Math.floor((H - 2 - blockH) / 2));
|
|
1111
1110
|
for (let i = 0; i < top; i++) frame.push('');
|
|
1112
1111
|
frame.push(...logo);
|
|
1113
1112
|
frame.push('');
|
|
1114
|
-
if (notify) frame.push(notify);
|
|
1115
1113
|
const promptStart = frame.length;
|
|
1116
1114
|
this._promptTop = promptStart;
|
|
1117
1115
|
frame.push(...prompt.lines);
|
|
@@ -1170,15 +1168,6 @@ class App {
|
|
|
1170
1168
|
if (this.dirty) setTimeout(() => this.maybeRender(), 16);
|
|
1171
1169
|
}
|
|
1172
1170
|
|
|
1173
|
-
notifyLine(W) {
|
|
1174
|
-
const t = this.theme;
|
|
1175
|
-
const st = this.state;
|
|
1176
|
-
if (!st.connected) {
|
|
1177
|
-
return W2.notifyLine(t, { width: W, command: '/connect', text: ` bridge offline at ${this.url}` });
|
|
1178
|
-
}
|
|
1179
|
-
return '';
|
|
1180
|
-
}
|
|
1181
|
-
|
|
1182
1171
|
tipLine(W) {
|
|
1183
1172
|
const t = this.theme;
|
|
1184
1173
|
const tips = [
|
|
@@ -1342,7 +1331,6 @@ function HELP_ROWS() {
|
|
|
1342
1331
|
['Session', 'ctrl+x l', 'task queue'],
|
|
1343
1332
|
['Session', 'ctrl+x t', 'switch theme'],
|
|
1344
1333
|
['Session', 'ctrl+x d', 'toggle tool output'],
|
|
1345
|
-
['Session', 'ctrl+x b', 'toggle the sidebar'],
|
|
1346
1334
|
['Session', 'pgup / pgdn', 'scroll'],
|
|
1347
1335
|
['Session', 'ctrl+l', 'clear the timeline'],
|
|
1348
1336
|
['Session', 'ctrl+c', 'interrupt, then quit'],
|
package/src/tui/logo.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
const { fgSeq, bgSeq, RESET, tint } = require('./theme');
|
|
13
13
|
|
|
14
14
|
const LOGO = {
|
|
15
|
-
left: [' ', '
|
|
15
|
+
left: [' ', ';::█ █▀▀█ █▀▀█ █▀▀▄ ;::█', '█;;█ █▀▀▄ █^^^ █__█ █;;█', ' : ▀~~▀ ▀▀▀▀ ▀~~▀ :'],
|
|
16
16
|
right: [' ▄ ', '█▀▀▀ █▀▀█ █▀▀█ █▀▀█', '█___ █__█ █__█ █^^^', '▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀'],
|
|
17
17
|
};
|
|
18
18
|
|
|
@@ -33,6 +33,9 @@ function paintLine(line, color, shadow, bold) {
|
|
|
33
33
|
else if (ch === '^') out += bgFill(shadow, '▀', color, bold);
|
|
34
34
|
else if (ch === '~') out += fgPaint(shadow, '▀', bold);
|
|
35
35
|
else if (ch === ',') out += fgPaint(shadow, '▄', bold);
|
|
36
|
+
// plain half blocks in the letter colour: lets a glyph put a stroke on only one half of a cell
|
|
37
|
+
else if (ch === ':') out += fgPaint(color, '▀', bold);
|
|
38
|
+
else if (ch === ';') out += fgPaint(color, '▄', bold);
|
|
36
39
|
else out += fgPaint(color, ch, bold);
|
|
37
40
|
}
|
|
38
41
|
return out;
|