Watching someone code, without the glitches
- changelog
Spectating that keeps up
Watching someone's editor in a practice room or study group had a handful of rough edges. They are fixed:
- No more doubled code. If the person you were watching had the problem open in two browser tabs (or reloaded at the wrong moment), you could see their code twice, with each tab's typing landing in its own copy. Now one tab is the one you follow. If they start typing in another tab, your view switches over to it cleanly.
- The right language. Spectated code used to show as Python for anyone who hadn't switched language during that session. Their actual editor language is now sent the moment they connect.
- Survives reconnects. A dropped connection or a routine sign-in refresh used to end every spectate tab. Now your tabs stay open showing the last code, marked as reconnecting, and pick up again once you're back. On the other side, a short blip on the author's end no longer ends the session for watchers.
- Study groups follow properly. Following a member to another problem used to leave the previous problem's code on screen. The view now switches with them, and an idle tab reconnecting no longer drags you to a problem they aren't working on.
- Big files. Long solutions (past roughly 47 KB) no longer cut the author's connection.
Hide the sidebar in the tile layout
In the tile workspace, the People / Live feed / chat column could only be cleared by closing each tile, or by dragging its divider as far as it would go. The toolbar now has a Hide sidebar button, like the classic layout's collapse. The editor takes the space, and the tiles keep running in the background: chat stays connected and the button shows your unread count. Your choice and the column's width are saved with the layout. Running, submitting or opening a past submission brings the column back when it has something to show.
Trail Blaze: Unknown nodes
About 30% of the nodes on a Trail Blaze map are now Unknown. An Unknown node never shows its topic: not on the map, not once you're in it, not from an earlier attempt and not in the post-mortem. You solve it knowing only that it's a problem. Every other node shows its topic from the start.
Design problems start from a class
Design problems such as Least Recently Used Cache, Least Frequently Used Cache and Versioned Key-Value Store now give you a class to fill in: its constructor and one method per operation, and nothing else. The judge creates your object and calls its methods one operation at a time. Each test case is a list of operations with their arguments, and the expected output is what each call should return.
Time and space in Approaches
Every accepted submission is now labelled with its extra space as well as its time: the memory the code uses beyond the input. The recursion stack counts. The input itself and the answer you return don't. Your submissions show it after the time complexity, for example "O(1) space", and Wrong label? lets you correct it.
The Approaches breakdown on a problem's Solutions tab has a matching Extra space panel under Time complexity. Both panels can now filter, like the technique bars: pick O(n) time, O(1) space or a technique, and the list shows only the shared solutions that match. Each choice has its own × to clear it.
A label only appears when it is likely to be right, so some solutions show none.
Smaller fixes
- Workspace dividers stay put. The divider between the problem and the editor now remembers its position across problems. A bug was also stopping every other remembered split (editor and results, chat width, interview panes) from being restored on page load. They all come back now.
- Gold looks like gold in light mode. Gold medals, bars and badge art used a dark ink that read as bronze. Cleared problems now use the same gold as the dark themes.
- Fuller activity feed. Hidden badge events were taking up rows on the dashboard's activity feed, so a page of ten often showed about three. Pages now fill up.
- Clearer statements. The wrap-around in Every Second Removal Order's first example is spelled out, Grid Propagation Time says empty cells block the spread, Maximum Safe Total no longer uses "amount" for two different things, and Common Free Moment says that a slot's end time is not included.