clauderipple 0.8.2 → 0.8.3
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 +10 -0
- package/dist/app/package.json +1 -1
- package/dist/cli/src/schtasks.js +18 -5
- package/dist/router/src/version.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.3 — 2026-10-06
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- **No PowerShell window at every Windows logon** (#49). With Windows Terminal as the default
|
|
8
|
+
terminal — the Windows 11 default — the router task's PowerShell window stayed on screen after
|
|
9
|
+
each logon, because Windows Terminal ignores `-WindowStyle Hidden`. The task now starts
|
|
10
|
+
PowerShell inside a headless console host. Updating re-registers the task; where Windows
|
|
11
|
+
refuses that, the old task is kept and the router runs as before.
|
|
12
|
+
|
|
3
13
|
## 0.8.2 — 2026-10-06
|
|
4
14
|
|
|
5
15
|
### Fixed
|
package/dist/app/package.json
CHANGED
package/dist/cli/src/schtasks.js
CHANGED
|
@@ -63,7 +63,7 @@ export function taskDefinitionMatches(value, expected) {
|
|
|
63
63
|
return false;
|
|
64
64
|
const task = value;
|
|
65
65
|
return (task.actionCount === 1 &&
|
|
66
|
-
task.execute?.toLowerCase() ===
|
|
66
|
+
task.execute?.toLowerCase() === expected.execute.toLowerCase() &&
|
|
67
67
|
task.arguments === expected.arguments &&
|
|
68
68
|
sameAccount(task.userId, expected.userId) &&
|
|
69
69
|
task.runLevel === 0 &&
|
|
@@ -143,16 +143,24 @@ export function existingTaskDefinition() {
|
|
|
143
143
|
export function installAgent(opts) {
|
|
144
144
|
const launcher = writeLauncher({ program: opts.program, args: opts.args ?? [], home: opts.home, ...(opts.env ? { env: opts.env } : {}) });
|
|
145
145
|
const user = taskUser();
|
|
146
|
-
const
|
|
146
|
+
const powershellArgs = `-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File "${launcher}"`;
|
|
147
|
+
// PowerShell is started inside a headless console host. Started directly, it gets a console from
|
|
148
|
+
// the user's default terminal, and when that is Windows Terminal (the Windows 11 default)
|
|
149
|
+
// `-WindowStyle Hidden` hides nothing: a PowerShell window sat on screen after every logon (#49;
|
|
150
|
+
// measured 2026-10-06 in a Windows 11 24H2 VM — a CASCADIA_HOSTING_WINDOW_CLASS window appeared
|
|
151
|
+
// for `powershell.exe`, none for `conhost.exe --headless powershell.exe`, and both ran the script).
|
|
152
|
+
const execute = "conhost.exe";
|
|
153
|
+
const actionArgs = `--headless powershell.exe ${powershellArgs}`;
|
|
154
|
+
const existing = existingTaskDefinition();
|
|
147
155
|
// Updating the generated launcher does not require re-registering an otherwise correct task.
|
|
148
156
|
// Some Windows installations protect an existing per-user task's security descriptor so that
|
|
149
157
|
// even the same unelevated user gets E_ACCESSDENIED from Register-ScheduledTask -Force. Treat the
|
|
150
158
|
// verified existing definition as success; never silently accept a same-named foreign task.
|
|
151
|
-
if (taskDefinitionMatches(
|
|
159
|
+
if (taskDefinitionMatches(existing, { execute, arguments: actionArgs, userId: user }))
|
|
152
160
|
return launcher;
|
|
153
161
|
const script = [
|
|
154
162
|
`$ErrorActionPreference = 'Stop'`,
|
|
155
|
-
`$a = New-ScheduledTaskAction -Execute ${ps(
|
|
163
|
+
`$a = New-ScheduledTaskAction -Execute ${ps(execute)} -Argument ${ps(actionArgs)}`,
|
|
156
164
|
`$t = New-ScheduledTaskTrigger -AtLogOn -User ${ps(user)}`,
|
|
157
165
|
// Limited: the router needs no elevation, and asking for it would put a UAC prompt at every logon.
|
|
158
166
|
`$p = New-ScheduledTaskPrincipal -UserId ${ps(user)} -LogonType Interactive -RunLevel Limited`,
|
|
@@ -161,8 +169,13 @@ export function installAgent(opts) {
|
|
|
161
169
|
`'ok'`,
|
|
162
170
|
].join("; ");
|
|
163
171
|
const r = run(script);
|
|
164
|
-
if (!r.ok)
|
|
172
|
+
if (!r.ok) {
|
|
173
|
+
// The task from before #49 still starts and supervises the router, only with a window. On an
|
|
174
|
+
// install that cannot re-register it (E_ACCESSDENIED, above), keeping it beats failing the update.
|
|
175
|
+
if (taskDefinitionMatches(existing, { execute: "powershell.exe", arguments: powershellArgs, userId: user }))
|
|
176
|
+
return launcher;
|
|
165
177
|
throw new Error(`Register-ScheduledTask failed: ${r.out}`);
|
|
178
|
+
}
|
|
166
179
|
return launcher;
|
|
167
180
|
}
|
|
168
181
|
export function removeAgent() {
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
// from the manifests. Until 0.1.1 the router and the CLI each carried their own literal, and both
|
|
6
6
|
// still said "0.1.0" in the 0.1.1 release: after an update nobody could tell which router was
|
|
7
7
|
// running, and the tray app had nothing to compare (2026-09-15, reported from a Windows install).
|
|
8
|
-
export const VERSION = "0.8.
|
|
8
|
+
export const VERSION = "0.8.3";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clauderipple",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "Use GPT (ChatGPT Plus/Pro), DeepSeek and 400+ other models in the Claude Desktop Code tab and Claude Code while staying signed in to your Claude subscription — no third-party gateway mode. Several ChatGPT accounts that take over when one runs out, in Codex too.",
|
|
5
5
|
"license": "GPL-3.0-only",
|
|
6
6
|
"workspaces": [
|