Skip to content

ZOrbit 0.12.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 20:23
· 60 commits to main since this release

Added

  • Studio: a Simple / Full mode switch in the top bar. Simple shows the controls most people use (brush,
    alpha, material, texture and submenu items; menu title and hotkey; one ring-size slider, open animation, labels,
    flick, the browser hotkey, Studio preferences, import and export) and hides the rest. A fresh install starts in
    Simple; an existing setup that uses something Simple hides opens in Full. The mode only changes what Studio
    shows and is kept in studio.json as mode.
  • Studio: Alt+Up/Down moves a menu in the Menus list, and Move to menu... (a button on the Item tab, or
    M on an item row) moves an item to another menu without dragging. The Setup checks show their state as an
    icon and a word (OK, Needs attention, Not working, Not checked yet), not only as a colour.
  • Uninstalling removes the plugin from every ZBrush 2022 to 2025 that Setup lists, wherever it is installed (one
    UAC prompt for each one under Program Files), and lists any folder it could not clean.
  • A short message near the cursor when ZOrbit knows why a pick did nothing: no connection to the plugin, no answer
    from it, ZBrush not in front, no bridge key, an empty slot, a submenu with nothing in it, or a brush, alpha,
    material, texture or button that ZBrush could not find. A working pick shows nothing.
  • A balloon from the tray icon when radial.json cannot be read, and after Reload menus ("Menus reloaded", or
    the reason it failed). The tray tooltip says the menus file cannot be read until it loads again.
  • Tooling: GitHub Actions runs the test suite (pytest) on every push and pull request, and the build only starts
    when the tests pass. ZOrbit.exe --selftest checks that the libraries, app modules and bundled files are all
    present, and CI runs it on the built exe. requirements-lock.txt pins the exact package versions, and
    packaging\build.ps1 and CI install from it. Release notes start with which file to download and the SHA256 of
    the installer and the portable zip.

