# Features

## Terminal Workspace

- Tabs and split panes for real host PTYs.
- Per-server workspace state.
- Refresh and temporary WebSocket reconnects reattach to active PTYs.
- Soft close detaches terminals into restorable pills.
- Tab rename, drag reorder, and drag-to-split controls.
- Activity dots and completion badges show whether a tab is running, idle, exited, or finished in the background.
- Detached terminal destroy uses a themed confirmation modal.
- Tab titles sync with tmux window names when tmux persistence is active.

## Server Management

- One browser UI can manage the main server and multiple secondary servers.
- Each server keeps its own terminal layout, tabs, split panes, detached terminals, and file context.
- The sidebar switches servers without tearing down the inactive server workspaces.
- Server cards can toggle between compact names and detailed CPU, memory, disk, and swap usage with percentages and absolute values.
- CPU, memory, disk, and swap percentages above 90% / 95% are highlighted with warning / danger tones.
- Settings includes an Updates section for checking npm package updates on each server.
- Update all runs secondary server updates in parallel first, then updates the main server last.
- Background update checks run hourly and badge Settings/Updates when an update is available.

## Security And Access

- Password plus TOTP two-factor authentication.
- Single active session: a new login or re-auth revokes the previous browser session.
- Session IP binding rejects cookies presented from an unexpected client IP.
- Trusted devices can re-authenticate with a TOTP code only for 30 days.
- Trusted networks can be added by exact IP or CIDR to skip the re-auth prompt.
- Security settings can revoke trusted devices, remove trusted networks, and disable TOTP.

## Terminal Appearance And Settings

- Settings is organized into Terminal, Shortcuts, Notifications, Security, and Updates sections.
- The settings sidebar highlights the visible section and jumps directly to that section.
- Terminal font size is adjustable with a slider, stepper, numeric input, and reset button.
- Terminal font family can switch between MesloLGS NF, JetBrains Mono, and system monospace stacks.
- Scroll progress indicators can be shown or hidden.
- Accent themes update UI accents and terminal selection colors, including Signal Red.

## Terminal History And Scrollback

- Mouse wheel scrolling is captured for terminal output history instead of Codex/Claude prompt history.
- tmux-backed panes load older scrollback incrementally when the viewport reaches the top.
- Scroll progress indicators, jump-to-bottom controls, and follow-tail behavior keep large outputs usable.
- Supported Codex/Claude panes show a `View history` header button and can continue into archived transcript history.
- JSONL transcript history is loaded by cursor only when NTerminal can determine the session source unambiguously.
- The history viewer opens near fullscreen, renders the transcript as terminal-like raw output, starts at the newest line, and loads older entries as you scroll upward.

## Files

The sidebar `files` tab browses the selected pane's current working directory. It is scoped to that directory tree and does not browse above the pane cwd.

Supported operations:

- directory listing
- text and Markdown view/edit
- image/PDF/browser-supported preview within configured limits
- create, rename, save, and delete with confirmation
- stale editor save rejection when the file changed after opening

The file explorer pins to the terminal that was active when Files opened. Switching pane focus does not reload it; the pinned pane cwd, server switch, or explicit Refresh button controls reloads.

## Drag And Drop Uploads

Drop files or folders onto the terminal workspace to upload them into the active pane cwd.

- Folder drops keep the dropped folder name and preserve internal paths.
- Existing files are not overwritten; NTerminal writes a renamed copy such as `name 2.ext`.
- Multiple drop batches queue and upload one at a time in drop order.
- Upload progress, cancel actions, retry actions, and partial failures appear in the bottom-right terminal popup.
- Retrying a partial upload sends only failed files, avoiding duplicate renamed copies of successful uploads.
- Unsupported folder drops fail visibly instead of flattening the folder.

## Completion Notifications

NTerminal can show completion notifications when a background command transitions from busy to idle.

Controls in Settings:

- toast duration
- persistent-until-dismissed mode
- system notifications while the page is hidden
- built-in notification video previews
- MP4/WebM upload up to 5 MB
- enable/disable videos with checkboxes
- random selection from enabled videos

Clicking a completion toast switches back to the server and pane that finished.

## Compose Drawer And Clipboard

- Compose drawer keeps drafts per pane.
- Sending from compose writes carriage returns so multiline commands execute instead of only inserting visual newlines.
- Ctrl+C copies selected terminal text and falls through to SIGINT when nothing is selected.
- Ctrl+V pastes text through the browser Clipboard API.

## Mobile Controls

- Mobile key bar is hidden by default and can expose Ctrl, Esc, Tab, and arrows.
- Split layouts can focus one pane at a time on narrow screens.
- A bottom-sheet pane switcher switches between terminal and editor panes without needing to use tiny split panes.
- The bar floats above the soft keyboard where keyboard-inset detection is available.
- Touch-specific button states avoid sticky hover/focus artifacts.
- Scroll handles are easier to drag on mobile.

## Keyboard Shortcuts

NTerminal uses Control-based workspace shortcuts so browser-reserved Command shortcuts stay available.

| Action | Shortcut |
| --- | --- |
| Previous / next server | `Ctrl+Up` / `Ctrl+Down` |
| Previous / next tab | `Ctrl+Left` / `Ctrl+Right` |
| Select tab by order | `Ctrl+Alt+1` through `Ctrl+Alt+9` |
| Select pane by screen order | `Ctrl+Alt+Shift+1` through `Ctrl+Alt+Shift+9` |
| Split right | `Ctrl+Alt+Shift+Right` |
| Split down | `Ctrl+Alt+Shift+Down` |

Shortcuts can be customized in Settings. If the browser, operating system, or focused editable control claims a key combination first, that handler wins before NTerminal can receive it.

## iPad Home Screen

NTerminal includes PWA metadata and Apple icons:

- `public/apple-touch-icon.png`
- `public/icons/app-icon-384.png`
- `public/icons/app-icon-1024.png`
- `public/icons/favicon.svg`
- `public/manifest.webmanifest`

After opening NTerminal in Safari on iPad, use Share -> Add to Home Screen.
