@ictechgy/lterm 1.0.12 → 1.0.14

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.ko.md CHANGED
@@ -76,7 +76,7 @@ GitHub에서 Cargo로 설치할 때는 release tag를 고정하세요. 아래
76
76
  README 릴리스 기준이며, 더 최신 tag가 있는지는 Releases 페이지에서 확인하세요:
77
77
 
78
78
  ```bash
79
- cargo install --locked --git https://github.com/ictechgy/light_terminal --tag v1.0.12
79
+ cargo install --locked --git https://github.com/ictechgy/light_terminal --tag v1.0.14
80
80
  ```
81
81
 
82
82
  저장소를 클론한 뒤 직접 빌드하려면 Rust 1.85 이상이 필요합니다.
@@ -343,7 +343,7 @@ lterm codex --mobile --tail 200 --refresh 1s --read-only
343
343
  lterm agy --status -- -p "lterm status를 유지해줘"
344
344
  ```
345
345
 
346
- Claude/Codex/OpenCode/Copilot/Cursor Agent/Antigravity/Kiro/Jules/Aider/Goose/Amp/Crush/Kimi/Qwen/Gemini profile의 기본 attach 정책은 `auto`입니다. 데스크톱에서는 lterm status bar를 끈 raw full-terminal attach를 사용하므로 각 도구의 자체 TUI/status/alternate-screen 렌더링이 그대로 동작합니다. Termius 계열 모바일 클라이언트에서는 `auto`가 위에서 설명한 normal-screen transcript로 전환되어 긴 agent 출력을 모바일 기본 scrollback으로 읽을 수 있습니다. OMX/OMC는 데스크톱에서 기존 lightweight status/HUD 흐름과의 연속성을 위해 lterm status bar를 기본 표시합니다. 다만 모바일로 attach하면 모바일 transcript가 우선합니다. raw attach를 강제하려면 `--raw`, transcript를 강제하려면 `--mobile`을 사용하세요. `--status`로 lterm status bar를 강제로 켜거나, raw launch/profile에서 표시되는 status bar는 `--no-status`로 숨길 수 있습니다. agent에 넘길 인자가 lterm launch option처럼 보일 수 있으면 앞에 `--`를 두세요. `lterm agent <name>`은 `PATH`에서 찾을 수 있는 안전한 bare command name이면 바로 동작하므로, 예를 들어 `lterm agent qwen-code`처럼 미래/서드파티 agent도 쓸 수 있습니다. `lterm run -- <command>`는 더 낮은 수준의 tmux-compatible primitive를 직접 쓰고 싶을 때만 사용하세요.
346
+ Claude/Codex/OpenCode/Copilot/Cursor Agent/Antigravity/Kiro/Jules/Aider/Goose/Amp/Crush/Kimi/Qwen/Gemini/OMX/OMC profile의 기본 attach 정책은 `auto`입니다. 데스크톱에서는 lterm status bar를 끈 raw full-terminal attach를 사용하므로 각 도구의 자체 TUI/status/alternate-screen 렌더링이 그대로 동작합니다. Termius 계열 모바일 클라이언트에서는 `auto`가 위에서 설명한 normal-screen transcript로 전환되어 긴 agent 출력을 모바일 기본 scrollback으로 읽을 수 있습니다. raw attach를 강제하려면 `--raw`, transcript를 강제하려면 `--mobile`을 사용하세요. `--status`로 lterm status bar를 강제로 켜거나, raw launch/profile에서 표시되는 status bar는 `--no-status`로 숨길 수 있습니다. agent에 넘길 인자가 lterm launch option처럼 보일 수 있으면 앞에 `--`를 두세요. `lterm agent <name>`은 `PATH`에서 찾을 수 있는 안전한 bare command name이면 바로 동작하므로, 예를 들어 `lterm agent qwen-code`처럼 미래/서드파티 agent도 쓸 수 있습니다. `lterm run -- <command>`는 더 낮은 수준의 tmux-compatible primitive를 직접 쓰고 싶을 때만 사용하세요.
347
347
 
348
348
  launcher 제어 옵션은 agent의 흔한 short flag(`-c` 등)를 빼앗지 않도록 long-only(`--name`, `--cwd`, `--detach`, `--status`, `--no-status`, `--status-theme`, `--status-color`, `--attach-mode`, `--raw`, `--mobile`, `--tail`, `--refresh`, `--read-only`)입니다. 이 옵션들은 `claude`, `codex`, `opencode`, `copilot`, `cursor-agent`, `agy`, `kiro`, `jules`, `aider`, `goose`, `amp`, `crush`, `kimi`, `qwen`, `gemini`, `omx`, `omc`, `agent <profile>`에 동일하게 적용됩니다. 해당 agent 세션이 이후 attach에서도 특정 lterm status 색을 유지하게 하려면 `--status-theme` / `--status-color`를 사용하세요.
349
349
  `--detach`는 각 field의 control character와 Unicode line/paragraph separator를 공백으로 바꾼 `name<TAB>pane<TAB>command`를 출력하며, 나중에 `lterm resume <name>` 또는 호환 이름 `lterm attach <name>`으로 다시 붙으면 됩니다. detach record에는 `--cwd`가 포함되지 않으므로 나중에 필요하면 session을 조회하세요.
@@ -411,6 +411,11 @@ lterm run -- codex exec "저장소를 요약해줘"
411
411
  호환성 참고: lterm은 각 root session을 하나의 pseudo-window로 모델링합니다
412
412
  (`window_index=0`, `window_panes=1`). lterm은 client별 process/TTY metadata를
413
413
  노출하지 않기 때문에 `client_pid`와 `client_tty`는 빈 문자열로 확장됩니다.
414
+ Detached `split-window -d -t <target>`은 같은 daemon socket 안에서 기존 live lterm
415
+ target이면 현재 pane이 아니어도 허용합니다. 이는 tmux의 cross-pane helper launch
416
+ 동작을 맞추기 위한 것이며, daemon은 요청 처리 전에 같은 OS 사용자 peer credential을
417
+ 검증합니다. detached helper는 target pane 안에 붙지 않고 별도 lterm session으로
418
+ 생성됩니다.
414
419
  `lterm tmux-compat list-commands --verbose`는 `command`, alias, support tier,
415
420
  usage를 tab-separated로 출력하고, `--json`은 machine-readable row를 출력합니다.
416
421
  Support tier는 lterm compatibility boundary 안에서 `full`, `partial`, `noop`
@@ -418,6 +423,14 @@ Support tier는 lterm compatibility boundary 안에서 `full`, `partial`, `noop`
418
423
  shim에 도달했을 때 opt-in stderr diagnostic row를 출력합니다.
419
424
  tmux `-f` filter는 조용히 무시하지 않고 의도적으로 거부합니다.
420
425
 
426
+ Status bar redraw는 보수적으로 allowlist된 terminal client(예: xterm/iTerm2/WezTerm
427
+ identity)에서만 xterm SGR stack control을 사용해 실행 중인 TUI의
428
+ foreground/background color state를 빼앗지 않도록 합니다.
429
+ `LTERM_STATUS_SGR_STACK=0`으로 `CSI # {` / `CSI # }`를 끌 수 있고, 클라이언트가
430
+ 해당 private CSI를 지원하거나 안전하게 무시함을 확인했다면 `1`로 강제할 수 있습니다.
431
+ Kitty, Alacritty, Ghostty, Termius, generic `TERM=xterm-*` 값은 SGR-stack 동작이
432
+ 검증될 때까지 opt-in 경로로 둡니다.
433
+
421
434
  ## cmux 동작
