pokertools-arena 0.4.0 → 0.4.1
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
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
| **Package** | `npx pokertools-arena` |
|
|
18
18
|
| **Runtime** | Node.js ≥ 24 for tooling; any modern browser for the app |
|
|
19
19
|
|
|
20
|
-
> **Current release: 0.4.
|
|
20
|
+
> **Current release: 0.4.1.** A maintenance release on top of the 0.4.0 methodology work: modal tooltips now float above overflow, the launcher starts exactly once when its default port is busy, and the real-API diagnostics skip cleanly when repository secrets are absent.
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
package/bin/pokertools-arena.mjs
CHANGED
|
@@ -135,7 +135,7 @@ function safePath(urlPath) {
|
|
|
135
135
|
return resolved.startsWith(root) ? resolved : null;
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
async function handleRequest(req, res) {
|
|
139
139
|
try {
|
|
140
140
|
const urlPath = (req.url || '/').split('?')[0];
|
|
141
141
|
if (urlPath === '/arena-env.js') {
|
|
@@ -160,7 +160,7 @@ const server = createServer(async (req, res) => {
|
|
|
160
160
|
res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
|
|
161
161
|
res.end('Not found');
|
|
162
162
|
}
|
|
163
|
-
}
|
|
163
|
+
}
|
|
164
164
|
|
|
165
165
|
function openBrowser(url) {
|
|
166
166
|
const platform = process.platform;
|
|
@@ -176,6 +176,11 @@ function openBrowser(url) {
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
function listen(port) {
|
|
179
|
+
// A fresh Server per attempt. Reusing one Server and calling listen() again
|
|
180
|
+
// from inside its EADDRINUSE handler makes Node emit 'listening' twice, which
|
|
181
|
+
// printed the banner twice and opened two browser windows when the port was
|
|
182
|
+
// already in use.
|
|
183
|
+
const server = createServer(handleRequest);
|
|
179
184
|
server.once('error', error => {
|
|
180
185
|
if (error.code === 'EADDRINUSE' && port < requestedPort + 20) return listen(port + 1);
|
|
181
186
|
console.error(`pokertools-arena: ${error.message}`);
|
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Release notes
|
|
2
2
|
|
|
3
|
+
## 0.4.1 — Maintenance
|
|
4
|
+
|
|
5
|
+
A maintenance release on top of the 0.4.0 methodology work.
|
|
6
|
+
|
|
7
|
+
### Tooltips
|
|
8
|
+
|
|
9
|
+
- Modal tooltips are rendered by a single fixed-position element attached to the
|
|
10
|
+
topmost open `<dialog>`. They escape the modal's overflow clipping, flip above
|
|
11
|
+
the trigger when there is no room below, and stay inside the viewport, so every
|
|
12
|
+
information tooltip is fully visible.
|
|
13
|
+
|
|
14
|
+
### Launcher
|
|
15
|
+
|
|
16
|
+
- The local launcher binds a fresh HTTP server per port attempt. When the default
|
|
17
|
+
port is already in use it now starts exactly once (one banner, one browser
|
|
18
|
+
window) on the next free port instead of starting twice.
|
|
19
|
+
|
|
20
|
+
### CI
|
|
21
|
+
|
|
22
|
+
- Real-API diagnostics have a credential preflight. When the `OPENAI_*`
|
|
23
|
+
repository secrets are not configured the diagnostics job is skipped with a
|
|
24
|
+
notice instead of failing a published release.
|
|
25
|
+
|
|
3
26
|
## 0.4.0 — Methodology, reproducibility and repository organization
|
|
4
27
|
|
|
5
28
|
This release does not redesign the 0.3.0 decision foundations. It makes the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pokertools-arena",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Browser-first AI poker benchmark powered by @pokertools/engine with generic OpenAI-compatible endpoints, optional OpenRouter/Jev Decisions routing, deterministic hierarchical decisions, paired fixed-state methodology, and reproducible reporting.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"check": "node --check src/app.js && node --check src/benchmark/scenarios.js && node --check build.mjs && node --check bin/pokertools-arena.mjs && node tests/release-check.mjs",
|
|
24
24
|
"test": "npm run build && npm run check && npm run test:unit && npm run test:integration",
|
|
25
25
|
"test:unit": "node tests/unit/decision-scenarios.mjs && node tests/unit/decision-diagnostics.mjs && node tests/unit/hierarchical-decision-tests.mjs && node tests/unit/methodology-tests.mjs && node tests/unit/size-bucket-tests.mjs && node tests/unit/paired-architecture-tests.mjs && node tests/unit/archive-content.mjs && node tests/unit/report-consistency.mjs",
|
|
26
|
-
"test:integration": "node tests/integration/pokertools-integration.mjs && node tests/integration/env-bootstrap.mjs",
|
|
26
|
+
"test:integration": "node tests/integration/pokertools-integration.mjs && node tests/integration/env-bootstrap.mjs && node tests/integration/launcher-port-retry.mjs",
|
|
27
27
|
"test:diagnostics": "node tests/real/real-decision-diagnostics.mjs",
|
|
28
28
|
"test:diagnostics:dry": "node tests/real/real-decision-diagnostics.mjs --dry-run",
|
|
29
29
|
"test:real": "node tests/real/real-decision-diagnostics.mjs && node tests/real/real-paired-corpus.mjs",
|