v1.0.0-alpha.5
Pre-release
Pre-release
Absolutely massive performance updates in this release 🎉
Changelog
- Mojang login support has been removed, as it is no longer supported. EnderChat cannot handle migration to Microsoft Account, please do so via https://minecraft.net or the official launcher.
- 1.19-1.19.2 support has been added experimentally. A lot of work needs to go into making sure that chat signing works correctly, though, and many things may be broken. So far it has only been tested on Hypixel and MythicMC, vanilla servers WILL have issues.
- Minecraft connections are now handled natively, so the app is now more multithreaded, considerably faster and a lot more responsive, especially on older devices 🎊 online mode is fully functional with this massive improvement 🎉 🎉 🎉
- The view distance is now set server-side which should help greatly with slow internet connections 🎉
- Many performance bottlenecks have been identified and eliminated, the app is significantly smoother as a result 🎉
- The connection loading screen has been massively improved thanks to changes behind the scenes 🎉
- Microsoft Account credentials are now cached when the app is started. More improvements can be made.
- There's a sponsor button on the GitHub repository if you would like to support my work 🍰
- An icon has been added for Android (thanks to Lexply), as well as a privacy policy.
- Pressing the back button in chat will actually take you back now lol
- Join message has been disabled by default at the moment.
- Trying to connect to servers too new is now blocked.
- Disconnect dialog is now always shown correctly.
- The link prompt setting has been removed.
- /spawn is now sent on world change.
- Servers can now be edited 🎊
- MANY other miscellaneous bugs and crashes have been fixed, and the code has been cleaned up considerably underneath 🎉 🎉 🎉
Known Issues
- No icon has been set.
- Settings need to be worked on.
- Many translations may be missing.
- Action bars are currently not supported.
- There are no dialogs for URL and command click events.
- Command history is currently not shown (missing feature).
- 1.19.x support is incomplete. Chat signing doesn't work, various types of chat messages may not function, and 1.19.3 is unsupported.
Commits
Major Changes
- Drop CompressionModule, work on ConnectionModule.: 175d6b2
- Enable ConnectionModule by default, fix bugs. - Fixed issue with reading packets from socket. - Add logging event to the connection module. - Use I/O dispatcher for scheduling tasks. - Set version field correctly for Android app.: 9597fc4
- Return connection immediately, add connect event. Resolving the connection ASAP allows the client to close it during a connection attempt. Instead, a connect event is used to signal success.: 6e9c45a
Minor Changes
- 1.19 login support. No chat support yet. - 1.19 is unlisted and 1.18.2 is still default. - Add disconnect translations for 1.19. - Support new 1.19 login packet format. - Chat signing is broken, so is chat format parsing.: 3a0d6e6
- Support editing servers, ignore unknown settings.: f7a6814
- Add toggle to disable 1.19 chat signing, fix crash: 1f7cd8e
- Support 1.19 offline mode servers, fix a crash.: 446e5e8
- Initial Minecraft 1.19.1/2 support, fix 1.16, jsbi: 69f6e68
- Use RN 0.69.5, remove linkPrompt, disable join msg: 24c1eb7
- Finish initial ConnectionModule (not working atm).: 031c008
- Add native encryptConnection (bad write perf).: f5ca01a
- Much better loading screen logic with feedback. The loading screen now shows actual feedback of what's happening. If you close a connection, it won't connect if it was reloading premium.: 1942c40
- Add packetFilter API, lazily decode Base64 data. Further fruit for optimisations: - Improve Base64 decode performance with fast-base64 or js-base64. - Use packetFilter API. - Use TurboModules/JSI for decoding.: aed52ce
- Cache system color scheme, fix memoised ChatToJsx. This commit improves performance considerably when there's lots of Text. - useColorScheme seems to cause unnecessary performance lag, and is called everytime Text is invoked. It is now only called once globally for the entire application, and passed via React context. - Memoising ChatToJsx properly reduces CPU load from chat parsing. ChatToJsx is no longer improperly memoised by default, and the item renderer in ChatScreen is memoised correctly instead.: 49ae5c4
- Add Android icon and privacy policy.: 92be133
- Update privacy policy, send /spawn on world change: 0fc08ef
- Send client settings to reduce view distance.: 69f3b75
Patches
- Update to React Native 0.69, fix Kotlin deps. @react-native-picker/picker is breaking peer deps.: 308cd7c
- React Native 0.69.1, remove Mojang login support.: ca2f071
- Work on support for 1.19 signed Login Start.: 9eaef66
- Write README, remove Mojang MS client ID.: 3209317
- README, disconnect dialog, 1.19 and misc fixes. - Fix disconnect dialog disappearing randomly. - Fix disconnect dialog under 1.19 connections. - Fix duplicate default settings in SettingsContext and App. - Improve 1.19 Login Start code.: 2540aee
- Fix BigInt, a crash and needing to relog every day This is done by adding refresh support to ServerScreen. This can cause a slight delay for the first connection. A loading screen should be implemented for this.: 040341a
- Refactor ChatScreen to split off packet handling.: 18b0681
- Add zustand and create an unused sessionStore.: 5322c8a
- Split connection creation, add param to ChatScreen: 935d328
- Add sponsor button to repository page: 4d87389
- Update to React Native 0.69.4.: 1753531
- Handle unsigned 1.19 chat, nested translations.: 3c53937
- Handle nested translations correctly. This means translations in the
extra
property of PlainText, or in thewith
property of Translated, will be handled correctly.: 32e77e3 - Fix 1.16 death respawn, tweak chat handling.: fb338f0
- Delegate connection creation to ChatScreen.: 69c3287
- Prepare for a Connection NativeModule.: a0c4701
- Update Android Kotlin, reorganise native modules.: 59d509c
- Fix error handling, work on native backend issues. Share encryption packet handling between JS and native backends.: b47fc6e
- Fix many bugs with Android native connection. - Rename writeToConnection to writePacket. - Timeout correctly after 20 seconds of no data received. - Fix Login Start packet being malformed. - Fix incorrect UUID being returned from openConnection. - Break read thread loop correctly when an error occurs. - Properly read lock and write lock in the socket read thread. - Avoid conflicts with other NativeModules using ecm: prefix for events.: 460520f
- Buffer chat messages, fix bugs, update TODOs. Fix log event handler not being unregistered. Disable login start with certificates (for now).: ae1a54b
- Android: Fix online mode issues, more coroutines. - The read thread is now a coroutine. - Convert closeConnection to coroutine. - Set connection timeout explicitly to 30s. - Replace runBlocking with custom scope. - Reject promises when ID is incorrect, instead of resolving false. - Fix lock contention between the read coroutine and encryptConnection.: f777277
- Fix ChatScreen setting back function, online mode. Going back via the system back button will now work. Last online mode bug with encryption/decryption fixed.: 43d9b97
- Fix Kotlin warns, show disconnect reason on error.: afaaaa1
- Update to RN 0.69.6, reorganise code.: 55052e6
- Update to React Native 0.70.2, patch broken scaleY: 3214261
- Update all dependencies.: caf449a
- Hotfix React Native, improve chat message parsing.: c73557d
- Refactor AccountScreen and ServerScreen Move big UI elements into their own individual components.: a86e7e9
- Fix bug sending empty join message.: b530855
- Fix join messages and /spawn on join on 1.19+.: f519614
- Update ESLint, React Native, TypeScript, zustand.: fb02fc9
- Fix TS and account screen bugs, update all deps.: 955b8e9
- Mark 1.19 WIP and block servers too new.: 8cc3c4b
Check the Known Issues list before reporting any issue. A bunch of other improvements are being worked on as well. ChatCraft features like tab list will be added after 1.0, right now the focus is on perfecting the art of chatting.
For now, the app is only available as an unsigned APK download from here. If you have a modern phone, use arm64-v8a
, if you have an ancient one or you are unsure, use armeabi-v7a
, if you have an Intel phone (eww who uses these anymore) then use x86_64
.