422
435
 
423
436
  `lterm tmux-compat split-window`가 cmux 환경(`CMUX_WORKSPACE_ID`, `CMUX_SURFACE_ID`, 또는 cmux socket)을 감지하면 다음 순서로 동작합니다.
package/README.md CHANGED
@@ -79,7 +79,7 @@ With Cargo from GitHub, pin a release tag. The example below uses the current
79
79
  README release; check the Releases page for newer tags:
80
80
 
81
81
  ```bash
82
- cargo install --locked --git https://github.com/ictechgy/light_terminal --tag v1.0.12
82
+ cargo install --locked --git https://github.com/ictechgy/light_terminal --tag v1.0.14
83
83
  ```
84
84
 
85
85
  Building from this checkout requires Rust 1.85 or newer:
@@ -354,7 +354,7 @@ lterm codex --mobile --tail 200 --refresh 1s --read-only
354
354
  lterm agy --status -- -p "keep lterm status visible"
355
355
  ```
356
356
 
357
- Known Claude/Codex/OpenCode/Copilot/Cursor Agent/Antigravity/Kiro/Jules/Aider/Goose/Amp/Crush/Kimi/Qwen/Gemini profiles default to the `auto` attach policy. On desktop that means a raw full-terminal attach without the lterm status bar, so their own TUI/status/alternate-screen rendering stays in control. On Termius-style mobile clients, `auto` uses the normal-screen transcript described above so long agent output can be reviewed with native mobile scrollback. OMX/OMC keep the lterm status bar visible by default for desktop continuity with their lightweight status/HUD workflow; mobile auto transcript still takes precedence when the attaching client is detected as mobile. Use `--raw` to force raw attach, `--mobile` to force transcript attach, `--status` to force the lterm status bar on, or `--no-status` to suppress it for any raw launch/profile that would otherwise show it. Put `--` before agent arguments that could be parsed as lterm launch options. `lterm agent <name>` also works for any safe bare command name available in `PATH` (for example `lterm agent qwen-code`); use `lterm run -- <command>` only when you want the lower-level tmux-compatible primitive directly.
357
+ Known Claude/Codex/OpenCode/Copilot/Cursor Agent/Antigravity/Kiro/Jules/Aider/Goose/Amp/Crush/Kimi/Qwen/Gemini/OMX/OMC profiles default to the `auto` attach policy. On desktop that means a raw full-terminal attach without the lterm status bar, so their own TUI/status/alternate-screen rendering stays in control. On Termius-style mobile clients, `auto` uses the normal-screen transcript described above so long agent output can be reviewed with native mobile scrollback. Use `--raw` to force raw attach, `--mobile` to force transcript attach, `--status` to force the lterm status bar on, or `--no-status` to suppress it for any raw launch/profile that would otherwise show it. Put `--` before agent arguments that could be parsed as lterm launch options. `lterm agent <name>` also works for any safe bare command name available in `PATH` (for example `lterm agent qwen-code`); use `lterm run -- <command>` only when you want the lower-level tmux-compatible primitive directly.
358
358
 
359
359
  Launcher controls are long-only (`--name`, `--cwd`, `--detach`, `--status`, `--no-status`, `--status-theme`, `--status-color`, `--attach-mode`, `--raw`, `--mobile`, `--tail`, `--refresh`, `--read-only`) so common agent short flags such as `-c` pass through naturally. They apply uniformly to built-in agent shortcuts such as `claude`, `codex`, `opencode`, `copilot`, `cursor-agent`, `agy`, `kiro`, `jules`, `aider`, `goose`, `amp`, `crush`, `kimi`, `qwen`, `gemini`, `omx`, `omc`, and `agent <profile>`. Use `--status-theme` / `--status-color` on agent launches when you want that session to keep a specific lterm status color across future attaches.
360
360
  `--detach` prints `name<TAB>pane<TAB>command` with control characters and Unicode line/paragraph separators in each field replaced by spaces; resume later with `lterm resume <name>` or compatibility name `lterm attach <name>`. The detach record does not echo `--cwd`; query the session if you need to inspect it later.
@@ -424,8 +424,15 @@ Compatibility notes: lterm models each root session as one pseudo-window
424
424
  (`window_index=0`, `window_panes=1`). `client_pid` and `client_tty` expand to
425
425
  empty strings because lterm does not expose per-client process or TTY metadata.
426
426
  tmux `-f` filters are intentionally rejected instead of being silently ignored.
427
+ Detached `split-window -d -t <target>` accepts any existing live lterm target,
428
+ matching tmux's cross-pane helper launch behavior inside the same daemon socket;
429
+ the daemon verifies same-OS-user peer credentials before honoring requests, and
430
+ the detached helper is created as a separate lterm session rather than being
431
+ attached into the target pane.
427
432
  Use `lterm tmux-compat list-commands --verbose` for tab-separated `command`, alias, support tier, and usage fields, or `--json` for machine-readable rows. Support tiers are `full`, `partial`, and `noop` within lterm's compatibility boundary. Set `LTERM_DEBUG_TMUX=1` to emit an opt-in stderr diagnostic row when an unsupported tmux command reaches the shim.
428
433
 
434
+ Status-bar redraws use xterm SGR stack controls only on conservatively allowlisted terminal clients (for example xterm/iTerm2/WezTerm identities) to avoid stealing the foreground/background color state of the running TUI. Set `LTERM_STATUS_SGR_STACK=0` to disable `CSI # {` / `CSI # }`; set it to `1` to force the stack after verifying your client supports or safely ignores those private CSI sequences. Kitty, Alacritty, Ghostty, Termius, and generic `TERM=xterm-*` values stay opt-in until their SGR-stack behavior is verified.
435
+
429
436
  ## cmux behavior
430
437
 
431
438
  When `lterm tmux-compat split-window` detects cmux (via `CMUX_WORKSPACE_ID`, `CMUX_SURFACE_ID`, or a cmux socket), it:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ictechgy/lterm",
3
- "version": "1.0.12",
3
+ "version": "1.0.14",
4
4
  "description": "Lightweight tmux-compatible terminal session daemon with cmux-friendly notifications.",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "homepage": "https://github.com/ictechgy/light_terminal#readme",
@@ -36,10 +36,10 @@
36
36
  "scripts/validate_npm_packages.mjs"
37
37
  ],
38
38
  "optionalDependencies": {
39
- "lterm-darwin-arm64": "1.0.12",
40
- "lterm-darwin-x64": "1.0.12",
41
- "lterm-linux-arm64": "1.0.12",
42
- "lterm-linux-x64": "1.0.12"
39
+ "lterm-darwin-arm64": "1.0.14",
40
+ "lterm-darwin-x64": "1.0.14",
41
+ "lterm-linux-arm64": "1.0.14",
42
+ "lterm-linux-x64": "1.0.14"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=16"