Swift joins the lineup, notifications arrive, and chat grows a memory
- changelog
Swift is the eighth language
Every problem now ships Swift starter code and a reference solution, alongside Python, JavaScript, Java, C++, C#, Go, and Rust. Pick it from the language dropdown and it runs on the judge like any other language, with the same time and memory limits scaled for it.
One thing worth knowing if you write recursive solutions in Swift: the harness runs your code on a thread with a 512 MB stack, so deep recursion works the way it does in the other languages rather than crashing at Swift's default depth.
Notifications
There is a bell in the header with an unread badge, and a /notifications inbox behind it. It fills up when someone fires your solution, comments on it, replies to you, or follows you — the events that previously only showed up if you happened to scroll the activity feed at the right moment.
Write up your solutions
A solution post is no longer just the code. Its author can give it a custom title and a markdown write-up, edited inline from the activity feed card or the solution page, and both surfaces show the title in place of the default headline with the write-up beneath it.
Chat that remembers
Global chat used to lose its history whenever the server restarted, and only ever showed the recent tail. Now the backlog is kept for 30 days, so it survives reconnects and restarts, and a Load earlier messages control above the oldest message pages further back without losing your scroll position. History loaded this way never badges as unread.
Two paging bugs found in review are fixed with it: a failed message write could hide the load control and strand the whole archive until a reconnect, and a rate-limited or discarded page could slam the view to the top.
The chat window, where you want it
The dashboard Global chat card can be popped out of its rail into a floating window: drag it by its title bar, resize it from the bottom-right grip, or collapse it to just the title bar in either placement. Dragging it over the empty rail slot highlights the slot, and releasing there docks it — the Dock button is no longer the only way back. Position, size, and placement persist, and the chat socket stays open across the switch.
Emotes, properly
The chat input on desktop is now a rich composer. Typing :pre opens a Twitch-style suggestion popup (arrows, Tab, Enter, Escape), and picked or fully typed codes render as the actual emote inline in the box before you send. Messages still travel as plain :code: text.
The set behind it grew to around ninety. The classics are all there — LUL, KEKW, Kappa, OMEGALUL, PepeLaugh, catJAM, monkaS, Sadge, the OG Pepes, the dance squad — vendored and served from AlgoBlazer itself rather than a third-party CDN. Codes match case-insensitively, so :kekw: and :KEKW: are the same emote. The AlgoBlazer originals were redrawn and are now the coding-culture ones: verdict badges, :shipit:, :merge:, :loop:, :stack:, :segfault:, :404:, :semicolon:, :longlong:, and friends, several of them animated. The picker also stays open across picks now, so you can drop several in a row.
Names
The username step now has an optional Display name field, and the leaderboard shows usernames only.
Plus: clicking a name in the popover that opens from global chat now actually opens the profile, spectators no longer see stale code when the author's first snapshot doesn't land, the Live on Twitch band sits directly under Today's Challenge, and links to AlgoBlazer show a proper preview card when shared.