Skip to content

Releases: xAstroBoy/Quest-Home-Editor

v0.10.22

Choose a tag to compare

@github-actions github-actions released this 24 Jul 06:45
Quest Home Editor v0.10.22

Quest Home Editor v0.10.21

Choose a tag to compare

@xAstroBoy xAstroBoy released this 22 Jul 11:01

Quest Home Editor v0.10.21

Large-scene scaling + cook/packaging reliability (#22)

A broad reliability pass across loading, cooking, packaging and builds — aimed at the real failure modes of very large legacy Quest Homes (there is no artificial mesh-count limit):

  • Lower peak RAM on big OPA scenes: compatible immutable base-color texture payloads are now reused across split/export chunks (edited, cropped, blended, aux-map, lightmap and VAT textures are never shared).
  • Hardened ZIP/APK processing: traversal/Zip-Slip guards, duplicate/unsafe-name rejection, declared-size bomb limits, classic-ZIP overflow checks — and every miniz write/splice operation is now checked, so a cook can no longer silently produce a truncated package.
  • Deterministic cook preflight: geometry/index validation with bounded, actionable diagnostics before the expensive encode starts.
  • Emissive-only V79 material conversion fix.
  • Optional "VrShell 206 fallback" cook toggle (OFF by default): only for headsets where a recent Quest update makes a no-root haven2025 spoof open NUXD/default Home — mirrors the content through the canonical Haven static-architecture template.
  • Path-independent build helpers (vswhere-based Windows build), regression tests, and reliability/scaling docs (docs/RELIABILITY_AND_SCALING.md).

New: Clear VrShell app data (one click)

Cook panel → "Clear VrShell app data (reset home state)": runs pm clear com.oculus.vrshell on the connected headset and relaunches the home factory-fresh. Use it when the home is stuck on stale/corrupted state after env experiments. Tries no-root first, falls back to su on rooted headsets. Installed env APKs are untouched (a rooted headset must re-select its env afterwards — re-cook or Install only does it).


Windows x64Quest-Home-Editor-windows-x64.zip (exe + fonts) or the bare exe. adb is embedded (extracted beside the app on first use) if you don't have platform-tools installed.

Quest Home Editor v0.10.20

Choose a tag to compare

@xAstroBoy xAstroBoy released this 22 Jul 11:13

Quest Home Editor v0.10.20

Coherent multi-mesh backdrop fitting (#19)

Distant skylines made of several meshes used to be scaled one-by-one, which tore their layout apart (buildings drifting relative to each other). Marking meshes as a backdrop now creates a fit group: every mesh in the group is scaled by one shared factor around the real player spawn, so the whole composition keeps its shape while fitting inside the Quest shell's 5000 m far clip.

  • Right-click → "Fit as coherent backdrop" (or the mesh-panel checkbox). Each marking action on a multi-selection makes one group; separate groups fit independently.
  • A fit radius field (default 3000 m, clamped below your configured far clip and the 5000 m device plane) appears when a fitted mesh is selected.
  • Fitting resolves from the actual player spawn (your spawn item → navmesh → scene bounds) — never the free editor camera, so orbiting the camera no longer changes the cook.
  • Fitted backdrops are visual-only: excluded from auto colliders, navmeshes, playable bounds, and the player simulator. Animated / skinned / non-static groups are rejected and fall back to the normal cook path.
  • Old sessions load fine: legacy SKYBOX marks migrate to one coherent fit group automatically; the .geom sidecar bumps to v3 to remember groups on editor-created meshes.
  • Fog is never silently changed — the cook warns if your current fog would hide most of a fitted backdrop.

Thanks @nikitat21 for the contribution!

Quest Home Editor v0.10.19

Choose a tag to compare

@xAstroBoy xAstroBoy released this 22 Jul 11:14

Quest Home Editor v0.10.19

Whale-eyes / static-part repair (right-click)

Some models leave vertices with no skin weight (steam_void's whale has 242 unweighted verts = its 2 eye spheres). Unweighted verts freeze at the bind pose while the skeleton animates the body — so they look like static black spheres.

Right-click a skinned mesh → "Bind N loose verts to skeleton (fix static parts)" (the item appears only when a mesh has loose verts). Each unweighted vertex copies the skin of its nearest already-weighted vertex, so the eyes ride the head surface — rigid, seamless, no tearing. Nothing is automatic; leaving verts as-authored stays the default.

Headlight / unlit toggle

Press L in the viewport to cycle OFF → UNLIT → OVERBRIGHT — forces every mesh flat-bright so dark/black meshes reveal their base texture (tell eyes from delete-me artifacts). Also HSR_FULLBRIGHT headless.

Quest Home Editor v0.10.18

Choose a tag to compare

@xAstroBoy xAstroBoy released this 22 Jul 11:14

Quest Home Editor v0.10.18

Fix: animated sub-mesh drifts "out of place" after cook

A rigid mesh that rides a parent's motion and adds its own faster spin (e.g. steam_void's mesh0.001/mesh0.002: a 4.1s spin under mesh0's 29s orbit) is an irrational-beat multi-period chain. When no small common loop exists, the cook fell back to the global animation length (an unrelated mesh's duration), which loops out of phase with the parent — so the sub-mesh slowly drifts off the orbit while its siblings stay put.

Fix: on an irrational beat, loop at the longest chain period (the parent's dominant motion) so the macro-motion stays clean and children remain locked to their parent/siblings; only the fast sub-spin takes a tiny, near-invisible seam snap. Verified on-device: steam_void's mesh0.001/.002 now cook identically to their siblings (29.03s) and stay on the orbit. HSR_MPMASTER restores the old behavior.

Quest Home Editor v0.10.17

Choose a tag to compare

@xAstroBoy xAstroBoy released this 22 Jul 11:14

Quest Home Editor v0.10.17

Fix: cook REJECTED (falls back to nuxd) on older Quest OS

Follow-up to v0.10.16. Cooks were still rejected on the Oct-2023 Quest OS (Quest 3 UP1A.231005) — the env fell back to nuxd instead of loading.

Root cause (libshell, IDA-confirmed): the cook emitted boundsCenter/boundsHalfSize of MeshPartBoundsOverride as a 3-field {x,y,z}, but the field is a Vec4. Newer OS parsers leniently accepted the short form (defaulting w=0); the older OS parser is strict and emits Core: Expected:'Vec4', Found:'{x,y,z}', which aborts the content.hstf template JSON load (ErrorMissingData) and rejects the whole env.

Fix: emit both as full Vec4 ("w":0) — passes the strict parser on old and new OS (kept version:0 from v0.10.16). Verified on-device: re-cooked steam_void now installs, selects, and loads on the Oct-2023 Quest 3 (previously rejected → nuxd).

New: "Anti-cull bounds" cook toggle

Cook panel → "Anti-cull bounds (animated meshes stay visible)" (persisted). Leave ON normally; turn it OFF to drop MeshPartBoundsOverride entirely if any headset still chokes on it, so the env always loads.

If a past cook was rejected or black on an older headset, re-cook it with this build.

Quest Home Editor v0.10.16

Choose a tag to compare

@xAstroBoy xAstroBoy released this 22 Jul 11:14

Quest Home Editor v0.10.16

Fix: pure-black scene on older Quest OS

Cooked environments rendered pure black on pre-v206 Horizon OS (e.g. a Quest 3 on the Oct-2023 UP1A.231005 build), even though the same env works on newer OS.

Root cause (traced in libshell via IDA): the cook stamped horizon::renderer::MeshPartBoundsOverride at version 1 on every mesh entity (the fix that stops animated meshes from being frustum-culled), but older Horizon OS registers that class at version 0. libshell's version translator only migrates old→new, so version 1 on a version-0 device failed to copy boundsHalfSize and aborted component generation on every mesh → nothing rendered.

Fix: emit MeshPartBoundsOverride at version 0. The fields are identical across versions, so it loads exactly on older devices and up-translates cleanly on v206 — no culling regression. If you cooked an env that showed black on an older headset, re-cook it with this build and it will render.

Quest Home Editor v0.10.15

Choose a tag to compare

@xAstroBoy xAstroBoy released this 22 Jul 11:14

Quest Home Editor v0.10.15

Animation

  • Far-from-origin spinners fixed (synthwave, steam_void, japan fans, shark_reef). A mesh whose rotation loops a sub-360° segment (e.g. 120° over 1.667s repeated ~20× inside a 33s clip on a 3-fold-symmetric mesh) baked as a sawtooth, so the device NLERP'd each internal reset as a fast backward flick. The cook now re-accumulates it as one continuous spin (SPIN-UNWRAP), keeps each interpolation step small on fast spins (SPIN-DENSIFY), and a scale-independent mirror guard skips negative-scale rotoinversions (outerwilds planets) that previously blew a clip up to 146k frames. Verified across all 81 envs — fires only on genuine spinners, no regressions. Opt-outs: HSR_NOSPINUNWRAP, HSR_NOSPINDENSIFY.

Import / cook

  • GLB import: dropped/opened .glb/.gltf files with embedded textures or non-zero UV sets no longer render black — the importer externalizes embedded images and folds TEXCOORD_N into TEXCOORD_0.
  • Smart floor: every static mesh gets an automatic walkable mesh-collider when the env has no user navmesh; navmeshes also cook as mesh-colliders so you don't fall through.

Diagnostics

  • Version + PC specs (OS / CPU / RAM / GPU) now print at the top of Quest Home Editor.log, appear in the window title, and are prepended to every logcat / diagnostic export — so shared logs and bug reports always say which build produced them and on what hardware.

Credits

Quest Home Editor v0.10.14

Choose a tag to compare

@xAstroBoy xAstroBoy released this 22 Jul 11:13

Vista neutralize is now a manual button only

By request: the vista killer no longer runs automatically. It used to fire after every cook+install and when a Quest connected — now it only runs when you press "Neutralize vistas now", since it destructively replaces the real Meta vistas with empty ones and that should always be your explicit choice.

  • Removed the auto-neutralize on cook and the auto-fix-on-connect, plus their toggles.
  • Kept the single "Neutralize vistas now" button.
  • Default cook is still combined (no vista paired at all), so most homes never need the button.

Linux/macOS: build from source (bash QuestHomeEditor/build_linux.sh).

Quest Home Editor v0.10.13

Choose a tag to compare

@xAstroBoy xAstroBoy released this 22 Jul 11:13

Fixes the tool removing vistas on ROOTED headsets.

Never touches your vistas on a rooted Quest

On a rooted headset your home installs under its own package and is selected directly — there's no footprint/vista pairing involved, so the real Meta vistas are irrelevant to it. The vista-neutralize was running anyway and replacing your real vistas with empty ones, deleting them for no reason.

Now the neutralize is gated to unrooted installs only:

  • On rooted, it's skipped entirely ("vistas: LEFT UNTOUCHED").
  • The auto-fix-on-connect also bails on a rooted device.
  • The cook toggle is relabeled "Nullify vistas (UNROOTED spoof only – replaces real vistas)" so it's clear what it does and when.

If your vistas were already removed: they're store apps — reinstall them from the Meta Store to get them back.

Linux/macOS: build from source (bash QuestHomeEditor/build_linux.sh).