Skip to content

Releases

GlowberryClient BETA5 - Radial Wheel Rebuild, Replay Flight & Hook Reliability

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 19 Oct 17:31
940b46c

GlowberryClient BETA5

The last beta before the official OV.3 release. This build lands the preloader Phase 3 work
(hook reliability, verified installs, honest diagnostics), the radial wheel rebuild, replay
spectator flight, and auto sign-in on the working Bedrock auth path.

Everything below is what changed since BETA4.


✨ Added

Radial wheel — rebuilt around profiles

  • Hold-to-open gesture. The wheel is now a hold-to-open menu: the press opens it, you point or
    flick while holding, and the release commits. The old press-to-toggle shape is still available.
  • Player-authored profiles. One to eight entries per ring, each with its own label, icon and
    colour, instead of a fixed four-destination ring.
  • Nested sub-wheels. A ring can open another ring in place, so the action count is no longer
    capped at one wheel.
  • Profile manager. Create, rename, delete and reorder profiles on the fly. Deleting a profile
    repoints any sub-wheel that opened it, and the last profile is never deleted.

Replay — interactive spectator flight

  • The free camera can now be flown directly: a single-finger drag over the video looks around, and a
    flight stick (with boost) moves the camera. The flight tick only integrates the stick in
    interactive spectator mode, so an authored cinematic still plays untouched.

Sign-in

  • Auto sign-in on the working Bedrock auth path. The launcher refreshes the active account's
    stored auth blob on a background thread at launch, instead of depending on the MSAL silent path
    whose placeholder client id can never succeed. A failed refresh opens the sign-in screen with the
    reason already shown, rather than leaving you signed out with no prompt.

Launch tab

  • The head pod's sync indicator is now driven by the real cosmetic-sync state: running reads as
    synced, enabled-but-not-yet-up reads as loading (the sockets open on a background thread), and
    off reads as hidden rather than claiming a link that does not exist.

Tooling

  • One-step signature-rule generation (tools/gen-rules): download the APK, extract the library,
    analyze it, derive the RTTI rules and merge them with a revision bump — in one command, with host
    tests and a CI run.

🔧 Fixed

Hook reliability (preloader Phase 3)

  • Detours no longer drop return values. The cosmetics seams forward every volatile register, so
    a return value in x0 or an sret pointer in x8 survives the detour exactly as if the hook were
    not installed. The old passthroughs preserved them only by accident.
  • Hook installs retry instead of giving up. A deferral now re-arms the install with backoff
    rather than sealing it for the session; only after three give-ups does it stay vanilla.
  • Patched prologues are verified. After every install the first instruction is read back and
    confirmed to be a branch; an unverified patch is backed out, so a session never runs half-hooked.
  • A live probe replaces the version window. The render hook resolves its slot from the diagnostic
    string the function body references and refuses a target that is not executable code, so newer
    builds keep the attempt and still fail closed.
  • Generated rules carry their own probe, and a rule whose probe did not resolve is refused at
    merge time instead of looking like a working one.

Diagnostics honesty

  • The report now names the device, the process ABI, the render-hook refusal reason (which
    exact gate refused it), the skin-path seam stage, and the frame-pacing reading — with
    "unknown" for anything the build genuinely cannot read, never a confident wrong answer.
  • The render-distance route and the persona accessor names are now reported per build, so the
    launcher can say a route is possible instead of guessing.

Optifine

  • An item the crash guard switched off now says why (clear / retrying / last attempt / quarantined)
    instead of looking identical to one you turned off yourself. Re-enabling an item by hand clears its
    counter.

Tooling

  • The analyzer's ADRP reference scan no longer silently returns nothing when numpy is absent; it
    has an equivalent pure-Python path, so a machine without numpy is no longer a quiet wrong answer.

Cosmetics

  • The GLES mesh rasteriser's Java surface is retired. Every cosmetic route is now backend-agnostic,
    and a test pins that the graphics backend never blocks a piece — so a preview-only piece is never
    blamed on Vulkan.

✅ Verification

  • :app:assembleDebug green; APK ships arm64-v8a with libgxcore.so and libpreloader.so.
  • Unit tests pass (pure logic, no mocks).
  • Preloader host tests and the Python tooling tests now run on every commit in CI.
  • Cosmetics, preview and the native seams are still unverified on device; the pure pipeline is
    covered by the tests and the diagnostics report names which route is live.

📢 This is the last beta release until the official OV.3 is released.

