logo bannerlogo banner

yolkbot 1.5 development information

created: 2025-12-09

yolkbot is approaching the yolkbot 1.5 release! this is going to be the biggest update to yolkbot yet, and i wanted to share some information about its development as well as an early migraton guide.

current delays

yolkbot 1.5 is currently delayed with no ETA due to the lack of a github repository. i am working on getting this resolved as soon as possible. once the repository is back up, i will be able to finalize testing and release yolkbot 1.5.

do i need to do anything now? what is the current yolkbot version?

the current stable release of yolkbot is yolkbot 1.4.5. you do not need to take action. this is released as information for advanced coders to start upgrading now if they feel like it.

what is yolkbot 1.5?

yolkbot 1.5 is an upcoming release of yolkbot. notably indicating 1/2, yolkbot 1.5 aims to be a massive overhaul of yolkbot's internal systems, improving performance, stability, and adding new features.

the unfortunate truth is that when you rewrite half of the internal code, some of the code you write to create yolkbots changes.

will i have to use yolkbot 1.5?

i will continue to support yolkbot 1.4.x after yolkbot 1.5 is released until January 1st, 2026. after this date, yolkbot 1.4.x will no longer receive updates or support. (this gives you all of winter break, you can migrate, it's not that difficult)

what changes in yolkbot 1.5?

there are two kinds of (notable) changes listed:

  • breaking changes: things you will need to change, or your bot will stop working
  • improvements: new things you can use, but don't have to

what are the breaking changes in yolkbot 1.5?

breaking changes to bots include:

  • bot.initMatchmaker has been (basically) renamed to bot.initSession
  • bot.once has been removed
    • AI had been suggesting this and causing issues; just use bot.on
  • error handling has been rewritten
    • almost ALL functions on bots now return objects with an ok property instead of strings
    • for example, if a function used to return 'error: not_enough_eggs', it now returns { ok: false, error: 'not_enough_eggs' }
    • functions that succeed return { ok: true, (other data here) }
    • for example, playChiknWinner now returns { ok: true, (everything from old response) }
    • you can get a list of any errors from yolkbot/enums
      • yolkbot/enums exports multiple error things
      • i highly recommend you just read the types until docs are rewritten
    • this replaces the traditional 'error' hook; bot.processError also no longer exists
    • some errors can no longer be caught, as they are related to core bot functionality issues
    • pathfinding errors are now hooked with the 'pathfindError' hook, not 'error'
    • the NO_EXIT_ON_ERROR intent has been removed
  • bot.matchmaker is now a yolkws and not a Matchmaker
  • bot.Intents has been removed, Bot.Intents still exists (but only as static)...use import { Intents } from 'yolkbot/enums' if needed
  • apiMaxRetries has been removed as a param to yolkbot/bot
  • the NO_LOGIN intent has been renamed to SKIP_LOGIN
  • the NO_REGION_CHECK intent has been removed; call bot.getRegions with a custom instance that returns your custom region

other breaking changes include:

  • the entire Matchmaker class has been removed
    • bot.matchmaker.connected is the same
    • bot.matchmaker.regionList -> bot.regionList
    • bot.matchmaker.proxy -> bot.proxy
    • bot.matchmaker.sessionId -> bot.account.sessionId
    • bot.matchmaker.send -> bot.matchmaker.send
      • JSONs are no longer auto stringified
    • bot.matchmaker.getRegions -> bot.getRegions (different output due to error handling changes, beware)
    • bot.matchmaker.waitForConnect / bot.matchmaker.on('open') -> removed; if bot.matchmaker is null just run bot.createMatchmaker()
    • bot.matchmaker.on('msg', cb) -> add/remove callbacks from bot.matchmakerListeners
    • if not listed, it has been removed
    • if you used a standalone Matchmaker, you can still use a Bot for many of the same things; if for some reason this is not the case, please let me know of your use case on Discord
  • yolkbot/comm has been removed
    • CommIn is at yolkbot/comm/CommIn
    • CommOut is at yolkbot/comm/CommOut
    • CommCode is at yolkbot/constants/CommCode
    • CloseCode is at yolkbot/constants/CloseCode
  • yolkbot/constants/guns are no longer classes
    • some data not relevant to yolkbot has been removed
    • to turn them into functional classes (including adding a few props), use the new createGun in yolkbot/util
  • types for constants that do not exist anymore in yolkbot have been removed
  • "Eggk47" has been restylized as "EggK47"
  • yolkbot/constants URLRewards has been removed
  • globals.isBrowser & globals.isIsolated have been removed
  • yolkbot/wasm/util has been removed
  • yolkbot/constants UserAgent is now no longer nullish in the browser
  • you can no longer import { DISPATCH_NAME } from 'yolkbot/dispatch(es)', use the new bot.emit
  • the pather property no longer exists on GoTo dispatches, use bot.pathing.astar
  • isBrowser & isIsolated have been removed from globals, simply use typeof process
  • types have undergone significant changes
    • all exported error types are different
    • AccountFirebase in yolkbot/bot has been renamed to RawFirebase and moved to yolkbot/api
  • maxRetries has been removed as a param to yolkbot/api
  • the legacy onYolkReady in browser bundles has been removed
  • MapNode.flatCenter is no longer a function

what are improvements to yolkbot 1.5?

  • everything is a lil bit faster - SO MUCH OPTIMIZING HAPPENED!
  • bot.emit has been added as an alternative to bot.dispatch
    • before: bot.dispatch(new ChatDispatch('message'))
    • after: bot.emit('chat', 'message')
    • bot.dispatch likely won't be removed for a long time, but bot.emit is easier to use and is the new recommendation for projects writing new code
  • you can finally pass simple strings as modes
    • before: `bot.createPrivateGame('useast', GameMode.FFA, 'castle')
    • after: bot.createPrivateGame('useast', 'ffa', 'castle')
    • the old method likely will never be removed and is still recommended, but this is a nice shorthand
  • error handling has been improved, so you get more helpful errors
    • more common errors are also detected
    • this will mean debugging bots and handling/responding to errors is just...easier. you'll see quickly what i mean.

how can i start migrating to yolkbot 1.5?

if you're not an advanced developer (you code with AI), please stop here! yolkbot 1.5 is not fully ready to be used. we expect bugs. more breaking changes WILL be introduced, please just wait for the stable release (unless instructed otherwise).

however, if you want to help out, here's how you can start migrating:

  • depending on your package manager, install yolkbot@alpha:
    • npm: npm install yolkbot@alpha
    • bun: bun install yolkbot@alpha
  • change any usage of the breaking changes above
  • start testing!

if you find issues, DM them to me on Discord so i can fix them before the stable release!

thank you for reading this far! i hope you're as excited for yolkbot 1.5 as i am. it's been a massive undertaking, but i believe it's going to make yolkbot better than ever before.