Repository navigation
v1.2.133
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_logstool returns a numericidon 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
400with error codeE028and a message naming what was expected, instead of a500. Entering an app's name where its id belongs was the usual way to hit this; a well-formed id that matches nothing still returns404. - Requests for
/favicon.icoare 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.Zcommit 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:
pg8.23,html-react-parser6.1.7,eslint10.8.1, and@testing-library/jest-dom7.0.1.