@popoverinstall/cli 0.7.0 → 0.7.2
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 +34 -0
- package/dist/changelog.d.ts +18 -0
- package/dist/changelog.d.ts.map +1 -0
- package/dist/changelog.js +126 -0
- package/dist/changelog.js.map +1 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +2 -5
- package/dist/doctor.js.map +1 -1
- package/dist/exec.d.ts +49 -0
- package/dist/exec.d.ts.map +1 -0
- package/dist/exec.js +58 -0
- package/dist/exec.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -14
- package/dist/index.js.map +1 -1
- package/dist/pager.d.ts +87 -0
- package/dist/pager.d.ts.map +1 -0
- package/dist/pager.js +364 -0
- package/dist/pager.js.map +1 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +4 -8
- package/dist/setup.js.map +1 -1
- package/package.json +3 -3
- package/plugin/.claude-plugin/plugin.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,40 @@ already here:
|
|
|
15
15
|
Every version that ships needs an entry — an update with nothing to print says nothing at
|
|
16
16
|
all, which reads as though the update did not happen.
|
|
17
17
|
|
|
18
|
+
## 0.7.2
|
|
19
|
+
|
|
20
|
+
### Fixes
|
|
21
|
+
|
|
22
|
+
- `popover update` updates the machine on Windows instead of handing you a command. It used
|
|
23
|
+
to print `npm install -g @popoverinstall/cli@latest` and stop, on the belief that replacing
|
|
24
|
+
the `popover.cmd` shim while it was running would corrupt it — npm's shims are built to
|
|
25
|
+
survive exactly that, which is how npm upgrades itself. Worse, the command it printed could
|
|
26
|
+
fail with `ETARGET: No matching version found` naming the release you were trying to
|
|
27
|
+
install: npm caches registry metadata for a few minutes after a publish, and the two
|
|
28
|
+
documents it caches can disagree about which versions exist. The update now re-checks that
|
|
29
|
+
metadata rather than trusting the cache, and if a release really has not propagated yet it
|
|
30
|
+
says so and tells you to try again shortly, instead of reporting that the version does not
|
|
31
|
+
exist.
|
|
32
|
+
- `popover setup` registers the plugin on Windows when your user directory has a space in it.
|
|
33
|
+
It was passing the plugin's path through a shell unquoted, so Claude Code was told to add a
|
|
34
|
+
marketplace at the first half of the path and answered `Path does not exist` — which also
|
|
35
|
+
meant every `popover update` left the old plugin registered against the new daemon.
|
|
36
|
+
`popover uninstall` was failing to unhook Claude Code on Windows for a related reason.
|
|
37
|
+
|
|
38
|
+
## 0.7.1
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
|
|
42
|
+
- `popover changelog` says what the last update changed, whenever you want to know rather than
|
|
43
|
+
only in the second the update prints it. Press `1` and the whole history opens in a pane you
|
|
44
|
+
scroll inside — bounded to part of the window, and erased when you leave it, so reading back
|
|
45
|
+
through eight releases does not push everything else out of your terminal. `popover changelog
|
|
46
|
+
--all` goes straight there, and prints plainly when piped into something else.
|
|
47
|
+
- popover has its own domain: a fresh `popover login` now connects to www.popover.to instead of
|
|
48
|
+
the old vercel.app address. Nothing changes for a machine already logged in — the origin it
|
|
49
|
+
connected through is kept in its credentials and still preferred — and the old hostname keeps
|
|
50
|
+
resolving, so installs of earlier releases carry on working.
|
|
51
|
+
|
|
18
52
|
## 0.7.0
|
|
19
53
|
|
|
20
54
|
### Features
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `popover changelog` — what the last update changed, and the back catalogue behind it.
|
|
3
|
+
*
|
|
4
|
+
* `update` prints the notes for what it just installed and that is the only time they are
|
|
5
|
+
* ever shown; miss the scroll-by, or have the update fail before it gets there, and there is
|
|
6
|
+
* no way back to them. This is that way back.
|
|
7
|
+
*
|
|
8
|
+
* The two views are deliberately different in kind. The newest release prints normally and
|
|
9
|
+
* stays in the scrollback, because it is short and it is the answer to the question actually
|
|
10
|
+
* being asked. The full history opens in a pane that erases itself (see pager.ts) — a couple
|
|
11
|
+
* of hundred lines of releases you have already read is not something to leave behind in a
|
|
12
|
+
* terminal you are working in.
|
|
13
|
+
*
|
|
14
|
+
* Both views come out of the same `parseChangelog` / `renderReleaseNotes` pair that `update`
|
|
15
|
+
* uses, so there is one parser and one renderer for release notes, not two that can drift.
|
|
16
|
+
*/
|
|
17
|
+
export declare function changelog(argv: string[]): Promise<number>;
|
|
18
|
+
//# sourceMappingURL=changelog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../src/changelog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAiDH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC/D"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `popover changelog` — what the last update changed, and the back catalogue behind it.
|
|
3
|
+
*
|
|
4
|
+
* `update` prints the notes for what it just installed and that is the only time they are
|
|
5
|
+
* ever shown; miss the scroll-by, or have the update fail before it gets there, and there is
|
|
6
|
+
* no way back to them. This is that way back.
|
|
7
|
+
*
|
|
8
|
+
* The two views are deliberately different in kind. The newest release prints normally and
|
|
9
|
+
* stays in the scrollback, because it is short and it is the answer to the question actually
|
|
10
|
+
* being asked. The full history opens in a pane that erases itself (see pager.ts) — a couple
|
|
11
|
+
* of hundred lines of releases you have already read is not something to leave behind in a
|
|
12
|
+
* terminal you are working in.
|
|
13
|
+
*
|
|
14
|
+
* Both views come out of the same `parseChangelog` / `renderReleaseNotes` pair that `update`
|
|
15
|
+
* uses, so there is one parser and one renderer for release notes, not two that can drift.
|
|
16
|
+
*/
|
|
17
|
+
import { readFileSync } from "node:fs";
|
|
18
|
+
import { parseChangelog, renderReleaseNotes } from "@popoverinstall/shared";
|
|
19
|
+
import { keyReader, regionTextWidth, scrollRegion } from "./pager.js";
|
|
20
|
+
import { box, glyph, style } from "./theme.js";
|
|
21
|
+
import { bad, dim } from "./ui.js";
|
|
22
|
+
const SOURCE_URL = "https://github.com/many-ideations/popover/blob/main/CHANGELOG.md";
|
|
23
|
+
/**
|
|
24
|
+
* Where the notes live, in order of preference.
|
|
25
|
+
*
|
|
26
|
+
* The first is the copy `prepack` stages into the package (scripts/stage-plugin.mjs) and
|
|
27
|
+
* npm installs beside us — the same file `printReleaseNotes` reads, so what prints describes
|
|
28
|
+
* the build actually on disk rather than whatever the registry currently advertises.
|
|
29
|
+
*
|
|
30
|
+
* The second is the repo root, which is what a dev checkout has: nothing has run `prepack`
|
|
31
|
+
* there, so the staged copy does not exist yet.
|
|
32
|
+
*/
|
|
33
|
+
const CANDIDATES = ["../CHANGELOG.md", "../../../CHANGELOG.md"];
|
|
34
|
+
function readChangelog() {
|
|
35
|
+
for (const candidate of CANDIDATES) {
|
|
36
|
+
try {
|
|
37
|
+
return readFileSync(new URL(candidate, import.meta.url), "utf8");
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
/* try the next one */
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Release notes as lines that sit at the frame's own left margin.
|
|
47
|
+
*
|
|
48
|
+
* `renderReleaseNotes` indents everything two spaces, for printing straight to a terminal
|
|
49
|
+
* where nothing else provides a margin. Both views here are already inside a frame that
|
|
50
|
+
* provides one, so that indent is taken back off — left on, a version heading would sit four
|
|
51
|
+
* columns in and the whole block would read as nested inside its own box.
|
|
52
|
+
*
|
|
53
|
+
* The two columns are handed back to the wrap width, so the text still fills the frame.
|
|
54
|
+
*/
|
|
55
|
+
function notes(releases, width) {
|
|
56
|
+
return renderReleaseNotes(releases, width + 2)
|
|
57
|
+
.split("\n")
|
|
58
|
+
.map((line) => (line.startsWith(" ") ? line.slice(2) : line));
|
|
59
|
+
}
|
|
60
|
+
export async function changelog(argv) {
|
|
61
|
+
const all = argv.includes("--all");
|
|
62
|
+
const markdown = readChangelog();
|
|
63
|
+
if (markdown === null) {
|
|
64
|
+
bad("No changelog shipped with this install.");
|
|
65
|
+
dim(`Read it online instead: ${SOURCE_URL}`);
|
|
66
|
+
return 1;
|
|
67
|
+
}
|
|
68
|
+
const releases = parseChangelog(markdown);
|
|
69
|
+
if (releases.length === 0) {
|
|
70
|
+
bad("The changelog shipped with this install has no releases in it.");
|
|
71
|
+
dim(`Read it online instead: ${SOURCE_URL}`);
|
|
72
|
+
return 1;
|
|
73
|
+
}
|
|
74
|
+
// Wrapped to the pane's text width for both views, so a line that fits the box also fits
|
|
75
|
+
// the region and neither has to be re-flowed when you switch between them.
|
|
76
|
+
const width = regionTextWidth();
|
|
77
|
+
const history = () => notes(releases, width);
|
|
78
|
+
if (all) {
|
|
79
|
+
await scrollRegion({ title: "Changelog", lines: history() });
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
const latest = releases[0];
|
|
83
|
+
box({ title: "What's new", lines: notes([latest], width), minWidth: width });
|
|
84
|
+
// One release in the file is the whole file. Offering to open it as history would be
|
|
85
|
+
// offering to show the same thing again.
|
|
86
|
+
if (releases.length === 1)
|
|
87
|
+
return 0;
|
|
88
|
+
return menu(history);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The menu under the notes, and the loop it drives.
|
|
92
|
+
*
|
|
93
|
+
* The prompt is erased before the pane opens and reprinted after it closes, so the pane
|
|
94
|
+
* appears in the space the menu occupied rather than below it — the reader's eye stays where
|
|
95
|
+
* it was, and the screen does not creep downwards each time they look at the history.
|
|
96
|
+
*/
|
|
97
|
+
async function menu(history) {
|
|
98
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
99
|
+
console.log("");
|
|
100
|
+
dim("Full history: popover changelog --all");
|
|
101
|
+
return 0;
|
|
102
|
+
}
|
|
103
|
+
const prompt = ` ${style.white("1")}${style.dim(" Full changelog")}` +
|
|
104
|
+
`${style.dim(` ${glyph.dot} `)}${style.white("q")}${style.dim(" Done")}`;
|
|
105
|
+
const keys = keyReader();
|
|
106
|
+
try {
|
|
107
|
+
for (;;) {
|
|
108
|
+
console.log("");
|
|
109
|
+
console.log(prompt);
|
|
110
|
+
const key = await keys.next();
|
|
111
|
+
// Up over the prompt and the blank line above it, clearing both, so whatever comes
|
|
112
|
+
// next starts where they were.
|
|
113
|
+
process.stdout.write("\x1b[2A\x1b[J");
|
|
114
|
+
if (key !== "1")
|
|
115
|
+
return 0;
|
|
116
|
+
// Handed over rather than held: raw mode is already set up, and the pane needs the
|
|
117
|
+
// same keys this loop is reading.
|
|
118
|
+
await scrollRegion({ title: "Changelog", lines: history(), keys });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
keys.close();
|
|
123
|
+
console.log("");
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=changelog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog.js","sourceRoot":"","sources":["../src/changelog.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAWA,6HAA6H;AAC7H,eAAO,MAAM,kBAAkB,sBAAuB,CAAC;AAEvD;;;;;GAKG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CA0H9C;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ5D;AAcD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAS/F"}
|
package/dist/doctor.js
CHANGED
|
@@ -3,6 +3,7 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import { claudeHome, daemonAddress, loadCredentials } from "@popoverinstall/shared";
|
|
6
|
+
import { execTool } from "./exec.js";
|
|
6
7
|
import { askDaemon } from "./ipc-client.js";
|
|
7
8
|
import { bad, dim, ok, warn } from "./ui.js";
|
|
8
9
|
const execFileAsync = promisify(execFile);
|
|
@@ -130,11 +131,7 @@ export async function doctor() {
|
|
|
130
131
|
export async function claudeVersion() {
|
|
131
132
|
const bin = process.env.POPOVER_CLAUDE_BIN ?? "claude";
|
|
132
133
|
try {
|
|
133
|
-
const { stdout } = await
|
|
134
|
-
timeout: 10_000,
|
|
135
|
-
windowsHide: true,
|
|
136
|
-
shell: process.platform === "win32",
|
|
137
|
-
});
|
|
134
|
+
const { stdout } = await execTool(bin, ["--version"], { timeout: 10_000 });
|
|
138
135
|
return stdout.trim().split(/\s+/)[0] ?? null;
|
|
139
136
|
}
|
|
140
137
|
catch {
|
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/exec.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Running another CLI, on a platform where that is not a one-liner.
|
|
3
|
+
*
|
|
4
|
+
* Every tool this package shells out to — `npm`, `claude` — ships on Windows as a `.cmd`
|
|
5
|
+
* shim rather than an executable, and that costs two things:
|
|
6
|
+
*
|
|
7
|
+
* 1. **Node will not spawn a `.cmd` directly.** Bare `npm` fails `ENOENT` (CreateProcess
|
|
8
|
+
* appends `.exe`, never `.cmd`), and a full path to one fails `EINVAL` — Node has
|
|
9
|
+
* refused to run batch files without an explicit shell since CVE-2024-27980. So the
|
|
10
|
+
* call has to go through `cmd.exe`.
|
|
11
|
+
* 2. **`cmd.exe` re-parses the arguments.** `child_process` hands the shell one flat
|
|
12
|
+
* string, so an argument containing a space arrives as two. That is not theoretical:
|
|
13
|
+
* `popover setup` registers the plugin by path, and on Windows the path it passes runs
|
|
14
|
+
* through `C:\Users\<name>\AppData\...` — one space in a username and Claude Code is
|
|
15
|
+
* told to add a marketplace that does not exist.
|
|
16
|
+
*
|
|
17
|
+
* Hence quoting, which only happens on the path where a shell is involved. POSIX keeps the
|
|
18
|
+
* direct spawn and needs none of this.
|
|
19
|
+
*/
|
|
20
|
+
type ExecOptions = {
|
|
21
|
+
cwd?: string;
|
|
22
|
+
timeout?: number;
|
|
23
|
+
maxBuffer?: number;
|
|
24
|
+
windowsHide?: boolean;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Spawn a CLI that may be a Windows shim, quoting arguments if a shell is in the way.
|
|
28
|
+
*
|
|
29
|
+
* Rejects the way `execFile` does — with the error carrying `stdout`/`stderr` — so callers
|
|
30
|
+
* can keep reading npm's own diagnosis out of a failure.
|
|
31
|
+
*/
|
|
32
|
+
export declare function execTool(file: string, args: string[], options?: ExecOptions): Promise<{
|
|
33
|
+
stdout: string;
|
|
34
|
+
stderr: string;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* One argument, safe to hand to `cmd.exe`.
|
|
38
|
+
*
|
|
39
|
+
* Quoted only when it has to be, because quoting everything makes the command echoed in an
|
|
40
|
+
* error message harder to read than the command the user would have typed.
|
|
41
|
+
*
|
|
42
|
+
* `%` is the one character this cannot defend against: `cmd.exe` expands `%FOO%` inside
|
|
43
|
+
* double quotes and offers no escape for it on a command line. A path containing a `%` that
|
|
44
|
+
* also names a real environment variable would still break — which beats the previous
|
|
45
|
+
* behaviour of any space breaking, and is as far as a shell-based spawn can go.
|
|
46
|
+
*/
|
|
47
|
+
export declare function quoteForCmd(arg: string): string;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=exec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,KAAK,WAAW,GAAG;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAS7C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C"}
|
package/dist/exec.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Running another CLI, on a platform where that is not a one-liner.
|
|
3
|
+
*
|
|
4
|
+
* Every tool this package shells out to — `npm`, `claude` — ships on Windows as a `.cmd`
|
|
5
|
+
* shim rather than an executable, and that costs two things:
|
|
6
|
+
*
|
|
7
|
+
* 1. **Node will not spawn a `.cmd` directly.** Bare `npm` fails `ENOENT` (CreateProcess
|
|
8
|
+
* appends `.exe`, never `.cmd`), and a full path to one fails `EINVAL` — Node has
|
|
9
|
+
* refused to run batch files without an explicit shell since CVE-2024-27980. So the
|
|
10
|
+
* call has to go through `cmd.exe`.
|
|
11
|
+
* 2. **`cmd.exe` re-parses the arguments.** `child_process` hands the shell one flat
|
|
12
|
+
* string, so an argument containing a space arrives as two. That is not theoretical:
|
|
13
|
+
* `popover setup` registers the plugin by path, and on Windows the path it passes runs
|
|
14
|
+
* through `C:\Users\<name>\AppData\...` — one space in a username and Claude Code is
|
|
15
|
+
* told to add a marketplace that does not exist.
|
|
16
|
+
*
|
|
17
|
+
* Hence quoting, which only happens on the path where a shell is involved. POSIX keeps the
|
|
18
|
+
* direct spawn and needs none of this.
|
|
19
|
+
*/
|
|
20
|
+
import { execFile } from "node:child_process";
|
|
21
|
+
import { promisify } from "node:util";
|
|
22
|
+
const execFileAsync = promisify(execFile);
|
|
23
|
+
/**
|
|
24
|
+
* Spawn a CLI that may be a Windows shim, quoting arguments if a shell is in the way.
|
|
25
|
+
*
|
|
26
|
+
* Rejects the way `execFile` does — with the error carrying `stdout`/`stderr` — so callers
|
|
27
|
+
* can keep reading npm's own diagnosis out of a failure.
|
|
28
|
+
*/
|
|
29
|
+
export function execTool(file, args, options = {}) {
|
|
30
|
+
if (process.platform !== "win32") {
|
|
31
|
+
return execFileAsync(file, args, { windowsHide: true, ...options });
|
|
32
|
+
}
|
|
33
|
+
return execFileAsync(quoteForCmd(file), args.map(quoteForCmd), {
|
|
34
|
+
windowsHide: true,
|
|
35
|
+
...options,
|
|
36
|
+
shell: true,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* One argument, safe to hand to `cmd.exe`.
|
|
41
|
+
*
|
|
42
|
+
* Quoted only when it has to be, because quoting everything makes the command echoed in an
|
|
43
|
+
* error message harder to read than the command the user would have typed.
|
|
44
|
+
*
|
|
45
|
+
* `%` is the one character this cannot defend against: `cmd.exe` expands `%FOO%` inside
|
|
46
|
+
* double quotes and offers no escape for it on a command line. A path containing a `%` that
|
|
47
|
+
* also names a real environment variable would still break — which beats the previous
|
|
48
|
+
* behaviour of any space breaking, and is as far as a shell-based spawn can go.
|
|
49
|
+
*/
|
|
50
|
+
export function quoteForCmd(arg) {
|
|
51
|
+
if (arg === "")
|
|
52
|
+
return '""';
|
|
53
|
+
if (!/[\s"&|<>^()!]/.test(arg))
|
|
54
|
+
return arg;
|
|
55
|
+
// cmd.exe strips the outer pair, so an embedded quote has to survive being seen twice.
|
|
56
|
+
return `"${arg.replace(/"/g, '\\"')}"`;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=exec.js.map
|
package/dist/exec.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAS1C;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,IAAc,EACd,UAAuB,EAAE;IAEzB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAC7D,WAAW,EAAE,IAAI;QACjB,GAAG,OAAO;QACV,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC3C,uFAAuF;IACvF,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AACzC,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA6BA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,MAEb,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
3
|
import { existsSync, mkdirSync, openSync, readFileSync, rmSync } from "node:fs";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
import { promisify } from "node:util";
|
|
7
6
|
import { PACKAGE_NAME, clearCredentials, daemonEntryPointerPath, daemonLogPath, defaultApiUrl, installCommand, loadCredentials, parseChangelog, popoverHome, releasesInstalled, renderReleaseNotes, } from "@popoverinstall/shared";
|
|
7
|
+
import { changelog } from "./changelog.js";
|
|
8
8
|
import { resolveDaemonEntry } from "./daemon-entry.js";
|
|
9
9
|
import { doctor } from "./doctor.js";
|
|
10
|
+
import { execTool } from "./exec.js";
|
|
10
11
|
import { askDaemon, daemonIsRunning } from "./ipc-client.js";
|
|
11
12
|
import { login } from "./login.js";
|
|
12
13
|
import { setup } from "./setup.js";
|
|
13
14
|
import { forkCommand } from "./snapshot.js";
|
|
14
15
|
import { bad, c, dim, info, ok, warn } from "./ui.js";
|
|
15
16
|
import { welcome } from "./welcome.js";
|
|
16
|
-
const execFileAsync = promisify(execFile);
|
|
17
17
|
/**
|
|
18
18
|
* This package's own version, read from the manifest npm installed beside us.
|
|
19
19
|
*
|
|
@@ -41,6 +41,8 @@ async function main() {
|
|
|
41
41
|
return 0;
|
|
42
42
|
case "update":
|
|
43
43
|
return update();
|
|
44
|
+
case "changelog":
|
|
45
|
+
return changelog(rest);
|
|
44
46
|
case "status":
|
|
45
47
|
return status();
|
|
46
48
|
case "doctor":
|
|
@@ -140,6 +142,7 @@ ${next ? `\n${next}` : ""}
|
|
|
140
142
|
${c.bold("popover setup")} [--force] Re-register the Claude Code plugin
|
|
141
143
|
${c.bold("popover welcome")} Set up and log in — the whole of a first run
|
|
142
144
|
${c.bold("popover update")} Upgrade to the newest version and restart the daemon
|
|
145
|
+
${c.bold("popover changelog")} [--all] What the last update changed
|
|
143
146
|
${c.bold("popover status")} Show this machine's sessions and connection
|
|
144
147
|
${c.bold("popover team")} Print the team roster
|
|
145
148
|
${c.bold("popover fork")} <create|open|launch|list|revoke>
|
|
@@ -161,6 +164,13 @@ ${next ? `\n${next}` : ""}
|
|
|
161
164
|
* 2. **A file another process holds open cannot be replaced.** The daemon runs out of the
|
|
162
165
|
* tree being swapped, so it has to be down first.
|
|
163
166
|
*
|
|
167
|
+
* Windows used to be handed the command to run by hand instead, on the theory that cmd.exe
|
|
168
|
+
* reads a batch file incrementally and would resume inside a half-replaced `popover.cmd`.
|
|
169
|
+
* It does not: npm's shim ends in `endLocal & goto #_undefined_# 2>NUL || … node …`, and the
|
|
170
|
+
* failed `goto` leaves cmd.exe with nothing left to read once node exits. Overwriting the
|
|
171
|
+
* shim mid-run is how `npm i -g npm` updates itself. So Windows takes the same path as
|
|
172
|
+
* everyone else now, and the only genuinely platform-specific part is spawning npm at all.
|
|
173
|
+
*
|
|
164
174
|
* Everything else got simpler: npm exits nonzero on failure, so the old stdout regex and
|
|
165
175
|
* the VERSION-file readback are gone.
|
|
166
176
|
*
|
|
@@ -173,17 +183,13 @@ async function update() {
|
|
|
173
183
|
// version the backend publishes.
|
|
174
184
|
const pong = await askDaemon({ t: "ping", id: "update" }, 2_000);
|
|
175
185
|
const expected = pong?.t === "pong" ? pong.update?.latest : undefined;
|
|
176
|
-
// Rewriting a running `.cmd` shim can corrupt it mid-execution, because cmd.exe reads
|
|
177
|
-
// batch files incrementally. Hand the command over instead of running it ourselves.
|
|
178
|
-
if (process.platform === "win32") {
|
|
179
|
-
info("Run this to upgrade, then `popover setup`:");
|
|
180
|
-
console.log(`\n ${installCommand()}\n`);
|
|
181
|
-
return 0;
|
|
182
|
-
}
|
|
183
186
|
info(`Updating ${PACKAGE_NAME} (${VERSION} → ${expected ?? "latest"})`);
|
|
184
187
|
await daemonCommand("stop").catch(() => 0);
|
|
185
188
|
try {
|
|
186
|
-
|
|
189
|
+
// `execTool`, not `execFile`: on Windows `npm` is a `.cmd` that Node will not spawn
|
|
190
|
+
// directly, and the update used to die on `spawn npm ENOENT` before reaching the
|
|
191
|
+
// registry. See packages/cli/src/exec.ts.
|
|
192
|
+
const { stdout } = await execTool("npm", npmInstallArgs(), {
|
|
187
193
|
cwd: os.tmpdir(),
|
|
188
194
|
timeout: 300_000,
|
|
189
195
|
maxBuffer: 16 * 1024 * 1024,
|
|
@@ -192,8 +198,22 @@ async function update() {
|
|
|
192
198
|
}
|
|
193
199
|
catch (err) {
|
|
194
200
|
process.stdout.write(err.stdout ?? "");
|
|
195
|
-
|
|
196
|
-
|
|
201
|
+
const output = `${err.stdout ?? ""}${err.stderr ?? ""}`;
|
|
202
|
+
// A release that the registry will not serve yet: publishing is a separate step from the
|
|
203
|
+
// version bump, and metadata takes time to propagate even once it has happened. npm
|
|
204
|
+
// reports this as though the version did not exist, which sends people looking for a
|
|
205
|
+
// problem on their own machine. Named from npm's own message rather than from what the
|
|
206
|
+
// backend advertises, because the two are not always the same version — the spec that
|
|
207
|
+
// failed is the one `latest` resolved to.
|
|
208
|
+
const missing = /No matching version found for (\S+?)\.?(?:\s|$)/i.exec(output)?.[1];
|
|
209
|
+
if (missing || /ETARGET/.test(output)) {
|
|
210
|
+
bad(`The registry has no ${missing ?? `newer ${PACKAGE_NAME}`} yet.`);
|
|
211
|
+
dim("A just-published release takes a few minutes to appear. Try again shortly.");
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
bad(`npm failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
215
|
+
dim(`To upgrade by hand: ${installCommand()}`);
|
|
216
|
+
}
|
|
197
217
|
// Never leave the machine with no daemon because an update went wrong.
|
|
198
218
|
await daemonCommand("start");
|
|
199
219
|
return 1;
|
|
@@ -214,6 +234,21 @@ async function update() {
|
|
|
214
234
|
dim("Restart Claude Code to pick up the new plugin; the daemon is already on the new build.");
|
|
215
235
|
return started;
|
|
216
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* The npm command that does the upgrade.
|
|
239
|
+
*
|
|
240
|
+
* `--prefer-online` is the whole reason this is a function worth reading. npm caches
|
|
241
|
+
* registry metadata on disk and serves it without revalidating while it is fresh, and the
|
|
242
|
+
* two documents it keeps per package expire independently: the abbreviated one resolves the
|
|
243
|
+
* `latest` tag, the full one supplies the manifest. Minutes after a release those two can
|
|
244
|
+
* disagree — `latest` resolves to a version the cached full document has never heard of —
|
|
245
|
+
* and npm reports that as `ETARGET: No matching version found`, i.e. as though the release
|
|
246
|
+
* we are trying to install does not exist. Forcing a staleness check costs one HTTP
|
|
247
|
+
* round-trip on a command that is already about to download a package.
|
|
248
|
+
*/
|
|
249
|
+
function npmInstallArgs() {
|
|
250
|
+
return ["install", "-g", "--prefer-online", `${PACKAGE_NAME}@latest`];
|
|
251
|
+
}
|
|
217
252
|
/**
|
|
218
253
|
* What arrived, printed from the CHANGELOG.md that npm just installed beside us — see the
|
|
219
254
|
* header of packages/shared/src/changelog.ts for why it is read off disk rather than
|
|
@@ -274,7 +309,9 @@ async function uninstall() {
|
|
|
274
309
|
["plugin", "marketplace", "remove", "popover"],
|
|
275
310
|
]) {
|
|
276
311
|
try {
|
|
277
|
-
|
|
312
|
+
// Same Windows shim problem as the npm call in `update()`; spawned directly, this
|
|
313
|
+
// silently skipped unhooking and left the plugin registered.
|
|
314
|
+
await execTool("claude", args, { timeout: 20_000 });
|
|
278
315
|
}
|
|
279
316
|
catch {
|
|
280
317
|
// Already gone, or Claude Code is not installed. Neither should stop the removal.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/pager.d.ts
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A bounded scroll region, drawn inline in the terminal.
|
|
3
|
+
*
|
|
4
|
+
* The alternative — the alternate screen buffer, `\x1b[?1049h`, what `less` uses — was
|
|
5
|
+
* deliberately not taken. It blanks the whole window and hands it back untouched on exit,
|
|
6
|
+
* which is tidy but wrong for this: it takes the entire terminal, and everything printed
|
|
7
|
+
* before it disappears while you read. What is wanted here is a *pane* inside the session,
|
|
8
|
+
* with the notes above it still on screen.
|
|
9
|
+
*
|
|
10
|
+
* So the region is drawn like any other output, then redrawn over itself: move the cursor up
|
|
11
|
+
* by the number of lines last written, and print them all again. Two invariants keep that
|
|
12
|
+
* from smearing, and both are load-bearing:
|
|
13
|
+
*
|
|
14
|
+
* 1. **No line may ever wrap.** A line one column too wide occupies two terminal rows, and
|
|
15
|
+
* every subsequent cursor-up is off by one for the rest of the session. Everything is cut
|
|
16
|
+
* to the frame width by `fit()` before it goes out.
|
|
17
|
+
* 2. **The block must fit on screen with a row to spare.** Writing the block scrolls the
|
|
18
|
+
* terminal when the cursor is already at the bottom, which is fine — the cursor stays the
|
|
19
|
+
* same distance below the block either way — but only while the block's first line is
|
|
20
|
+
* still on screen to move back up to. Hence the `rows - 5` in `geometry()`.
|
|
21
|
+
*
|
|
22
|
+
* The height is capped well under the window (see `geometry`) rather than filling it: a pane
|
|
23
|
+
* that reaches the top edge is indistinguishable from the alternate screen, which is the
|
|
24
|
+
* thing this is not.
|
|
25
|
+
*/
|
|
26
|
+
export interface Viewport {
|
|
27
|
+
/** Exactly `height` rows, short content padded with blanks. */
|
|
28
|
+
rows: string[];
|
|
29
|
+
/** The offset actually used, after clamping. Callers store this back. */
|
|
30
|
+
offset: number;
|
|
31
|
+
atTop: boolean;
|
|
32
|
+
atBottom: boolean;
|
|
33
|
+
/** `"21–38 of 214"`, or empty when it all fits and there is nothing to scroll. */
|
|
34
|
+
position: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The slice of `lines` visible at `offset`, clamped to what exists.
|
|
38
|
+
*
|
|
39
|
+
* Padded out to exactly `height` rows, which is what stops the frame from changing size on
|
|
40
|
+
* the last page — a bottom rule that walks up the screen as you scroll reads as a glitch.
|
|
41
|
+
*
|
|
42
|
+
* Pure, and the only part of this file that is: everything below talks to a terminal, and
|
|
43
|
+
* this is where the arithmetic that can actually be wrong lives.
|
|
44
|
+
*/
|
|
45
|
+
export declare function viewport(lines: string[], offset: number, height: number): Viewport;
|
|
46
|
+
/**
|
|
47
|
+
* One decoded keypress at a time, with raw mode held open for the life of the reader.
|
|
48
|
+
*
|
|
49
|
+
* Generalised from the single-keypress read in `welcome.ts`, which stays as it is — its
|
|
50
|
+
* enter-means-yes reading of the keys is particular to that one question. What is shared is
|
|
51
|
+
* the mechanism underneath: raw mode, because a pager cannot ask for Enter after every arrow,
|
|
52
|
+
* and because readline would take the cursor with it.
|
|
53
|
+
*
|
|
54
|
+
* Keys are queued rather than read on demand. Holding an arrow down delivers several escape
|
|
55
|
+
* sequences in a single chunk, and a reader that took the first and dropped the rest would
|
|
56
|
+
* scroll one line per chunk however long the key was held.
|
|
57
|
+
*/
|
|
58
|
+
export interface KeyReader {
|
|
59
|
+
next(): Promise<string>;
|
|
60
|
+
close(): void;
|
|
61
|
+
}
|
|
62
|
+
export declare function keyReader(): KeyReader;
|
|
63
|
+
export interface RegionOptions {
|
|
64
|
+
/** Sits inline on the top rule, as in `box()`. */
|
|
65
|
+
title: string;
|
|
66
|
+
/** Content, one line per row. Wrap it to `regionTextWidth()` before calling. */
|
|
67
|
+
lines: string[];
|
|
68
|
+
/**
|
|
69
|
+
* An already-open reader to take keys from, for a caller that is itself reading keys.
|
|
70
|
+
*
|
|
71
|
+
* Opening a second one over the top of it would leave two `data` listeners racing for the
|
|
72
|
+
* same bytes, and closing it here would drop the caller's raw mode on the way out. A reader
|
|
73
|
+
* passed in is borrowed: used, and left open.
|
|
74
|
+
*/
|
|
75
|
+
keys?: KeyReader;
|
|
76
|
+
}
|
|
77
|
+
/** The width callers should wrap their content to, so it lands inside the frame uncut. */
|
|
78
|
+
export declare function regionTextWidth(): number;
|
|
79
|
+
/**
|
|
80
|
+
* Show `lines` in a scrollable pane, and return once the reader leaves it.
|
|
81
|
+
*
|
|
82
|
+
* The pane is erased on the way out. That is the point of it: the whole changelog goes past
|
|
83
|
+
* your eyes without any of it going into the scrollback, so what stays behind is only what
|
|
84
|
+
* was there before.
|
|
85
|
+
*/
|
|
86
|
+
export declare function scrollRegion({ title, lines, keys: borrowed }: RegionOptions): Promise<void>;
|
|
87
|
+
//# sourceMappingURL=pager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pager.d.ts","sourceRoot":"","sources":["../src/pager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAkBH,MAAM,WAAW,QAAQ;IACvB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAgBlF;AAID;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,SAAS,IAAI,SAAS,CA8CrC;AAyHD,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GjG"}
|
package/dist/pager.js
ADDED
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A bounded scroll region, drawn inline in the terminal.
|
|
3
|
+
*
|
|
4
|
+
* The alternative — the alternate screen buffer, `\x1b[?1049h`, what `less` uses — was
|
|
5
|
+
* deliberately not taken. It blanks the whole window and hands it back untouched on exit,
|
|
6
|
+
* which is tidy but wrong for this: it takes the entire terminal, and everything printed
|
|
7
|
+
* before it disappears while you read. What is wanted here is a *pane* inside the session,
|
|
8
|
+
* with the notes above it still on screen.
|
|
9
|
+
*
|
|
10
|
+
* So the region is drawn like any other output, then redrawn over itself: move the cursor up
|
|
11
|
+
* by the number of lines last written, and print them all again. Two invariants keep that
|
|
12
|
+
* from smearing, and both are load-bearing:
|
|
13
|
+
*
|
|
14
|
+
* 1. **No line may ever wrap.** A line one column too wide occupies two terminal rows, and
|
|
15
|
+
* every subsequent cursor-up is off by one for the rest of the session. Everything is cut
|
|
16
|
+
* to the frame width by `fit()` before it goes out.
|
|
17
|
+
* 2. **The block must fit on screen with a row to spare.** Writing the block scrolls the
|
|
18
|
+
* terminal when the cursor is already at the bottom, which is fine — the cursor stays the
|
|
19
|
+
* same distance below the block either way — but only while the block's first line is
|
|
20
|
+
* still on screen to move back up to. Hence the `rows - 5` in `geometry()`.
|
|
21
|
+
*
|
|
22
|
+
* The height is capped well under the window (see `geometry`) rather than filling it: a pane
|
|
23
|
+
* that reaches the top edge is indistinguishable from the alternate screen, which is the
|
|
24
|
+
* thing this is not.
|
|
25
|
+
*/
|
|
26
|
+
import { glyph, style, unicodeEnabled } from "./theme.js";
|
|
27
|
+
const write = (s) => process.stdout.write(s);
|
|
28
|
+
/**
|
|
29
|
+
* Room the frame takes from the text: a trunk and a two-space margin on each side.
|
|
30
|
+
*
|
|
31
|
+
* The margin is symmetric because `box()` in theme.ts is symmetric, and the two are shown one
|
|
32
|
+
* above the other — the pane opens directly under a box of the same content. A pane whose
|
|
33
|
+
* text ran two columns wider would read as a different width even with its borders aligned.
|
|
34
|
+
*/
|
|
35
|
+
const CHROME = 6;
|
|
36
|
+
/** Rows of frame around the content: the titled rule, the position rule, and the key hints. */
|
|
37
|
+
const FRAME_ROWS = 3;
|
|
38
|
+
/**
|
|
39
|
+
* The slice of `lines` visible at `offset`, clamped to what exists.
|
|
40
|
+
*
|
|
41
|
+
* Padded out to exactly `height` rows, which is what stops the frame from changing size on
|
|
42
|
+
* the last page — a bottom rule that walks up the screen as you scroll reads as a glitch.
|
|
43
|
+
*
|
|
44
|
+
* Pure, and the only part of this file that is: everything below talks to a terminal, and
|
|
45
|
+
* this is where the arithmetic that can actually be wrong lives.
|
|
46
|
+
*/
|
|
47
|
+
export function viewport(lines, offset, height) {
|
|
48
|
+
const size = Math.max(1, Math.trunc(height));
|
|
49
|
+
const max = Math.max(0, lines.length - size);
|
|
50
|
+
const at = Math.min(Math.max(0, Number.isFinite(offset) ? Math.trunc(offset) : 0), max);
|
|
51
|
+
const rows = lines.slice(at, at + size);
|
|
52
|
+
while (rows.length < size)
|
|
53
|
+
rows.push("");
|
|
54
|
+
const last = Math.min(lines.length, at + size);
|
|
55
|
+
return {
|
|
56
|
+
rows,
|
|
57
|
+
offset: at,
|
|
58
|
+
atTop: at === 0,
|
|
59
|
+
atBottom: at === max,
|
|
60
|
+
position: lines.length > size ? `${at + 1}–${last} of ${lines.length}` : "",
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function keyReader() {
|
|
64
|
+
const stdin = process.stdin;
|
|
65
|
+
const wasRaw = stdin.isRaw;
|
|
66
|
+
const queue = [];
|
|
67
|
+
let waiting = null;
|
|
68
|
+
let closed = false;
|
|
69
|
+
const push = (key) => {
|
|
70
|
+
if (waiting) {
|
|
71
|
+
const resolve = waiting;
|
|
72
|
+
waiting = null;
|
|
73
|
+
resolve(key);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
queue.push(key);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const onData = (chunk) => {
|
|
80
|
+
for (const key of tokenize(chunk))
|
|
81
|
+
push(key);
|
|
82
|
+
};
|
|
83
|
+
// A closed stdin has to settle anything still waiting, or the caller hangs forever.
|
|
84
|
+
const onEnd = () => push("quit");
|
|
85
|
+
stdin.setRawMode?.(true);
|
|
86
|
+
stdin.setEncoding("utf8");
|
|
87
|
+
stdin.resume();
|
|
88
|
+
stdin.on("data", onData);
|
|
89
|
+
stdin.on("end", onEnd);
|
|
90
|
+
return {
|
|
91
|
+
next: () => new Promise((resolve) => {
|
|
92
|
+
const queued = queue.shift();
|
|
93
|
+
if (queued !== undefined)
|
|
94
|
+
resolve(queued);
|
|
95
|
+
else if (closed)
|
|
96
|
+
resolve("quit");
|
|
97
|
+
else
|
|
98
|
+
waiting = resolve;
|
|
99
|
+
}),
|
|
100
|
+
close: () => {
|
|
101
|
+
if (closed)
|
|
102
|
+
return;
|
|
103
|
+
closed = true;
|
|
104
|
+
stdin.removeListener("data", onData);
|
|
105
|
+
stdin.removeListener("end", onEnd);
|
|
106
|
+
stdin.setRawMode?.(wasRaw ?? false);
|
|
107
|
+
stdin.pause();
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Split a chunk into keys.
|
|
113
|
+
*
|
|
114
|
+
* An escape sequence has to be consumed whole — `\x1b[B` is one keypress, not Escape followed
|
|
115
|
+
* by a bracket and a B. A bare `\x1b` with nothing after it is the Escape key itself.
|
|
116
|
+
*/
|
|
117
|
+
function tokenize(chunk) {
|
|
118
|
+
const keys = [];
|
|
119
|
+
let i = 0;
|
|
120
|
+
while (i < chunk.length) {
|
|
121
|
+
if (chunk[i] === "\x1b") {
|
|
122
|
+
// CSI (`\x1b[…`) and SS3 (`\x1bO…`, what an arrow sends in application cursor mode).
|
|
123
|
+
const match = /^\x1b(\[|O)[0-9;]*[A-Za-z~]/.exec(chunk.slice(i));
|
|
124
|
+
if (match) {
|
|
125
|
+
keys.push(decode(match[0]));
|
|
126
|
+
i += match[0].length;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
keys.push("escape");
|
|
130
|
+
i += 1;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
keys.push(decode(chunk[i]));
|
|
134
|
+
i += 1;
|
|
135
|
+
}
|
|
136
|
+
return keys;
|
|
137
|
+
}
|
|
138
|
+
/** An escape sequence or single character as a name. Anything unrecognised passes through. */
|
|
139
|
+
function decode(seq) {
|
|
140
|
+
switch (seq) {
|
|
141
|
+
case "\x1b[A":
|
|
142
|
+
case "\x1bOA":
|
|
143
|
+
return "up";
|
|
144
|
+
case "\x1b[B":
|
|
145
|
+
case "\x1bOB":
|
|
146
|
+
return "down";
|
|
147
|
+
case "\x1b[5~":
|
|
148
|
+
return "pgup";
|
|
149
|
+
case "\x1b[6~":
|
|
150
|
+
return "pgdn";
|
|
151
|
+
case "\x1b[H":
|
|
152
|
+
case "\x1bOH":
|
|
153
|
+
case "\x1b[1~":
|
|
154
|
+
case "\x1b[7~":
|
|
155
|
+
return "home";
|
|
156
|
+
case "\x1b[F":
|
|
157
|
+
case "\x1bOF":
|
|
158
|
+
case "\x1b[4~":
|
|
159
|
+
case "\x1b[8~":
|
|
160
|
+
return "end";
|
|
161
|
+
case "\r":
|
|
162
|
+
case "\n":
|
|
163
|
+
return "enter";
|
|
164
|
+
case " ":
|
|
165
|
+
return "space";
|
|
166
|
+
// In raw mode these arrive as bytes rather than as signals, so they are ours to handle.
|
|
167
|
+
case "\x03":
|
|
168
|
+
case "\x04":
|
|
169
|
+
return "quit";
|
|
170
|
+
default:
|
|
171
|
+
return seq;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* How big the pane can be in this window, read fresh on every render so a resize is absorbed.
|
|
176
|
+
*
|
|
177
|
+
* `rows - 5` is the hard ceiling — see the invariants at the top of this file. Under that sits
|
|
178
|
+
* a proportional cap, so the pane stays a pane: on a tall window it settles at 18 rows rather
|
|
179
|
+
* than growing to fill the screen, and on a short one it takes a bit over half.
|
|
180
|
+
*/
|
|
181
|
+
function geometry() {
|
|
182
|
+
// `||` rather than `??`: a terminal that has not been sized yet reports 0 rather than
|
|
183
|
+
// undefined — a pty opened by `script`, a multiplexer mid-attach — and a zero taken
|
|
184
|
+
// literally collapses the pane to nothing and drops the whole changelog into the
|
|
185
|
+
// scrollback. Unknown and unsized both mean "assume something ordinary".
|
|
186
|
+
const rows = process.stdout.rows || 24;
|
|
187
|
+
const columns = process.stdout.columns || 80;
|
|
188
|
+
const height = Math.min(18, Math.floor(rows * 0.6), rows - 5);
|
|
189
|
+
const frame = Math.max(40, Math.min(columns - 1, 88));
|
|
190
|
+
return { height, inner: frame - 2, text: frame - CHROME };
|
|
191
|
+
}
|
|
192
|
+
/** Cut to `max` columns. Plain text only — it counts characters, so style afterwards. */
|
|
193
|
+
function fit(text, max) {
|
|
194
|
+
if (text.length <= max)
|
|
195
|
+
return text;
|
|
196
|
+
return text.slice(0, Math.max(0, max - 1)) + (unicodeEnabled ? "…" : ">");
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Pick out the two headings `renderReleaseNotes` emits, by the indent it emits them at: a
|
|
200
|
+
* version sits at two spaces, a section name at four, and a bullet at six.
|
|
201
|
+
*
|
|
202
|
+
* Coupled to that layout on purpose, and harmlessly — a change there costs the emphasis, not
|
|
203
|
+
* the pane, because anything that fails to match renders as ordinary text.
|
|
204
|
+
*/
|
|
205
|
+
function decorate(text) {
|
|
206
|
+
if (/^ {2}\d+\.\d+\.\d+/.test(text))
|
|
207
|
+
return style.bold(text);
|
|
208
|
+
if (/^ {4}\S/.test(text))
|
|
209
|
+
return style.heading(text);
|
|
210
|
+
return text;
|
|
211
|
+
}
|
|
212
|
+
/** The width callers should wrap their content to, so it lands inside the frame uncut. */
|
|
213
|
+
export function regionTextWidth() {
|
|
214
|
+
return geometry().text;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Show `lines` in a scrollable pane, and return once the reader leaves it.
|
|
218
|
+
*
|
|
219
|
+
* The pane is erased on the way out. That is the point of it: the whole changelog goes past
|
|
220
|
+
* your eyes without any of it going into the scrollback, so what stays behind is only what
|
|
221
|
+
* was there before.
|
|
222
|
+
*/
|
|
223
|
+
export async function scrollRegion({ title, lines, keys: borrowed }) {
|
|
224
|
+
const { height: available } = geometry();
|
|
225
|
+
// Nothing to drive it with, or no room to draw it in. Piping to `less` or `grep` lands
|
|
226
|
+
// here, and so does a window too short for a pane to be worth the name — in both cases the
|
|
227
|
+
// text is what was wanted, and the frame was never the point.
|
|
228
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY || available < 4) {
|
|
229
|
+
for (const line of lines)
|
|
230
|
+
console.log(line);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
const keys = borrowed ?? keyReader();
|
|
234
|
+
let offset = 0;
|
|
235
|
+
let drawn = 0;
|
|
236
|
+
// Never taller than its content. The padding in `viewport` is there to hold the frame still
|
|
237
|
+
// while scrolling; with nothing to scroll it would just be a box of blank rows.
|
|
238
|
+
const paneHeight = (geo) => Math.min(geo.height, Math.max(1, lines.length));
|
|
239
|
+
const render = () => {
|
|
240
|
+
const geo = geometry();
|
|
241
|
+
const view = viewport(lines, offset, paneHeight(geo));
|
|
242
|
+
offset = view.offset;
|
|
243
|
+
const out = [
|
|
244
|
+
rule(title, geo.inner),
|
|
245
|
+
...view.rows.map((row) => content(row, geo)),
|
|
246
|
+
footer(view.position, geo.inner),
|
|
247
|
+
hint(view),
|
|
248
|
+
];
|
|
249
|
+
// Up to the top of what was drawn last time, then over it. `\x1b[K` on each line clears
|
|
250
|
+
// whatever the previous frame left to the right of the new one — cheaper than clearing
|
|
251
|
+
// the block first, and without the flicker that would cause on every keypress.
|
|
252
|
+
if (drawn > 0)
|
|
253
|
+
write(`\x1b[${drawn}A`);
|
|
254
|
+
write(out.map((line) => `\x1b[K${line}\n`).join(""));
|
|
255
|
+
// A window narrowed mid-scroll draws a shorter frame than the one it replaces, leaving
|
|
256
|
+
// the tail of the old one stranded below. The cursor is directly under the new block, so
|
|
257
|
+
// clearing to the end of the screen takes exactly that and nothing else.
|
|
258
|
+
if (drawn > out.length)
|
|
259
|
+
write("\x1b[J");
|
|
260
|
+
drawn = out.length;
|
|
261
|
+
};
|
|
262
|
+
write("\x1b[?25l"); // the cursor has nowhere useful to sit in a pane, and strobes if left
|
|
263
|
+
try {
|
|
264
|
+
render();
|
|
265
|
+
const resize = () => render();
|
|
266
|
+
process.stdout.on("resize", resize);
|
|
267
|
+
try {
|
|
268
|
+
for (;;) {
|
|
269
|
+
const key = await keys.next();
|
|
270
|
+
const geo = geometry();
|
|
271
|
+
const height = paneHeight(geo);
|
|
272
|
+
// A page keeps one line of overlap, so the eye has something to land on.
|
|
273
|
+
const page = Math.max(1, height - 1);
|
|
274
|
+
const before = offset;
|
|
275
|
+
switch (key) {
|
|
276
|
+
case "up":
|
|
277
|
+
case "k":
|
|
278
|
+
offset -= 1;
|
|
279
|
+
break;
|
|
280
|
+
case "down":
|
|
281
|
+
case "j":
|
|
282
|
+
offset += 1;
|
|
283
|
+
break;
|
|
284
|
+
case "pgup":
|
|
285
|
+
case "b":
|
|
286
|
+
offset -= page;
|
|
287
|
+
break;
|
|
288
|
+
case "pgdn":
|
|
289
|
+
case "space":
|
|
290
|
+
case "f":
|
|
291
|
+
offset += page;
|
|
292
|
+
break;
|
|
293
|
+
case "home":
|
|
294
|
+
case "g":
|
|
295
|
+
offset = 0;
|
|
296
|
+
break;
|
|
297
|
+
case "end":
|
|
298
|
+
case "G":
|
|
299
|
+
offset = lines.length;
|
|
300
|
+
break;
|
|
301
|
+
case "q":
|
|
302
|
+
case "escape":
|
|
303
|
+
case "enter":
|
|
304
|
+
case "quit":
|
|
305
|
+
return;
|
|
306
|
+
default:
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
// `viewport` clamps, so a key that cannot move anything repaints nothing. Without
|
|
310
|
+
// this, holding an arrow at either end redraws the same frame hundreds of times.
|
|
311
|
+
if (viewport(lines, offset, height).offset === before) {
|
|
312
|
+
offset = before;
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
render();
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
finally {
|
|
319
|
+
process.stdout.removeListener("resize", resize);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
finally {
|
|
323
|
+
if (!borrowed)
|
|
324
|
+
keys.close();
|
|
325
|
+
// Erase the pane, then put the cursor back. `\x1b[J` clears to the end of the screen,
|
|
326
|
+
// which is exactly the block and nothing above it.
|
|
327
|
+
if (drawn > 0)
|
|
328
|
+
write(`\x1b[${drawn}A\x1b[J`);
|
|
329
|
+
write("\x1b[?25h");
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/** The top rule, with the title inline on it — the same shape `box()` draws. */
|
|
333
|
+
function rule(title, inner) {
|
|
334
|
+
const dashes = Math.max(1, inner - title.length - 3);
|
|
335
|
+
return (`${style.green(glyph.step)} ${style.bold(title)} ` +
|
|
336
|
+
style.dim(glyph.dash.repeat(dashes) + glyph.boxTopRight));
|
|
337
|
+
}
|
|
338
|
+
/** One content row, padded to the frame so the right-hand trunk stays in its column. */
|
|
339
|
+
function content(text, geo) {
|
|
340
|
+
const plain = fit(text, geo.text);
|
|
341
|
+
const gap = " ".repeat(Math.max(0, geo.inner - 2 - plain.length));
|
|
342
|
+
return `${style.dim(glyph.trunk)} ${decorate(plain)}${gap}${style.dim(glyph.trunk)}`;
|
|
343
|
+
}
|
|
344
|
+
/** The bottom rule, carrying the position — the one number that says there is more below. */
|
|
345
|
+
function footer(position, inner) {
|
|
346
|
+
const label = position ? ` ${position} ` : "";
|
|
347
|
+
const tail = 3;
|
|
348
|
+
const lead = Math.max(1, inner - label.length - tail);
|
|
349
|
+
return style.dim(glyph.boxBottomLeft +
|
|
350
|
+
glyph.dash.repeat(lead) +
|
|
351
|
+
label +
|
|
352
|
+
glyph.dash.repeat(tail) +
|
|
353
|
+
glyph.boxBottomRight);
|
|
354
|
+
}
|
|
355
|
+
/** The keys, under the pane — only the ones that would actually do something. */
|
|
356
|
+
function hint(view) {
|
|
357
|
+
const arrows = unicodeEnabled ? "↑↓" : "up/down";
|
|
358
|
+
// Everything on screen at once: offering to scroll it would be offering nothing.
|
|
359
|
+
const parts = view.atTop && view.atBottom
|
|
360
|
+
? ["q back"]
|
|
361
|
+
: [`${arrows} scroll`, "space page", "g/G top/bottom", "q back"];
|
|
362
|
+
return style.dim(` ${parts.join(` ${glyph.dot} `)}`);
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=pager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pager.js","sourceRoot":"","sources":["../src/pager.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CAAC,EAAE,KAAa,EAAE;;CAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCnE"}
|
package/dist/setup.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
1
|
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
3
2
|
import path from "node:path";
|
|
4
3
|
import { fileURLToPath } from "node:url";
|
|
5
|
-
import { promisify } from "node:util";
|
|
6
4
|
import { daemonEntryPointerPath, popoverHome } from "@popoverinstall/shared";
|
|
7
5
|
import { resolveDaemonEntry } from "./daemon-entry.js";
|
|
8
6
|
import { MIN_CLAUDE_VERSION, claudeVersion, versionAtLeast } from "./doctor.js";
|
|
7
|
+
import { execTool } from "./exec.js";
|
|
9
8
|
import { bad, dim, info, ok } from "./ui.js";
|
|
10
|
-
const execFileAsync = promisify(execFile);
|
|
11
9
|
const HERE = path.dirname(fileURLToPath(import.meta.url));
|
|
12
10
|
/**
|
|
13
11
|
* Connect this npm install to Claude Code.
|
|
@@ -104,10 +102,8 @@ async function pluginRegistered() {
|
|
|
104
102
|
}
|
|
105
103
|
function claude(args) {
|
|
106
104
|
const bin = process.env.POPOVER_CLAUDE_BIN ?? "claude";
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
shell: process.platform === "win32",
|
|
111
|
-
});
|
|
105
|
+
// `execTool` rather than `execFile`: `marketplace add` is passed a path, and on Windows
|
|
106
|
+
// that path goes through a shell. See packages/cli/src/exec.ts.
|
|
107
|
+
return execTool(bin, args, { timeout: 60_000 });
|
|
112
108
|
}
|
|
113
109
|
//# sourceMappingURL=setup.js.map
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@popoverinstall/cli",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"description": "See your teammates' active Claude Code agents and ask them questions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"prepack": "node ../../scripts/stage-plugin.mjs && tsc -b"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@popoverinstall/daemon": "0.7.
|
|
45
|
-
"@popoverinstall/shared": "0.7.
|
|
44
|
+
"@popoverinstall/daemon": "0.7.2",
|
|
45
|
+
"@popoverinstall/shared": "0.7.2"
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "popover",
|
|
4
4
|
"displayName": "Popover",
|
|
5
5
|
"description": "See your teammates' active Claude Code agents and ask them questions. A read-only fork answers from the agent's full context without interrupting your teammate.",
|
|
6
|
-
"version": "0.7.
|
|
6
|
+
"version": "0.7.2",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Quolabs"
|
|
9
9
|
},
|