nterminal 1.3.9 → 1.3.10

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 CHANGED
@@ -1,10 +1,10 @@
1
1
  # NTerminal
2
2
 
3
- <img src="https://cdn.jsdelivr.net/npm/nterminal@latest/public/icons/app-icon-1024.png?v=readme-latest" alt="NTerminal app icon" width="96" height="96">
3
+ <img src="https://cdn.jsdelivr.net/npm/nterminal@1.3.10/public/icons/app-icon-1024.png" alt="NTerminal app icon" width="96" height="96">
4
4
 
5
5
  NTerminal turns your own machines into one secure browser workspace for real shells, Codex, Claude, files, and long-running terminal sessions.
6
6
 
7
- <img src="https://cdn.jsdelivr.net/npm/nterminal@latest/assets/screenshot/scr.png?v=readme-latest" alt="NTerminal workspace with two servers in the sidebar, a Codex pane, and split terminal panes" width="100%">
7
+ <img src="https://cdn.jsdelivr.net/npm/nterminal@1.3.10/assets/screenshot/scr.png" alt="NTerminal workspace with two servers in the sidebar, a Codex pane, and split terminal panes" width="100%">
8
8
 
9
9
  NTerminal is a single-owner web terminal for machines you control. It is not a hosted shell product, not a SaaS app, and not a multi-user IDE.
10
10
 
@@ -83,7 +83,7 @@ Run onboarding as the account that should own NTerminal. Do not use `sudo ntermi
83
83
 
84
84
  ### Codex / Claude History And Subagents
85
85
 
86
- <img src="https://cdn.jsdelivr.net/npm/nterminal@latest/assets/screenshot/history.png?v=readme-latest" alt="Transcript history viewer with search results in a Claude pane" width="100%">
86
+ <img src="https://cdn.jsdelivr.net/npm/nterminal@1.3.10/assets/screenshot/history.png" alt="Transcript history viewer with search results in a Claude pane" width="100%">
87
87
 
88
88
  - Supported Codex/Claude panes open JSONL transcript history (`View history`, `Alt+H`) from `~/.codex/sessions` or `~/.claude/projects`, with Markdown rendering, optional tool output, a prompt list, and scroll-to-load older entries.
89
89
  - Search runs on the server from newest to oldest, including records not yet loaded in the viewer, and selecting a result loads the history around it.
@@ -91,14 +91,14 @@ Run onboarding as the account that should own NTerminal. Do not use `sudo ntermi
91
91
  - A private, bounded disk cache reuses parsed conversation records across views and searches, and the history layout adapts to narrow panes.
92
92
  - The subagent viewer (`View agents`, `Alt+A`) lists the subagents a session launched, with their state, and opens each one's conversation. It covers Claude subagents, Codex child threads, and `codex exec` runs started from a Claude session; nested subagents fold under their parent.
93
93
 
94
- <img src="https://cdn.jsdelivr.net/npm/nterminal@latest/assets/screenshot/subagents.png?v=readme-latest" alt="Subagent viewer listing nested subagents of a Claude session" width="100%">
94
+ <img src="https://cdn.jsdelivr.net/npm/nterminal@1.3.10/assets/screenshot/subagents.png" alt="Subagent viewer listing nested subagents of a Claude session" width="100%">
95
95
 
96
96
  ### Provider Accounts And Hooks
97
97
 
98
- <img src="https://cdn.jsdelivr.net/npm/nterminal@latest/assets/screenshot/accounts.png?v=readme-latest" alt="Codex accounts dialog with two saved accounts, weekly usage, and provider hooks" width="480">
98
+ <img src="https://cdn.jsdelivr.net/npm/nterminal@1.3.10/assets/screenshot/accounts.png" alt="Codex accounts dialog with two saved accounts, weekly usage, and provider hooks" width="480">
99
99
 
100
100
  - Open a server's Codex or Claude account dialog from the provider buttons on its server card.
