Releases: fernandotonon/QtMeshEditor
3.7.0
Isometric 8-direction sprite export (#724)
Headless isometric sprite atlases for game pipelines — rows are compass directions, columns are animation frames.
qtmesh isometric— export static or animated sprite sheets from FBX/glTF/OBJ and other supported formats.- MCP
generate_isometric_sprites— same workflow for agents (file-in / file-out, optional JSON report). - Framing controls —
--resolution(square cell size),--camera-distance(fixed orbit),--padding(auto-fit multiplier),--elevation,--start-azimuth. - Animation sampling —
--animation "Walk" --frames 8evenly samples clip length; entity is matched by clip name in multi-mesh assets. - Safety — atlas caps (4096 cells / 16384 px per side), transform restore after capture recenter,
file.exportSentry breadcrumbs.
Examples
qtmesh isometric character.fbx -o iso.png
qtmesh isometric character.fbx --resolution 256 -o iso.png
qtmesh isometric character.fbx --animation "Jump" --frames 8 -o iso_anim.png
qtmesh isometric character.fbx -o iso.png --padding 1.5 --camera-distance 5Preview
| qtmesh isometric character.fbx -o iso.png | qtmesh isometric character.fbx --animation "Jump" --frames 8 -o iso_anim.png |
|---|---|
![]() |
![]() |
Version
- 3.7.0 in
CMakeLists.txt; README and docs site action pins synced.
Install
| Platform | Asset |
|---|---|
| macOS | QtMeshEditor-3.7.0-MacOS.dmg |
| Windows | QtMeshEditor-3.7.0-bin-Windows.zip (+ setup installer when CI completes) |
| Linux | qtmesheditor_amd64.deb |
winget install FernandoTonon.QtMeshEditor # Windows (after manifest update)
brew install --cask qtmesheditor # macOS (after cask update)
docker pull ghcr.io/fernandotonon/qtmesh:3.7.02.23.0
3.6.0
Auto-updater MVP (#439)
Portable installs can check, download, verify, install, and restart in-app.
- Windows portable zip and macOS
.dmg— full end-to-end flow with minisign/Ed25519 verification (including Windows MinGW libsodium, #445 / PR #740). - Background update check on startup for portable installs, 24h rate limit,
--no-update-checkopt-out (#450, PR #737). - Updater dialog + preferences — stable channel, progress, changelog, package-manager hints for Homebrew/WinGet/apt/snap (#443, #449, PR #731).
- Download + verify — resumable worker-thread downloads, SHA256SUMS +
.minisigsidecars (#444–445, PR #733). - Install + relauncher — atomic swap on macOS, side-by-side staging on Windows, shell relauncher on Linux portable trees (#446–447, PR #735).
- Telemetry funnel — privacy-filtered Sentry breadcrumbs (
updater.*, #451, PR #737). - Package builds —
.deb, Snap, and Docker images ship withENABLE_AUTO_UPDATER=OFF; Help → Check for Updates hidden (#439, PR #739). - CI signing — release artifacts signed with minisign;
SHA256SUMS+.minisiguploaded on publish.
Not in this release: Linux portable tarball/AppImage on GitHub Releases (#448), beta/nightly channels (#452), delta updates (#453). Linux users should continue using apt/snap/docker for updates.
AI mesh-aware textures (#403)
- Material Editor — depth-conditioned texture generation (ControlNet when stable-diffusion is enabled).
- Multi-view bake — front+back projection onto UV0 with seed lock, color matching, and seam feathering (PR #729, #732).
- CLI —
qtmesh material <file> --generate-texture "<prompt>"for headless mesh-aware textures (PR #736). - Stability — embedded-texture preview fixes and safer rapid texture switching (PR #734).
Version
- 3.6.0 in
CMakeLists.txt; README and docs site action pins synced.
Install
| Platform | Asset |
|---|---|
| macOS | QtMeshEditor-3.6.0-MacOS.dmg |
| Windows | QtMeshEditor-3.6.0-bin-Windows.zip (+ setup installer when CI completes) |
| Linux | qtmesheditor_amd64.deb |
winget install FernandoTonon.QtMeshEditor # Windows (after manifest update)
brew install --cask qtmesheditor # macOS (after cask update)
docker pull ghcr.io/fernandotonon/qtmesh:3.6.0Preview

3.5.3
QtMesh Cloud upload (#684)
Package editor assets and upload them to QtMesh Cloud from the GUI, CLI, and MCP.
- Editor — File → Upload to QtMesh Cloud, cloud account menu, project picker, dependency-aware packaging, optional pre-upload scan, upload progress in the status bar.
- CLI —
qtmesh cloud login|logout|status|list|upload|deletewith--cli/ editor-binary support. - MCP —
cloud_status,cloud_login,cloud_logout,cloud_list_projects,cloud_delete_project,cloud_upload(headless-safe; isolated subprocess scan). - Packaging —
DependencyResolver+ProjectPackagerdiscover sidecar files, sanitise manifest paths, and SHA-256 hash payloads.
macOS fixes (#718)
- Fewer repeated Keychain prompts; session persistence and texture apply fixes; mesh-aware texture generation stability on macOS.
Mesh-aware texture generation (#717)
- Depth-conditioned texture generation in the Material Editor (ControlNet path when stable-diffusion is enabled).
Version
- 3.5.3 in
CMakeLists.txt; README and docs site action pins synced.
Install
| Platform | Asset |
|---|---|
| macOS | QtMeshEditor-3.5.3-MacOS.dmg |
| Windows | QtMeshEditor-3.5.3-bin-Windows.zip (+ setup installer when CI completes) |
| Linux | qtmesheditor_amd64.deb |
winget install FernandoTonon.QtMeshEditor # Windows (after manifest update)
brew install --cask qtmesheditor # macOS (after cask update)
docker pull ghcr.io/fernandotonon/qtmesh:3.5.33.5.2
Snap startup fix (Linux)
Fixes libsecret-1.so.0 missing when launching the Snap (qtmesheditor).
- Snap: added libsecret-1-0 to stage-packages.
- Other platforms unchanged.
After updating: sudo snap refresh qtmesheditor
Version 3.5.2. https://qtmesh.dev
3.5.1
OS file associations (#664)
Open 3D assets directly from the OS without launching QtMeshEditor first.
- macOS —
CFBundleDocumentTypesin the app bundle; Homebrew caskpostflightrunslsregisterso Finder picks up handlers after install. - Windows — Inno Setup installer registers per-user Open with handlers (
OpenWithProgids); portable ZIP includesscripts/register-windows-file-associations.ps1. WinGet manifest lists supported extensions. - Linux —
.desktop+ shared MIME XML in the.deb; Snap desktop updated withMimeTypeand%F. - App —
AppLaunchHandlersingle-instance server, macOSQFileOpenEvent, andMainWindow::openLaunchFiles()for CLI/GUI file paths.
Supported extensions: .fbx, .glb, .gltf, .obj, .dae, .stl, .ply, .mesh, .rsd, .tmd (plus scene formats on macOS).
Version
- Version 3.5.1 in
CMakeLists.txt; README and docs site action pins synced.
Install
| Platform | Asset |
|---|---|
| macOS | QtMeshEditor-3.5.1-MacOS.dmg |
| Windows | QtMeshEditor-3.5.1-bin-Windows.zip (+ setup installer when CI completes) |
| Linux | qtmesheditor_amd64.deb |
winget install FernandoTonon.QtMeshEditor # Windows (after manifest update)
brew install --cask qtmesheditor # macOS (after cask update)
docker pull ghcr.io/fernandotonon/qtmesh:3.5.13.5.0
Platform validation profiles
- Bundled profiles — Retro (PS1, N64, NDS, Dreamcast) and modern (Modern Console, Switch-class, Steam Deck, Mobile Low-end, WebGL/WebGPU, VR) JSON presets with triangle, material, texture, bone, and animation budgets.
- CLI —
qtmesh scan --target <id>,--profile <id>, and--list-profiles; setprofile:inqtmesh.yml. - GUI — Validation mode → Asset Folder Scan with platform profile picker (default: Modern Console), folder browse, and inline results.
- Budget rules — Triangle/mesh counts, draw calls, texture dimensions, ACMR, redundant keyframes, zero-weight bones, and related scan rules wired through profiles and
ScanEngine.
Documentation
- Website — New Platform Profiles docs page with profile table, CLI/GUI usage, and examples.
Version
- Version 3.5.0 in
CMakeLists.txt; README and docs site action pins synced.
Install
| Platform | Asset |
|---|---|
| macOS | QtMeshEditor-3.5.0-MacOS.dmg |
| Windows | QtMeshEditor-3.5.0-bin-Windows.zip |
| Linux | qtmesheditor_amd64.deb |
winget install FernandoTonon.QtMeshEditor # Windows (after manifest update)
brew install --cask qtmesheditor # macOS (after cask update)
docker pull ghcr.io/fernandotonon/qtmesh:3.5.03.4.1
In-app feedback (#701)
- Send Feedback — Help menu and QtMesh Cloud account menu open an authenticated feedback dialog (
POST /v1/feedback) with type, optional rating, message, diagnostics opt-in, and contact permission. - Report Problem… — Import/export failure dialogs offer one-click feedback with pre-filled context (operation, format, error).
- Preferences — Diagnostics and contact checkboxes default on and persist in
QSettings. - Offline fallback — If send fails, the dialog keeps your text and offers Copy Message or Open Website (
https://qtmesh.dev/#/feedback).
Fixes
- Docker / Linux package — Add
libsecret-1-0runtime dependency so cloud credential storage works in the published Docker image and.deb(fixesdocker-publishldd check forlibsecret-1.so.0on 3.4.0).
Version
- Version 3.4.1 in
CMakeLists.txt; doc/action pins synced.
Install
| Platform | Asset |
|---|---|
| macOS | QtMeshEditor-3.4.1-MacOS.dmg |
| Windows | QtMeshEditor-3.4.1-bin-Windows.zip |
| Linux | qtmesheditor_amd64.deb |
winget install FernandoTonon.QtMeshEditor # Windows (after manifest update)
brew install --cask qtmesheditor # macOS (after cask update)
docker pull ghcr.io/fernandotonon/qtmesh:3.4.13.4.0
QtMesh Cloud
- Account toolbar control — QtMesh Cloud sign-in, projects, upload, and sign-out live in a VS Code-style
CloudAccountMenuButtonat the bottom of the left objects toolbar (avatar/initials, online/offline badge, structured popup menu). (#700, #709) - Device sign-in — OAuth-style device authorization polls while the dialog stays open, so approving on the website with a copied code works without clicking Open Browser. (#709)
- Cloud file uploads — Authenticated upload flow from the editor to QtMesh Cloud. (#695, #698)
- Device auth client — Foundation for browserless / copy-code sign-in. (#696)
Modeling & rigging
- Inverse-distance auto skin weights — New weighting mode for automatic skin binding (closes #402). (#699)
- Quad retopology — Triangle-pairing quad retopo tool (closes #401). (#697)
- xatlas auto UV unwrap — Automatic UV unwrapping (closes #400). (#694)
Version & quality
- Version bumped to 3.4.0 in
CMakeLists.txt; doc/action pins synced viasync-doc-versions-from-cmake.sh. - Unit tests for
CloudAccountMenuButtonandCloudCredentialStore(isolated test storage, no OS keychain in CI). - Sentry
ui.actionbreadcrumbs on cloud toolbar and sign-in dialog actions.
Install
| Platform | Asset |
|---|---|
| macOS | QtMeshEditor-3.4.0-MacOS.dmg |
| Windows | QtMeshEditor-3.4.0-bin-Windows.zip |
| Linux | qtmesheditor_amd64.deb |
winget install FernandoTonon.QtMeshEditor # Windows
brew install --cask qtmesheditor # macOS (after cask update)
docker pull ghcr.io/fernandotonon/qtmesh:3.4.0Preview
3.3.1
Fixes
- GUI File → Export Selected no longer crashes on Ogre
.meshor any Assimp-backed format (glTF, GLB, OBJ, Collada, STL, PLY, 3DS, X, Assimp Binary). Root cause:Ogre::Texture::convertToImage()SIGSEGV-ing when a material's TUS referenced a texture that wasn't GPU-resident — null_getTexturePtr,isLoaded() == false, or zero-size from a placeholder TUS. The exporter now guards every code path throughisTextureSerializable()before callingconvertToImage, and wraps the save in a catch-all so one bad texture can't take down the whole export. (#693) - Render + animation timers paused during File → Export Selected. The
QFileDialogopens a nested event loop, and queued timer callbacks were firing inside the dialog AND mid-export —MainWindow::m_pTimercallingrenderOneFrame()while the serializer walked the mesh, plusAnimationControlController::m_pollTimeradvancing the SkeletonInstance's time position. Both could mutate buffers under the serializer's feet. NewAnimationControlController::suspendPollTimer/resumePollTimerAPI; both timers paused around the entire export action. (#693) - Texture export refactor.
exportTexturessplit into three single-purpose helpers —isTextureSerializable,saveTextureAsImage,forEachNamedTexture— to drop cognitive complexity from 49 to <10 and remove the nested 4-deep control flow that SonarCloud flagged. Behavior unchanged; one bad texture still gets logged viaOgre::LogManagerand the rest of the export continues. (#693)
Quality
MeshImporterExporter::exporter(node)now accepts an optionalQWidget* parentso the file dialog anchors toMainWindowinstead ofnullptron macOS — cleaner modal cycle, matches every other dialog in the app.sync-doc-versions-from-cmake.shlearned to keepimage-tag: "X.Y.Z"pins in sync with the CMake project version. Earlier bumps left those stale because the script only touched action refs. Backtick-wrapped inline examples are excluded via lookarounds so doc snippets stay intact.
Internal cleanup since 3.3.0
- PS1 Geometry Inspector + Extracted Asset Browser (#426)
- PS1 capture controls — Frame / Scene / VRAM / Stop (#425)
- meshoptimizer-backed LOD generator (
--algo meshopt, defaultogre) (#398) - Mesh-optimization pipeline driven from the Inspector validation flow — vertex cache + overdraw passes, threshold-gated to skip when not worth it (#399)
- Scan-pipeline platform profiles via JSON config +
--targetalias (#362, #363)
🤖 Generated with Claude Code

