@youdie006/prodex 0.40.34 → 0.40.35
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/dist/chatgpt-browser.js +17 -2
- package/docs/releasing.md +19 -0
- package/package.json +1 -1
package/dist/chatgpt-browser.js
CHANGED
|
@@ -6122,8 +6122,23 @@ const NORMALIZED_PROMPT_MATCH_CHARS = 120;
|
|
|
6122
6122
|
// The composer can autolink a url before the send, storing "[url](url)" in
|
|
6123
6123
|
// place of the bare url (measured 2026-10-07, under load).
|
|
6124
6124
|
const AUTOLINKED_URL_PATTERN = /\[(https?:\/\/[^\]\s]+)\]\(\1\)/g;
|
|
6125
|
+
/**
|
|
6126
|
+
* ChatGPT displays a sent turn's HTML entities decoded (measured 2026-10-19:
|
|
6127
|
+
* "& <b>" was shown as "& <b>"), so both sides are compared decoded.
|
|
6128
|
+
*/
|
|
6129
|
+
function decodeHtmlEntities(value) {
|
|
6130
|
+
const named = { amp: "&", lt: "<", gt: ">", quot: '"', apos: "'", nbsp: " " };
|
|
6131
|
+
return value.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi, (entity, body) => {
|
|
6132
|
+
const lower = body.toLowerCase();
|
|
6133
|
+
if (lower.startsWith("#")) {
|
|
6134
|
+
const code = lower.startsWith("#x") ? Number.parseInt(lower.slice(2), 16) : Number.parseInt(lower.slice(1), 10);
|
|
6135
|
+
return code > 0 && code <= 0x10ffff ? String.fromCodePoint(code) : entity;
|
|
6136
|
+
}
|
|
6137
|
+
return named[lower] ?? entity;
|
|
6138
|
+
});
|
|
6139
|
+
}
|
|
6125
6140
|
function normalizeChatGptPromptText(value) {
|
|
6126
|
-
const unescaped = value.replace(AUTOLINKED_URL_PATTERN, "$1").replace(/\\([\\`*_{}[\]()#+\-.!>~|])/g, "$1");
|
|
6141
|
+
const unescaped = decodeHtmlEntities(value).replace(AUTOLINKED_URL_PATTERN, "$1").replace(/\\([\\`*_{}[\]()#+\-.!>~|])/g, "$1");
|
|
6127
6142
|
const renderedFences = unescaped.replace(/(^|\r?\n)```text[ \t]*\r?\n([\s\S]*?)\r?\n```(?=\r?\n|$)/g, "$1text\n$2");
|
|
6128
6143
|
return renderedFences.replace(/\s+/g, " ").trim();
|
|
6129
6144
|
}
|
|
@@ -6154,7 +6169,7 @@ export function chatGptRequestMatchesUserTurn(userText, sentPrompt, requestId) {
|
|
|
6154
6169
|
return withoutFenceLines(userText).includes(withoutFenceLines(sentPrompt));
|
|
6155
6170
|
}
|
|
6156
6171
|
function withoutFenceLines(value) {
|
|
6157
|
-
return value
|
|
6172
|
+
return decodeHtmlEntities(value)
|
|
6158
6173
|
.replace(AUTOLINKED_URL_PATTERN, "$1")
|
|
6159
6174
|
.replace(/\\([\\`*_{}[\]()#+\-.!>~|])/g, "$1")
|
|
6160
6175
|
.replace(/^[ \t]*```[\w-]*[ \t]*$/gm, "")
|
package/docs/releasing.md
CHANGED
|
@@ -16,6 +16,25 @@ 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
|
+
## 0.40.34 Release Record
|
|
20
|
+
|
|
21
|
+
Release commit `574e5f0` on `main` (cut after PR #28, merge `1d93de4`); tag `v0.40.34`.
|
|
22
|
+
|
|
23
|
+
**Publishing**
|
|
24
|
+
- `publish.yml` run 39201678797 passed all six platforms on the first attempt, then npm publish with SLSA v1 provenance and the GitHub Release (2026-10-19 04:52 UTC).
|
|
25
|
+
- `npm run release:verify` passed on the release commit after a build.
|
|
26
|
+
|
|
27
|
+
**Installed**
|
|
28
|
+
- WSL, M3, Mac mini: `prodex --version` reports 0.40.34. Running services were not restarted: 10 stdio MCP servers on WSL and 2 on M3 keep older code until their clients reconnect. The Mac mini had none running.
|
|
29
|
+
- The maintainer watchdog checkout was pulled to `574e5f0` and rebuilt.
|
|
30
|
+
|
|
31
|
+
**Verified live**
|
|
32
|
+
- Host, installed 0.40.34: `--model "GPT-5.6 Sol" --effort Pro` and then `--model GPT-6 --effort Pro` both answered; the picker ended on GPT-6, 5/5 Pro. Installed 0.40.33 had refused the Sol selection ("another element covers its click point").
|
|
33
|
+
- Before the fix, on ChatGPT build `bfc3a09a` the host matrix passed: `--continue-task`, `--temporary`, `--tool web-search`, `--attach`, `--project`, `recover --request-id`, `--effort High`, `--model Pro`.
|
|
34
|
+
|
|
35
|
+
**Browser container**
|
|
36
|
+
- `container/redesign-patches` `ab1c6e1` ports PR #28. Image `a3746b490dbb`; branch suite 2038 passed, 3 skipped. Swapped under the send lock check; the ChatGPT tab opened on its own. Live: GPT-5.6 Sol then GPT-6 Pro both answered.
|
|
37
|
+
|
|
19
38
|
## 0.40.33 Release Record
|
|
20
39
|
|
|
21
40
|
Release commit `0497134` on `main` (cut after PR #27, merge `6083c6a`); tag `v0.40.33`.
|