GlowberryClient BETA4 - Module Data Fixes & Blueberry UI

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 18 Oct 16:01

GlowberryClient BETA4

This build fixes the module catalogue: the entries that were disabled, or enabled but doing
nothing, purely because they were refused for lack of a live native game feed now work wherever
this build actually has a route to their data. Every catalogue entry is classified by the route it
needs, and only the entries that genuinely require a feed this build does not expose stay badged —
with the reason they are badged.

Phase A — device input and launcher state (no game data needed)

  • HUD readouts: clock, keystrokes, memory, watermark, combo, death counter, K/D tracker, streak
    tracker, kill counter.
  • Actions: drop all, chat macro, command bind, auto GG, auto tip.
  • Input-driven cooldown readouts: attack cooldown, attack indicator, crit timer, pearl timer,
    gapple timer, shield timer, hit marker.
  • Sprint helpers: no sprint reset, sprint swing, keep sprint.

Phase B — the game options file

  • Bob off, fullbright (self and world), particle off, sprint particles, FOV boost. Each writes the
    instance's options file, applied on the next game load.

Phase C — the local-player feed

  • Coordinates, direction, compass, chunk borders, speedometer, health display, position display,
    speed display, velocity display, fall damage warning, waypoints, death waypoint.

Phase D — the peer feed

  • Reach circle, target HUD and target info, from the proximity-voice peer feed (no game hook).

Phase E — engine/render hooks

  • Not reachable on the shipped builds: the game exposes no entity, block, inventory or effect feed
    to a mod. These stay badged with an honest note instead of showing a fabricated reading.

Phase F — server-decided / ban risk

  • Reach, knockback, crits, TPS and inventory automation are server-arbitrated. Not shipped on
    purpose; badged with the note that says which.

Launch tab polish (this build)

  • Removed the duplicate skin head above the Play button; the hero panel's live preview is the one
    place the character is shown.
  • The profile/version picker now sits above the Play button, and its instance list opens upward, so
    it is no longer clipped at the bottom of the screen.
  • Removed the bottom-left client version label.

Also in this release (everything since OV.2, including BETA3)

  • Cosmetics: capes, pets and hats reach the game across versions; native render pipeline, authored
    Blockbench mesh support, per-piece textures and the in-app cosmetics diagnostics.
  • Cosmetics plan phases 0–6: rules revision/version coverage, honest skin identity, cape engine
    texture swap, hand-designed capes, pet asset measurement, big-server skin finding.
  • Module catalogue phases A–C: the reachable owned routes, and a badge that names the reason a
    module is unavailable instead of one shared "no game data" message.
  • Plan phases 7–13: a real F3-style debug readout, Closet icon sections with standalone previews,
    the replay transport, an alphabetised Mod Menu, the Launch tab revamp, a controller cursor with
    connection toasts, and every emoji icon removed.
  • Software rasteriser preview (character, pet, cape, accessories) with golden-image tests.
  • Blueberry UI: shared design tokens and component library, restyled Mod Menus, radial wheel,
    Closet and Launch tab; blue is the default accent.
  • Real Minecraft skin shown from the engine-hook seam, with the XUID-based account skin resolver
    on after a Microsoft sign-in.
  • FPS modules trimmed to the seven options that work; radial hub head follows the cursor; cursor
    disc replaced with a clean pointer arrow.
  • Signature rules revision 7: fresh pause/HUD hooks for 1.26.30–1.26.52.

Verification

  • :app:compileDebugJavaWithJavac green.
  • 1739 unit tests pass (pure logic, no mocks).
  • :app:assembleDebug green; APK ships arm64-v8a with libgxcore.so and libpreloader.so.
  • Preview, cosmetics and native seams are unverified on device; the pure pipeline is covered by
    the tests.

Official Release coming in 4 days. Download not Recommended if you don't like spoilers.

GlowberryClient BETA3 - Module Data Fixes, Blueberry UI & Native Route Cleanup

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 18 Oct 19:22

GlowberryClient BETA3 — Module Data Fixes, Blueberry UI & Native Route Cleanup

The module catalogue entries that were disabled, or enabled but doing nothing, purely because they were refused for lack of a live native game feed now work wherever this build actually has a route to their data. Every entry is classified by the route it needs, and only the entries that genuinely require a feed this build does not expose stay badged, with the reason they are badged.

