@oddessentials/agent-guild 1.4.0 → 1.6.0
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 +44 -29
- package/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
- package/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
- package/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/package.json +1 -1
- package/src/manager/github-views.mjs +133 -9
- package/src/manager/github.mjs +1 -0
- package/src/manager/remote-access.mjs +24 -8
- package/src/manager/server.mjs +2 -1
- package/src/manager/tailscale.mjs +4 -1
- package/web/app.js +24 -8
- package/web/host.js +20 -2
- package/web/index.html +13 -0
- package/web/remote-access.js +14 -0
- package/web/theme.js +8 -2
- package/web/yard/art.json +1 -1
- package/web/yard/model.mjs +21 -2
- package/web/yard/renderer.js +12 -5
- package/web/yard/view.js +15 -6
- package/web/yard/yard.css +10 -0
package/web/yard/view.js
CHANGED
|
@@ -27,7 +27,7 @@ export function initYard(controller) {
|
|
|
27
27
|
const root = document.documentElement;
|
|
28
28
|
let view = root.dataset.view === 'yard' ? 'yard' : 'cards';
|
|
29
29
|
let snapshot = controller.snapshot();
|
|
30
|
-
let lastSkin = '', lastTheme = '';
|
|
30
|
+
let lastSkin = '', lastTheme = '', wasConnected = false;
|
|
31
31
|
const sceneVisible = () => view === 'yard' && !$('app').hidden && document.visibilityState !== 'hidden' && $('terminal-panel').hidden;
|
|
32
32
|
const skinEntry = (skin = root.dataset.skin) => (window.agentGuildSkins || []).find((item) => item.id === skin) || null;
|
|
33
33
|
// A skin has a yard only when model.mjs has its world.
|
|
@@ -50,7 +50,7 @@ export function initYard(controller) {
|
|
|
50
50
|
const allowed = skinAllowsYard();
|
|
51
51
|
view = next === 'yard' && allowed ? 'yard' : 'cards';
|
|
52
52
|
root.dataset.view = view;
|
|
53
|
-
if (remember) { try { localStorage.setItem('agentGuild.view', next === 'yard' && allowed ? 'yard' : 'cards'); } catch {} }
|
|
53
|
+
if (remember && !controller.expand) { try { localStorage.setItem('agentGuild.view', next === 'yard' && allowed ? 'yard' : 'cards'); } catch {} }
|
|
54
54
|
$('view-cards').checked = view === 'cards';
|
|
55
55
|
const yardChoice = $('view-yard');
|
|
56
56
|
yardChoice.checked = view === 'yard';
|
|
@@ -242,6 +242,9 @@ export function initYard(controller) {
|
|
|
242
242
|
function update() {
|
|
243
243
|
if (disposed || view !== 'yard') return;
|
|
244
244
|
snapshot = controller.snapshot();
|
|
245
|
+
if (snapshot.connected) wasConnected = true;
|
|
246
|
+
$('yard-offline').hidden = !controller.expand || snapshot.connected || !(wasConnected || snapshot.retrying);
|
|
247
|
+
$('yard-offline-text').textContent = wasConnected ? 'Agent Guild disconnected. Reconnecting…' : 'Can’t reach Agent Guild. Retrying…';
|
|
245
248
|
if (selected && !(selected.kind === 'provider' ? snapshot.providers : snapshot.sessions).some(x => x.id === selected.id)) {
|
|
246
249
|
const row = rows.get(selected.kind + ':' + selected.id);
|
|
247
250
|
const restoreFocus = row?.contains(document.activeElement) || $('yard-inspector').contains(document.activeElement);
|
|
@@ -275,11 +278,17 @@ export function initYard(controller) {
|
|
|
275
278
|
}
|
|
276
279
|
$('view-cards').addEventListener('change',() => setView('cards'));
|
|
277
280
|
$('view-yard').addEventListener('change',() => { if (skinAllowsYard()) setView('yard'); });
|
|
278
|
-
|
|
281
|
+
const showCards = () => {
|
|
282
|
+
if (controller.expand) return controller.expand();
|
|
283
|
+
setView('cards'); ($('settings').checkVisibility() ? $('settings') : $('menu-toggle')).focus();
|
|
284
|
+
};
|
|
285
|
+
if (controller.expand) for (const id of ['yard-cards','yard-download-cards']) $(id).textContent = 'Open Agent Guild';
|
|
286
|
+
$('yard-cards').addEventListener('click',showCards);
|
|
287
|
+
$('yard-offline-open').addEventListener('click',() => controller.expand?.());
|
|
279
288
|
$('yard-retry').addEventListener('click',() => { failed=false; ensureScene(); });
|
|
280
289
|
$('yard-download-cancel').addEventListener('click',() => artAction('cancel'));
|
|
281
290
|
$('yard-download-retry').addEventListener('click',() => artAction('download'));
|
|
282
|
-
$('yard-download-cards').addEventListener('click',
|
|
291
|
+
$('yard-download-cards').addEventListener('click',showCards);
|
|
283
292
|
$('yard-swap-retry').addEventListener('click',() => {
|
|
284
293
|
if ($('yard-swap-failure').contains(document.activeElement)) $('yard-stage').focus();
|
|
285
294
|
$('yard-swap-failure').hidden = true;
|
|
@@ -305,8 +314,8 @@ export function initYard(controller) {
|
|
|
305
314
|
const visibility = () => { update(); renderer?.setActive(sceneVisible()); };
|
|
306
315
|
// A skin change keeps the saved preference and only changes what is on screen.
|
|
307
316
|
const onAppearance = () => {
|
|
308
|
-
let preferYard =
|
|
309
|
-
try { preferYard = localStorage.getItem('agentGuild.view') === 'yard'; } catch {}
|
|
317
|
+
let preferYard = Boolean(controller.expand);
|
|
318
|
+
if (!preferYard) try { preferYard = localStorage.getItem('agentGuild.view') === 'yard'; } catch {}
|
|
310
319
|
setView(preferYard && skinAllowsYard() ? 'yard' : 'cards', { remember: false });
|
|
311
320
|
renderer?.setActive(sceneVisible());
|
|
312
321
|
};
|
package/web/yard/yard.css
CHANGED
|
@@ -116,6 +116,16 @@
|
|
|
116
116
|
#yard-help { font-size:9px; }
|
|
117
117
|
}
|
|
118
118
|
@media(max-width:640px) { :root[data-view="yard"] .cwd { flex-basis:100%; } }
|
|
119
|
+
:root[data-layout="compact"] .topbar, :root[data-layout="compact"] #app > .launcher, :root[data-layout="compact"] .yard-heading, :root[data-layout="compact"] .yard-news, :root[data-layout="compact"] .yard-sidebar, :root[data-layout="compact"] #yard-help, :root[data-layout="compact"] #yard-failure > p { display:none; }
|
|
120
|
+
:root[data-layout="compact"] body { min-height:0; }
|
|
121
|
+
:root[data-layout="compact"] #yard { display:flex; height:100dvh; min-height:0; }
|
|
122
|
+
:root[data-layout="compact"] .yard-main { flex:1; height:auto; min-height:0; }
|
|
123
|
+
:root[data-layout="compact"] .yard-stage { min-height:0; }
|
|
124
|
+
:root[data-layout="compact"] .yard-camera { right:8px; bottom:8px; }
|
|
125
|
+
:root[data-layout="compact"] #yard-offline { top:8px; bottom:auto; left:8px; right:8px; transform:none; flex-wrap:wrap; justify-content:center; text-align:center; border-radius:var(--radius); background:var(--surface); }
|
|
126
|
+
:root[data-layout="compact"] #yard-stage:has(#yard-offline:not([hidden])) :is(canvas, .yard-labels) { opacity:.5; filter:grayscale(1); }
|
|
127
|
+
:root[data-layout="compact"] #yard-stage:has(#yard-offline:not([hidden])) :is(#yard-download, #yard-loading) { display:none; }
|
|
128
|
+
:root[data-layout="compact"] .yard-failure { top:50%; max-height:calc(100% - 16px); overflow:auto; padding:14px; }
|
|
119
129
|
.yard-help-touch { display:none; }
|
|
120
130
|
@media(pointer:coarse) { .yard-help-pointer { display:none; } .yard-help-touch { display:inline; } }
|
|
121
131
|
@media(prefers-reduced-motion:reduce) {
|