Skip to content

feat: create your own yard release - #379

Merged
oddessentials merged 20 commits into
mainfrom
release/next
Nov 7, 2026
Merged

oddessentials merged 20 commits into
mainfrom
release/next

Conversation

@oddessentials

Copy link
Copy Markdown
Owner

Closes #378.

Anyone can now replace a Yard's surroundings with a world they built in Agent Guild: Builders, or one someone shared with them.

Create your own Yard

  • Every Yard has a small spot at the bottom-left: Replace this Yard and Build a world, or Restore original and Replace once a world is in use.
  • Replace opens the existing folder dialog, filtered to .agworld files on the computer running Agent Guild. Build a world opens the Builders release page and shows only on Windows managers.
  • A world can replace any Yard. The Yard keeps its own halls and crew, and shows the world's title. There is one world per Yard, and Restore original deletes it.
  • World files are treated as untrusted. Names, sizes, hashes, image headers and the layout hash are checked before anything is served, and only plates and skies are served, under the existing security headers.
  • A world that cannot be used leaves the Yard showing its original and says why. An interrupted install or a locked file leaves the reported state true, and a leftover folder cannot stop the manager from starting.
  • New routes are in docs/api.md: /yard-worlds, /yard-worlds/:skin, and files=agworld on /folders.

Buttons

  • Grove's install button is rebuilt as live text. Guild gets a Play now button for Arena, and Professional an Install now button for Builders, with a BETA stamp where it fits.
  • The Terminal AI Chat card shows the five Yard buttons at their smallest under "Need a break?". On touch, a first tap names the button and a second opens it. Orbital's stays a split button with AI Revolt and Towers.

Maintenance

  • Removes Dependabot.
  • Updates ws to 8.22.1, markdown-it to 15.0.3 (fixes GHSA-vfgh-jcmw-g37q and GHSA-gfr2-rv44-r23c) and three to r187, and applies audit fixes to the release tooling lockfile.
  • The macOS WebKit job runs only the WebKit pass of the dialog check, because the Linux job already runs the Chrome pass.

Checks

On Windows, at a45bdef:

  • npm test: 1203 passed, 0 failed, 75 skipped.
  • Browser tests: all 12 pass, including layout and yard.

Also run locally:

  • layout under CI's Ubuntu fonts, without Yard art.
  • A real Builders export on all six Yards, by day and at dusk, on software rendering, before the later fixes. Replace and Restore were rerun against a real manager after the state fixes.
  • World install from an npm pack copy, through the API only.

Not run locally, so this PR's CI is their first run: the macOS and Node version matrix, systemd, Alpine musl, release plan, native builds and check-tarball.

🤖 Generated with Claude Code

oddessentials and others added 20 commits November 6, 2026 09:03
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
markdown-it 15.0.3 fixes GHSA-vfgh-jcmw-g37q and GHSA-gfr2-rv44-r23c.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… buttons

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…essional Yard

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every Yard gets a small spot, in one place, to replace its surroundings with an
.agworld file chosen on the manager's computer, restore the original, or get
Agent Guild: Builders. Files are checked as untrusted before anything is served,
and a world that cannot be used leaves the Yard showing its original and says why.

Refs #378

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The layout hash now covers only what plates depend on: the camera, the sun and
the plaza. A test pins it, and another keeps every hall on the ground worlds
keep clear, which the hash no longer guards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The card shows the five Yard buttons at their smallest under "Need a break?".
A touch needs a second tap, so a stray tap opens nothing. The buttons' shared
SVG definitions move out of the Yard, which the Cards view hides.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s interrupted

The page tracks the revision it asked for and takes state only from events. The
manager commits a world with one rename, treats cleanup as best effort that
retries later, always reports what is on disk, and cannot fail to start over a
leftover folder. Each install gets its own revision.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The macOS WebKit job also ran the whole Chrome pass that the Linux job
already runs. Serve the page without Chrome when PLAYWRIGHT_MODULE is set
and run only the WebKit pass there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nu on screen

A world's sky must now carry Builders' exact header, so the renderer can't read a
larger size than the one checked. A menu that wouldn't fit below its button opens
above it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@oddessentials
oddessentials merged commit 3b660d4 into main Nov 7, 2026
35 checks passed
@oddessentials
oddessentials deleted the release/next branch November 7, 2026 01:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: let a Yard use a custom environment from a world file

1 participant