Skip to content

v1.2.133

Choose a tag to compare

@LeeAdcock LeeAdcock released this 19 Aug 03:06
· 143 commits to main since this release

The arena's live streams now send a fraction of the data they used to, an invalid id gets a real error instead of a server fault, and the site has a proper icon set.

Breaking

  • The MCP recent_logs tool returns a numeric id on each log record instead of a UUID string. The ids are monotonic within an arena, so they can be compared and sorted; any client treating the field as an opaque string needs updating.

Features

  • The arena's "add an app by id" box now accepts a share link as well as a bare id, so pasting https://robocodejs.com/add-app/<id> works. It previously sent the link verbatim and the add silently did nothing. Input that isn't a reference at all — most often an app's name copied from the rankings page — is now explained in the form rather than failing on the server.
  • The site ships a real icon set: favicon.ico, 16 and 32 px PNGs, a 180 px Apple touch icon, and 192 and 512 px icons for the web app manifest, replacing the single tank sprite that stood in for all of them.

Fixes

  • The live game-event and bot-console streams are compressed, cutting the bot console stream to roughly an eighth of its previous size. A single console stream had been measured at 136 MB over one long match.
  • Those streams no longer drop and reconnect every minute. Without a keep-alive an idle stream was closed by the load balancer after 60 seconds, and each reconnect to the console stream replayed the entire recent-log buffer. Streams now send a periodic heartbeat and stay open.
  • Addressing an app, arena, or user by something that isn't a valid id returns a 400 with error code E028 and a message naming what was expected, instead of a 500. Entering an app's name where its id belongs was the usual way to hit this; a well-formed id that matches nothing still returns 404.
  • Requests for /favicon.ico are served instead of 404ing. They were the single largest source of missing-asset warnings.
  • Capacity now scales on CPU rather than outbound network traffic. One person watching an arena could exceed the old network threshold on their own, and the instances that were added took none of the load. Sessions are also pinned to an instance, so added capacity serves new visitors rather than duplicating a match that is already running.

Build & Tests

  • Release tags are pushed by a scheduled job at 07:00 UTC on weekdays rather than by hand, so the deploy lands off-hours when there is neither traffic nor CPU-credit pressure. The build: bump server to vX.Y.Z commit is the release trigger, and the job tags that commit once CI has passed on it. To hold a release, hold the bump commit.
  • Took the outstanding dependency updates across both packages: pg 8.23, html-react-parser 6.1.7, eslint 10.8.1, and @testing-library/jest-dom 7.0.1.