Changed

  • Studio and browser: Library cards and folder rows are one Tab stop each, with the arrow keys, Home and End
    moving inside them; opening the problems list with the keyboard puts the focus on its first entry; dimmed and
    red text reach a 4.5:1 contrast; with Windows animations off the spinners and pulsing dots stand still instead
    of flickering; a pen or a finger can drag rows, cards and ring slots. A rescan of an unchanged library keeps
    the list and its cards, and thumbnails load in small batches with the visible ones first.
  • Studio: Setup says what to do when ZBrush has not loaded the plugin (press Fix and restart, or close ZBrush
    and start it from the Start menu, then read bridge.log or zscript_launch.log if it exists), notices a
    ZBrush started from a program that was already open before the plugin was registered, and explains a ZBrush
    running as administrator (the ring will not open; if its plugin listener is up it counts as loaded). Step 3
    says why a pick was not sent and what to do, naming your real bridge key. Badges read Plugin registered,
    Plugin not installed, Plugin update available and so on; Status shows the listener as ZBrush closed
    instead of Stale when ZBrush is not running; Open config folder is Open menus folder; the bridge
    key field says F9 (the default); the Save anyway and Import dialogs show problems in plain words; the
    empty library message lists every file type it looks for; the browser's "ZBrush was not found" and "ZOrbit
    is not running" messages say what to do next; Remove shows the approve-the-prompt hint; Also registered
    says why it matters; an invalid tag colour says what to type; and "pressAlt+F9" has its space back.
  • Studio: the import dialog says how many of the file's menus replace how many of yours, that nothing is written
    until Save, and that Merge tags and Replace tags touch tags only (hidden when the file has none).
    Problems from the menus file are described in plain words, the note about crowded menus says the ring grows,
    and a ZBrush folder added by hand can be forgotten from Setup.
  • Browser and Library: thumbnails are decoded four at a time and big JPEGs are read at a reduced scale, so a
    page of large textures fills in about three times faster; at most a few hundred thumbnails are kept in
    memory; a library refresh that finds nothing new no longer resends the whole list.
  • Studio: the first window fits a laptop screen (smaller than 1320 x 860 when the work area is), and the
    minimum height is 560 instead of 640. Add a ZBrush folder accepts a ZBrush 2026 or later that has not
    run yet, so Setup can show and fix it, and the ZScript plugin can be installed into a ZBrush 2022 to 2025
    that Studio only knows from its running process.
  • Studio: Setup is Alt+5 (it was Alt+6). Alt+1 to Alt+4 are unchanged.
  • The installer's last page says what to do next for ZBrush 2026 and newer (restart it) and for ZBrush 2022 to
    2025 (install the plugin from Studio's Setup screen). The plugin's "app was not found" dialog covers the
    installer, the portable zip and running from source.
  • Studio: a new menu's id comes from its title (Sculpting becomes sculpting) instead of menu, menu_2 and
    so on, and follows the title until the menu is saved or you type an id yourself. Accented letters are kept
    without the accent.
  • The starter Brushes menu no longer swallows Q (new installs only): ZBrush switches to Draw mode when the ring
    opens, and Q still types in ZBrush's own fields. Switch Swallow hotkey on in the menu settings to hide the
    key again.
  • The keyboard hook runs on its own thread, so file polling, thumbnail work, library rescans and process starts in
    the app can no longer make Windows drop it and stop the hotkeys from working. A hotkey tapped while the app is
    busy still opens the ring in hold mode.
  • Typing another key closes a ring that was opened by a tap and is waiting for a click. Hotkeys are ignored in
    Windows dialogs (such as Save As) and Windows text boxes.
  • Keys sent by a tablet driver, a macro tool or a key remapper open the ring like the real key. Only ZOrbit's own
    key presses are ignored. The hidden --accept-injected option is gone.
  • Starter menus (new installs only): the More Brushes slot shows the ClayTubes picture instead of a letter
    placeholder, and the starter tags are recoloured, Blocking lime green and Detailing violet, so they no
    longer look like the ring's hover and submenu colours. The tag colour presets start with lime and violet. A saved
    tags.json keeps its own colours.
  • Ring: the ring radius is now a minimum. A menu with many items makes the ring wider so neighbouring slots keep a
    gap (from 10 items at the default slot size); the Studio preview does the same.
  • Ring: slot names sit on a soft dark pill, and every disc is drawn before any name, so a neighbouring slot no
    longer covers a label. The same goes for fans.
  • Ring: the hint under the menu title is clearer ("release or flick to pick", "click a slot, centre or right-click
    cancels") and easier to see. The title and hint shrink or shorten to fit a small ring.
  • Ring: a menu opened again reuses its drawn slots, so the ring appears sooner (about 4 ms instead of about 90 ms
    for an 11-item menu).
  • Installer: Setup asks ZOrbit Studio to close the normal way and waits up to 15 seconds instead of ending it; if
    Studio is still open (it may have unsaved changes) Setup and the uninstaller stop and ask you to close it. An
    update keeps a custom install folder. LICENSE and THIRD_PARTY_NOTICES.md are installed next to the program
    and included in the portable zip, and the program's file properties name the copyright holder.
  • ZBrush 2021 and older are no longer offered the ZScript plugin; Studio refuses to install it and marks them as
    unsupported. The docs say the plugin binds F9 to Apply when Apply has no hotkey (verified in ZBrush 2022), not
    that it always does.

Removed

  • The Licence screen in Studio, its rail button and the Show the Licence button setting, and the fake
    licence-key table in the README. ZOrbit is GPL-3.0 and the README and Settings > Studio say so plainly. An
    old show_licence entry in studio.json is ignored and dropped the next time Studio saves a preference.

Fixed

  • Studio: the focus was lost after deleting a menu from the Menu tab or renaming its id.
  • Studio: Rescan rescans the tab you are on, not the one the Library opened on. Enter and Add no longer
    act on an item a filter has hidden. Merging a tag re-points the ring slots that used it (one Undo step) and
    the problems list refreshes after any tag is added, removed or merged. The ring preview no longer draws a
    slot for a submenu whose own menu has no usable items. A hand-edited menus file with a null menu or a menu
    without items no longer leaves Studio on "Loading...": it opens as an empty menu or on the recovery screen.
  • Studio: the hotkey recorder refuses numpad keys and punctuation that sits elsewhere on your layout instead of
    recording a key that never fires, accepts dead and IME keys by position, and Alt+1 to Alt+5 work on AZERTY.
  • Studio: the Add item list is no longer cut off in a short window and the Library toolbar wraps in a narrow
    one. The Add-to-menu list keeps its scroll position, the item inspector is not rebuilt under you when the
    library finishes loading, Undo and Redo keep the current tab, Set values like .5, 5. and 1e-3 are
    accepted, and Reset all colours and clearing the bridge key leave no empty sections in the file.
  • A thumbnail cache file that was cut short is decoded again instead of being shown broken, and a picture that
    failed to decode is tried again next time instead of staying blank.
  • Studio: Restore backup asks first and keeps the radial.json it replaces as radial.json.broken, as
    Start from defaults already did, and so does a save over a radial.json that is not valid JSON. Start from
    defaults
    no longer claims the current file is lost. A menus file that cannot be written as text says "Could not
    save" and leaves no stray .tmp file.
  • Studio no longer blocks Windows from shutting down, restarting or signing out: it saves its window position
    and closes.
  • Studio: Start app waits up to 10 seconds with a busy label, treats a slow start as progress, and after a
    failure shows only the log lines from that launch, on Setup too with an Open Status button. When the Setup
    check itself fails, Setup shows the error and keeps the last good answer instead of an empty list, the rail dot
    stays as it was, and the details go to studio.log.
  • Studio checks for the Microsoft Edge WebView2 runtime before it opens and says what is missing. Importing a file
    whose tags section is empty no longer offers to import tags.
  • Ring: names, menu titles and placeholder letters in Chinese, Japanese and Korean are drawn with a font that has
    the characters (Microsoft YaHei, Yu Gothic, Malgun Gothic) instead of empty boxes. A long menu title is shortened
    with an ellipsis instead of running across the slots.
  • Installer: updating no longer leaves files of older versions behind in the install folder, and uninstalling
    removes the install folder. A machine-wide ZBRUSH_PLUGIN_PATH is no longer shadowed: when you have no user
    value, the new one starts from the machine entries (installer and Setup's Fix).
  • ZBrush 2022 to 2025: the plugin installs without its start shortcuts when PowerShell is restricted (Constrained
    Language Mode, AppLocker, an antivirus) instead of failing; the plugin then starts ZOrbit the slower way, and
    Studio no longer reports it as outdated. Installing is refused with a clear message when the data folder path
    cannot be passed to the plugin (characters outside the Windows code page with 8.3 names off). Pressing Apply with
    no pick waiting no longer overwrites the last pick in zscript_bridge.log, and the Status button shows the real
    last pick. Setup spots the old Radial Menu bridge folder as a second copy of the plugin.
  • App: a second ZOrbit instance is detected reliably again (the check could be lost to another Windows call).
  • App: a hotkey whose key-up the app missed (after Windows dropped the keyboard hook, say) no longer stays dead: a
    key that is no longer down is let go, a swallowed one after 30 seconds, and the hook is re-installed whenever no
    ring is open.
  • App: a pick that waits for a stroke to end follows your primary mouse button, so it works with the buttons
    swapped in Windows. The plugin does the same.
  • Bridge: with more than one ZBrush running, a pick goes to the listener of the ZBrush you are picking in, not to
    whichever one started last; otherwise the bridge key is used.
  • Bridge: a pick that could not be handed to ZBrush is deleted instead of staying in the request file, and the
    plugin ignores a request more than 10 seconds old, so an old pick is never applied later by accident.
  • App: a ZBrush running as administrator is reported in radiald.log and in activity.json (elevated_zbrush)
    within a few seconds, instead of the hotkeys doing nothing without a word.
  • Ring: a quick tap of the hotkey with the cursor already over a slot picks that slot. Only a tap with the cursor in
    the middle keeps the ring open for a click.
  • Ring: after a ring is moved in from a screen edge, nothing is picked or opened until the cursor has moved into
    it, and the hint says "move into the ring" until then.
  • Ring: an error inside the ring is logged with a full traceback, and a ring that fails while opening takes its
    window down instead of leaving it on screen.
  • App: a pick whose request file cannot be written is reported ("could not write the request file") instead of
    failing quietly.
  • Ring: slot pictures refresh when the picture file is replaced or the library is rescanned, and a slot whose
    picture was missing is looked up again instead of showing the placeholder until ZBrush restarts.
  • A usage.json that is locked or cannot be read no longer empties your brush scores, auto slots and recent
    picks: ZOrbit keeps what it had and tries again, and a file with a syntax error is copied to usage.json.bad
    before anything can overwrite it. One bad entry no longer drops the rest of the file.
  • A tags.json that cannot be read when ZOrbit starts leaves the starter tags (Favourites, Blocking, Detailing)
    available, and nothing is written until the file is fixed. Tag slots then give one clear message instead of one
    per slot.
  • A section of radial.json of the wrong type (such as "ring": "big"), or a file that is not an object, is
    reported by name instead of failing with an obscure error. A fan that is not true or false is reported. Typos
    in ring.colors, bridge, browser and item settings get "did you mean" hints.
  • Brush, alpha, material and texture names that contain \, /, : or .., and icons that point at a network
    path, are reported as problems and not used.
  • Saving a file no longer fails when a virus scanner or sync tool holds it open for a moment: ZOrbit retries for
    about 1.5 seconds first.
  • If the %APPDATA%\ZOrbit folder cannot be created, the app logs a plain "cannot create the menus file in ..."
    line instead of a traceback.
  • Browser: it no longer blocks shutting Windows down, restarting or signing out; it saves its place and closes
    with the session.
  • Browser: a window left on a monitor you have since unplugged is brought back onto a screen every time it is
    shown, not only the first.
  • Browser: when the Microsoft Edge WebView2 runtime is missing it says so, with the download link, and any other
    failure while it starts is written to popout.log as a traceback. radiald.log records when the browser
    process ends.
  • Plugin (ZBrush 2026 and newer): an error while the plugin starts is written to bridge.log (it used to show only
    in ZBrush's console), and a button or the listener that fails no longer takes the rest of the palette down.
  • Plugin: a pick with several brushes, alphas, materials or textures that ZBrush has to load first selects each one
    in turn. Before, a second one replaced the first, and a loaded later item cancelled it.
  • Plugin: a brush, alpha, material or texture is found by its file name as well as its menu name, so
    {"brush": "Clay Buildup"} presses the button ZBrush names ClayBuildup.
  • Thumbnails: the curve brushes (CurveSlash, DisplaceCurve, Grid1, GridDots, MoveCurve2, SnakeCurve) and the IMM
    inserts InsertEar2 and InsertRing showed letters. Their icons are stored Huffman coded, and ZOrbit reads that now.
    Every stock brush icon of ZBrush 2022 to 2027 reads.
  • Library: the browser's list and the ring's lookup of brushes, alphas, materials and textures come from one folder
    walk, so they agree on sort order, on duplicates (case and spaces ignored, first folder wins) and on subfolders
    and links. A folder link that loops no longer runs away.
  • Library: when a search folder has gone or its drive cannot be reached, the browser keeps the list it had and says
    why. An uninstalled or moved ZBrush no longer hides a working one, and ZBrush's path files are read as UTF-8 or
    in the ANSI code page.
  • Tag fans look again for a brush, alpha, material or texture saved after the app first scanned, without waiting.
  • Docs: ~ for the backtick key and Control for Ctrl are accepted in hotkeys and now documented.