Module Catalogue — Phase A: device input and launcher state (no game data needed)

  • HUD readouts: clock, keystrokes, memory, watermark, combo, death counter, K/D tracker, streak tracker, kill counter.
  • Actions: drop all, chat macro, command bind, auto GG, auto tip.
  • Input-driven cooldown readouts: attack cooldown, attack indicator, crit timer, pearl timer, gapple timer, shield timer, hit marker.
  • Sprint helpers: no sprint reset, sprint swing, keep sprint.

Module Catalogue — Phase B: the game options file

  • Bob off, fullbright (self and world), particle off, sprint particles, FOV boost. Each writes the instance's options file, applied on the next game load.

Module Catalogue — Phase C: the local-player feed

  • Coordinates, direction, compass, chunk borders, speedometer, health display, position display, speed display, velocity display, fall damage warning, waypoints, death waypoint.

Module Catalogue — Phase D: the peer feed

  • Reach circle, target HUD and target info, from the proximity-voice peer feed (needs no game hook).

Module Catalogue — Phases E and F: honestly badged, not faked

  • Engine/render hooks are not reachable on the shipped builds: the game exposes no entity, block, inventory or effect feed to a mod. These stay badged with the reason, instead of showing a fabricated reading.
  • Server-decided or ban-risk behaviour (reach, knockback, crits, TPS, inventory automation) is not shipped on purpose and is badged with the note that says which.

Native route cleanup (this build)

  • Retired the raw OpenGL ES mesh rasteriser, which cannot draw on a Vulkan-only RenderDragon build, along with its draw self-test cube and mesh draw counter.
  • Capes reach the game through the engine's own texture loader, so a cape appears with no resource pack, no world reload and no GL renderer.
  • Accessories and pets reach the game through the client's native player-render hook; where that hook is not live the panel says the piece is preview-only instead of implying it is drawn.
  • Cosmetics diagnostics now report the route that is actually live (cape engine texture route, engine image pipeline, player-render hook) and name the first failing stage, rather than a GLES draw count.

Also in this release (everything since OV.2)

  • Cosmetics: capes, pets and hats reach the game across versions; native render pipeline, authored Blockbench mesh support, per-piece textures and the in-app cosmetics diagnostics.
  • Cosmetics plan phases 0-6: rules revision and version coverage, honest skin identity, the cape engine texture swap, hand-designed capes, pet asset measurement and the big-server skin finding.
  • Plan phases 7-13: a real F3-style debug readout, Closet icon sections with standalone previews, the replay transport, an alphabetised Mod Menu, the Launch tab revamp, a controller cursor with connection toasts, and every emoji icon removed.
  • Software rasteriser preview (character, pet, cape, accessories) with golden-image tests.
  • Blueberry UI: shared design tokens and a component library, restyled Mod Menus, radial wheel, Closet and Launch tab; blue is the default accent.
  • Real Minecraft skin shown from the engine-hook seam, with the XUID-based account skin resolver enabled after a Microsoft sign-in.
  • FPS modules trimmed to the seven options that work; the radial hub head follows the cursor; the cursor disc is replaced with a clean pointer arrow.
  • Signature rules revision 7: fresh pause/HUD hooks for 1.26.30-1.26.52.

Verification

  • :app:compileDebugJavaWithJavac green.
  • 1738 unit tests pass (pure logic, no mocks).
  • :app:assembleDebug green; APK ships arm64-v8a with libgxcore.so and libpreloader.so.
  • Preview, cosmetics and native seams are unverified on device; the pure pipeline is covered by the tests.

Official Release coming in 4 days. Download not Recommended if you don't like spoilers.

GlowberryClient OV.2 — Cosmetics & Identity Overhaul

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 10 Oct 07:33

GlowberryClient OV.2

The big one. Cosmetics moved off the resource pack and onto the game's native renderer,
Bedrock Optifine Mode shipped, voice chat went online, and the VIP Mod Menu got hardened.

🎨 Cosmetics — rebuilt natively

  • Cosmetics now render through the game's own player-render hook; the old resource-pack route is gone.
  • The cape is a 16-segment bone chain with real cloth fold (walk, jump, sway, flutter).
  • 100+ capes, 256 accessories and 18 animated 3D pets, built from authored Blockbench models.
  • Cape artwork is swapped onto the real skin texture via the engine's own image loader.
  • Preview is sharper: alpha cutout, depth-correct occlusion and 2x supersampling.
  • Share your cape, hat and pet with other GlowberryClient users — LAN, relay, or a manual peer.

🟣 Bedrock Optifine Mode

  • New Settings card with per-item toggles and launch wiring.
  • Classic black Optifine cape with the "OF" monogram applied by default.

