Cordial 0.9.0 — you can actually download it
Four package formats build and attach: AppImage, .deb, .rpm and an Arch
package. Every release before this one carried either nothing or a single
Flatpak bundle, so this is the first that meets people in their own package
manager.
Read What is still broken before installing. The startup freeze is not fixed
and the AppImage's sign-in window has a known limitation.
Getting it
AppImage installs nothing and runs on any distribution — download, chmod +x, run. .deb needs Ubuntu 25.10 or newer; 24.04 LTS ships GTK 4.14 and
Cordial needs 4.20, which is the dependency floor rather than an oversight, so
LTS users want the AppImage or the Flatpak. .rpm targets Fedora 44.
Arch builds from the PKGBUILD.
Flatpak remains the recommendation if you have no reason to prefer another: it
is sandboxed and it updates itself.
Input follows the device you last used
Plug in a keyboard and mouse on a phone and Roblox switches to desktop controls;
touch the screen and it switches straight back, instantly. Cordial now does the
same, because the engine's own mechanism turned out to be simpler than any flag:
it exports a different entry point per device family, so the device identity is
the function called. On Android the app's Java layer routes; Cordial replaces
that layer, so the routing is Cordial's to do.
A single session-wide "is this touch or mouse" decision used to seed every
event. It is gone. A pointer event reaches the mouse path, a touch reaches the
touch path, a key reaches the key path, and none of them consults a setting.
Touchscreen support is wired end to end for the first time, including
multi-touch contacts — untested against real hardware, because the machine
this was built on has no touchscreen.
Text boxes draw the right font
The editor drew one hardcoded family. It now resolves the font the engine names
against the font tables shipped inside the Roblox archive you supplied, and
registers every shipped face rather than one.
This matters more than it sounds: while a text box is focused, the engine stops
drawing its own text, so what you see while typing is Cordial's rendering. The
wrong family meant characters changing shape under your cursor.
Fonts from Roblox's marketplace cannot work, and that is settled rather than
unimplemented. The field the engine passes is a 32-bit integer against a
48-entry table of built-in fonts; marketplace font ids are ten digits and
overflow it by an order of magnitude, and the structure carries no string field
at all. An unrecognised font falls back to the default and says so in the log
rather than silently drawing the wrong one.
Gamepads: present, off, and honest about why
The plumbing is complete and disabled. Roblox exports six gamepad entry points
and this build has no way to announce a pad without saying what kind it is —
and nothing available says which number means Xbox and which means PlayStation.
Shipping a guess would show PlayStation owners Xbox button glyphs, which is a
real bug in other clients rather than a hypothetical.
CORDIAL_GAMEPAD=1 turns it on for anyone who wants to help establish the
mapping. No rumble: it is absent rather than stubbed.
What is still broken
The startup freeze, when signed in. The client reaches the home screen,
draws one frame and stops. Not fixed. It is now precisely characterised — the
engine skips a render-view teardown in 13 microseconds that a healthy run spends
7 milliseconds on, with no overlap across 136 runs — which is a much smaller
target than it was, and a fix candidate rather than a fix. Reopening usually
works, and it happens less on mains power than on battery.
Four theories were tested and discarded getting there, two of them announced as
fixes before a control refuted them. Both retractions are in the history.
The AppImage's embedded browser window will be blank on a host without
WebKitGTK 6.0 installed. WebKitGTK spawns its network process by absolute path
and ignores the override meant to redirect it, so that one piece does not travel
inside the bundle.
Ordinary sign-in does not use that window. It appears for two-factor
prompts, email recovery and similar flows, so most people will never meet it;
if you use 2FA on your Roblox account, prefer the Flatpak, the .deb or the
.rpm, none of which are affected. Everything else in the AppImage works.
Please report it rather than assuming Cordial is broken.
A black canvas inside an experience. Joining works; what you see once there
often does not.
Voice chat does not work. The microphone stays shut and there is no
downlink.
Nothing is signed — not the Flatpak remote, not any of the four new formats.
The README explains what that does and does not protect you from, and does not
hide it.
Thanks
Sober, again. Its issue tracker is why several bugs here were recognised rather
than investigated from scratch, and it went first while it was much harder. No
Sober code was taken and none could be.