101
- - Each server keeps its own encrypted credential vault. Save several accounts, switch with **Use**, add one without leaving the dialog, and refresh credentials. **Add account** runs the official CLI login on the server and shows its sign-in link (open it or copy it to any browser) plus, for Codex, the one-time device code; for Claude, paste the code the page shows back into the dialog. Running Codex/Claude sessions are listed for reference but do not block a switch; they keep their current account until restarted (**Exit all sessions** stops them). Refreshing the active account waits until its CLI has exited. The active account is also backed up in the vault, so if a running session writes its old account back over the login file, the dialog says so and **Use** restores the other account. A saved login the provider revoked or let expire shows **Re-login required**, with a **Sign in again** button; the server card's provider icon gets a small marker.
101
+ - Each server keeps its own encrypted credential vault. Save several accounts, switch with **Use**, add one without leaving the dialog, and refresh credentials. Accounts are named after the signed-in email by default; click a name to rename it (the email stays visible under a custom name). **Add account** runs the official CLI login on the server and shows its sign-in link (open it or copy it to any browser) plus, for Codex, the one-time device code; for Claude, paste the code the page shows back into the dialog. Running Codex/Claude sessions are listed for reference but do not block a switch; they keep their current account until restarted (**Exit all sessions** stops them). Refreshing the active account waits until its CLI has exited. The active account is also backed up in the vault, so if a running session writes its old account back over the login file, the dialog says so and **Use** restores the other account. A saved login the provider revoked or let expire shows **Re-login required**, with a **Sign in again** button; the server card's provider icon gets a small marker.
102
102
  - The dialog shows access-token expiry, weekly and session usage remaining, reset times, and the last refresh result. Usage checks are read-only.
103
103
  - Optional [provider lifecycle hooks](docs/provider-hooks.md) (Linux) can be installed or removed from the same dialog or with `nterminal hooks`. For Codex, **Trust NTerminal hooks in Codex** asks Codex to trust only NTerminal's own hooks, the same as approving them in `/hooks`.
104
104
 