🔊 Proximity voice chat

  • LAN voice, plus a standalone Go relay server for internet play.
  • Public and private channels with shareable join codes, a live directory and a pixel mic meter.
  • Opus codec, jitter buffer, token auth and IP/device bans.

🎮 VIP Mod Menu & Replay

  • Bind-driven VIP Mod Menu with controller and keyboard layouts, hardened against crashes.
  • Record, review, trim, stitch and share clips without leaving your world.

⚡ Fixes

  • Fixed the GlossHook linker-init crash.
  • Fixed dead cosmetics JNI exports so native cosmetics actually load.
  • Fixed the Enter-in-chat crash.
  • Fixed preloader load order and missing signature rules.
  • Fixed the "clicking Modules crashes" VIP grid bug.

🧹 Housekeeping

  • Removed the news feature; reworked the Launch tab (docked controls, live hero preview).

OFFICIAL FIRST RELEASE

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 02 Oct 15:19
76e00ed

Context Confirmed

  • Repo: ChimeraAnt-DEV/GlowberryClient (slug is still GlowberryClient; docs/URLs still point at the old ChimeraLauncher slug).
  • V7 tag = merge commit of PR #72 ("mcpe-planet source + Hitboxes/Select Hit"), tagged 2026-09-25.
  • The "copied PR description" is the BETA release ("Biggest update so far…", 2026-09-27). Its body is the PR #78 description verbatim (.AntEgg + proximity voice + in-game pack changer + cape/overlay fixes), including the "created by Malice" sign-off.
  • Since V7: 91 commits, 486 files changed, +47,801 / −1,529, and 24 merged PRs (#73–#95).
  • Font angle is real, not a red herring: the repo actually ships a bundled font catalogue — LauncherFonts.java + 29 TTFs in app/src/main/res/font/ — added in commit 86eefbd (part of PR #89), which is after V7. So "fonts since V7" is a genuine change too.

Part 1 — What changed since the V7 release

Everything below landed after tag V7 (PR #72). The BETA release is PR #78; PRs #79–#95 came after it.

1. Rebrand & identity

  • Chimera Client → GlowberryClient (PR #86): app name, ~11 locale strings, OAuth user agents, backup folder, voice join-code prefix CHIMERA- → GLOWBERRY-, docs/release/news JSON. Java package stays org.chimeramc.* deliberately.
  • New launcher icon (PR #87): golden glowberry on a dark-purple gradient tile, full-bleed adaptive + themed (mono) icon, recoloured adaptive background.
  • README/docs refresh (PRs #84, #85): removed fork lineage, added rights/shared-account footer; EN + zh-CN docs site updated.

2. Proximity voice chat (the biggest new subsystem)

  • PR #78 — LAN-multicast voice between Chimera users in the same world, raw 16 kHz PCM, mic capture + RECORD_AUDIO.
  • PR #79 — voice channels: public/private, shareable join codes (GLOWBERRY-XXXX), live client-side directory, dedicated Voice tab, pixel-art mic meter. Protocol v2.
  • PR #82 — per-channel controls, advisory capacity, viewer-only per-member mute, in-world nametag mic icon; protocol v3.
  • PR #83 — real local-player feed (position + view rotation via ClientInstance vtable slot 31) so the nametag icon actually renders.
  • PR #88 — internet voice: a standalone Go UDP relay server (server/voice-relay), Opus codec, jitter buffer, mixer, relay address setting, token auth + bans, Docker/systemd/Fly.io deploy; protocol v4; proximity distance rule fixed.

3. Mod packaging & porting

  • PR #78 — .AntEgg format: ZIP container, egg.json manifest, native or Lua-script mods, sandboxed atomic extraction, import wired through FileHandler.
  • PR #95 — JavaBridge: import a Java Edition .jar, assess portability locally, decompile with CFR, and have a user-configured LLM generate a Bedrock .AntEgg mod (with consent gating + AI-port provenance). Rewrites, never runs, Java mods.

4. Cosmetics

  • PR #78 / #75 / #76 — in-game cape via a texture-override resource pack, real applied skin in the preview.
  • PR #81 — depth-layering fix (wings → cape → body → head accessories), ore-loader art fix.
  • PR #89 — Cosmetics status diagnostic (pure, unit-tested) + PNG skin import.

5. UI / UX

  • PR #78 — Mod Menu full-screen white-overlay fix.
  • PR #80 — splash & in-launcher motion overhaul (crystal-ore loader, staggered arrival, count-up stats).
  • PR #81 / #91 — Mod Menu focus-wash hardening.
  • PR #89 — 3D controller illustrations, nav-bar wordmark collision fix, ~30-font app-wide font picker (LauncherFonts), controller-connected toast, per-button CPS.
  • PR #92 — VIP Mod Menu (Screen B) opened by the in-game bind, with keyboard illustration.
  • PR #93 — Replay system (capture/review/export) shared by both Mod Menu screens.
  • PR #94 — PvP Suite V1.1: four overlay-only modules; Modules → General tab rename.

6. Combat / PvP modules

  • PR #91 — Hitboxes un-greyed, peer boxes + aim lines (protocol v5 yaw/pitch), chest-height target-box toggle, combo/item limitations documented.
  • PR #94 — Reach Indicator, Trajectory Prediction, Hit Prediction, Custom Kill Effects (all fail-closed, overlay-only).

7. Controller

  • PR #89 / #90 — 3D controller illustrations, CPS limiter, connection notification, remap layers, rumble strength, radial dead zone as default, illustration perf fix.

8. Performance / input hardening

  • PR #90 — Enter-in-chat crash fix (TextInputSanitizer), shader autofix, FPS optimizer (launcher-side only, honest scope).
  • PR #89 — CPS window fix, firework touch layer, "add server" fix.

9. Testing

  • 381 tests at V7 → 1,037 at PR #95 (0 failures, no mocks). Intermediate: 510 (PR #78), 597 (PR #83), 845 (PR #91), 901 (PR #93).

Part 2 — Best fonts

First, the honest constraint

GitHub sanitizes <style> blocks and inline style attributes in READMEs and release bodies, so you cannot reliably force a custom font on the text itself — it renders in the reader's system stack. Two practical consequences:

  1. For the description's live text: pick from system stacks (they render everywhere) — don't try to load a webfont.
  2. For fonts you actually control: use them in embedded banner/heading images (PNG/SVG), where any font renders exactly as designed.

So the list below is split accordingly, and I've starred the fonts your launcher already bundles (LauncherFonts), so release art and the app can share a face.

A. Live text — recommended system stacks

Role Stack Why
Body -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif GitHub's own default; maximum legibility on every OS
Headings same as body, font-weight: 600 Weight, not a new face, is what separates headings on GitHub
Code / commands ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace GitHub's code stack; aligns version strings and flags

B. Banner / heading-image fonts (ranked for a GitHub release description)

# Font * Type Best for Why it works
1 Inter * Sans Headings, body, UI mockups Neutral, superb at small sizes, huge weight range — the safest "modern tech" face
2 Montserrat * Sans Section headings, banners Geometric, confident; great for ALL-CAPS feature titles
3 Space Grotesk * Sans Wordmark, hero headings Slightly quirky, very "gaming-tech"; pairs with Inter body
4 Poppins * Sans Feature chips, badges Round geometric; friendly, reads well in pills
5 Manrope * Sans Sub-headings, stat labels Tight, modern, excellent numerals for "1,037 tests" callouts
6 Sora * Sans Headings, nav art Techy and crisp; strong at medium weights
7 Outfit * Sans Hero banner Clean variable geometric; great for large display text
8 Orbitron * Display Version tag / "V8" badge Sci-fi; use only for short accents, never body
9 Bebas Neue * Display Big ALL-CAPS section bars Condensed impact; ideal for "WHAT'S NEW" strips
10 Press Start 2P * Display Minecraft-flavoured accents Pixel font; perfect for a single playful badge, unreadable in bulk
11 JetBrains Mono * Mono Code blocks, version numbers, terminal shots Ligatures, clear 0/O and 1/l; ideal for ./gradlew commands
12 Fira Code * Mono Inline code art Same clarity, slightly softer than JetBrains
13 Merriweather * Serif Long-form release prose High readability in body text; good "changelog document" feel
14 Lora * Serif Quotes / callouts Warm, editorial contrast against sans headings
15 Playfair Display * Serif Hero heading (elegant mode) High-contrast display serif for a premium banner

* = bundled in this repo under app/src/main/res/font/ (29 faces total).

C. Pairings that look deliberate

  • Modern gaming (recommended for GlowberryClient): Space Grotesk (headings) + Inter (body) + JetBrains Mono (code).
  • Clean corporate: Montserrat (headings) + Open Sans (body) + Fira Code (code).
  • Premium/elegant: Playfair Display (hero) + Manrope (subheads) + JetBrains Mono (code).
  • Playful Minecraft accent: Bebas Neue or Press Start 2P for one badge only, with Inter for everything else.

D. Copy-paste stacks for embedded banners / external rendering

/* Headings */
font-family: "Space Grotesk", "Montserrat", -apple-system, "Segoe UI", sans-serif;

/* Body */
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

/* Code / versions */
font-family: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;

Biggest update so far....

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 27 Sep 13:29
74903c9

Summary

Implements the .AntEgg multi-language mod packaging format, adds a proximity voice chat module and an opt-in in-game resource-pack changer, and fixes the cosmetics/3D-preview/paper-cape defects plus the Mod Menu white-overlay bug.

Dependency: the preloader submodule pointer moves to preloader-android@antegg-mod-loader (commit 1ff3721). The submodule branch must be merged (or its commit made reachable) before this PR's pointer resolves.

Changes

.AntEgg mod packaging (core.antegg + preloader AntEggLoader)

  • ZIP container with a custom extension; egg.json manifest at the archive root (name, version, author, type, entry_point, optional dependencies, description).
  • Strict validation (Java AntEggManifest and C++ pl::runtime::AntEggManifest parse the same grammar): required fields, semantic version, type must agree with the entry-point extension, entry_point may not escape the package.
  • native: extracted .so's absolute path is handed to the preloader's existing native-mod injection entry point (ModManager.initializeLoadedMod). .AntEgg adds packaging/validation, not a second injection mechanism. The original spec calls this API "ApexAntLamina"; no class/symbol by that name exists in this tree — the pl preloader bridge is the API in question.
  • script: entry .lua runs on an embedded Lua VM (LuaJ, Lua 5.2) via AntEggScriptHost, which exposes a mod table (name, version, author, id, dir, sandbox, dependencies). Failures are returned, not thrown.
  • Sandboxed atomic extraction to getExternalFilesDir()/AntEggs/<mod-id>/ (internal fallback). Every ZIP entry is resolved and checked to stay inside the sandbox; the archive is staged in a temp sibling and moved into place only when complete, so a failed import leaves no partial mod.
  • Import wired through FileHandler; .antegg intent-filter path patterns/suffixes added; template + format docs at examples/antegg-template/.
  • Native uses zlib raw inflate (no new third-party ZIP dependency); JNI bound via AntEggBridge with Java_org_chimeramc_client_core_antegg_* symbols.

Proximity voice chat (core.voice + VoiceChatOverlay)

  • Peer link between Chimera users in the same world over LAN multicast UDP (VoiceTransport), raw 16 kHz mono PCM framing (VoiceProtocol), mixing (VoiceRegistry + VoiceChannel), device (VoiceAudioEngine).
  • Multi-channel support: a listener hears their own channel plus the open world channel in both directions, so switching to a private channel never cuts off someone standing next to you; two different private channels do not hear each other.
  • Mic capture with a runtime RECORD_AUDIO request; a denied permission still starts listen-only. ensureCapture/stopCapture handle a mic toggled on after a listen-only start.
  • Honest scope: distance/range needs a world position that lives in libminecraftpe.so (see the native-feed notes in AGENTS.md), so the module runs in channel mode — everyone on a reachable channel is audible. The overlay states this rather than pretending a range applies.

In-game pack changer (InGamePackChanger + PackChangerPanel)

  • Per-instance opt-in toggle in Instance Settings (GameVersion.inGamePackChangerEnabled, persisted in VersionProfileMetadata).
  • When enabled, the in-game Mod Menu's Packs section lists the instance's resource packs with a per-pack on/off toggle that rewrites minecraftpe/global_resource_packs.json, across every candidate game-data root.

Cosmetics / 3D preview / paper cape

  • Fixed the left arm and left leg base/overlay UVs (they pointed at neighbouring strips, so one side of the body sampled the wrong atlas region). Pinned by new SkinModelTest cases.
  • The built-in placeholder now paints from the same UV table the renderer samples, so it cannot drift from the model.
  • The cape texture now paints every face (back panel, front panel, side columns, edge rows) — previously the transparent strips showed as holes when the cape swung, reading as flapping paper.
  • The cape mesh is now depth-sorted per quad with two-sided shading; the old row-major paint order let a fold's far side paint over its near side.

Mod Menu white overlay

  • The full-screen translucent white wash was Android's default focus highlight: the overlay root is clickable, hence focusable, so a controller stick/d-pad input moved focus onto it and the framework painted the highlight. Fixed by making the root focusable="false" + defaultFocusHighlightEnabled="false" (XML and programmatically), while keeping children focusable for controller nav.

Testing

  • ./gradlew :app:assembleDebug — BUILD SUCCESSFUL.
  • ./gradlew :app:testDebugUnitTest — 510 tests, 0 failures, 0 errors.
  • Verified the three Java_org_chimeramc_client_core_antegg_AntEggBridge_* symbols are present in the packaged libpreloader.so inside the debug APK.
  • New tests: AntEggScriptLoadingTest, VoiceChannelTest, VoiceProtocolTest, VoiceModuleGroupingTest, InGamePackChangerTest, plus expanded SkinModelTest / CapeResourcePackBuilderTest.

Not done (deliberately, with reasons)

  • Hitboxes / Crystal Optimizer / Armor HUD live data. These need a native entity/camera feed. As documented at length in AGENTS.md (verified against the real libminecraftpe.so), game classes are stripped of exported symbols and the reachable RTTI vtables are pure-virtual interface bases, so there is no way to obtain Level*/ClientInstance* without per-build byte-pattern signatures. The modules keep their honest "awaiting game data" state rather than fabricating readings.
  • Lint: lintDebug already fails on ~355 pre-existing MissingTranslation errors unrelated to this change; not addressed here.

This change was created by Malice 🤔🤔

Bug fixes + 2 new mod menu modules

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 26 Sep 00:20
0ffd524

Switches the Installations tab to mcpe-planet.com, fixes three combat-module defects (settings not saving, and hit registration / aim settings adding input delay), and adds two new PvP modules: Hitboxes and Select Hit.

  1. Installations source → mcpe-planet.com

McpePlanetSource is added and registered first in SourceRegistry, so it becomes the active source out of the box. mcpedl.org is retained as an alternative — adding a mirror remains the documented two-step process (implement BedrockSource, add to all()), with no change to the UI, download client or import pipeline.

Verified against the live site rather than a hand-written fixture: 12 versions parsed (1.26.60.28/24, 26.51, 26.50) and the full POST download flow resolved end-to-end to a real wp-content/uploads/version/...apk.
2. Module settings not saving

Root cause: configNode() mapped every non-toggle config type to slider_int. Consequences:

The Crystal keybind rendered as a 0–100 slider and wrote a small integer over the stored key code.
The Aim Settings style radio lost its options entirely.

Fixed with schemaTypeFor(), which covers every ConfigType, plus InbuiltModuleProviderTypeTest pinning the mapping (including that a keybind must never collapse to a slider).

While there I found the _desc help strings and all the module scope notes had no consumer in code or layout — they were dead strings. They are now wired into the dialog, including an info node per combat module carrying its scope note. configDescriptionRes is an explicit switch rather than a name lookup, so a renamed key cannot silently bind to an unrelated string.
3. Hit registration / aim settings adding delay

A real bug, and the exact opposite of the module's stated purpose:

BURST_GAP_MS was 16L, just under one 60 Hz frame (16.7 ms). The smoothing filter therefore classified nearly every frame as a new gesture and reseeded constantly.
The reseed zeroed the filter, discarding (1 − smoothing) of each gesture's opening delta.

Both fixed in HitRegistrationMod and AimSettingsMod: window raised to 120 ms, and the filter is seeded with the frame instead of zero, so steady motion passes 1:1 and smoothing only damps frame-to-frame jitter. Tests updated to assert the first frame of a gesture is not attenuated and that 60 Hz frame pacing stays within one burst.
4. New: Hitboxes

Entity boxes plus an aim line. Players additionally get a red critical-hit line and a red best-combo box, both turning blue when aimed at.

HitboxProjector is pure (no Android/game types) and holds all the arithmetic: camera basis, box projection, crit band, combo box, and a crosshair slab test so the blue highlight cannot disagree with the geometry actually drawn. 18 tests.
The tests caught a real bug: Camera.forward() used the naive spherical form (sin yaw, …), which is counter-clockwise, while the documented Minecraft convention is clockwise from +Z. That would have mirrored every projected box horizontally once a real feed supplied yaw. Fixed, with new tests pinning the up vector too.
HitboxMod.EntitySource is the game-data seam. With no provider nothing is drawn — an invented box is worse than no box, because the player would aim at it.
The overlay is FLAG_NOT_TOUCHABLE and non-draggable, since boxes are world-positioned and the whole screen is the canvas.
  1. New: Select Hit

A small top-centre green/red pill (96×26 dp, deliberately clear of the crosshair and hotbar) showing when the next hit will land, with a combo count and a slim progress bar.

HitTimingSolver is pure; 13 tests. A click inside the window must not advance the combo or push the window out — counting a discarded click would make the indicator lie about both the streak and the next hit. A backwards clock is treated as a fresh engagement rather than producing a negative remaining time.
The window is clamped (50..2000 ms) and exposed as a slider, because the real cooldown varies by version.
Attack input is recorded from the paths that actually send an attack (mouse primary, and the controller mouse-button path in dispatchKeyEvent), before the preloader may consume the press — the player pressed attack either way, so the timing is the real input timing.

Honest limitations

Armor HUD still cannot display real durability, and Hitboxes cannot display real entity positions. I investigated rather than assuming: the preloader submodule exports only menu/HUD hooks, input handling and mod loading — there are no game-state entry points for entities, armor or position. Any values would have to be fabricated. Both DataSource/EntitySource are left as honest seams that render nothing (or a dimmed -), and the dialog now states this in-app rather than the feature appearing silently broken.

Fixing this needs new native hooks in the preloader submodule, which is a separate change.
Testing

381 unit tests, 0 failures, 0 errors (baseline on main: 322).
:app:compileDebugJavaWithJavac, :app:compileDebugKotlin and a full :app:assembleDebug all pass.
APK verified: lib/arm64-v8a/libgxcore.so present, and all six new classes present in the dex.
No mocks — every new test exercises real code paths.

Lint is unchanged: the project has no lint baseline and lintDebug already fails on ~355 pre-existing MissingTranslation errors, which is not a regression from this change.
Notes for reviewers

New modules are in ModIds.PVP_MODULES so they land in the PvP tab, and ModIds.requiresGameData() now marks three modules (armor, crystal, hitbox).
AGENTS.md updated with the new modules, the yaw convention, the config-description wiring, and the input-delay root cause.

BIG UPDATES

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 24 Sep 04:10
40cf12f

Changes since V6

Rebrand to Chimera Client (PR #66) — org.chimeramc.launcher → org.chimeramc.client across ~318 files, including namespace, applicationId and app name. The preloader submodule's JNI symbols were renamed to match. org.levimc.* classes and the prebuilt libgxcore.so/libinbuiltmods.so were left alone since they have no source and would UnsatisfiedLinkError. The org.chimeramc.xal.crypto pref key and games/org.chimeramc storage root were preserved so existing data isn't stranded.
Installations tab (PRs #61, #62) — new tab that lists Bedrock versions a mirror publishes and installs one as its own instance. Started on monster-mcpe.com (Cloudflare-gated, WebView required), then refactored to a pluggable BedrockSource/SourceRegistry abstraction defaulting to mcpedl.org (plain HTTP, no challenge — browser demoted to a 403 fallback). Failed installs keep the downloaded package for "Retry Import".
UI/branding overhaul (PR #63) — violet/magenta palette replacing the inherited green/cyan, shared card system (Widget.Chimera.Card* driven by dimens.xml), new splash and original ant-vector icon.
Navigation restored to top bar (PRs #64, #65) — the overhaul's vertical side rail could only fit ~2 of 6 tabs in landscape, so it was reverted and the original top bar brought back.
PvP Mod Menu tab (PR #67) — a PvP filter/section grouping Aim Settings, CPS Display and Snaplook, via ModIds.isPvpModule() + GROUP_PVP.
Combat modules (PR #68) — Armor HUD, Crystal Optimizer and Hit Registration, each built as decision logic behind an explicit game-data seam (no live game state is readable in this repo, so nothing fabricates a reading).
News push notification (PR #60) — FCM notification now uses a fixed "New Version Available" message instead of echoing the news item's own title/summary.

BIGGEST PVP/STABILITY/PREFORMANCE/FEATURE UPDATE !!!

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 22 Sep 01:38
d7e352e

BIGGEST UPDATE LOTS OF BUGS FIXES, FEATURES FOR CONTROLLER PLAYERS, BETTER UI CUSTOMIZATION, ANTI STICK DRIFT TOGGLE

More UI improvements, bug fixes, fps and overall launcher boost

Choose a tag to compare

@ChimeraAnt-DEV ChimeraAnt-DEV released this 19 Sep 17:54
433e7e6
V5

Merge pull request #55 from ChimeraAnt-DEV/feature/ui-glass-dynamic-c…