@youdie006/prodex 0.40.29 → 0.40.30

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.md CHANGED
@@ -253,6 +253,7 @@ prodex pro report-issue # a GitHub issue drafted from the blocked c
253
253
  prodex pro report-issue --confirm # files it through gh; the prompt and the answer never travel
254
254
  PRODEX_BROWSER_DIAGNOSTICS=1 prodex ask "..." # leaves a screenshot and a page-shape snapshot in .bridge/diagnostics/
255
255
  node scripts/ui-watchdog.mjs # a real round trip that says ok or broken; --file-issue reports it
256
+ node scripts/ui-watchdog.mjs --canary # canary first, round trip only when the page changed; cheap enough to run hourly
256
257
  ```
257
258
 
258
259
  Reports are deduplicated by blocker code, so something that stays broken adds to one issue. Captures stay on your machine.
package/dist/cli-help.js CHANGED
@@ -22,7 +22,7 @@ Ask / consult commands:
22
22
  prodex pro browser login [--cwd /absolute/path/to/repo] [--dry-run] [--source-cli /absolute/path/to/dist/cli.js] [--profile-dir path] [--port 9333] [--url https://chatgpt.com/...] [--launch-timeout-ms 5000] [--wait|--no-wait] [--headed|--headless|--minimized|--virtual-display] [--wait-timeout-ms 300000] [--background] [--recover-visible] # preview/open browser login
23
23
  prodex pro browser help [--source-cli /absolute/path/to/dist/cli.js]
24
24
  prodex pro browser check [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 1500]
25
- prodex pro browser smoke [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 90000]
25
+ prodex pro browser smoke [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 300000]
26
26
  prodex pro browser models [--source-cli /absolute/path/to/dist/cli.js] [--port 9333] [--timeout-ms 15000] # read-only list of model menu options
27
27
  prodex pro browser projects [--source-cli /absolute/path/to/dist/cli.js] [--port 9333] [--timeout-ms 15000] # read-only list of sidebar project names (for --project)
28
28
  prodex pro browser recover [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] --target-url <thread-url> [--request-id 32hex] [--timeout-ms 60000] # recover a finished answer from a timed-out request
@@ -257,8 +257,8 @@ export function printProBrowserHelp(stdout, sourceCli) {
257
257
  ? `${cli} pro browser check${sourceCliOption} [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 1500]`
258
258
  : "prodex pro browser check [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 1500]";
259
259
  const smokeUsage = sourceCli
260
- ? `${cli} pro browser smoke${sourceCliOption} [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 90000]`
261
- : "prodex pro browser smoke [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 90000]";
260
+ ? `${cli} pro browser smoke${sourceCliOption} [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 300000]`
261
+ : "prodex pro browser smoke [--source-cli /absolute/path/to/dist/cli.js] [--cwd /absolute/path/to/repo] [--port 9333] [--timeout-ms 300000]";
262
262
  const selectionUsage = '[--model Pro] [--pro-mode 기본|확장] [--effort 즉시|중간|높음|"매우 높음"|Max|Ultra|Pro] [--project "name" | --project-new "name"]';
263
263
  const askUsage = sourceCli
264
264
  ? `${cli} pro browser ask${sourceCliOption} [--cwd /absolute/path/to/repo] [--session-key id] [--port 9333] [--timeout-ms 300000] [--busy-wait-ms 600000] [--target-url url --confirm-target] [--new-chat] [--continue | --continue-task task_id] [--temporary] [--allow-model-fallback] [--stdin] [--json] [--auto-login|--no-auto-login] [--file path] [--attach path] [--tool deep-research|web-search|create-image] ${selectionUsage} "prompt"`
package/dist/cli-pro.js CHANGED
@@ -58,7 +58,9 @@ export async function runChatgptCommand(rest, io) {
58
58
  const targetStore = new BridgeStore(targetCwd);
59
59
  const sourceCli = resolveOptionalFileFlag(io.cwd, chatgptArgs, "--source-cli");
60
60
  const port = resolveCdpPort(readPortFlag(chatgptArgs, "--port"));
61
- const timeoutMs = readPositiveIntegerFlag(chatgptArgs, "--timeout-ms") ?? 90000;
61
+ // 5 minutes: the smoke runs on whatever effort the picker holds, and on a
62
+ // high one the 90 s it had timed out (six watchdog reports on issue #4).
63
+ const timeoutMs = readPositiveIntegerFlag(chatgptArgs, "--timeout-ms") ?? 300000;
62
64
  const commandOptions = {
63
65
  ...(readFlag(chatgptArgs, "--cwd") ? { cwd: targetCwd } : {}),
64
66
  ...(readFlag(chatgptArgs, "--port") ? { port } : {})
@@ -103,6 +105,10 @@ export async function runChatgptCommand(rest, io) {
103
105
  port,
104
106
  prompt: smokePrompt,
105
107
  timeoutMs,
108
+ // A fresh chat: without it the smoke prompt landed in whatever
109
+ // conversation was open (measured 2026-10-08), which the daily
110
+ // watchdog would do to someone's thread.
111
+ newChat: true,
106
112
  onProgress: createBrowserSendProgressPrinter(io.stderr)
107
113
  }));
108
114
  }
package/docs/releasing.md CHANGED
@@ -16,6 +16,72 @@ Release target: `v0.40.13` on `main`. The GitHub Release records the resolved co
16
16
 
17
17
  The release adds a guarded, opt-in transition and more accurate blocker reporting. It does not claim that headless Pro consultation is verified on either deployment target or that authentication can be retained indefinitely.
18
18
 
19
+ ## Maintainer Watchdog
20
+
21
+ On the maintainer's WSL machine, cron runs the UI watchdog every hour (since 2026-10-08):
22
+
23
+ ```
24
+ 17 * * * * PATH=<node bin>:/usr/bin:/bin PRODEX_CLI=~/.local/share/prodex-maint/prodex PRODEX_WATCHDOG_CWD=/mnt/d/MyProject/gptprouse <node> ~/.local/share/prodex-maint/repo/scripts/ui-watchdog.mjs --canary --file-issue >> ~/.local/state/prodex-watchdog.log 2>&1
25
+ ```
26
+
27
+ **What each run does**
28
+ - It runs `scripts/page-canary.mjs`, which only reads the page:
29
+ - It records ChatGPT's build id and whether each control prodex relies on is present.
30
+ - It compares with `~/.local/share/prodex/page-canary.json`.
31
+ - It skips while a consult holds the send lock.
32
+ - Only when the canary reports changed (3) or broken (2) does the watchdog run `pro browser smoke` (a fresh chat, 5-minute budget). If that fails, it files or extends a GitHub issue by blocker code.
33
+ - A busy browser is logged as skipped and never filed.
34
+
35
+ **Where it runs from**
36
+ - `~/.local/share/prodex-maint/repo` is a clone of `main`, built with `npm ci && npm run build`.
37
+ - `~/.local/share/prodex-maint/prodex` runs its `dist/cli.js`, so the round trip uses current `main` rather than whatever version is installed.
38
+
39
+ **Updating it**
40
+ - After merging watchdog or smoke changes, run `git -C ~/.local/share/prodex-maint/repo pull --ff-only && (cd ~/.local/share/prodex-maint/repo && npm ci && npm run build)`.
41
+
42
+ **What it replaced**
43
+ - A daily 09:23 round trip run from the main checkout:
44
+ - It sent its prompt into whatever conversation was open.
45
+ - It timed out at 90 s on high efforts (issue #4).
46
+ - It filed a busy browser as broken (issue #20, closed as a false positive).
47
+ - The crontab before the change is saved at `~/.local/state/prodex-maint/crontab.backup-20261008`.
48
+
49
+ ## 0.40.29 Release Record
50
+
51
+ Release commit `220d609` on `main` (cut after PR #19, merge `d0a7793`); tag `v0.40.29`.
52
+
53
+ **Publishing**
54
+ - `publish.yml` run 37717711177 passed all six platforms on the first attempt, then npm publish with SLSA v1 provenance (job log: `+ @youdie006/prodex@0.40.29` at 02:48:10 UTC) and the GitHub Release (2026-10-08 02:48 UTC).
55
+ - The registry served the new version about four minutes after the publish step.
56
+ - `npm run release:verify` passed on the release commit after a build.
57
+
58
+ **What it fixes**
59
+ - The CHANGELOG lists the full set: fixes found by a live feature hunt from 2026-10-06 to 2026-10-08.
60
+ - Also checked against ChatGPT's new build, which changed `html[data-build]` from `8089c0e4...` to `36d7890c...`. The core selectors still held. Code blocks moved from CodeMirror to plain `<pre><code>`, a `data-markdown-copy="blank-lines"` marker appeared, and a thread keeps its tool token in the composer. All three were exercised live and are handled.
61
+
62
+ **Installation on 2026-10-08**
63
+ - Global npm, each verified with `prodex --version` = 0.40.29.
64
+ - WSL, M3, Mac mini: installed. M3 and the Mac mini first reinstalled 0.40.28 from a stale registry view, and needed `--prefer-online`.
65
+ - Running services were not restarted: 7 stdio MCP servers on WSL and 10 on M3 keep older code until their clients reconnect. The Mac mini had none running.
66
+ - M4: not reachable (hostname does not resolve); not updated.
67
+ - The browser container still runs `container/redesign-patches` `1233603` (image `sha256:ce0240c0e8a4`), and does not have this release's fixes.
68
+
69
+ **Browser incidents on 2026-10-08, during the hunt**
70
+ - **Host tab crash:** the host browser's ChatGPT tab renderer crashed. `pro browser check` reported `browser_tab_crashed`, and the next send reloaded the tab once and answered.
71
+ - **Both browsers stopped at 00:31 UTC:** the host browser stopped entirely, and the browser container exited after its Chromium logged "GPU process exited unexpectedly: exit_code=15" three times and "GPU process isn't usable. Goodbye." The cause was not established.
72
+ - **Recovery:** the container was restarted with `up -d --no-build browser` and found the session READY. The host profile came back logged out; the user logged in through `--headed`, and the browser was relaunched on its virtual display.
73
+ - **Related defect found and fixed in this release:** host-side prodex counted the container's Chromium as its own browser. With the host browser down, `pro browser reset` offered to end 12 container processes. It was previewed only, and nothing was ended. Whether that path caused the 00:31 stop is not established: the host's automatic recovery matches by its recorded profile, which excludes the container.
74
+
75
+ **Live check after install (installed 0.40.29, shared WSL browser, new ChatGPT build)**
76
+ - Answered:
77
+ - new-chat attach
78
+ - project attach
79
+ - `--continue`
80
+ - markdown `--file`
81
+ - a formatted answer, with heading, numbered list and fenced code
82
+ - create-image
83
+ - `pro list` took 2.5 s on a repo with 260 consults; it had taken 238 s before this release.
84
+
19
85
  ## 0.40.28 Release Record
20
86
 
21
87
  Release commit `8100c37` on `main` (cut after PR #18, merge `8afda89`); tag `v0.40.28`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@youdie006/prodex",
3
- "version": "0.40.29",
3
+ "version": "0.40.30",
4
4
  "description": "Local receipt bus for coordinating Codex execution with ChatGPT Pro/Projects consultation.",
5
5
  "author": "youdie006",
6
6
  "license": "MIT",