Buzzy Game Builder - Release Notes

Last updated: April 17, 2026

1.80.8169.333-live — April 17, 2026 (Live hotfix)

DEV=8169, Live=333. Hotfix to eliminate @compiled-lua: Touched not valid member (Workspace._N) errors (~150 entries on the dashboard) affecting student-coded games.

Code Builder

  • Touched-on-Model fix: The "when touched by a player" and "when touched by an object" blocks now work on Models, not just Parts. If the Model has a PrimaryPart, the Touched event attaches to it automatically. Models without a PrimaryPart produce a helpful in-game error message instead of a runtime crash. Only newly-saved scripts benefit immediately — existing compiled buffers continue to error until the student re-saves.

1.80.8169.332-live — April 17, 2026 (Live hotfix)

DEV=8169, Live=332. Hotfix applied directly to Live in response to live camp outage. Must be merged back to DEV before next publish.

Stability & Performance

  • Save UTF-8 sanitizer: BuildService.SaveBuilds now strips control bytes and replaces invalid UTF-8 byte sequences with ? before passing data to Serializer.Encrypt, HttpService:JSONEncode, and ModelData:SetAsync. Fixes 104: Cannot store Dictionary in data store. Data stores can only accept valid UTF-8 characters. which was blocking all autosaves for any student whose build contained an emoji, smart quote, or non-UTF-8 pasted character — causing their work to appear lost on rejoin. Covers part names, attribute keys/values, template names, and nested build data. Reported live from camp 870194 (also seen on 745775).

1.80.8169-live — April 17, 2026 (major DEV → LIVE deploy)

DEV=8169, Live=335. First full DEV→Live publish since 329 — closes a 13-month gap of accumulated DEV work (96 changed files + 21 new files) and reunifies PlaceVersions with the 332/333 hotfixes. Most new features ship behind the new feature flag system and are OFF by default; most new fixes ship always-on and take effect immediately.

Feature Flag System (new)

  • API-controlled feature gates: New features now ship OFF by default behind flags fetched from api.buzzy.gg/feature-flags. Toggleable per-server, per-user, or per-version without a redeploy.
  • Admin UI at api.buzzy.gg/admin/feature-flags for managing flag defaults and overrides.
  • New ReplicatedStorage.FeatureFlags module and ServerScriptService.FeatureFlagsInit script — server fetches flags on startup, replicates to clients via Attributes.
  • Gated features (all OFF unless noted): EnableBlueprintChecker, EnableBuildPermissions, EnablePlayAllGames, UseAPIBots, EnableLobbyBuildMode. EnableAdminUnclaim defaults ON.

Error Monitoring

  • ErrorCapture (new, always-on): Server runtime errors relay to the API dashboard as server-log:RuntimeError with full stack, script, and server/user context. Rate-limited per unique error.
  • Client-side error capture: Client runtime errors relay as server-log:ClientRuntimeError with player attribution. New ErrorCapture.local.luau in StarterPlayerScripts hooks LogService.MessageOut, fires through ReportError RemoteEvent, forwarded to D1 by ErrorRelay.server.luau. Rate-limited per unique error (60s) and per player (1/sec).
  • Caught-error plumbing: New BuzzyServer.logError(context, err, extras) helper serializes and rate-limits pcall'd errors, firing them as server-log:CaughtError. Six high-value sites instrumented: BuildService:LoadGameData, BuildService:SaveForPlayer, BuzzyCodeService teleports (both sites), BuzzyServer:postAPIEvent, and the SLVM FiOne compile/wrap path (student Scratch code). These used to be swallowed by pcalls; they now land in D1 within 60s.
  • Rate-limit key widened from 100→250 chars so errors that differ only in a trailing UUID, model name, or line number no longer collapse into a single event.

Stability & Performance

  • ContextActionService fix in Build Tools Targeting — cached the GetCore() require and fixed a Toggle method name mismatch. Eliminates ~3,300 errors previously flooding the dashboard.
  • Bot CollisionPart guard: MoveBot now uses FindFirstChild("CollisionPart") with a nil guard. Fixes CollisionPart is not a valid member of Model "Workspace.Bots.Buzzy" at Bot:233. Bot movement continues safely when CollisionPart is absent.
  • Spawn nil-guards: Missing CodedSpawn part or missing Settings ModuleScript no longer crash the spawn flow. Targets the "CodedSpawn missing in Area3/4/6" errors (~125 occurrences) and "Settings is not a valid member of Part 'CodedSpawn'".
  • DonationBoard fix and spawn fall-through fix in DEV builder.
  • PlotDataStillLoading dialog now auto-closes correctly.
  • Teleport throttle + GetEngineFeature errors fixed in BuzzyCodeService with debouncing.
  • BuildService pcall wrapper around LoadGameData prevents save corruption from transient failures.
  • PlayerMarketplace zero-size guard prevents divide-by-zero crash when marketplace items have zero size.
  • Resize upper bound clamp — props can no longer be scaled beyond 100x.
  • UTF-8 sanitizer merged back from 332 hotfix — BuildService.SaveBuilds strips control bytes and replaces invalid UTF-8 before encoding, preventing "Cannot store Dictionary" errors on emoji/smart-quote/pasted characters.
  • Touched-on-Model fix merged back from 333 hotfix — Code Builder when touched blocks work on Models with a PrimaryPart, not just Parts.
  • Log noise reduction: ~80 scripts cleaned from warn() to silent logging (or --print). Error dashboard is now dramatically easier to read.
  • SyncModule: emoji removed from logs.

