scenri 0.9.1 → 0.9.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
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.9.2](https://github.com/tonygorb/Scenri/compare/v0.9.1...v0.9.2) (2026-09-07)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **codex:** name the model the installed cli is too old for ([91868da](https://github.com/tonygorb/Scenri/commit/91868daf6ec2d8f3d2c6e636923683d7650aafbf))
|
|
9
|
+
* **codex:** name the model the installed cli is too old for ([66b6b81](https://github.com/tonygorb/Scenri/commit/66b6b819303c4ed99fc40e6137bf00725b4d9673))
|
|
10
|
+
|
|
3
11
|
## [0.9.1](https://github.com/tonygorb/Scenri/compare/v0.9.0...v0.9.1) (2026-09-07)
|
|
4
12
|
|
|
5
13
|
|
package/dist/serve.js
CHANGED
|
@@ -740,6 +740,10 @@ function codexFailureDetail(stderr, stdout) {
|
|
|
740
740
|
const marked = body.startsWith("ERROR:") ? body : errorAt >= 0 ? body.slice(errorAt + 1) : "";
|
|
741
741
|
return tailOf(marked) || tailOf(body) || tailOf(stdout.trim()) || tailOf(stderr.trim());
|
|
742
742
|
}
|
|
743
|
+
var MODEL_NEEDS_NEWER_CODEX = /The '([^']+)' model requires a newer version of Codex/;
|
|
744
|
+
function tooOldForModel(version, model) {
|
|
745
|
+
return `Codex CLI ${version ?? "on this computer"} is too old for the model it is set to, ${model}.`;
|
|
746
|
+
}
|
|
743
747
|
function killTree(child, platform, spawnImpl) {
|
|
744
748
|
if (platform === "win32" && child.pid) {
|
|
745
749
|
try {
|
|
@@ -783,6 +787,8 @@ function createRunner(opts = {}) {
|
|
|
783
787
|
resolved ??= await resolveCodex(platform, spawnImpl);
|
|
784
788
|
return resolved;
|
|
785
789
|
}
|
|
790
|
+
let knownVersion = null;
|
|
791
|
+
let tooOldFor = null;
|
|
786
792
|
const winArg = (a) => `"${a.replace(/[\r\n]+/g, " ").replace(/"/g, "'").replace(/%/g, " percent ")}"`;
|
|
787
793
|
const spawnCodex = (exe, args, stdinOpen) => {
|
|
788
794
|
const stdio = [stdinOpen ? "pipe" : "ignore", "pipe", "pipe"];
|
|
@@ -890,6 +896,17 @@ function createRunner(opts = {}) {
|
|
|
890
896
|
);
|
|
891
897
|
return;
|
|
892
898
|
}
|
|
899
|
+
const newer = MODEL_NEEDS_NEWER_CODEX.exec(stderr);
|
|
900
|
+
if (newer) {
|
|
901
|
+
const model = newer[1];
|
|
902
|
+
tooOldFor = { version: knownVersion, model };
|
|
903
|
+
invalidateProbe();
|
|
904
|
+
finish(
|
|
905
|
+
`exit-${code ?? "unknown"}`,
|
|
906
|
+
() => reject(new Error(`${tooOldForModel(knownVersion, model)} Update Codex CLI, then run this again.`))
|
|
907
|
+
);
|
|
908
|
+
return;
|
|
909
|
+
}
|
|
893
910
|
const snippet2 = codexFailureDetail(stderr, stdout);
|
|
894
911
|
finish(
|
|
895
912
|
`exit-${code ?? "unknown"}`,
|
|
@@ -971,6 +988,7 @@ function createRunner(opts = {}) {
|
|
|
971
988
|
return verdict({ ok: false, reason: NOT_INSTALLED_REASON, code: "not-installed" }, exe, null);
|
|
972
989
|
}
|
|
973
990
|
const version = parseCodexVersion(ver.stdout);
|
|
991
|
+
knownVersion = version;
|
|
974
992
|
if (version && !versionAtLeast(version, MIN_CODEX_VERSION)) {
|
|
975
993
|
return verdict(
|
|
976
994
|
{
|
|
@@ -982,6 +1000,16 @@ function createRunner(opts = {}) {
|
|
|
982
1000
|
version
|
|
983
1001
|
);
|
|
984
1002
|
}
|
|
1003
|
+
if (tooOldFor) {
|
|
1004
|
+
if (version === tooOldFor.version) {
|
|
1005
|
+
return verdict(
|
|
1006
|
+
{ ok: false, reason: tooOldForModel(version, tooOldFor.model), code: "update-needed" },
|
|
1007
|
+
exe,
|
|
1008
|
+
version
|
|
1009
|
+
);
|
|
1010
|
+
}
|
|
1011
|
+
tooOldFor = null;
|
|
1012
|
+
}
|
|
985
1013
|
const login = await probeSpawn(exe, ["login", "status"]);
|
|
986
1014
|
if (login.outcome === "ok") {
|
|
987
1015
|
return verdict({ ok: true }, exe, version);
|
|
@@ -1495,7 +1523,7 @@ function createCodexEngine(opts) {
|
|
|
1495
1523
|
}
|
|
1496
1524
|
};
|
|
1497
1525
|
function isFatalSetupError(err) {
|
|
1498
|
-
return /failed to spawn|ENOENT|not logged in|login required|401|unauthorized/i.test(
|
|
1526
|
+
return /failed to spawn|ENOENT|not logged in|login required|401|unauthorized|is too old/i.test(
|
|
1499
1527
|
String(err?.message ?? err)
|
|
1500
1528
|
);
|
|
1501
1529
|
}
|
|
@@ -7789,6 +7817,16 @@ function registerImageRoutes(app, deps) {
|
|
|
7789
7817
|
|
|
7790
7818
|
// src/release/notes.data.ts
|
|
7791
7819
|
var RELEASES = [
|
|
7820
|
+
{
|
|
7821
|
+
version: "0.9.2",
|
|
7822
|
+
date: "2026-09-07",
|
|
7823
|
+
sections: [
|
|
7824
|
+
{
|
|
7825
|
+
heading: "Fixes",
|
|
7826
|
+
body: "If the Codex app has switched to a model your Codex CLI is too old for, a shot now stops with a plain sentence naming the version and the model, and the setup dialog opens on the update step rather than a green check. Update the CLI once and generation resumes."
|
|
7827
|
+
}
|
|
7828
|
+
]
|
|
7829
|
+
},
|
|
7792
7830
|
{
|
|
7793
7831
|
version: "0.9.1",
|
|
7794
7832
|
date: "2026-09-07",
|