app
Codex
Public Made by Adomby adom
Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.
main
John Lauer
Keep Codex turns running across editor reloads; fix hidden-tab startup and composer fade in the optional package
4307d94
1mo ago
'use strict';
const assert = require('node:assert/strict');
const {watchRenderer} = require('../runtime/webview.cjs');
const realSetTimeout = global.setTimeout;
const realClearTimeout = global.clearTimeout;
const timers = new Map();
let id = 0;
global.setTimeout = callback => { timers.set(++id, callback); return id; };
global.clearTimeout = key => timers.delete(key);
try {
let changed, disposed, failures = 0, ready = false;
const panel = {visible: false, onDidChangeViewState(fn) { changed = fn; return {dispose() {}}; }};
const guard = {
start() { if (ready || this.timeout != null) return; this.timeout = setTimeout(() => failures++); },
dispose() { ready = true; clearTimeout(this.timeout); this.timeout = undefined; }
};
watchRenderer({}, 'panel', {findPanelByWebview: () => panel}, guard, fn => { disposed = fn; return {dispose() {}}; });
// A restored tab can stay hidden indefinitely: no startup timer exists.
assert.equal(timers.size, 0);
panel.visible = true; changed(); assert.equal(timers.size, 1);
panel.visible = false; changed(); assert.equal(timers.size, 0);
panel.visible = true; changed(); assert.equal(timers.size, 1);
guard.dispose(); assert.equal(timers.size, 0);
changed(); assert.equal(timers.size, 0);
disposed(); assert.equal(failures, 0);
let started = false;
watchRenderer({}, 'sidebar', {}, {start() { started = true; }}, () => {});
assert.equal(started, true);
console.log('Passed: hidden/visible/hidden/ready/disposed lifecycle; sidebar unchanged.');
} finally { global.setTimeout = realSetTimeout; global.clearTimeout = realClearTimeout; }