Bot System (DEV-only, gated via UseAPIBots)

  • LLM-powered bot system with Tier 1 actions — API-backed bot brain with conversation memory, player perception, and action dispatch. Currently gated OFF; can be enabled per-user via feature flags.
  • Help flare fix: Moved BotBrainModule require to the top of BuzzyBotServer so addBotAction is in scope when a help flare fires.
  • Bot memory leak fix: PlayerRemoving handler in BuzzyBotServer now calls clearHistory via the correct module path; previously the require was swallowed by a pcall, leaking conversation history across sessions.
  • Admin plot tools: Plot unclaim via EnableAdminUnclaim (ON by default) lets group admins free stuck plots.

Code Builder

  • Dialog quote fix extended to DLG_CHCE and DLG_CHCE_TREE blocks (extends the 1.79 fix for DLG_DIAL). Quotes now auto-wrap at save time for all dialog block types.
  • Orphaned dialog-block validation: Using "prompt choice" or "prompt choice tree" without a parent "prompt dialogue" now shows a friendly error instead of a silent failure.
  • Validation timing fix so errors surface on the correct save pass.

Build Tools

  • ToolButton disabled state for UI clarity when a tool is unavailable.

Performance Profiler

  • Per-place profiler now runs in Studio playtests across all places. Relay via MessagingService so clients receive profiler state changes.
  • Profiler report endpoint on the API worker for querying aggregated snapshots.

Client Cleanup

  • Orphaned weapons deleted; Buzzy module Init now nil-guarded to prevent cascade failures on incomplete instances.

Diagnostic API (supporting)

  • New diagnostic endpoints for technical support self-service — player events, server events, blast-radius scope analysis, DataStore proxy via Open Cloud. Backs the Slack bot's tool-use flow. Fully server-side; no Roblox client impact.

Shipped but gated OFF (available via feature flags when ready)

The 13-month DEV backlog included several large feature lines that now sit in LIVE code, gated OFF by the new feature flag system. They can be enabled per-server, per-user, or globally via the admin UI when we're ready to release them. Until enabled, they have no effect on LIVE players.

  • Lobby Build Mode (EnableLobbyBuildMode): Brock's lobby blueprint system — players can load custom lobby data from a server key pointing to Regions Data, save custom data to specified slots, and run the lobby-blueprint-ready flow. Includes LobbyUpdater, LobbyBuildModeProvider (server + workspace), BuildAnywhereModeHandler, and the new LobbySettings DataStore.
  • Build Permissions (EnableBuildPermissions): Per-user build permission system with BuildPermissionsLoader, BuildPermissionsService, and a new BuildPermissions DataStore (with {userId}_Blueprint keys). Unlocks "Build Everywhere" toggle for whitelisted users.
  • Blueprint Checker (EnableBlueprintChecker): Percentage-complete calculator, region readiness checker, blueprint progress UI, and BuildBlueprintPromptListener. Supports airtable-scaled blueprints and bot-built blueprints with boost functionality.
  • Play All Games (EnablePlayAllGames): Queue system for starting "play all games" sessions with admin requirements, countdown timer, and cross-player coordination.
  • API Bots (UseAPIBots): LLM-powered bot system with Tier 1 actions, conversation memory (BotBrain), player perception, and admin plot tools. Bot brain running against the API endpoint. Help flares can open bot dialog with contextual responses.
  • Admin Plot Unclaim (EnableAdminUnclaim, ON by default): Group admins (rank ≥ 200) can press F on any claimed pad to free it — useful for classroom management and stuck plots.

Long-standing builder improvements (ungated — active now)

These are smaller fixes and additions that accumulated in DEV over the past year and ship always-on with this publish:

  • Pivot offset code block — Code Builder can now use pivot offsets in scripts.
  • Build tools fixes: Gizmo rendering fixes, inability to modify objects when zoomed out of plot bounds resolved, drag prevention in edit-mode blueprints.
  • Blueprint edits: Lock/unlock now works correctly on blueprints being edited and on blueprint pivot changes.
  • Boost parts out-of-bounds prevention — prevents boost parts from being placed outside plot boundaries.
  • Blueprint scaling from Airtable — blueprints now apply airtable-driven scaling correctly.
  • Creative flight updates.
  • BuildService save edge cases — extensive handling of edge cases from Brock's 2025 save reliability work.
  • Variable quote handling in plugin + builder (predecessor to the 1.79 dialog quote fix).

1.80.8164-live — April 15, 2026

DEV=8163, Live=329.

Code Builder - Dialog Blocks

Was this article helpful?

Thanks for your feedback!