Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
378 commits
Select commit Hold shift + click to select a range
1e842c9
chore[plugin]: remove old angle/ffmpeg plugins
whitebelyash Sep 5, 2025
b0622c3
feat[plugin]: use constants for known plugins instead of enum
whitebelyash Sep 12, 2025
6dd1cbe
fix[plugin]: update ffmpeg plugin appId
whitebelyash Sep 12, 2025
a15dbca
fix[plugin]: do not create instance if plugin app missing
whitebelyash Sep 13, 2025
eaa45b7
feat[plugin]: do not store instances in map
whitebelyash Sep 17, 2025
5f0615c
fix[JREUtils]: reuse FFmpeg plugin instance from JVM launcher
whitebelyash Sep 18, 2025
a7c6ba7
Feat[minecraft_downloader]: Rewrite the downloader (once again)
artdeell Aug 10, 2025
f818b80
Feat[downloader]: support libraries with no URL
artdeell Aug 18, 2025
3a069c4
Fix[hashutils]: use a different overload of Hex.decodeHex for SDK 21 …
artdeell Aug 18, 2025
7de54d9
Fix[downloader]: remove pointless onComplete()
artdeell Aug 18, 2025
5ce6df7
Feat[modpacks]: move modpacks to the Epic Downloader:tm:
artdeell Sep 3, 2025
afec9f5
Fix[downloader]: remove disk check
artdeell Sep 19, 2025
920486a
Fix[build]: remove old create_profile string
artdeell Sep 19, 2025
6861f78
DO NOT USE, WIP[launcher]: begin VM launch refactor
artdeell Sep 21, 2025
9fca661
wip[lr]
artdeell Sep 26, 2025
8a6bbee
Fix[jre_launcher]: final workability fixes, ready for testing
artdeell Sep 27, 2025
461c45c
Fix[jre_launcher]: fix lib hooks and classpath
artdeell Sep 28, 2025
c939ac7
Fix[jre_launcher]: remove unnecessary classpath argument
artdeell Sep 28, 2025
caf7638
Fix[cacio17]: Use a Java agent instead of a custom system class loader
artdeell Sep 28, 2025
ed45634
Fix[javarunner]: Fix x86 JVM path detection
artdeell Sep 29, 2025
76037db
Fix[main]: incorrectly use the global renderer setting instead of the…
artdeell Sep 29, 2025
c150c62
Fix[instancemanager]: don't prevent instances with malformed JSONs fr…
artdeell Sep 29, 2025
8c0091c
Fix[instanceinstaller]: don't try to run corrupted instance installer…
artdeell Sep 29, 2025
8226289
Fix[vm_launcher]: wait for the JVM to shut down before exiting main
artdeell Oct 3, 2025
9c71736
Feat[launcher]: better LWJGL3/LWJGLX classpath handling for BTA
artdeell Oct 4, 2025
5a1d45e
Fix[launcher]: account for user supplied Java arguments
artdeell Oct 4, 2025
1edac6b
Fix[customcontrols]: set internal changes flag when editing the size …
artdeell Oct 5, 2025
55e09f4
Fix[hinter]: swapped instrument and nio hinters
artdeell Oct 6, 2025
c8c206f
Feat[multirt]: better use of try statements
artdeell Oct 6, 2025
af41eac
Del[launcher]: remove Cosmetica capes support code
artdeell Oct 8, 2025
622a709
Feat[mod_installer]: Go faster
artdeell Oct 9, 2025
a622b9d
Feat[launcher,downloader]: skip libraries when downloading and when b…
artdeell Oct 9, 2025
cd7b65c
Fix[awt_view]: minimize race condition possibility, disable alpha on …
artdeell Oct 9, 2025
4bd288d
Fix[gamerunner]: null checks for Ornithe-generated JSONs
artdeell Oct 10, 2025
bb410ed
Feat[gamerunner]: classpath library deduplication
artdeell Oct 10, 2025
0092ad5
Feat[pojavexec]: better handle inputs in a threaded environment
artdeell Oct 10, 2025
0761269
Fix[gl_bridge]: don't let the game swap buffers without a context
artdeell Oct 10, 2025
904d39a
Feat[launcher]: update Mesa to 25.0.7 with fixes for Mali and Samsung…
artdeell Oct 12, 2025
cd7620e
Bump dawidd6/action-download-artifact from 2 to 6 in /.github/workflows
dependabot[bot] Oct 11, 2025
0e6b5d0
Feat[launcher_home]: replace Discord link with Telegram for Russian a…
artdeell Oct 12, 2025
c9a4874
Feat[downloader]: use Google Maven Central mirror for faster loading
artdeell Oct 12, 2025
eb9003c
Fix[game_launcher]: reduce cloud distance on Mali to avoid driver bugs
artdeell Oct 13, 2025
e8694cb
Fix[actions]: correct LTW download source
artdeell Oct 13, 2025
e125964
Fix[gamepad]: correctly report -1 when gamepad triggers are not pressed
artdeell Jul 19, 2025
76e83a3
Fix[tools]: duplicate slash in Maven artifact path
artdeell Oct 14, 2025
6ad16c9
Feat[launcher]: allow logging in with unrelated ongoing tasks
artdeell Oct 14, 2025
0d3a415
Fix[jreutils]: don't enable ANGLE for GL4ES
artdeell Oct 14, 2025
eef3f44
Fix[downloader]: change verification thread scaling
artdeell Oct 14, 2025
dd44b8a
Fix[launcher]: only enable LWJGLX when the client uses LWJGL2
artdeell Oct 17, 2025
2474036
Fix[launcher]: attempt to better detect when storage is disconnected
artdeell Nov 13, 2025
bb43dfe
Feat[launcher]: replace even more libraries with 16k-aligned variants…
artdeell Nov 14, 2025
efcb0e5
Feat[launcher]: common surface provider impl, surface size handling c…
artdeell Oct 20, 2025
088f467
Feat[launcher]: always load accounts asynchronously
artdeell Nov 14, 2025
a3ed93c
Feat[launcher]: use MIME type map asynchronously
artdeell Nov 14, 2025
1692915
Feat[launcher]: rewrite instances and improve layouts
artdeell Nov 15, 2025
3f58c38
Fix[accounts]: ensure the account directory exists before listing fil…
artdeell Nov 15, 2025
70e13df
Fix[input_bridge]: fix broken copy-paste
artdeell Nov 15, 2025
b2f7514
Feat[launcher]: check for 4x MSAA when launching
artdeell Nov 15, 2025
2334e74
Fixed neoforge version order being messed up by also reversing mLoade…
RaydanOMGr Nov 16, 2025
a7d6264
Merge branch 'stage/196' into fix/startup_time
artdeell Nov 16, 2025
a46c906
Fix[login]: prevent double-refreshes with async account loading
artdeell Nov 17, 2025
a01bc28
Fix[instances]: select an instance if the currently selected one has …
artdeell Nov 22, 2025
bf53dbe
Fix[launcher]: don't crash the launcher when there's no selected inst…
artdeell Nov 22, 2025
6d42a6d
Fix?[launcher]: synchronize directory checking to avoid race conditions
artdeell Nov 23, 2025
73fe180
Fix?[fileutils]: check again if the target directory exists just in case
artdeell Nov 23, 2025
7702b04
Fix[main_menu]: check instance in openGameDirectory
artdeell Nov 23, 2025
d883db5
Fix[mod_installer]: null safety in JarFileProperties.read()
artdeell Nov 23, 2025
82e108a
Fix[locale_ru]: complete the Russian locale
artdeell Nov 23, 2025
10d9ba5
Fix[oauth_fragment]: ignore completion signal if the activity is null
artdeell Nov 24, 2025
c16a837
Fix[accounts]: ignore nulled accounts
artdeell Nov 24, 2025
7092700
Fix[control_editor]: prevent crashes if a button is moved before bein…
artdeell Nov 24, 2025
51751f0
Fix[control_editor]: fix keyboard hiding behaviour
artdeell Nov 24, 2025
533f295
Fix[main_menu]: check instance in openGameDirectory
artdeell Nov 23, 2025
74a3b5c
Fix[mod_installer]: null safety in JarFileProperties.read()
artdeell Nov 23, 2025
16676e7
Fix[locale_ru]: complete the Russian locale
artdeell Nov 23, 2025
5681169
Fix[oauth_fragment]: ignore completion signal if the activity is null
artdeell Nov 24, 2025
c033ed0
Fix[accounts]: ignore nulled accounts
artdeell Nov 24, 2025
5161e2c
Fix[control_editor]: prevent crashes if a button is moved before bein…
artdeell Nov 24, 2025
88ebf64
Fix[control_editor]: fix keyboard hiding behaviour
artdeell Nov 24, 2025
2de8c66
Fix[instance_adapter]: return zero entries before instance adapter is…
artdeell Nov 28, 2025
d2f4bf2
Fix[pointer_capture]: don't crash on null InputDevices
artdeell Nov 28, 2025
7228707
Fix[pointer_capture]: accumulate input history for relative devices
artdeell Nov 28, 2025
6fd05e3
Fix[main]: ignore config changes if control layout isn't present
artdeell Nov 30, 2025
365ad95
Fix[tools]: use fallback if cursor is empty
artdeell Nov 30, 2025
3193b74
Fix[control_layout]: correctly show layout loading errors
artdeell Nov 30, 2025
8271905
Fix[launcher: check fragment manager state before transitioning betwe…
artdeell Nov 30, 2025
68b902f
Fix[controls]: don't leave the editor nonfunctional if control loadin…
artdeell Nov 30, 2025
4b102c4
Fix[fabric_fragment]: check for fragment attachment when updating spi…
artdeell Nov 30, 2025
c751bce
Fix[side_dialog]: don't rly on a separate variable for instantiation …
artdeell Nov 30, 2025
3e5c346
Fix[modpack_installer]: check if the instance installer got created s…
artdeell Nov 30, 2025
ea1bb43
Merge branch 'fix/moremisc' into v3_openjdk
artdeell Nov 30, 2025
4294825
Fix[launcher]: inverted usage of FragmentManager.isStateSaved()
artdeell Nov 30, 2025
edae3a2
Fix[main]: catch all exceptions when exiting the layout editor
artdeell Dec 6, 2025
415e295
Fix[launcher]: use a Dialog when alerting about missing storage permi…
artdeell Dec 7, 2025
18926f5
Fix[import_layout]: support bitmap controls import
artdeell Dec 7, 2025
7b15494
Fix[side_dialog]: more state validation
artdeell Dec 7, 2025
d4d5707
Fix[tools]: catch all exceptions and use fallback name in getFileName
artdeell Dec 7, 2025
014c071
Fix[land]: fix social media and share button icons
artdeell Dec 8, 2025
6870a6c
Fix?[webview_login]: try to correctly signal completion when logging …
artdeell Dec 9, 2025
f5af6fe
Fix[main]: disable narrator and fullscreen before starting the game
artdeell Dec 9, 2025
16e4337
Feat[launcher]: replace built-in Java 21 with Java 25
artdeell Dec 29, 2025
d5c5fbc
Fix[lwjgl]: applu a workaround for unaligned float accesses on arm32
artdeell Dec 29, 2025
7464a60
Feat[newjreutil]: remote runtime installation
artdeell Jan 4, 2026
6ae5cfa
Feat[sig_check_util]: add docs
artdeell Jan 4, 2026
989a84f
Chg[tools]: replace string concat with file constructors for Tools.wr…
artdeell Jan 4, 2026
d8b1157
Feat[new_jre_util]: Limit updates to once in 3 days
artdeell Jan 4, 2026
5b0e0c7
Fix[new_jre_util]: whoops, commented jre 25
artdeell Jan 4, 2026
ce39201
Fix[account_spinner]: don't try to show the dialog if the activity is…
artdeell Jan 8, 2026
e935cf1
Fix[edit_control_side_dialog]: more checks in adaptPanelPosition
artdeell Jan 8, 2026
f52cc37
Fix[minecraftaccount]: check if the deserialized account is null
artdeell Jan 8, 2026
f43815d
Fix[minecraftdownloader]: throw fatal errors into global handler, thr…
artdeell Jan 8, 2026
802c9de
Feat[zink]: update freedreno, update timeline semaphore layer
artdeell Jan 9, 2026
5cc01bc
Fix[MinecraftDownloader]: don't try to install the new JRE if the ass…
artdeell Jan 10, 2026
882db98
Fix[tools]: don't crash if the device has no intent for opening a link
artdeell Jan 10, 2026
8e9de1c
Feat[launcher]: use FileUtils for ModIconCache
artdeell Mar 1, 2026
9b28e6d
Feat[memory-utils]: move into utils package
artdeell Mar 1, 2026
91622b1
Fix[tools::openURL]: run the browser as a new task
artdeell Mar 1, 2026
6ecd721
Feat[lwjgl]: update to 3.3.6, add some IME-related fixes to GLFW.java
artdeell Mar 7, 2026
0fa5eac
Update to target SDK 36
artdeell Mar 8, 2026
6bcd1d2
fix[modloaders, ForgelikeUtils]: update neoforge metadata link
Yarpopcat08 Mar 10, 2026
468020e
feat[JREUtils]: add YSM mod support (#286)
Yarpopcat08 Mar 12, 2026
f16feee
Fix[lwjgl]: reapply arm32 patch for 1.21.11
artdeell Mar 12, 2026
b4a65d8
Fix[button]: don't try to delete when already parentless
artdeell Mar 13, 2026
b2570a1
Fix[cropper_utils]: throw an Exception when fallback bitmap decode fails
artdeell Mar 13, 2026
0dcce8a
Fix[downloader]: hopefully? prevent size overflow
artdeell Mar 13, 2026
19afce3
Fix[instance_adapter]: harden further against issues with storage
artdeell Mar 13, 2026
1500c41
Fix[instances]: return null if loaded instance is null
artdeell Mar 13, 2026
4d9f8de
Fix[minecraft_downloader]: don't crash on malformed JSONs
artdeell Mar 13, 2026
6a5c98d
Fix[layoutbitmaps]: hopefully? more reliable zip detection
artdeell Mar 13, 2026
5d8bde8
Fix[lwjgl-stb]: wrap some resize v1 functions required by JourneyMap
artdeell Mar 21, 2026
2abc87b
Feat[launcher]: commonify permission request/check methods
whitebelyash Mar 24, 2026
d095c34
Feat[misc_settings]: add microphone access request button
whitebelyash Mar 24, 2026
aae652a
Feat[strings]: add ru translations for microphone request button
whitebelyash Mar 24, 2026
dacf266
feat[fragments]: add instance deletion confirmation dialogue (#290)
Yarpopcat08 Mar 24, 2026
6629a3b
Feat[mod_installer/fabric]: fix instance name and add Legacy Fabric i…
Yarpopcat08 Mar 24, 2026
ff0c233
Fix[permission]: extract api version check
whitebelyash Mar 25, 2026
3c6cbfd
Feat[runner]: block Sodium from running on GL4ES core contexts
whitebelyash Mar 24, 2026
89f7161
Feat[downloader]: more opportunistic metadata acquisition
artdeell Mar 25, 2026
7616e33
Feat[launcher]: turn on rapid start by default and improve its reliab…
artdeell Mar 25, 2026
2fb2aa7
Upd[authlib-injector]: update to release 1.2.7
artdeell Mar 26, 2026
11b0f81
Fix[launcher]: wrap (n)stbir_resize_uint8
artdeell Mar 26, 2026
8664fb9
Fix[launcher]: disable the sandbox for installers from trusted domains
artdeell Mar 29, 2026
276a0a9
Feat[permission]: extract check&ask permission utils
whitebelyash Mar 31, 2026
1cd1a53
Feat[res]: add microphone icon
Yarpopcat08 Mar 31, 2026
ef7a73d
DO NOT USE, EXPERIMENTAL: Switch to VSMobile GLFW implementation
artdeell Apr 8, 2026
eca1c0c
Fix[launcher]: fixes
artdeell Apr 9, 2026
a2028ac
Fix[repo]: remove the unused gl4es submodule
artdeell Apr 9, 2026
f3e192e
Fix[gl_surface]: restore resolution calculation
artdeell Apr 9, 2026
e93db0c
Feat[lwjgl]: ship natives in jars
artdeell Apr 10, 2026
fccaa58
Add shaderc, spvc, re-add Vulkan driver loader
artdeell Apr 11, 2026
2105d76
Feat[glfw]: improve input queue
artdeell Apr 11, 2026
13a75c6
Feat[glfw]: correctly reimplement event waiting
artdeell Apr 11, 2026
5643735
Feat[downloader]: implement real lwjgl downloading
artdeell Apr 14, 2026
2382452
Fix[downloader]: restore downloading
artdeell Apr 14, 2026
767f156
Fix[downloader]: use correct path for AAR extraction
artdeell Apr 14, 2026
82dee3b
Update AndroidManifest.xml
WOOD6563 Apr 16, 2026
3531c5d
Fix[lwjgl]: update stb to fix meteor
artdeell Apr 19, 2026
cc0fdfd
Upd[lwjglx]: fixes for Angelica & GTNH
artdeell Apr 23, 2026
e02e504
Feat[gamerunner]: allow selecting LTW when Angelica is installed
artdeell Apr 23, 2026
0efd15c
feat[drawables]: replace ic_setting_sign_in_background
Yarpopcat08 Apr 30, 2026
ec875c3
Rewrote Ukrainian localisation (#341)
wtbckxd May 5, 2026
7c95945
feat[modpacks]: add local modpack installer
Yarpopcat08 May 5, 2026
e829d9f
feat[README]: mark cf/mrpack import as implemented
Yarpopcat08 May 5, 2026
157ea9d
feat[searchModpackFragment]: clear progressbar when an excetion is ca…
Yarpopcat08 May 6, 2026
8341016
Feat[build]: add public/github releases build type
whitebelyash May 7, 2026
48516f3
Feat[workflow]: enable nightly releases
whitebelyash May 7, 2026
1d4c1e6
Fix[workflow]: fix src file name
whitebelyash May 7, 2026
e0d3f0f
Add[build]: add MojoPub signature
artdeell May 7, 2026
883123a
Fix[buildscript]: remove cd
artdeell May 7, 2026
26e523f
Update to laotst v3_openjdk
artdeell May 8, 2026
7bb4f1e
Upd[gl4es]: enable builtin EGL support
artdeell May 9, 2026
fa3f6b1
Fix[glinfo]: more correct context check impl
artdeell May 9, 2026
d97e2e7
Upd[lwjgl]: enable x86 support
artdeell May 9, 2026
d1556e1
Feat[launcher]: use RenderSpec to select the renderer instead of sett…
artdeell May 9, 2026
29bd43f
Feat[tools]: log selected renderer on game start
whitebelyash May 12, 2026
b9e3716
WIP BROKEN Feat[jreutils]: support loading mesa drivers (freedreno/zink)
whitebelyash May 9, 2026
98e3944
Feat[pojavexec]: implement linker namespace bypass for EGL loading
whitebelyash May 9, 2026
8a7318e
Feat[lwjgl_hook]: also hook libEGL dlopen
whitebelyash May 9, 2026
002c516
WIP, VERY BROKEN Feat[renderer]: bring back zink & add freedreno support
whitebelyash May 9, 2026
bf22fca
Fix[lwjgl_hook]: force EGL hook to Mesa EGL
whitebelyash May 10, 2026
12300c6
Feat[zink]: turnip usage prep
whitebelyash May 14, 2026
578ec4d
Fix[linker]: do not initialize namespaces multiple times
whitebelyash May 10, 2026
335bc60
Fix[lwjgl_hook]: Load LWJGL hooks when loading liblwjgl.so
artdeell May 11, 2026
789ad4e
Fix/Feat[renderer]: bring back zink support, random fixups
whitebelyash May 11, 2026
379b131
Fix[vulkan_loader]: unlock turnip/system driver detection
whitebelyash May 11, 2026
e9360b9
Feat[renderer]: add freedreno renderer definitions
whitebelyash May 11, 2026
9dc298f
Fix[jreutils]: actually pick zink loader for zink
whitebelyash May 11, 2026
c5a526c
Fix[renderer]: fix loading non-Mesa renderers
whitebelyash May 11, 2026
5a10b74
Fix[freedreno]: fixup OpenGL version detect from KGSL
whitebelyash May 11, 2026
ba6f6c7
Fix[freedreno]: force GL3.3 on pre A6XX devices
whitebelyash May 11, 2026
7853ccf
Feat[pojavexec]: make nsbypass loader more flexible and improve GL lo…
artdeell May 11, 2026
5ff6d1e
Feat[glfw]: set the default buffer size instead of updating it via se…
artdeell May 13, 2026
78772e2
Fix[minibridge]: use selected loader function for preloading EGL
artdeell May 14, 2026
bdf3a53
Fix[textureview]: forcibly call the resize callback on updates
artdeell May 14, 2026
a3c02aa
Fix[vulkan_loader]: rebase properly
whitebelyash May 14, 2026
c14648e
Fix[jreutils]: rebase properly
whitebelyash May 14, 2026
a70f2d6
Fix[minibridge]: fix potential UB
whitebelyash May 14, 2026
1c86aa3
Fix[main_activity]: replace hardcoded renderer with the real renderer
whitebelyash May 14, 2026
a46acd7
Fix[jreutils]: replace env var with JNI for turnip setting
whitebelyash May 14, 2026
58d4816
Fix[vulkan_loader]: fix typo; add comment on vulkan preload
whitebelyash May 14, 2026
ffae585
Remove OSMesa binaries
artdeell May 14, 2026
8c3f939
Add Mesa binaries
artdeell May 19, 2026
0102b50
Remove other outdated LWJGL binaries
artdeell May 19, 2026
808b055
Feat[dnbglfw]: implement gamepad support
artdeell May 19, 2026
a99af3e
Fix[downloader]: override libraries while ignoring version
artdeell May 19, 2026
4783128
fix[SearchModFragment]: disable the import button when a task is active
Yarpopcat08 May 18, 2026
74ecbb9
Feat[lwjgl]: LWJGL2 support
artdeell May 19, 2026
3439806
feat[drawables]: add more icons (#371)
Yarpopcat08 May 19, 2026
c582963
Feat[build]: new codename (#376)
whitebelyash May 19, 2026
9dcddc4
Fix[downloader]: process original version before the modded version
artdeell May 20, 2026
74030a3
SAF fixes (#392)
whitebelyash May 20, 2026
e954bd1
Feat[subst]: update lwjgl2-glfw
artdeell May 21, 2026
1f4c3ba
Feat[dnb_glfw]: auto-resize the window back to original size
artdeell May 21, 2026
4f6179f
feat[launcher]: update lwjgl2-glfw
artdeell May 21, 2026
23f6ca0
Fix[TouchEventProcessor]: account for the mouse speed
artdeell May 21, 2026
619b753
Fix[AndroidPointerCapture]: correctly implement sending the motion ve…
artdeell May 21, 2026
4fa4fb4
Fix[GLFW]: Don't auto-center cursor when starting to grab
artdeell May 22, 2026
76342e0
Fix[GUIEventProcessor]: don't try to release the mouse when it isn't …
artdeell May 22, 2026
4810a16
Upd[GLFW]
artdeell May 22, 2026
bb3ef57
Feat[permission]: rework how permission requests are done
whitebelyash May 24, 2026
9a60460
Merge branch 'v3_openjdk' into feat/microphone
whitebelyash May 24, 2026
c75e7b8
Upd[mesa]: update aar for a710/720/810 fixes (#405)
whitebelyash May 24, 2026
ab2d0e5
Fix[rd_check]: ignore render distance bug with ANGLE (#404)
whitebelyash May 24, 2026
d39d815
Fix[rd_check]: ignore render distance bug on 1.21.5+ (#403)
whitebelyash May 24, 2026
a2b7071
Fix[prefs]: fix empty preference key
whitebelyash May 24, 2026
162f1d2
Fix[keyboard]: don't send the codepoint on key up
artdeell May 24, 2026
49b7045
Feat[prefs]: add an option to force sysmem rendering on freedreno
whitebelyash May 19, 2026
9ee751c
Fix[default_prefs]: do not enable sysmem by default
whitebelyash May 24, 2026
f4523cc
Fix[strings]: clarify sysmem speedup on enable
whitebelyash May 24, 2026
64ea3bb
Fix[strings]: clarify sysmem speedup on enable 2: electric boogaloo
whitebelyash May 24, 2026
67eeafb
Fix[permission]: remove rationale check for notification requests
whitebelyash May 24, 2026
16a8df4
Fix[launcher_activity]: actually display notification request reasoning
whitebelyash May 24, 2026
61ac742
Update lwjgl2-glfw
artdeell May 25, 2026
d8fef12
Merge pull request #307 from whitebelyash/feat/microphone
artdeell May 25, 2026
414c431
Feat[renderer]: disable zink/freedreno on SDK <29 devices
whitebelyash May 26, 2026
5eef3cc
Fix[substitutions]: add substitution for 26.2-pre-1
artdeell May 26, 2026
1a80aed
Feat[launcher]: add shaderc and spvc as precompiler AARs
artdeell May 26, 2026
55b8baa
Fix[launcher]: update mesa to a 16k capable version
artdeell May 26, 2026
e777738
Fix[gyro]: remove coordinate multiplication
artdeell May 26, 2026
9e2133e
Fix[glfw]: sync dnb-glfw and pojavexec to NDK r29
artdeell May 26, 2026
21747ba
Feat[launcher]: New GLFW implementation
artdeell May 26, 2026
582acd7
Fix[dnb-glfw]: add pubRelease build type into library
artdeell May 26, 2026
3804513
Fix[DistanceGesture]: correctly call onGestureSubmitted
artdeell May 28, 2026
de23e50
Fix[gamepad]: enable the cursor when in use
artdeell May 28, 2026
845a3ed
Upd[glfw]
artdeell May 28, 2026
30a5aa3
Fix[dnbglfw]: execute grabbing listeners on UI thread
whitebelyash May 28, 2026
0ce8392
Feat[turnip]: use turnip provided by Mesa AAR
whitebelyash May 28, 2026
f8080ce
Update Minecraft version range in README
Axi0mBCS May 16, 2026
3beb924
Fix[custom_controls]: check if layout parent is null (#424)
whitebelyash May 31, 2026
a16aa15
Apply CopperLauncher modifications on MojoLauncher base
Vylesh Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
patreon: pojavlauncher
patreon: angelauramc
8 changes: 4 additions & 4 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ body:
attributes:
label: The log file and images/videos
description: |
The log file called `latestlog.txt` is located under `/storage/emulated/0/Android/data/net.kdt.pojavlaunch/files` (on Android 10 and higher) or `/storage/emulated/0/games/PojavLauncher/` (on Android 9 and lower). You may have to activate an option in your file explorer to see hidden files and folders. Recommended file managers are ZArchiver and MiXplorer. |
The log file called `latestlog.txt` is located under `/storage/emulated/0/Android/data/org.angelauramc.amethyst/files` (on Android 10 and higher) or `/storage/emulated/0/games/Copper/` (on Android 9 and lower). You may have to activate an option in your file explorer to see hidden files and folders. Recommended file managers are ZArchiver and MiXplorer. |
You can also upload here screenshots or videos of the buggy behavior, if possible.

Tip: You can attach files by clicking this area to highlight it and then dragging files in or select them on 🖼 option at the toolbar. Do not click anything before the file successfully uploads, otherwise the upload is going to stop and the file won't attach.
Expand All @@ -29,7 +29,7 @@ body:
label: Steps To Reproduce
description: Steps to reproduce the issue.
placeholder: |
1. Start PojavLauncher
1. Start Copper
... *(your set of actions to reproduce the bug)*
render: markdown
validations:
Expand All @@ -51,12 +51,12 @@ body:
- **Device model**: Huawei P30 Pro 8/512G
- **CPU architecture**: arm64 (can be arm64, arm, x86_64 or x86 depending on the device)
- **Android version**: 10
- **PojavLauncher version**: (can be found in Android Apps settings, for example `dahlia-20230813-5e8842b-v3_openjdk`)
- **Copper version**: (can be found in Android Apps settings, for example `dahlia-20230813-5e8842b-v3_openjdk`)
value: |
- Device model:
- CPU architecture:
- Android version:
- PojavLauncher version:
- Copper version:
render: markdown
validations:
required: true
Expand Down
124 changes: 45 additions & 79 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ name: Android CI
on:
pull_request:
branches-ignore:
- 'l10n_v3_openjdk2'
- 'l10n_v3_openjdk'
types: [ opened, reopened ]
push:
branches-ignore:
- 'l10n_v3_openjdk2'
- 'l10n_v3_openjdk'
workflow_dispatch:

jobs:
Expand All @@ -18,124 +18,90 @@ jobs:
CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: "recursive"

- name: Set up JDK 8
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '8'
java-version: '21'

- name: Get LTW
uses: dawidd6/action-download-artifact@v2
continue-on-error: true
with:
github_token: ${{secrets.LTW_CLONER_SECRET}}
repo: PojavLauncherTeam/BigTinyWrapper
workflow: android.yml
workflow_conclusion: success
name: output-aar
path: app_pojavlauncher/libs
allow_forks: false

- name: Get JRE 8
uses: dawidd6/action-download-artifact@v2
run: |
sudo apt update && sudo apt install -y wget
mkdir -p app_pojavlauncher/libs
cd app_pojavlauncher/libs
wget https://github.com/CopperLauncher/LTW/releases/latest/download/ltw-release.aar

- name: Get JRE8
uses: dawidd6/action-download-artifact@v6
with:
workflow: build.yml
path: app_pojavlauncher/src/main/assets/components/jre
workflow_conclusion: success
repo: PojavLauncherTeam/android-openjdk-build-multiarch
repo: AngelAuraMC/angelauramc-openjdk-build
branch: buildjre8
name: jre8-pojav

- name: Get JRE17
uses: dawidd6/action-download-artifact@v2
with:
workflow: build.yml
path: app_pojavlauncher/src/main/assets/components/jre-new
workflow_conclusion: success
repo: PojavLauncherTeam/android-openjdk-build-multiarch
branch: buildjre17-21
name: jre17-pojav

- name: Get JRE21
uses: dawidd6/action-download-artifact@v2
with:
workflow: build.yml
path: app_pojavlauncher/src/main/assets/components/jre-21
workflow_conclusion: success
repo: PojavLauncherTeam/android-openjdk-build-multiarch
branch: buildjre17-21
name: jre21-pojav

- uses: gradle/actions/setup-gradle@v4
with:
validate-wrappers: false
gradle-version: "8.11"

- name: Build JRE JAR files
- name: Run scripts
run: |
./scripts/languagelist_updater.sh

mkdir out
# Build JRE JAR files (security manager, etc...)
gradle :jre_lwjgl3glfw:build --no-daemon

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
- name: Build Release .apk
run: |
# Build the launcher
gradle :app_pojavlauncher:assembleRelease
mv app_pojavlauncher/build/outputs/apk/release/app_pojavlauncher-release.apk out/app-release.apk

- name: Build Google Play .aab
if: github.repository_owner == 'PojavLauncherTeam' && github.ref_name == 'v3_openjdk'
- name: Gen md5sums
run: |
gradle :app_pojavlauncher:bundleGplay
mv app_pojavlauncher/build/outputs/bundle/gplay/app_pojavlauncher-gplay.aab out/app-gplay.aab
md5sum out/app-release.apk > out/app-release.md5

- name: Upload release APK
uses: actions/upload-artifact@v4
with:
name: app-release
path: out/app-release.*

- name: Build Debug .apk
run: |
# Build the launcher
gradle :app_pojavlauncher:assembleDebug
mv app_pojavlauncher/build/outputs/apk/debug/app_pojavlauncher-debug.apk out/app-debug.apk

- name: Build APK without runtime
run: |
rm -r app_pojavlauncher/src/main/assets/components/jre
rm -r app_pojavlauncher/src/main/assets/components/jre-new
rm -r app_pojavlauncher/src/main/assets/components/jre-21
gradle assembleDebug
mv app_pojavlauncher/build/outputs/apk/debug/app_pojavlauncher-debug.apk out/app-debug-noruntime.apk
- name: Gen md5sums
run: |
md5sum out/app-debug.apk > out/app-debug.md5
md5sum out/app-debug-noruntime.apk > out/app-debug-noruntime.md5

- name: Upload APK
- name: Upload debug APK
uses: actions/upload-artifact@v4
with:
name: app-debug
name: app-debug (recommended)
path: out/app-debug.*

- name: Upload AAB
uses: actions/upload-artifact@v4
with:
name: app-release-aab
path: out/app-gplay.aab

- name: Upload onto the Google Play testing track
continue-on-error: true
if: github.repository_owner == 'PojavLauncherTeam' && github.ref_name == 'v3_openjdk'
uses: r0adkll/upload-google-play@v1.1.2
with:
serviceAccountJsonPlainText: ${{ secrets.GPLAY_SERVICE_JSON }}
packageName: net.kdt.pojavlaunch
releaseFiles: out/app-gplay.aab
track: internal
inAppUpdatePriority: 5
- name: Build APK without runtime
run: |
rm -rf app_pojavlauncher/src/main/assets/components/jre
rm -rf app_pojavlauncher/src/main/assets/components/jre-new
rm -rf app_pojavlauncher/src/main/assets/components/jre-21
rm -rf app_pojavlauncher/src/main/assets/components/jre-25
./gradlew assembleDebug
mv app_pojavlauncher/build/outputs/apk/debug/app_pojavlauncher-debug.apk out/app-debug-noruntime.apk

- name: Gen md5sums
run: |
md5sum out/app-debug-noruntime.apk > out/app-debug-noruntime.md5

- name: Upload APK (without runtime)
uses: actions/upload-artifact@v4
with:
name: app-debug-noruntime
path: out/app-debug-noruntime.*

4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@ app_pojavlauncher/.cxx/
.vs/
/curseforge_key.txt
/app_pojavlauncher/libs/ltw-release.aar
/jre_lwjgl3glfw/gradle/
/jre_lwjgl3glfw/**/build/
/jre_lwjgl3glfw/**/.gradle/
/app_pojavlauncher/curseforge_key.txt
9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[submodule "MobileGlues"]
path = MobileGlues
url = https://github.com/MobileGL-Dev/MobileGlues.git
[submodule "SDL"]
path = app_pojavlauncher/src/main/jni/SDL
url = https://github.com/libsdl-org/SDL.git
[submodule "sdl2-compat"]
path = app_pojavlauncher/src/main/jni/sdl2-compat
url = https://github.com/libsdl-org/sdl2-compat.git
5 changes: 5 additions & 0 deletions GPLAY_PRIVACY_POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# MojoLauncher Privacy Policy
1. This app does not send any sensitive data, and uses network only for downloading game resources, mods or other content.
2. This app does not collect any sensitive data while you are running the game.
3. Some sensitive data is stored in crash reports after the game crashes, but it's not shared to the developer or any third parties
4. MojoLauncher developers reserve the right to update this privacy policy without prior notification.
1 change: 1 addition & 0 deletions MobileGlues
Submodule MobileGlues added at 694dfc
5 changes: 5 additions & 0 deletions PRIVACY_POLICY_ru.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Политика конфиденциальности MojoLauncher
1. Данное приложение не отправляет данные о пользователе, и использует сеть только для загрузки ресурсов игры, модификаций и другого контента
2. Во время работы игры приложение не собирает данные о пользователе.
3. Данные пользователя могут быть записаны в хранилище приложения при сбое, но эти данные не отправляются разработчику или третьим лицам
4. Разработчики MojoLauncher оставляют за собой право изменить эту политику конфиденциальности в любое время без предварительного оповещения.
Loading