jeo-code 0.6.35 → 0.6.36
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/CHANGELOG.md +13 -0
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/package.json +1 -1
- package/src/commands/launch/slash-views.ts +2 -0
- package/src/commands/launch/tmux.ts +38 -4
- package/src/commands/launch.ts +7 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
The README mirrors the latest 5 entries — regenerate with `bun run changelog:sync`.
|
|
8
8
|
|
|
9
|
+
## [0.6.36] - 2026-06-20
|
|
10
|
+
_When `jeo --tmux` flips the mouse on so you can drag-select, the drag now actually lands on the system clipboard — the in-session tmux profile sets `set-clipboard on` + a local `copy-command` on the CURRENT session only — plus `/help` documents the drag-to-copy and the Shift/Option-drag escape hatch, re-verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot._
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **A `--tmux` mouse drag-select now reaches the system clipboard instead of vanishing.** Turning the mouse on (so on-screen text can be selected) re-routes a drag into tmux copy-mode, where the selection used to die inside tmux's own buffer — `cmd/ctrl+v` got nothing. The launch path now applies the same clipboard repair to the CURRENT session that `tmuxProfileCommands` applies to jeo-owned sessions: new `currentTmuxClipboardCommands(env, deps)` emits `set-option set-clipboard on` (lets the copy-mode selection escape via OSC 52) and, when a local clipboard tool is on PATH, `set-option copy-command <tool>` (pipes the drag-select straight to `pbcopy` / `wl-copy` / `xclip` / `xsel` / `clip` for terminals that don't honor OSC 52). Both are written **session-locally — never `-t` or `-g`** — so the user's other tmux sessions are untouched; `JEO_TMUX_PROFILE=0` opts out, and `copy-command` is skipped when no tool is found.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **`/help` documents the drag-to-copy behavior and its escape hatch.** Two hotkey rows now explain that a drag selects on-screen text (copies on `cmd/ctrl+c`, and auto-copies to the system clipboard under `--tmux`) and that **Shift-drag** (iTerm/macOS: **Option-drag**) forces the terminal's own selection when tmux owns the mouse.
|
|
17
|
+
|
|
18
|
+
### Verified
|
|
19
|
+
- `scripts/mem-probe.ts` (2000 LaunchTui turns) shows a flat post-GC heap — per-turn slope **−541 bytes/turn**, returning to its settled floor — with zero `process` SIGINT/listener accumulation; `scripts/tmux-verify.sh smoke` boots `jeo --tmux` to a clean input box + model bar (EXIT 0). `bun run typecheck` clean and `bun test` **1748 pass / 0 fail** across 215 files, including the new `currentTmuxClipboardCommands` session-local / no-tool / opt-out cases in `test/tmux.test.ts`.
|
|
20
|
+
|
|
21
|
+
|
|
9
22
|
## [0.6.35] - 2026-06-20
|
|
10
23
|
_The prompt's Ctrl+C now clears a non-empty input box on the first press and only exits on the next press of an empty box; plus app-driven system-clipboard copy (OSC 52 + local tool, tmux-aware), drag-and-drop image attachment, a Ctrl-L prompt re-anchor, and a SIGCONT resume repaint — verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot check._
|
|
11
24
|
|
package/README.ja.md
CHANGED
|
@@ -200,11 +200,11 @@ CI は `.github/workflows/npm-publish.yml` で公開します — GitHub リリ
|
|
|
200
200
|
## 変更履歴 (Changelog)
|
|
201
201
|
|
|
202
202
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
203
|
+
- **[0.6.36]** (2026-06-20) — When `jeo --tmux` flips the mouse on so you can drag-select, the drag now actually lands on the system clipboard — the in-session tmux profile sets `set-clipboard on` + a local `copy-command` on the CURRENT session only — plus `/help` documents the drag-to-copy and the Shift/Option-drag escape hatch, re-verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot.
|
|
203
204
|
- **[0.6.35]** (2026-06-20) — The prompt's Ctrl+C now clears a non-empty input box on the first press and only exits on the next press of an empty box; plus app-driven system-clipboard copy (OSC 52 + local tool, tmux-aware), drag-and-drop image attachment, a Ctrl-L prompt re-anchor, and a SIGCONT resume repaint — verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot check.
|
|
204
205
|
- **[0.6.34]** (2026-06-20) — Per-session model memory — each saved session now remembers the model it was last using and restores it on `/resume` — plus clearer `jeo --tmux` attach diagnostics, a tmux session-name double-dash fix, and a more robust no-leak probe gate.
|
|
205
206
|
- **[0.6.33]** (2026-06-19) — A redesigned `jeo` forge mark — a hollow line-board crayfish/eyeglass emblem drawn as thick rounded-corner tubes (no letters, no DNA helix) — that now renders inside compact-scaled forge cards, plus a unified verification directive that adds gjc's test-quality contract, and a fresh `jeo --tmux` no-leak re-verification.
|
|
206
207
|
- **[0.6.32]** (2026-06-19) — Anthropic extended thinking is actually enabled now — the request finally sends a `thinking` block (adaptive for Opus/Sonnet 4.6+, budget for older), fixing reasoning on **opus-4-8** — plus a multi-token `/command`·`$skill` trigger highlight that paints every invocation and survives the trailing space, and a fresh `jeo --tmux` no-leak re-verification.
|
|
207
|
-
- **[0.6.31]** (2026-06-19) — Live "Thinking" indicator for signature-only reasoning models (Anthropic opus-4-7/4-8), a live color cue when a `/command` or `$skill` trigger is recognized in the prompt, and a rich gjc-style `/resume` session picker — plus a fresh `jeo --tmux` no-leak re-verification.
|
|
208
208
|
|
|
209
209
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
210
210
|
<!-- CHANGELOG:END -->
|
package/README.ko.md
CHANGED
|
@@ -200,11 +200,11 @@ CI는 `.github/workflows/npm-publish.yml`로 배포합니다 — GitHub 릴리
|
|
|
200
200
|
## 변경 이력 (Changelog)
|
|
201
201
|
|
|
202
202
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
203
|
+
- **[0.6.36]** (2026-06-20) — When `jeo --tmux` flips the mouse on so you can drag-select, the drag now actually lands on the system clipboard — the in-session tmux profile sets `set-clipboard on` + a local `copy-command` on the CURRENT session only — plus `/help` documents the drag-to-copy and the Shift/Option-drag escape hatch, re-verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot.
|
|
203
204
|
- **[0.6.35]** (2026-06-20) — The prompt's Ctrl+C now clears a non-empty input box on the first press and only exits on the next press of an empty box; plus app-driven system-clipboard copy (OSC 52 + local tool, tmux-aware), drag-and-drop image attachment, a Ctrl-L prompt re-anchor, and a SIGCONT resume repaint — verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot check.
|
|
204
205
|
- **[0.6.34]** (2026-06-20) — Per-session model memory — each saved session now remembers the model it was last using and restores it on `/resume` — plus clearer `jeo --tmux` attach diagnostics, a tmux session-name double-dash fix, and a more robust no-leak probe gate.
|
|
205
206
|
- **[0.6.33]** (2026-06-19) — A redesigned `jeo` forge mark — a hollow line-board crayfish/eyeglass emblem drawn as thick rounded-corner tubes (no letters, no DNA helix) — that now renders inside compact-scaled forge cards, plus a unified verification directive that adds gjc's test-quality contract, and a fresh `jeo --tmux` no-leak re-verification.
|
|
206
207
|
- **[0.6.32]** (2026-06-19) — Anthropic extended thinking is actually enabled now — the request finally sends a `thinking` block (adaptive for Opus/Sonnet 4.6+, budget for older), fixing reasoning on **opus-4-8** — plus a multi-token `/command`·`$skill` trigger highlight that paints every invocation and survives the trailing space, and a fresh `jeo --tmux` no-leak re-verification.
|
|
207
|
-
- **[0.6.31]** (2026-06-19) — Live "Thinking" indicator for signature-only reasoning models (Anthropic opus-4-7/4-8), a live color cue when a `/command` or `$skill` trigger is recognized in the prompt, and a rich gjc-style `/resume` session picker — plus a fresh `jeo --tmux` no-leak re-verification.
|
|
208
208
|
|
|
209
209
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
210
210
|
<!-- CHANGELOG:END -->
|
package/README.md
CHANGED
|
@@ -200,11 +200,11 @@ Required npm token permissions (repository secret `NPM_TOKEN`):
|
|
|
200
200
|
## Changelog
|
|
201
201
|
|
|
202
202
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
203
|
+
- **[0.6.36]** (2026-06-20) — When `jeo --tmux` flips the mouse on so you can drag-select, the drag now actually lands on the system clipboard — the in-session tmux profile sets `set-clipboard on` + a local `copy-command` on the CURRENT session only — plus `/help` documents the drag-to-copy and the Shift/Option-drag escape hatch, re-verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot.
|
|
203
204
|
- **[0.6.35]** (2026-06-20) — The prompt's Ctrl+C now clears a non-empty input box on the first press and only exits on the next press of an empty box; plus app-driven system-clipboard copy (OSC 52 + local tool, tmux-aware), drag-and-drop image attachment, a Ctrl-L prompt re-anchor, and a SIGCONT resume repaint — verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot check.
|
|
204
205
|
- **[0.6.34]** (2026-06-20) — Per-session model memory — each saved session now remembers the model it was last using and restores it on `/resume` — plus clearer `jeo --tmux` attach diagnostics, a tmux session-name double-dash fix, and a more robust no-leak probe gate.
|
|
205
206
|
- **[0.6.33]** (2026-06-19) — A redesigned `jeo` forge mark — a hollow line-board crayfish/eyeglass emblem drawn as thick rounded-corner tubes (no letters, no DNA helix) — that now renders inside compact-scaled forge cards, plus a unified verification directive that adds gjc's test-quality contract, and a fresh `jeo --tmux` no-leak re-verification.
|
|
206
207
|
- **[0.6.32]** (2026-06-19) — Anthropic extended thinking is actually enabled now — the request finally sends a `thinking` block (adaptive for Opus/Sonnet 4.6+, budget for older), fixing reasoning on **opus-4-8** — plus a multi-token `/command`·`$skill` trigger highlight that paints every invocation and survives the trailing space, and a fresh `jeo --tmux` no-leak re-verification.
|
|
207
|
-
- **[0.6.31]** (2026-06-19) — Live "Thinking" indicator for signature-only reasoning models (Anthropic opus-4-7/4-8), a live color cue when a `/command` or `$skill` trigger is recognized in the prompt, and a rich gjc-style `/resume` session picker — plus a fresh `jeo --tmux` no-leak re-verification.
|
|
208
208
|
|
|
209
209
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
210
210
|
<!-- CHANGELOG:END -->
|
package/README.zh.md
CHANGED
|
@@ -200,11 +200,11 @@ CI 通过 `.github/workflows/npm-publish.yml` 发布 — GitHub 发布 release
|
|
|
200
200
|
## 更新日志 (Changelog)
|
|
201
201
|
|
|
202
202
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
203
|
+
- **[0.6.36]** (2026-06-20) — When `jeo --tmux` flips the mouse on so you can drag-select, the drag now actually lands on the system clipboard — the in-session tmux profile sets `set-clipboard on` + a local `copy-command` on the CURRENT session only — plus `/help` documents the drag-to-copy and the Shift/Option-drag escape hatch, re-verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot.
|
|
203
204
|
- **[0.6.35]** (2026-06-20) — The prompt's Ctrl+C now clears a non-empty input box on the first press and only exits on the next press of an empty box; plus app-driven system-clipboard copy (OSC 52 + local tool, tmux-aware), drag-and-drop image attachment, a Ctrl-L prompt re-anchor, and a SIGCONT resume repaint — verified leak-free (`mem-probe`) with a fresh `jeo --tmux` boot check.
|
|
204
205
|
- **[0.6.34]** (2026-06-20) — Per-session model memory — each saved session now remembers the model it was last using and restores it on `/resume` — plus clearer `jeo --tmux` attach diagnostics, a tmux session-name double-dash fix, and a more robust no-leak probe gate.
|
|
205
206
|
- **[0.6.33]** (2026-06-19) — A redesigned `jeo` forge mark — a hollow line-board crayfish/eyeglass emblem drawn as thick rounded-corner tubes (no letters, no DNA helix) — that now renders inside compact-scaled forge cards, plus a unified verification directive that adds gjc's test-quality contract, and a fresh `jeo --tmux` no-leak re-verification.
|
|
206
207
|
- **[0.6.32]** (2026-06-19) — Anthropic extended thinking is actually enabled now — the request finally sends a `thinking` block (adaptive for Opus/Sonnet 4.6+, budget for older), fixing reasoning on **opus-4-8** — plus a multi-token `/command`·`$skill` trigger highlight that paints every invocation and survives the trailing space, and a fresh `jeo --tmux` no-leak re-verification.
|
|
207
|
-
- **[0.6.31]** (2026-06-19) — Live "Thinking" indicator for signature-only reasoning models (Anthropic opus-4-7/4-8), a live color cue when a `/command` or `$skill` trigger is recognized in the prompt, and a rich gjc-style `/resume` session picker — plus a fresh `jeo --tmux` no-leak re-verification.
|
|
208
208
|
|
|
209
209
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
210
210
|
<!-- CHANGELOG:END -->
|
package/package.json
CHANGED
|
@@ -23,6 +23,8 @@ export function hotkeysLines(): string[] {
|
|
|
23
23
|
" @path mention a file (Tab completes relative paths)",
|
|
24
24
|
" Ctrl-V paste a copied image from the clipboard into the next message",
|
|
25
25
|
" drag-drop drop an image file onto the box to attach it (its path becomes [image #N])",
|
|
26
|
+
" drag select on-screen text to copy — copies on cmd/ctrl+c; under --tmux a drag auto-copies to the system clipboard",
|
|
27
|
+
" Shift-drag force the terminal's own selection when tmux owns the mouse (iTerm/macOS: Option-drag)",
|
|
26
28
|
];
|
|
27
29
|
}
|
|
28
30
|
|
|
@@ -106,8 +106,8 @@ export function shellQuote(arg: string): string {
|
|
|
106
106
|
*/
|
|
107
107
|
export function shouldEnableCurrentTmuxMouse(env: Record<string, string | undefined>): boolean {
|
|
108
108
|
return !!env.TMUX
|
|
109
|
-
&&
|
|
110
|
-
&&
|
|
109
|
+
&& env.JEO_TMUX_LAUNCHED !== "1"
|
|
110
|
+
&& env.JEO_TMUX_MOUSE !== "0";
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
/**
|
|
@@ -160,7 +160,7 @@ export function tmuxProfileCommands(
|
|
|
160
160
|
): TmuxProfileCommand[] {
|
|
161
161
|
const t = `=${target}:`;
|
|
162
162
|
const commands: TmuxProfileCommand[] = [];
|
|
163
|
-
if (
|
|
163
|
+
if (env.JEO_TMUX_MOUSE !== "0") {
|
|
164
164
|
commands.push({
|
|
165
165
|
description: "enable tmux mouse scrolling (wheel-up → copy-mode over real history)",
|
|
166
166
|
args: ["set-option", "-t", t, "mouse", "on"],
|
|
@@ -182,7 +182,7 @@ export function tmuxProfileCommands(
|
|
|
182
182
|
args: ["set-option", "-t", t, "@jeo-project", meta.project],
|
|
183
183
|
});
|
|
184
184
|
}
|
|
185
|
-
if (
|
|
185
|
+
if (env.JEO_TMUX_PROFILE !== "0") {
|
|
186
186
|
commands.push(
|
|
187
187
|
{
|
|
188
188
|
description: "enable tmux clipboard integration",
|
|
@@ -210,6 +210,40 @@ export function tmuxProfileCommands(
|
|
|
210
210
|
return commands;
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
+
/**
|
|
214
|
+
* Clipboard set-options for the CURRENT (foreign) tmux session that the in-session
|
|
215
|
+
* `jeo --tmux` path turns `mouse on` for. Enabling the mouse re-routes a plain
|
|
216
|
+
* drag into copy-mode, so without these a drag-select no longer lands anywhere:
|
|
217
|
+
* - `set-clipboard on` lets the copy-mode selection reach the outer terminal via OSC52;
|
|
218
|
+
* - `copy-command` pipes that selection straight to the local clipboard tool
|
|
219
|
+
* (pbcopy / wl-copy / xclip / xsel / clip), so a drag-select copies for `cmd+v`
|
|
220
|
+
* even where OSC52 is not honored.
|
|
221
|
+
* Applied WITHOUT `-t` (the current session only — never -g, so the user's other
|
|
222
|
+
* sessions are untouched). `JEO_TMUX_PROFILE=0` opts out; `copy-command` is skipped
|
|
223
|
+
* when no clipboard tool is on PATH. This is the in-session analogue of the
|
|
224
|
+
* clipboard block in {@link tmuxProfileCommands} for jeo-owned sessions.
|
|
225
|
+
*/
|
|
226
|
+
export function currentTmuxClipboardCommands(
|
|
227
|
+
env: Record<string, string | undefined>,
|
|
228
|
+
deps: { platform?: NodeJS.Platform; which?: (bin: string) => string | null } = {},
|
|
229
|
+
): TmuxProfileCommand[] {
|
|
230
|
+
if (env.JEO_TMUX_PROFILE === "0") return [];
|
|
231
|
+
const commands: TmuxProfileCommand[] = [
|
|
232
|
+
{
|
|
233
|
+
description: "enable tmux clipboard integration",
|
|
234
|
+
args: ["set-option", "set-clipboard", "on"],
|
|
235
|
+
},
|
|
236
|
+
];
|
|
237
|
+
const copyCmd = tmuxCopyCommand(deps.platform ?? process.platform, deps.which ?? ((bin: string) => Bun.which(bin)));
|
|
238
|
+
if (copyCmd) {
|
|
239
|
+
commands.push({
|
|
240
|
+
description: "pipe copy-mode selection to the system clipboard",
|
|
241
|
+
args: ["set-option", "copy-command", copyCmd],
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
return commands;
|
|
245
|
+
}
|
|
246
|
+
|
|
213
247
|
/**
|
|
214
248
|
* Resolve a git worktree path (gjc `--worktree <path>` parity). If the path
|
|
215
249
|
* already exists it is reused as-is; otherwise a new worktree is created on a
|
package/src/commands/launch.ts
CHANGED
|
@@ -118,6 +118,7 @@ import {
|
|
|
118
118
|
shouldEnableCurrentTmuxMouse,
|
|
119
119
|
tmuxLaunchCommand,
|
|
120
120
|
tmuxProfileCommands,
|
|
121
|
+
currentTmuxClipboardCommands,
|
|
121
122
|
resolveWorktree,
|
|
122
123
|
shellQuote,
|
|
123
124
|
type TmuxCreateResult,
|
|
@@ -186,6 +187,7 @@ export {
|
|
|
186
187
|
shouldEnableCurrentTmuxMouse,
|
|
187
188
|
tmuxLaunchCommand,
|
|
188
189
|
tmuxProfileCommands,
|
|
190
|
+
currentTmuxClipboardCommands,
|
|
189
191
|
resolveWorktree,
|
|
190
192
|
shellQuote,
|
|
191
193
|
type TmuxCreateResult,
|
|
@@ -420,6 +422,11 @@ export async function runLaunchCommand(args: string[]): Promise<void> {
|
|
|
420
422
|
const tmuxBin = Bun.which("tmux");
|
|
421
423
|
if (tmuxBin) {
|
|
422
424
|
try { Bun.spawnSync([tmuxBin, "set-option", "mouse", "on"]); } catch { /* best-effort */ }
|
|
425
|
+
// Enabling the mouse re-routes a drag into copy-mode; set-clipboard +
|
|
426
|
+
// copy-command make that drag-select actually land on the system clipboard.
|
|
427
|
+
for (const c of currentTmuxClipboardCommands(process.env)) {
|
|
428
|
+
try { Bun.spawnSync([tmuxBin, ...c.args]); } catch { /* best-effort */ }
|
|
429
|
+
}
|
|
423
430
|
}
|
|
424
431
|
}
|
|
425
432
|
}
|