From 35a8c88d8281d8e0473713bc4718086b1b3fa889 Mon Sep 17 00:00:00 2001 From: frozaken Date: Sat, 24 Oct 2026 20:37:05 -0700 Subject: [PATCH 1/3] Sync the operations catalog with PublicSummerEngine main: October 2026 models (#1408) npm run sync:catalog -- --check failed on main: PublicSummerEngine #1408 added image, audio, sound-effect and video models (and 480p video) to the generate operations after 4.8.0's sync. The release gate needs the copy current. Co-Authored-By: Claude Opus 5.5 (1M context) --- registry/operations/public-catalog.json | 26 +++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/registry/operations/public-catalog.json b/registry/operations/public-catalog.json index 241dbeb8..f3c9b902 100644 --- a/registry/operations/public-catalog.json +++ b/registry/operations/public-catalog.json @@ -5885,6 +5885,8 @@ "description": "Leave out for the default (sound effects: the model the person last approved).", "type": "string", "enum": [ + "eleven_v4", + "eleven_v4_turbo", "eleven_v3", "eleven_multilingual_v2", "eleven_flash_v2_5", @@ -5896,8 +5898,10 @@ "inworld-tts-1.5-max", "eleven_text_to_sound_v2", "sonilo-sfx-1.1", + "mirelo-sfx-2.0", "stable-audio-3-sfx", "music_v2", + "music_v2_5", "music_v1" ] }, @@ -6159,6 +6163,17 @@ "google/nano-banana-lite/edit", "flux-2", "fal-ai/flux-2", + "nano-banana-2.1", + "google/nano-banana-2.1", + "flux-3", + "blackforestlabs/flux-3/text-to-image", + "flux-3-image", + "flux-3-klein", + "blackforestlabs/flux-3/klein/text-to-image", + "ideogram-4.5", + "ideogram/v4.5", + "recraft-4.1", + "fal-ai/recraft/v4.1/text-to-image", "grok-imagine-2", "xai/grok-imagine-image/v2.0/text-to-image", "nano-banana-2", @@ -6558,6 +6573,7 @@ "enum": [ "eleven_text_to_sound_v2", "sonilo-sfx-1.1", + "mirelo-sfx-2.0", "stable-audio-3-sfx" ] } @@ -6936,11 +6952,14 @@ "gemini-omni-flash-1.1", "seedance-2.5", "kling-3-pro", + "kling-4", "minimax-h3-max", + "minimax-h3-max-turbo", "wan-3", "happy-horse-1.1", "veo3.1-lite", "grok-video-1.5", + "grok-video-1.5-lite", "vidu-q3", "pixverse-v6", "ltx-2-5-pro", @@ -6948,7 +6967,8 @@ "ltx", "kling", "kling-turbo", - "veo3" + "veo3", + "vidu-q4" ] }, "duration": { @@ -6987,7 +7007,9 @@ "1080p", "4k", "768P", - "1080P" + "1080P", + "480P", + "480p" ] }, "dryRun": { From d138f616c19b99f8779ec38cb4615b4d835d7b49 Mon Sep 17 00:00:00 2001 From: frozaken Date: Sat, 24 Oct 2026 20:37:06 -0700 Subject: [PATCH 2/3] Tests pass on a Mac's default temp folder macOS tmpdir() is under /var, a symlink to /private/var. The fake HOME and the summer run test folder now use the real path, as a person's home and summer run do, so npm test (and npm publish's prepublishOnly) pass on a Mac: four tests in projects-local and run failed there, and passed only on CI. Co-Authored-By: Claude Opus 5.5 (1M context) --- src/cli/commands/run.test.ts | 5 +++-- src/mcp/legacy-toolset.test.ts | 4 ++-- src/test-helpers/fake-home.ts | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/cli/commands/run.test.ts b/src/cli/commands/run.test.ts index 687fc96e..0c90c844 100644 --- a/src/cli/commands/run.test.ts +++ b/src/cli/commands/run.test.ts @@ -1,5 +1,5 @@ import { EventEmitter } from "node:events"; -import { mkdtemp, rm } from "node:fs/promises"; +import { mkdtemp, realpath, rm } from "node:fs/promises"; import { join } from "node:path"; import { tmpdir } from "node:os"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; @@ -84,7 +84,8 @@ let errors: string[] = []; const originalExitCode = process.exitCode; beforeEach(async () => { - root = await mkdtemp(join(tmpdir(), "summer-run-test-")); + // The real path: macOS tmpdir() is under /var, a symlink to /private/var, and summer run passes the project's real path. + root = await realpath(await mkdtemp(join(tmpdir(), "summer-run-test-"))); setSummerDirForTests(join(root, ".summer")); logs = []; errors = []; diff --git a/src/mcp/legacy-toolset.test.ts b/src/mcp/legacy-toolset.test.ts index 4114e5e8..b5787172 100644 --- a/src/mcp/legacy-toolset.test.ts +++ b/src/mcp/legacy-toolset.test.ts @@ -1,4 +1,4 @@ -import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs"; +import { mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs"; import { homedir, tmpdir } from "node:os"; import { join } from "node:path"; import { afterEach, describe, expect, it } from "vitest"; @@ -50,7 +50,7 @@ describe("the legacy toolset", () => { it("is refreshed away on the first v4 server start only, never on v3 or under doctor's probe", () => { // This test deletes ~/.agents/skills: only ever under the faked HOME (src/test-helpers/fake-home.ts). - if (!homedir().startsWith(tmpdir())) throw new Error(`HOME is not a test folder: ${homedir()}`); + if (!homedir().startsWith(realpathSync(tmpdir()))) throw new Error(`HOME is not a test folder: ${homedir()}`); const shared = join(homedir(), ".agents", "skills"); const [skill] = getSkillRegistry(); mkdirSync(join(shared, skill.name), { recursive: true }); diff --git a/src/test-helpers/fake-home.ts b/src/test-helpers/fake-home.ts index 591c4a9b..7dad4577 100644 --- a/src/test-helpers/fake-home.ts +++ b/src/test-helpers/fake-home.ts @@ -8,12 +8,13 @@ * Why: a test that forgot the seam appended to the real ~/.summer/mcp.log * (2026-09-09). No test may touch the real ~/.summer. */ -import { mkdtempSync, rmSync } from "node:fs"; +import { mkdtempSync, realpathSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { afterAll } from "vitest"; -const fakeHome = mkdtempSync(join(tmpdir(), "summer-test-home-")); +// The real path, as a person's home is: macOS tmpdir() is under /var, a symlink to /private/var. +const fakeHome = realpathSync(mkdtempSync(join(tmpdir(), "summer-test-home-"))); process.env.HOME = fakeHome; process.env.USERPROFILE = fakeHome; process.env.HOMEDRIVE = ""; From 1fd730e8cb01369195d0b7f9ed15101937fe8e20 Mon Sep 17 00:00:00 2001 From: frozaken Date: Sat, 24 Oct 2026 20:37:06 -0700 Subject: [PATCH 3/3] Release 4.9.0: games go live on their checks, with Summer's review after (#216) summer_go_live and summer_publish_build read Summer's review of a live game (on_hold, taken_down), name the platforms a hosted release left out (notIncluded, notUsed) and say when Summer is still checking; Windows forms for the release-check skills (#240); the operations catalog synced. Bumps package.json, package-lock.json and the generated manifests to 4.9.0. Co-Authored-By: Claude Opus 5.5 (1M context) --- .claude-plugin/marketplace.json | 2 +- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- .cursor-plugin/plugin.json | 2 +- .factory-plugin/plugin.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ gemini-extension.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- plugins/claude/.claude-plugin/plugin.json | 4 ++-- plugins/claude/commands/start.md | 14 +++++++------- plugins/claude/skills/3d-lighting/SKILL.md | 2 +- plugins/claude/skills/adaptive-music/SKILL.md | 2 +- plugins/claude/skills/agent-playtesting/SKILL.md | 2 +- plugins/claude/skills/ambient-bed/SKILL.md | 2 +- plugins/claude/skills/animated-loop/SKILL.md | 2 +- plugins/claude/skills/animation-tree/SKILL.md | 2 +- plugins/claude/skills/art-direction/SKILL.md | 2 +- plugins/claude/skills/asset-strategy/SKILL.md | 2 +- plugins/claude/skills/audio-direction/SKILL.md | 2 +- plugins/claude/skills/auto-fire-targeting/SKILL.md | 2 +- plugins/claude/skills/brainstorm-game/SKILL.md | 2 +- plugins/claude/skills/browse-templates/SKILL.md | 2 +- plugins/claude/skills/camera-rigs/SKILL.md | 2 +- .../skills/character-animation-wiring/SKILL.md | 2 +- plugins/claude/skills/character-model/SKILL.md | 2 +- plugins/claude/skills/character-movement/SKILL.md | 2 +- plugins/claude/skills/character-portrait/SKILL.md | 2 +- plugins/claude/skills/cinematic-cutscene/SKILL.md | 2 +- plugins/claude/skills/combat-basics/SKILL.md | 2 +- .../skills/compatibility-renderer-traps/SKILL.md | 2 +- plugins/claude/skills/concept-art/SKILL.md | 2 +- plugins/claude/skills/concept-to-level/SKILL.md | 2 +- plugins/claude/skills/create-asset-sheet/SKILL.md | 2 +- plugins/claude/skills/debug/SKILL.md | 2 +- plugins/claude/skills/debugging-game-feel/SKILL.md | 2 +- plugins/claude/skills/design-level/SKILL.md | 2 +- plugins/claude/skills/design-mechanic/SKILL.md | 2 +- plugins/claude/skills/design-npc/SKILL.md | 2 +- .../skills/diagnosing-perf-regressions/SKILL.md | 2 +- .../claude/skills/driving-the-editor-ui/SKILL.md | 2 +- plugins/claude/skills/environment-kit/SKILL.md | 2 +- plugins/claude/skills/export-and-ship/SKILL.md | 2 +- plugins/claude/skills/fabricating-assets/SKILL.md | 2 +- plugins/claude/skills/facial-and-lipsync/SKILL.md | 2 +- plugins/claude/skills/fps-controller/SKILL.md | 2 +- plugins/claude/skills/game-feel/SKILL.md | 2 +- plugins/claude/skills/gameskill/SKILL.md | 2 +- plugins/claude/skills/gdscript-patterns/SKILL.md | 2 +- plugins/claude/skills/generate-motion/SKILL.md | 2 +- plugins/claude/skills/grow-analytics/SKILL.md | 2 +- plugins/claude/skills/headless-scripting/SKILL.md | 2 +- plugins/claude/skills/in-game-purchases/SKILL.md | 2 +- .../claude/skills/instantiate-asset-pack/SKILL.md | 2 +- plugins/claude/skills/make-content/SKILL.md | 2 +- plugins/claude/skills/make-game/SKILL.md | 2 +- .../claude/skills/multiplayer-movement/SKILL.md | 2 +- plugins/claude/skills/multiplayer-project/SKILL.md | 2 +- plugins/claude/skills/multiplayer-publish/SKILL.md | 2 +- plugins/claude/skills/multiplayer-state/SKILL.md | 2 +- plugins/claude/skills/multiplayer-testing/SKILL.md | 2 +- plugins/claude/skills/multiplayer/SKILL.md | 2 +- plugins/claude/skills/music-track/SKILL.md | 2 +- plugins/claude/skills/navigate-summer/SKILL.md | 2 +- plugins/claude/skills/new-project/SKILL.md | 2 +- plugins/claude/skills/organic-model/SKILL.md | 2 +- plugins/claude/skills/pixel-art/SKILL.md | 2 +- plugins/claude/skills/play/SKILL.md | 2 +- .../claude/skills/playtesting-a-feature/SKILL.md | 2 +- .../claude/skills/procedural-animation/SKILL.md | 2 +- plugins/claude/skills/prop-model/SKILL.md | 2 +- plugins/claude/skills/publish-your-game/SKILL.md | 2 +- plugins/claude/skills/release-checklist/SKILL.md | 2 +- plugins/claude/skills/release-readiness/SKILL.md | 2 +- plugins/claude/skills/remote-deploy/SKILL.md | 2 +- plugins/claude/skills/retarget/SKILL.md | 2 +- .../claude/skills/running-in-the-cloud/SKILL.md | 2 +- plugins/claude/skills/save-load/SKILL.md | 2 +- plugins/claude/skills/scene-composition/SKILL.md | 2 +- .../claude/skills/scene-hierarchy-design/SKILL.md | 2 +- plugins/claude/skills/scene-scripting/SKILL.md | 2 +- plugins/claude/skills/scene-to-level/SKILL.md | 2 +- plugins/claude/skills/skybox-panorama/SKILL.md | 2 +- plugins/claude/skills/sound-effect/SKILL.md | 2 +- plugins/claude/skills/spatial-placement/SKILL.md | 2 +- plugins/claude/skills/sprite-sheet/SKILL.md | 2 +- plugins/claude/skills/store-art/SKILL.md | 2 +- plugins/claude/skills/store-listing/SKILL.md | 2 +- plugins/claude/skills/summer-analytics/SKILL.md | 2 +- plugins/claude/skills/summer-api/SKILL.md | 2 +- plugins/claude/skills/summer-apps/SKILL.md | 2 +- plugins/claude/skills/summer-assets/SKILL.md | 4 ++-- plugins/claude/skills/summer-cli/SKILL.md | 2 +- plugins/claude/skills/summer-friends/SKILL.md | 2 +- plugins/claude/skills/summer-leaderboards/SKILL.md | 2 +- .../claude/skills/summer-match-results/SKILL.md | 2 +- plugins/claude/skills/summer-matchmaking/SKILL.md | 2 +- plugins/claude/skills/summer-parties/SKILL.md | 2 +- plugins/claude/skills/summer-player-data/SKILL.md | 2 +- plugins/claude/skills/summer-router/SKILL.md | 2 +- plugins/claude/skills/summer-store/SKILL.md | 2 +- plugins/claude/skills/summer-world-chat/SKILL.md | 2 +- plugins/claude/skills/summer-world-saves/SKILL.md | 2 +- plugins/claude/skills/text-to-motion/SKILL.md | 2 +- plugins/claude/skills/tileable-texture/SKILL.md | 2 +- plugins/claude/skills/trailer-shot/SKILL.md | 2 +- plugins/claude/skills/tune-performance/SKILL.md | 2 +- plugins/claude/skills/ui-basics/SKILL.md | 2 +- plugins/claude/skills/ui-graphics/SKILL.md | 2 +- plugins/claude/skills/use-widget-asset/SKILL.md | 2 +- plugins/claude/skills/using-summer/SKILL.md | 6 +++--- plugins/claude/skills/vehicle-model/SKILL.md | 2 +- plugins/claude/skills/verifying-scenes/SKILL.md | 2 +- plugins/claude/skills/vfx-dissolve/SKILL.md | 2 +- plugins/claude/skills/vfx-fire/SKILL.md | 2 +- plugins/claude/skills/vfx-hit-spark/SKILL.md | 2 +- plugins/claude/skills/vfx-lightning/SKILL.md | 2 +- plugins/claude/skills/vfx-magic-glow/SKILL.md | 2 +- plugins/claude/skills/vfx-muzzle-flash/SKILL.md | 2 +- plugins/claude/skills/vfx-smoke/SKILL.md | 2 +- plugins/claude/skills/vfx-water-ripple/SKILL.md | 2 +- plugins/claude/skills/voice-line/SKILL.md | 2 +- plugins/claude/skills/web-and-touch-input/SKILL.md | 2 +- .../claude/skills/web-compatibility-look/SKILL.md | 2 +- plugins/claude/skills/world-building-3d/SKILL.md | 2 +- registry/generated/gemini-extension.json | 2 +- registry/generated/marketplace.claude.json | 2 +- registry/generated/plugin.claude-directory.json | 4 ++-- registry/generated/plugin.claude.json | 2 +- registry/generated/plugin.codex.json | 2 +- registry/generated/plugin.cursor.json | 2 +- registry/generated/plugin.factory.json | 2 +- registry/generated/server.json | 4 ++-- server.json | 4 ++-- 134 files changed, 161 insertions(+), 147 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 000ee5f1..d21da46f 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -10,7 +10,7 @@ { "name": "summer", "source": "./", - "version": "4.8.0", + "version": "4.9.0", "description": "The game engine built for AI. Any agent makes a multiplayer game and publishes it. A first-run guide (/summer:start), game-dev skills, and two MCP servers: the bridge to the Summer Engine desktop app, and Summer's hosted cloud server for people without it.", "author": { "name": "Summer Engine", diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index c2e268a5..00020d93 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "summer", "displayName": "Summer Engine", - "version": "4.8.0", + "version": "4.9.0", "description": "The game engine built for AI. Any agent makes a multiplayer game and publishes it. A first-run guide (/summer:start), game-dev skills, and two MCP servers: the bridge to the Summer Engine desktop app, and Summer's hosted cloud server for people without it.", "author": { "name": "Summer Engine", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 7407bdf1..8fdc50ce 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "_generated": "GENERATED from integrations/codex — do not edit; npm run generate:registry", "name": "summer", - "version": "4.8.0", + "version": "4.9.0", "description": "The game engine built for AI. Any agent makes a multiplayer game and publishes it. Game-dev skills, lifecycle hooks, and a 131-tool MCP bridge to the Summer Engine desktop app.", "author": { "name": "Summer Engine", diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 2e8de2a6..571050ab 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -3,7 +3,7 @@ "_generated": "GENERATED from integrations/cursor — do not edit; npm run generate:registry", "name": "summer", "displayName": "Summer Engine", - "version": "4.8.0", + "version": "4.9.0", "description": "The game engine built for AI. Any agent makes a multiplayer game and publishes it. Game-dev skills, lifecycle hooks, and a 131-tool MCP bridge to the Summer Engine desktop app.", "author": { "name": "Summer Engine", diff --git a/.factory-plugin/plugin.json b/.factory-plugin/plugin.json index e3cd39a9..eec987ab 100644 --- a/.factory-plugin/plugin.json +++ b/.factory-plugin/plugin.json @@ -2,7 +2,7 @@ "_generated": "GENERATED from integrations/factory — do not edit; npm run generate:registry", "name": "summer", "description": "The game engine built for AI. Any agent makes a multiplayer game and publishes it. Game-dev skills, lifecycle hooks, and a 131-tool MCP bridge to the Summer Engine desktop app.", - "version": "4.8.0", + "version": "4.9.0", "author": { "name": "Summer Engine", "email": "founders@summerengine.com", diff --git a/CHANGELOG.md b/CHANGELOG.md index e0c67862..de0165bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,21 @@ All notable changes to summer-engine will be documented here. Following [Keep a ## [Unreleased] +## [4.9.0] - 2026-10-24 + +Games go live on Summer's automatic checks, with Summer's review afterwards: `summer_go_live` and `summer_publish_build` read that review, and name the platforms a hosted release left out. + +- **`summer_go_live` reads Summer's review of a live game** (the store's `/review` route, which replaces `/approval`). + - **On hold:** when Summer's staff put a live game on hold and its newest store page is the one they reviewed, it answers `on_hold` with their message: make the changes with `store.update_listing`, then publish the newer page. A new build alone does not lift a hold. A newer draft page is published, which lifts it. + - **Taken down:** it answers `blocked` with `taken_down`. + - A sent-back page's decision comes from the review's `latestReview`; while the platform lacks it, from `/approval` when it answers; else the page still reports `needs_changes` and points at `store.status`. On a platform without `/review`, a first-launch hold reports as Summer's, as before. The waiting answer no longer carries `approvalState`. +- **Platforms a hosted release left out: `notIncluded` and `notUsed`.** `summer_go_live` reads `droppedTargets` from the release, answers `notIncluded` (one entry per platform: the reason, `checkErrorCode` and the line to tell the creator, such as "iOS isn't included: this build couldn't be checked for iPhone.") and goes live on the platforms the release kept instead of waiting for the others. `notUsed` names a newer client the release did not use (that platform stays live with its current client). The live answer's `next` names both. +- **`playable_release_required` answers `blocked`** with the platform's own message, or "Upload a build that includes your game's apps so they can be checked against the new server." +- **"Summer is still checking this; nothing to do on your side."** When a publish's checks have run over an hour, `summer_go_live`'s waiting answer and `summer_publish_build`'s hold say so, with the time (`stillCheckingSince`). +- **`summer_publish_build`'s hold** reads the review too: on hold (with the changes to make), taken down, or Summer's own hold. `approval_denied` now reads "This game was taken down, so it can't take new builds." +- **Copy:** the README, `AGENTS.md`, the project `AGENTS.md` block and the `publish-your-game` skill say a game is live once the automatic checks pass, with staff review afterwards, and tell an automatic-check rejection from a staff hold and a take-down. - **Windows forms for the release checks.** The `release-readiness`, `multiplayer-publish` and `bounded-engine-runs` skills now give every check a PowerShell form next to the `sh` one: `Expand-Archive` in place of `unzip`, and a small `Run-Summer` helper that bounds a run with `Start-Process` and reads Summer.exe's `--log-file`, in place of `perl` and `grep`. +- The operations catalog is synced from PublicSummerEngine main: the October 2026 models in `assets.generate_image`, `assets.generate_audio`, `assets.generate_sfx_choices` and `assets.generate_video` (among them `nano-banana-2.1`, `flux-3`, `ideogram-4.5`, `recraft-4.1`, `eleven_v4`, `music_v2_5`, `mirelo-sfx-2.0`, `kling-4` and `vidu-q4`), and 480p video. ## [4.8.0] - 2026-10-24 diff --git a/gemini-extension.json b/gemini-extension.json index 65d130b8..6af166e4 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,7 +1,7 @@ { "_generated": "GENERATED from integrations/gemini — do not edit; npm run generate:registry", "name": "summer", - "version": "4.8.0", + "version": "4.9.0", "description": "The game engine built for AI. Any agent makes a multiplayer game and publishes it. The Summer Engine MCP server, context primer and game-dev skills.", "contextFileName": "GEMINI.md", "mcpServers": { diff --git a/package-lock.json b/package-lock.json index b6830c97..d3a4bb23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "summer-engine", - "version": "4.8.0", + "version": "4.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "summer-engine", - "version": "4.8.0", + "version": "4.9.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", diff --git a/package.json b/package.json index 8a24866b..c6dbc384 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "summer-engine", - "version": "4.8.0", + "version": "4.9.0", "description": "MCP server, CLI and skills for Summer Engine, the game engine built for AI. Connect Claude Code, Cursor, Codex and other agents to build, test and publish full games to summer.games.", "mcpName": "io.github.SummerEngine/summer", "keywords": [ diff --git a/plugins/claude/.claude-plugin/plugin.json b/plugins/claude/.claude-plugin/plugin.json index 89e31d70..9421bbf7 100644 --- a/plugins/claude/.claude-plugin/plugin.json +++ b/plugins/claude/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "summer", "displayName": "Summer Engine", - "version": "4.8.0", + "version": "4.9.0", "description": "The game engine built for AI. Any agent makes a multiplayer game and publishes it. A first-run guide (/summer:start), game-dev skills, and two MCP servers: the bridge to the Summer Engine desktop app, and Summer's hosted cloud server for people without it.", "author": { "name": "Summer Engine", @@ -159,7 +159,7 @@ "command": "npx", "args": [ "-y", - "summer-engine@4.8.0", + "summer-engine@4.9.0", "mcp" ] }, diff --git a/plugins/claude/commands/start.md b/plugins/claude/commands/start.md index e45105a6..a1a29863 100644 --- a/plugins/claude/commands/start.md +++ b/plugins/claude/commands/start.md @@ -17,7 +17,7 @@ $ARGUMENTS ## 1. Look before you ask (read-only, a few seconds) - Tools you already have: the `summer-engine` server (local, drives the Summer Engine desktop app; its tools include `summer_get_project_context`) and the `summer-cloud` server (hosted, Summer's cloud; its tools include `summer_whoami`, `summer_search` and `summer_call` once the user is signed in). A server that needs sign-in shows no tools yet. -- `npx -y summer-engine@4.8.0 status` tells you whether the engine is running. If `npx` is missing, there is no Node: plan it first (3a) and have them install Node 22 or later (nodejs.org) for the build. +- `npx -y summer-engine@4.9.0 status` tells you whether the engine is running. If `npx` is missing, there is no Node: plan it first (3a) and have them install Node 22 or later (nodejs.org) for the build. Do not run `summer setup claude-code` here: this plugin already brings the MCP servers and the skills, and a second copy of the skills only crowds the list. @@ -29,7 +29,7 @@ For 3b, pick the template from the idea (list in 3b) and a folder: a new folder > I'll install Summer Engine (about 660 MB, free) if needed and open a starter project in ``, in a window behind your work. OK? -Drop the install part when the `engine-install` check of `npx -y summer-engine@4.8.0 doctor --json` is `ok`. That one yes covers the install, the folder and the window; ask nothing else before the game plays. +Drop the install part when the `engine-install` check of `npx -y summer-engine@4.9.0 doctor --json` is `ok`. That one yes covers the install, the folder and the window; ask nothing else before the game plays. ## 3a. Plan it first @@ -38,11 +38,11 @@ A call written `area.action({...})` is the tool `summer_area_action` when your c 1. **Sign in.** If `summer_call` is not available, the `summer-cloud` server needs the user's Summer account. Tell them: type `/mcp`, pick `summer-cloud`, choose **Authenticate**, and sign in in the browser (a free account works). You cannot do this step for them. When they say done, call `whoami()` (the `summer_whoami` tool) to confirm. 2. **Start the game.** As soon as there is an idea (one sentence is enough; ask for one if `$ARGUMENTS` is empty), call `projects.create({ idea })`. Summer starts drawing the plan at once; give them the game's link (`url`) to watch it fill in. Keep its `projectId`. 3. **Shape it, briefly.** Ask at most two short questions, each with two or three concrete options (how it should feel, what the player does). Send each answer with `plans.message({ projectId, text })`. Use `plans.show({ projectId })` to see the cards and their `itemId`s, `plans.edit_card({ projectId, itemId, change })` to change one picture and `plans.choose_look({ projectId, itemId })` when they pick an art style. -4. **Hand it to the engine.** When the user is happy, call `projects.open_in_engine({ projectId })`. It returns the Summer Engine download, the setup steps and the saved direction. Then follow 3b, using the saved direction instead of a template: create and open an empty project (`npx -y summer-engine@4.8.0 dev empty `), save the direction as `res://.summer/GameSoul.md`, and build its first playable milestone with the `make-game` skill. Never describe a game that is not built yet. +4. **Hand it to the engine.** When the user is happy, call `projects.open_in_engine({ projectId })`. It returns the Summer Engine download, the setup steps and the saved direction. Then follow 3b, using the saved direction instead of a template: create and open an empty project (`npx -y summer-engine@4.9.0 dev empty `), save the direction as `res://.summer/GameSoul.md`, and build its first playable milestone with the `make-game` skill. Never describe a game that is not built yet. ## 3b. Build in Summer Engine -No sign-in: engine tools work signed out. Sign in only when a cloud operation (assets, plans, publishing) answers `not_signed_in`: then `npx -y summer-engine@4.8.0 login`. +No sign-in: engine tools work signed out. Sign in only when a cloud operation (assets, plans, publishing) answers `not_signed_in`: then `npx -y summer-engine@4.9.0 login`. 1. **Template** that matches the idea, so the first version already plays: - platformer: `2d-brario-platformer` @@ -55,9 +55,9 @@ No sign-in: engine tools work signed out. Sign in only when a cloud operation (a - third-person or exploring: `3d-third-person-controller` - anything else: `3d-basic` - Run `npx -y summer-engine@4.8.0 list templates` if none fits. If `summer dev` is an unknown command (an older summer-engine on npm), run these instead: `npx -y summer-engine@4.8.0 install`, then `create