Release Notes
This project adheres to Semantic Versioning (semver).
It is recommended to keep the client up-to-date with latest versions to avoid possible breakage with each update to the game's protocol.
1.2.2 - Unreleased
Changes
- Adds
arbitreto Role enum - Bulle connection ports are randomized
1.2.1 - 2024-12-12
This release includes some important fixes to core code.
Fixed
- Fixed larger segmented packets not being able to dispatch on the spot, in some scenarios. (#6, @Cassolette)
1.2.0 - 2024-05-02
This release includes some important fixes to run on the latest protocol.
Added
Profile:noSkillversion of profile stats introduced by Transformice v1.691- Add
luadevandfashionsquadin Role enum
Changes
BREAKINGClient: Switched to native fetch API forClient.fetchIPin favour of less dependencies. Requires Node 18 or higher.- Export
Connectionclass. - Export
TFMConnectionErrorclass. AddedTFMConnectionError.isThis(payload: any)static method to narrow error types.
const castedConnErr: any = new TFMConnectionError("bulle") as any
if (TFMConnectionError.isThis(castedConnErr)) {
// castedConnErr in this scope is narrowed from `any` into `TFMConnectionError`
console.log(castedConnErr.serverType); // prints "bulle"
}
Client: Removed no-oplanguageChangeeventProfile:Profile.roleis now aRoletype enum rather than just a number.
Fixed
- Fixed
Profilepacked parsing offsets.
1.1.0 - 2023-06-03
This release includes some important fixes to run on the latest protocol.
Added
Client: New eventroomPasswordedis emitted when a room being attempted to enter needs a password.
Changes
BREAKINGClient:Eventdisconnectwill also be emitted when a connection error occurs. It will also include an optionalerrparameter, which will benullwhen the disconnection is client-triggered. (#4, @Cassolette)
Fixed
- Cheeseformice endpoint is dead. Replaced it with a working link and now
Client.fetchIPworks again. Client.loadLuaactually works. It previously did not include the script buffer in its outgoing packets.- Support server updates to room joining.
Client.enterRoomworks again.BulleIdentifier.roomPassworded(5,39) is no longer server-bound packet and is replaced by having the password in theBulleIdentifier.room(5,38) packet.
1.0.1 - 2022-07-07
This release includes some important fixes to run on the latest protocol.
Added
RoomPlayer: New properties,cheesesandrespawnId.
Fixed
- Fixes: player list parsing was broken due to wrong offsets. (#5, @entibo)
RoomPlayer: Negative scores were not registered correctly.
1.0.0 - 2022-01-04
Docs site has been re-published, check it out here.
Fixed
- Default connection settings endpoint wasn't working. Switched to using Cheeseformice's endpoint.
1.0.0-rc.2 - 2021-12-31
Added
- Supports alternative IP fetching strategy using client options.
1.0.0-rc.1 - 2021-12-09
Maintenance of the module has moved to Cheeseformice. The package is renamed to @cheeseformice/transformice.js.
Added
- Supports accounts with Bot role.
Clientsupports optionpasswordto set the default login room.- ByteArray can work natively with Node
Buffer, with support forreadBufBytesandwriteBufBytes. - ByteArray supports
.toString("printable")for debugging, as a convenience to callingjsesc. - Added
bulleConnectevent triggered on bulle connection. Note that thebulleConnectevent was never part ofconnectand is newly added. - Add
Channelaliases forgetPlayers,joinandleave. - Add client intents to ClientOptions. For now, this only contains
friendListwhich is enabled by default. - Supports a maintained
Client.friendslist when the intentfriendListis not disabled. - Added
tribulleConnectevent triggered on tribulle connection packet. This is equivalent toreadyprior to this.
Changes
BREAKINGDropped support for authentication keys login. You must use a approved bot account now.BREAKINGTargets minimally ES6 CommonJS now.BREAKINGChanged all the typing forenumsto use TypeScript enums instead of plain JS objects. Renamed several enum type names.BREAKINGSeparatedbulleConnectionErrorfrom the regularconnectionErrorevent.BREAKINGRenamedChatCommunitytoTribulleCommunity.BREAKINGWhisperMessage.sentTochanged from a string toTribullePlayer.Friend,Membernow inherits fromTribullePlayer. This allows direct matching to be done without .toLowerCase(), e.g.
client.on("whisper", (message) => {
const toSelf = message.client.name === message.sentTo.name;
});
BREAKINGClient.channelschanged from an array to aMapfor performance gain when modifying the channels list.BREAKINGThe event signatures forfriendList,friendAdd,friendRemove,friendConnect,friendDisconnect,channelWho,channelJoin,channelLeavehave changed to pass specificFriendandClientobjects respectively.- Exposed
IdentifierandIdentifierSplitfor those who wish to manipulate raw packets. - Exposed
Clientmain and bulle connections. This is useful for debugging server connections. readyevent waits for the friend list to be populated before emitting (only forfriendListintent users). UsetribulleConnectevent for the prior definition ofready.
Fixed
- Login now works with Transformice protocol to date.
- Removed an accidental delay when the bulle server connection failed.
- Fixes: Sometimes
connectionErrorevent does not fire when the server shuts down.
1.0.0-beta.1 - 2021-01-04
This is the initial beta version by SuspiciousLookingOwl.