mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-02 13:39:41 +02:00
App Settings > Terminal & Input > Selection & clipboard > Auto Copy
Selection (`autoCopySelection`, per-device, default OFF). With it on,
highlighting text in the terminal copies it: mouse drag, double-click
word, triple-click line, and the phone long-press selection. Ctrl+C is
untouched and still copies on demand.
Three things decide the shape of it:
* It fires at the END of a gesture, never in onSelectionChange. That
callback runs for every cell a drag crosses, so copying there would be
one clipboard write per mouse move. It only arms a pending flag; a
document-level mouseup listener flushes, and the touch path calls the
flush itself because it preventDefaults its touchend and no mouseup
ever arrives there.
* The flush is synchronous inside the handler, because both clipboard
paths need user activation: Firefox gates navigator.clipboard
.writeText on it, and execCommand('copy'), the fallback the plain-HTTP
LAN install lands on, has to run in the gesture's own task. A timer or
a wait for onSelectionChange loses it, invisibly in Chrome.
* It deliberately does NOT do what copyTerminalSelection() does. That
one clears the selection (so a second Ctrl+C is an interrupt) and
focuses the terminal. Clearing would make text vanish under the cursor
that just highlighted it, and focusing opens the on-screen keyboard
over it on a phone. Focus is instead restored to whatever held it,
which only matters for the execCommand fallback.
Guards are pure in decideAutoCopy() (constants.js): off, blank or
whitespace-only text, and a 1M-char cap, since a drag off the top of the
viewport autoscrolls and one gesture can sweep the whole 50k-line
scrollback. Past the cap the copy is refused rather than truncated, with
a toast pointing at Ctrl+C.
Feedback is silent on success except once per page load, so a feature
that works by doing nothing visible can still be told from a dead
toggle; failures and refusals toast, throttled to 10s.
Per-device on both counts the settings rule requires: in `displayKeys`
and absent from the .strict() SettingsUpdateSchema, because clipboard
access differs by device and by origin.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
174 lines
11 KiB
Markdown
174 lines
11 KiB
Markdown
# Settings Reference
|
|
|
|
Two settings surfaces, and the rule that explains why a setting you changed on your laptop
|
|
did not follow you to your phone.
|
|
|
|
| Surface | Scope | Opened from |
|
|
| ------------------- | ------------------------------ | ---------------------------- |
|
|
| **App Settings** | Global, this Codeman install. | The header gear. |
|
|
| **Session Options** | One session. | The session's tab. |
|
|
|
|
App Settings is a single scrolling document with a rail acting as a table of contents;
|
|
clicking a rail entry scrolls rather than switching. Session Options genuinely switches
|
|
panels.
|
|
|
|
## Per-device versus synced
|
|
|
|
Some settings live on the server and follow you to every device. Others are stored in the
|
|
browser and stay put. This is deliberate, not an oversight: your phone wants a different
|
|
font size, a different keyboard bar, and a different set of header buttons than your
|
|
desktop.
|
|
|
|
| Category | Examples |
|
|
| ----------------------- | ------------------------------------------------------------------------------- |
|
|
| **Per-device, local** | Skin, WebGL renderer, local echo, CJK input, extended keyboard bar, File Viewer and Cron header buttons. Never sent to the server at all. |
|
|
| **Per-device policy** | Most `show*` toggles, plan usage chip, language. Stored server-side, but a device only takes the server value when it has no local one of its own. |
|
|
| **Synced** | Models, effort, CLI options, notification preferences, voice settings, display name, the agent skill and approvals toggles. |
|
|
|
|
The practical rule: **appearance and input are per device, behaviour is shared.** If a change
|
|
did not follow you, it is in one of the first two rows, and you change it again on that
|
|
device.
|
|
|
|
## App Settings
|
|
|
|
### Updates
|
|
|
|
Current version, a manual check, and the in-app updater. Covers git-clone installs
|
|
supervised by systemd or launchd; npm installs report as non-updatable. See
|
|
[Running As A Service](Running-As-A-Service).
|
|
|
|
### Terminal & Input
|
|
|
|
| Setting | Default | Notes |
|
|
| ----------------------------- | -------------------- | --------------------------------------------------------------------- |
|
|
| Local Echo | On for touch devices | Paints keystrokes locally and flushes on Enter. See [Input And Voice](Input-And-Voice). |
|
|
| CJK Input | Off | IME composition through a dedicated text field. |
|
|
| Extended Keyboard Bar | Per device | Which accessory bar phones get. Shell sessions override it while they are active. |
|
|
| Wheel Scrolls Local History | Off | Keeps the wheel on the local buffer instead of forwarding it to the CLI. |
|
|
| Auto Copy Selection | Off | Copies highlighted terminal text to the clipboard the moment you finish selecting it. Ctrl+C still copies on demand. |
|
|
| WebGL Renderer | On | With a GPU-stall watchdog that falls back to DOM rendering. |
|
|
| Gesture Control | Off | Camera hand tracking. Also needs `CODEMAN_GESTURE=1` on the server. |
|
|
|
|
### Header & Panels
|
|
|
|
Chips for every optional header control, with a live preview of the resulting header:
|
|
|
|
Run, Font Size, System Stats, Redraw Terminal, Response Viewer, Away Digest, Session
|
|
Manager, Attachments, File Viewer, Multi-monitor, Plan Usage, Lifecycle Log, Monitor,
|
|
Project Insights, File Browser, Subagents, Approvals Inbox, Read My Mind, Ultracode Agents,
|
|
Ultracode Windows, Cron.
|
|
|
|
Most default to off. The stock desktop header is system stats, File Viewer, and the gear.
|
|
New header controls never appear on phones.
|
|
|
|
This section also holds background-agent tracking, including whether to track agents for
|
|
every session or only the active tab.
|
|
|
|
### Appearance
|
|
|
|
| Setting | Notes |
|
|
| ---------------------- | ----------------------------------------------------------------------------------------- |
|
|
| Skin | Theme palettes, light ones included. Applied before first paint, so no flash of the wrong theme. |
|
|
| Entrance Animations | Per-surface animation styles for tabs, terminals, windows, and lineage lines. All default to the legacy no-animation behaviour. |
|
|
| Display Name | Your name in the UI. Cosmetic only; it never renames the package, CLI, API, or storage. |
|
|
| Interface Language | English or Simplified Chinese. Per device. |
|
|
| Session List Layout | Header tab strip (default) or a collapsible left sidebar. See [The Dashboard](The-Dashboard#session-list-layout). |
|
|
| Tall Tabs | Taller tab strip. |
|
|
| Pop-out Button on Tabs | Adds the detach control to tabs, with a per-tab override. |
|
|
| Spawn Lineage Lines | Arcs from a parent tab to sessions it spawned. Desktop only, on by default. |
|
|
| Overview Home Screen | The phone home screen. On by default. |
|
|
|
|
### Models
|
|
|
|
Claude model cards, the 1M context window switch, and the thinking effort segment. The cards
|
|
and the switch compose into one model choice, so there is no separate "which one wins"
|
|
question.
|
|
|
|
Model and effort are both **soft defaults**: the model is written into the case's
|
|
`.claude/settings.local.json` and effort is passed at start, so `/model` and `/effort`
|
|
inside a session override them at any time.
|
|
|
|
### Agents & CLIs
|
|
|
|
| Setting | Notes |
|
|
| -------------------------------- | -------------------------------------------------------------------------------------------- |
|
|
| Startup Mode | Claude's permission mode for new sessions. Default skips prompts; `auto` uses Anthropic's classifier-guarded mode; `normal` prompts; or give an explicit allowed-tools list. |
|
|
| Allowed Tools | The list used by the explicit mode. |
|
|
| Ralph / Todo Tracker | Enables the Ralph loop surfaces. |
|
|
| Agent Teams | Experimental teams. Also needs the CLI's own environment flag. |
|
|
| Codeman Agent Skill | Injects the agent skill into new Claude sessions per case. Off by default. See [Driving Codeman From An Agent](Driving-Codeman-From-An-Agent). |
|
|
| Remote auto-reconnect | Reattaches dropped remote SSH sessions. On by default. |
|
|
| Nice priority / value | Runs agent processes at a lower CPU priority. |
|
|
| Bypass approvals and sandbox | Pi's project trust. Read [Agent CLIs](Agent-CLIs) before enabling. |
|
|
| Animated status effects | Cosmetic. |
|
|
|
|
### Notifications
|
|
|
|
Master toggle, browser notifications, push subscription, audio alerts, and the idle
|
|
threshold that decides when a quiet session counts as needing you. See
|
|
[Notifications And Approvals](Notifications-And-Approvals).
|
|
|
|
### Voice
|
|
|
|
Active provider and the engine behind it, insert mode, language, domain keywords to bias
|
|
recognition, the Deepgram API key, and the opt-in switch for transcribing through this
|
|
server's Claude login, with its live credential status. See
|
|
[Input And Voice](Input-And-Voice).
|
|
|
|
### Shortcuts
|
|
|
|
Rebinding for the shortcut registry. See [Keyboard Shortcuts](Keyboard-Shortcuts).
|
|
|
|
### System
|
|
|
|
`CLAUDE.md` template for new cases, default working directory, the image watcher, and
|
|
Cloudflare tunnel controls including the tunnel and upload URLs. In multi-user mode, the
|
|
**Users** administration entry is injected here.
|
|
|
|
## Session Options
|
|
|
|
Per session, from the tab.
|
|
|
|
| Panel | Contains |
|
|
| ---------------- | ------------------------------------------------------------------------------------------- |
|
|
| **Respawn** | Auto-resume on usage limit, the respawn cycle configuration, presets, duration. See [Keeping Agents Running](Keeping-Agents-Running). |
|
|
| **Session** | Name, working directory, environment overrides, per-tab pop-out override. |
|
|
| **Ralph / Todo** | Loop configuration, iteration and todo caps, circuit breaker reset. See [Autonomous Loops](Autonomous-Loops). |
|
|
| **Summary** | What this session has done: tokens, activity, run summary. |
|
|
|
|
Panels that only make sense for Claude are hidden for other run modes rather than shown and
|
|
failing.
|
|
|
|
## Environment variables
|
|
|
|
Some things are configured before the server starts, not in the UI:
|
|
|
|
| Variable | Effect |
|
|
| ----------------------------------- | ---------------------------------------------------------------------- |
|
|
| `CODEMAN_PORT` | Listen port. |
|
|
| `CODEMAN_HOST` | Bind address. Loopback by default. |
|
|
| `CODEMAN_PASSWORD` / `CODEMAN_USERNAME` | HTTP Basic credentials. Username defaults to `admin`. |
|
|
| `CODEMAN_ALLOWED_HOSTS` | Extra Host and Origin allowlist entries for a reverse proxy. |
|
|
| `CODEMAN_INSTANCE` | Scopes the data directory and tmux socket together. Required for a second instance. |
|
|
| `CODEMAN_MULTIUSER` | Enables multi-user mode. |
|
|
| `CODEMAN_GESTURE` | Makes gesture control available to be enabled. |
|
|
| `CODEMAN_DOCKER_BRIDGE_HOOKS` | Lets in-container hooks reach the host on a loopback bind. |
|
|
| `CODEMAN_FILE_PICKER_ROOTS` | Extra roots for the path picker. |
|
|
| `CODEMAN_ALLOW_UNAUTHENTICATED_NETWORK` | Acknowledges exposing the server with no password. |
|
|
|
|
## Gotchas
|
|
|
|
- **A setting that did not sync is per device.** Change it again on that device.
|
|
- **The plan usage chip and its telemetry exporter are one setting.** Enabling the chip
|
|
without the exporter would leave it blank forever, so it is deliberately not separable.
|
|
- **Toggling a header button does nothing on a phone.** Phones deliberately ignore most of
|
|
the header chips.
|
|
- **Enabling a feature does not retroactively configure existing sessions.** The agent skill
|
|
injection, for instance, applies at session creation.
|
|
|
|
## Read next
|
|
|
|
- [The Dashboard](The-Dashboard) - what each control does once visible.
|
|
- [Keeping Agents Running](Keeping-Agents-Running) - the Respawn panel in depth.
|
|
- [Agent CLIs](Agent-CLIs) - model, effort, and permission modes.
|