Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,8 @@ Failed news, model list and release checks retry after 10 minutes.
[Agent Guild: World](https://store.steampowered.com/app/5462970/Agent_Guild_World/)
is a free, living 3D world for your AI coding agents, coming to Steam in
November 2026: six worlds to roam with a free camera, your own characters and
companions from the Steam Workshop, a Guild Board for your notes and to-dos,
companions from [Agent Guild: Studio](https://github.com/oddessentials/agent-guild-studio)
or the Steam Workshop, a Guild Board for your notes and to-dos,
and controller support, on Windows, macOS and Linux.
[Wishlist it on Steam](https://store.steampowered.com/app/5462970/Agent_Guild_World/).

Expand Down
2 changes: 1 addition & 1 deletion src/mcp/server.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const HIDDEN = '[token hidden]';
// 64 bits of the known token; leave colors, short hashes and 12-digit session ids readable.
const MIN_TOKEN_FRAGMENT = 16;

const CUSTOMIZE = 'To customize a Yard or the characters and companions of Agent Guild: World, or to install Grove Companion on the desktop, follow https://agentguild.oddessentials.ai/agents/.';
const CUSTOMIZE = 'To customize a Yard, the characters and companions of a Yard or Agent Guild: World, or to install Grove Companion on the desktop, follow https://agentguild.oddessentials.ai/agents/.';

const INSTRUCTIONS = `Agent Guild runs coding agents (Claude Code, Codex CLI, Antigravity CLI, Grok Build, Docker Agent) and shells in real terminals on this computer, and opens them on every other screen.
Use guild_status first, list_sessions to see the sessions, read_reply for the answer that ended a session's last turn, and read_screen for what its terminal shows now.
Expand Down
3 changes: 2 additions & 1 deletion tests/browser/companion.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ await withPage({ name: 'companion', instrumentation }, async ({ origin, navigate
for (const [platform, visible] of [['linux', false], ['win32', true], ['darwin', true]]) {
await evaluate(`changePlatform(${JSON.stringify(platform)})`);
assert.equal(await evaluate('document.querySelector("#yard-install").checkVisibility()'), visible);
assert.equal(await evaluate('document.querySelector("#yard-world-get").hidden'), !visible);
}
await evaluate('document.documentElement.dataset.skin="guild"');
assert.equal(await evaluate('document.querySelector("#yard-install").checkVisibility()'), false);
Expand All @@ -131,5 +132,5 @@ await withPage({ name: 'companion', instrumentation }, async ({ origin, navigate
await click();
assert.equal(await evaluate('installRequests.length'), 1);
assert.deepEqual(errors, []);
pass('the install control follows platform, skin and connection availability');
pass('the install control follows platform, skin and connection availability, and Build a Yard follows platform');
});
2 changes: 1 addition & 1 deletion tests/browser/layout.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ const checks = await withPage({ name: 'layout', instrumentation }, async ({ orig
await evaluate('document.documentElement.dataset.skin="professional"');
await layoutReady();
assert.deepEqual([await visible('#yard-play'), await visible('#yard-play-solo'), await visible('#yard-play-arena')], [false, false, false], 'Professional shows only Builders');
assert.deepEqual(await evaluate('(()=>{const a=document.querySelector("#yard-play-builders");return [a.href,a.target,a.rel,a.querySelector(".yard-play-sub").textContent]})()'), ['https://github.com/oddessentials/agent-guild-builders/releases/latest', '_blank', 'noopener noreferrer', 'Builders · for Windows']);
assert.deepEqual(await evaluate('(()=>{const a=document.querySelector("#yard-play-builders");return [a.href,a.target,a.rel,a.querySelector(".yard-play-sub").textContent]})()'), ['https://github.com/oddessentials/agent-guild-builders/releases/latest', '_blank', 'noopener noreferrer', 'Builders · Windows or macOS']);
for (const [width, height] of [[1440, 900], [980, 800], [524, 800], [484, 800], [444, 800], [356, 800], [336, 640]]) {
await size(width, height);
await soloPlaced(`professional ${width}`, width, '#yard-play-builders', '.yard-play-builders');
Expand Down
5 changes: 5 additions & 0 deletions tests/page-folders.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,11 @@ test('a first piece choice opens in World’s Workshop folder, later ones where
later.context.chooseFolder('character', 'guild', 'anthropic');
await new Promise((resolve) => setImmediate(resolve));
assert.deepEqual(later.requests.map(([, route]) => route), ['/folders?path=%2Fwork%2Fspace&pieces=character']);
for (const [platform, studio] of [['linux', false], ['win32', true], ['darwin', true]]) {
later.context.state.platform = platform;
later.context.renderFolderBrowser();
assert.equal(later.$('folder-status').textContent.includes('Agent Guild: Studio'), studio, platform);
}
const plain = page({ answers: [listing] });
plain.context.chooseFolder('cwd');
await new Promise((resolve) => setImmediate(resolve));
Expand Down
4 changes: 2 additions & 2 deletions web/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -1571,7 +1571,7 @@ function renderFolderBrowser() {
: error ? error
: !listing ? ''
: listing.files?.length || listing.pieces?.length ? ''
: PIECE_FIELDS.includes(folderView.field) ? `No ${folderView.field === 'character' ? 'characters' : 'companions'} here or in the folders inside it. Steam keeps Workshop items in its library under steamapps › workshop › content › 5462970.`
: PIECE_FIELDS.includes(folderView.field) ? `No ${folderView.field === 'character' ? 'characters' : 'companions'} here or in the folders inside it.${['win32', 'darwin'].includes(state.platform) ? ' Make one with Agent Guild: Studio.' : ''} Steam keeps Workshop items in its library under steamapps › workshop › content › 5462970.`
: !entries.length ? (folderView.field === 'world' ? 'No world files here.' : listing.entries.length ? 'No folders match.' : 'No folders here.')
: listing.truncated ? `Showing the first ${listing.entries.length.toLocaleString()} folders.` : '';
status.classList.toggle('error', Boolean(error));
Expand Down Expand Up @@ -8084,7 +8084,7 @@ function connectEvents() {
state.folderOpener = msg.folderOpener || null;
state.platform = msg.platform || null;
$('yard-install').hidden = !['win32', 'darwin'].includes(state.platform);
$('yard-world-get').hidden = state.platform !== 'win32';
$('yard-world-get').hidden = !['win32', 'darwin'].includes(state.platform);
state.yardWorlds = msg.yardWorlds ?? null;
state.yardPieces = msg.yardPieces ?? null;
state.remoteAccessUI?.setAvailable(msg.remoteAccess);
Expand Down
2 changes: 1 addition & 1 deletion web/index.html

Large diffs are not rendered by default.

Loading