@@ -119,8 +119,8 @@ Run onboarding as the account that should own NTerminal. Do not use `sudo ntermi
119
119
  ### Mobile And PWA
120
120
 
121
121
  <p>
122
- <img src="https://cdn.jsdelivr.net/npm/nterminal@latest/assets/screenshot/mobile.png?v=readme-latest" alt="NTerminal on a phone: one pane of a split tab with the terminal key bar" width="280">
123
- <img src="https://cdn.jsdelivr.net/npm/nterminal@latest/assets/screenshot/mobile-panes.png?v=readme-latest" alt="NTerminal on a phone: the pane switcher bottom sheet listing the tab's panes" width="280">
122
+ <img src="https://cdn.jsdelivr.net/npm/nterminal@1.3.10/assets/screenshot/mobile.png" alt="NTerminal on a phone: one pane of a split tab with the terminal key bar" width="280">
123
+ <img src="https://cdn.jsdelivr.net/npm/nterminal@1.3.10/assets/screenshot/mobile-panes.png" alt="NTerminal on a phone: the pane switcher bottom sheet listing the tab's panes" width="280">
124
124
  </p>
125
125
 
126
126
  - Split layouts on narrow screens show one pane at a time, with previous/next buttons and a switcher for terminals and editors.
@@ -0,0 +1 @@
1
+ import{j as a}from"./index-WSS03d_S.js";import{M as e,r as o}from"./index-DLFQwECZ.js";function s({content:r}){return a.jsx(e,{remarkPlugins:[o],children:r})}export{s as default};
@@ -1,3 +1,3 @@
1
- import{R as a,j as t}from"./index-D7fYqfyY.js";import{M as u,r as m}from"./index-BeEACkVn.js";const _=a.memo(function({text:o,searchQuery:n}){const e=a.useMemo(()=>f(n),[n]),i=a.useMemo(()=>j(o),[o]);return t.jsx(u,{components:e,remarkPlugins:[m],children:i})});function f(r){return{a({node:o,children:n,...e}){return t.jsx("a",{...e,target:"_blank",rel:"noreferrer",children:d(n,r)})},blockquote({node:o,children:n,...e}){return t.jsx("blockquote",{...e,children:d(n,r)})},code({node:o,children:n,...e}){return t.jsx("code",{...e,children:d(n,r)})},em({node:o,children:n,...e}){return t.jsx("em",{...e,children:d(n,r)})},h1({node:o,children:n,...e}){return t.jsx("h1",{...e,children:d(n,r)})},h2({node:o,children:n,...e}){return t.jsx("h2",{...e,children:d(n,r)})},h3({node:o,children:n,...e}){return t.jsx("h3",{...e,children:d(n,r)})},h4({node:o,children:n,...e}){return t.jsx("h4",{...e,children:d(n,r)})},h5({node:o,children:n,...e}){return t.jsx("h5",{...e,children:d(n,r)})},h6({node:o,children:n,...e}){return t.jsx("h6",{...e,children:d(n,r)})},li({node:o,children:n,...e}){return t.jsx("li",{...e,children:d(n,r)})},p({node:o,children:n,...e}){return t.jsx("p",{...e,children:d(n,r)})},pre({node:o,children:n,...e}){return t.jsx("pre",{...e,className:"transcript-markdown-code",children:n})},strong({node:o,children:n,...e}){return t.jsx("strong",{...e,children:d(n,r)})},td({node:o,children:n,...e}){return t.jsx("td",{...e,children:d(n,r)})},th({node:o,children:n,...e}){return t.jsx("th",{...e,children:d(n,r)})}}}function d(r,o){return a.Children.map(r,n=>typeof n=="string"?p(n,o):n)}function p(r,o){const n=o.trim();if(!n)return r||" ";const e=r.toLowerCase(),i=n.toLowerCase(),c=[];let l=0,s=e.indexOf(i);for(;s!==-1;){s>l&&c.push(r.slice(l,s));const h=s+n.length;c.push(t.jsx("mark",{className:"transcript-search-hit",children:r.slice(s,h)},`${s}-${h}`)),l=h,s=e.indexOf(i,l)}return l<r.length&&c.push(r.slice(l)),c.length>0?c:r||" "}function j(r){const o=r.split(`
1
+ import{R as a,j as t}from"./index-WSS03d_S.js";import{M as u,r as m}from"./index-DLFQwECZ.js";const _=a.memo(function({text:o,searchQuery:n}){const e=a.useMemo(()=>f(n),[n]),i=a.useMemo(()=>j(o),[o]);return t.jsx(u,{components:e,remarkPlugins:[m],children:i})});function f(r){return{a({node:o,children:n,...e}){return t.jsx("a",{...e,target:"_blank",rel:"noreferrer",children:d(n,r)})},blockquote({node:o,children:n,...e}){return t.jsx("blockquote",{...e,children:d(n,r)})},code({node:o,children:n,...e}){return t.jsx("code",{...e,children:d(n,r)})},em({node:o,children:n,...e}){return t.jsx("em",{...e,children:d(n,r)})},h1({node:o,children:n,...e}){return t.jsx("h1",{...e,children:d(n,r)})},h2({node:o,children:n,...e}){return t.jsx("h2",{...e,children:d(n,r)})},h3({node:o,children:n,...e}){return t.jsx("h3",{...e,children:d(n,r)})},h4({node:o,children:n,...e}){return t.jsx("h4",{...e,children:d(n,r)})},h5({node:o,children:n,...e}){return t.jsx("h5",{...e,children:d(n,r)})},h6({node:o,children:n,...e}){return t.jsx("h6",{...e,children:d(n,r)})},li({node:o,children:n,...e}){return t.jsx("li",{...e,children:d(n,r)})},p({node:o,children:n,...e}){return t.jsx("p",{...e,children:d(n,r)})},pre({node:o,children:n,...e}){return t.jsx("pre",{...e,className:"transcript-markdown-code",children:n})},strong({node:o,children:n,...e}){return t.jsx("strong",{...e,children:d(n,r)})},td({node:o,children:n,...e}){return t.jsx("td",{...e,children:d(n,r)})},th({node:o,children:n,...e}){return t.jsx("th",{...e,children:d(n,r)})}}}function d(r,o){return a.Children.map(r,n=>typeof n=="string"?p(n,o):n)}function p(r,o){const n=o.trim();if(!n)return r||" ";const e=r.toLowerCase(),i=n.toLowerCase(),c=[];let l=0,s=e.indexOf(i);for(;s!==-1;){s>l&&c.push(r.slice(l,s));const h=s+n.length;c.push(t.jsx("mark",{className:"transcript-search-hit",children:r.slice(s,h)},`${s}-${h}`)),l=h,s=e.indexOf(i,l)}return l<r.length&&c.push(r.slice(l)),c.length>0?c:r||" "}function j(r){const o=r.split(`
2
2
  `);let n=!1,e=null;return o.map((i,c)=>{const l=n,s=/^ {0,3}(```+|~~~+)/.exec(i);if(s){const h=s[1]?.startsWith("`")?"`":"~";n?e===h&&(n=!1,e=null):(n=!0,e=h)}return c===o.length-1||l||s||i.trim()===""||i.endsWith(" ")?i:`${i.replace(/[ \t]+$/,"")} `}).join(`
3
3
  `)}export{_ as default};