June 15, 2025
implemented conditional settings
implemented accelerometer mod, compass mod
keystrokes joystick mode
Added mouse tracker mod
Failed to add 1.16.5 support, skia really doesn't seem to like it, will check back later, but reverted for now
added support for 1.19.4 and 1.19.2
added star repository button
added free indicator to prices
added error catching
added ping system
fixed images disappearing
Made change detector
Created project and bot, got item names parsing
Summer of Making shop changes!!
added support for 1.20.4 and 1.20.6 and 1.20.1
fixed final jars
Decided to take a break on the chromium backend for now, got 1.21.1 working
Built a jetpack compose like UI library for generating html for ChromiumUI
It automatically manages your server and layout, also allows you to assign kotlin event handlers to html buttons via cefQuery
Implemented DynamicUI system:
It automatically chooses between skia and chromium.
It forces chromium for 1.21.8.
It allows you to choose for 1.21.4
I need to rewrite all of my UI's with chromium (while the other implementation stays)
So everything is just errors right now(because it doesn't have a chromium implementation)
Did JFR profiling on software renderer, its not in my code's fault mostly, optimized as much as I could.
Fixed crashes.
Fixed input events not registering.
Added a gui scaling field to client settings to render UI/mods at a lower quality (make it faster)
Gonna finally start doing other versions (1.21.1 first)
Optimized software rendering(1.21.8) and fixed crashes.
1.21.8 support is here!
I use an adapter system for making the client a single fat jar, the same jar works for both 1.21.4 and 1.21.8.
Skia does not play nicely with 1.21.8's rendering, so 1.21.8 uses software rendering(ew)
The software renderer runs on a separate thread, does not disturb the game.
The background thread:
- Runs skia with software rendering
- Resizes image and converts to NativeImage
The game render thread:
- Copies the native image to gpu
- Renders it
Background thread averages: 20ms (50fps)
Game thread averages: 20ms (still 50fps)
I haven't finished the full optimizations for this rendering, the game thread copies every frame, even if it hasn't changed.
This was pain
add more details about your project in the readme
1.21.8 port is going good but:
Skia is making me suffer, HEELP MEEE HELP ME HELP ME HELP ME HELP ME
Hopefully next devlog I'll have 1.21.8 working perfectly.
Finished notification renderer
Fixed notification animations
Fixed logic bugs in notifications
Moved notification logic into multiple files
Removed BridgeRenderer and BridgeTextRenderer
Made themes WCAG compliant
Finished notifications
Implemented text and chatevent
Moved notifications into data classes
creating a notification system, got it rendering
tried to make background blurs use skia but failed (mc blurring has layering issues with skia)
Tried to update dependencies and failed miserably (managed to update 1/81, i blame google)
Fixed preview heights
Fixed module previews
Created hit history mod
Created a custom loading screen
Tried to make resource reload multi-threaded, looks like the same time from my testing, unsure
Added drop shadow to ui and hud's
Created main menu
Made bridge.client global
Added a preview renderer to modules
Did small refactors
Implemented PositionDisplayMod
Add count and durability to armor display mod
Optimized new hud renderer
Implemented ArmorDisplayMod
Rewrote HUD rendering completely
Fixed menu's not closing properly
Fix configs and move back button in easter egg
Fixed color picker crash
Fixed navigation bar colors
Optimized build.gradle (removed unnecessary deps)
Added a navigation bar to chromium
Fixed chromium implementation
Implemented ping mod, server display mod and reach display mod
Implemented keystrokes mod
Implemented CPSMod
Added empty protection to color fields
Implemented color picker
Fixed config not saving properly (logic fault)
Added minecraft font and theme
Fixed config not saving properly
Fixed font size inconsistencies
Fixed button color inconsistencies
Added mod toggle composer
Fixed build issues (MixinTextRenderer.getTextWidth)
Fixed theme switching
Fixed skia renderer font metrics
Optimized module rendering by 100x
Before: 5ms per module (4ms initialization + 1ms render)
After: 0.05ms per module (200ns initialization + 49k ns render)
I got a bit side tracked... and got chromium running, it still has a lot of work to be done, I will leave this in the source code for now, will polish it up later(I have an idea)
Implemented ModConfigUI
Not complete, ColorSetting is missing
SkiaModRenderer is broken (text measuring broken)
Implement ModMoveUI for moving modules
Fixed ui library interpreting every mouse click as left click
Refactored mods package structure
Improved settings delegation methods
Making mods is so easy now!
Did final touches to config manager
Created helper delegate for setting types
Added toast manager
Add Texture bindings and Sampler bindings to gl state utility.
This fixes the graphical issue I mentioned earlier
Debugged the cause of this graphical issue(attachment)
Cause is skia's image rendering(or svg rendering)
Built a config UI (manage your configs and load/create/delete them)
Created a very basic Mods UI and created a base for modules, hud modules, and created FPSMod
Added support for a UI library(don't wanna name it yet), Fixed Skia text rendering
Got google's Skia renderer working inside of minecraft with no issues(THANKS GEMINI!!)
hello world screen is working
Did a very small refactor.
Ditched IntermediateBodyAST for direct AST.
Working on Primitives.getAST and ASTParser.parseExpr.
Created IntermediateBodyAST(body parsing for functions, intermediate for now since it does not map directly, just has names, no checking)
Removed Double type
Implemented a basic standard library
Implemented member parsing
Did a little refactoring again
Little refactor, create NameResolver, ParseImports, MergeStage, get started on ast parsing
Wrote a mini stage to convert TLD's into special singletons
Created the first stage of the AST parser, ParseOuterBrackets, which differentiates TLD functions from classes
Created lexer!
Created tokens for the lexer
Created project, learning scala!
Mostly object oriented programming language
Bit of refactoring, create compose preview renderer for widgets, create WidgetsUI, work on WidgetConfigureUI
Working on layout management with gpt, I got this, which automatically stretches to any size of widget, with no additional configuration(configuration not implemented)
You can select multiple type of resize methods(not implemented yet)
Worked on design of app and creating UI's
I forgot to install hackatime in android studio so 8 hours didn't count
Modern fully customizable material3 widgets
Created a classloader
Created a very good interface for creating the jvm library
Created github repository, added ability to name created emojis
Added a time estimate(w gemini's help)
Reverted optimization line fix (caused uploads to take longer)
Refactored the whole project and improved support for videos
Worked on creating an unified decoder class and optimized it
Fixed aspect ratio bug
Added logging
Created project(first time using groovy!)
Convert gifs/images/videos to slack emojis (written in groovy)
Added indicator for the skiko wasm module
Added compression, final payload is around 3mb!! (big improvement from 52mb)
Created basic UI, you can only say W right now.
Android keyboard written in compose I had no other ideas for the name
worked on jvmreflection
I worked on the classloading part
Finished ASM port! (also renamed the wrong package, why is it so confusing?)
Worked on porting the org.ow2.asm library to KMP
using ide tools and manuak laber i was able to get most of the errors fixed, i have about 200 remaining.
JVM written in kotlin for the browser
Shipping!
Implemented AI, experimenting with reverse vibe coding. Ship soon!!
Worked on chat UI, finally starting work on the ai server
Created a talking UI, the part on the right is the preview
Created a basic UI
Created IFrameManager
Created the base project!
Its a kotlin multiplatform project
- javascr*pt: client side generating the UI with Jetpack Compose + Material3
- jvm: server with KTOR
Cursor, but it adds a catch to every prompt.
This was widely regarded as a great move by everyone.