Skip to content

Releases: fernandotonon/QtMeshEditor

3.7.0

20 Jun 00:08
465af7f

Choose a tag to compare

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 8 evenly 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.export Sentry 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 5

Preview

qtmesh isometric character.fbx -o iso.png qtmesh isometric character.fbx --animation "Jump" --frames 8 -o iso_anim.png
jump jump_animation

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.0

https://qtmesh.dev

2.23.0

10 Apr 23:12
465af7f

Choose a tag to compare

qtmesheditor CI

Preview

cicd

3.6.0

19 Jun 04:55

Choose a tag to compare

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-check opt-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 + .minisig sidecars (#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 with ENABLE_AUTO_UPDATER=OFF; Help → Check for Updates hidden (#439, PR #739).
  • CI signing — release artifacts signed with minisign; SHA256SUMS + .minisig uploaded 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).
  • CLIqtmesh 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.0

https://qtmesh.dev

Preview

image Captura de Tela 2026-06-16 às 10 13 45

3.5.3

15 Jun 19:38
5caa085

Choose a tag to compare

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.
  • CLIqtmesh cloud login|logout|status|list|upload|delete with --cli / editor-binary support.
  • MCPcloud_status, cloud_login, cloud_logout, cloud_list_projects, cloud_delete_project, cloud_upload (headless-safe; isolated subprocess scan).
  • PackagingDependencyResolver + ProjectPackager discover 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.3

https://qtmesh.dev

3.5.2

12 Jun 00:04

Choose a tag to compare

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

10 Jun 02:35

Choose a tag to compare

OS file associations (#664)

Open 3D assets directly from the OS without launching QtMeshEditor first.

  • macOSCFBundleDocumentTypes in the app bundle; Homebrew cask postflight runs lsregister so Finder picks up handlers after install.
  • Windows — Inno Setup installer registers per-user Open with handlers (OpenWithProgids); portable ZIP includes scripts/register-windows-file-associations.ps1. WinGet manifest lists supported extensions.
  • Linux.desktop + shared MIME XML in the .deb; Snap desktop updated with MimeType and %F.
  • AppAppLaunchHandler single-instance server, macOS QFileOpenEvent, and MainWindow::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.1

https://qtmesh.dev

3.5.0

09 Jun 03:09

Choose a tag to compare

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.
  • CLIqtmesh scan --target <id>, --profile <id>, and --list-profiles; set profile: in qtmesh.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.0

https://qtmesh.dev

3.4.1

04 Jun 04:37
7bd0496

Choose a tag to compare

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-0 runtime dependency so cloud credential storage works in the published Docker image and .deb (fixes docker-publish ldd check for libsecret-1.so.0 on 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.1

https://qtmesh.dev

3.4.0

03 Jun 16:28
ecc8d90

Choose a tag to compare

QtMesh Cloud

  • Account toolbar control — QtMesh Cloud sign-in, projects, upload, and sign-out live in a VS Code-style CloudAccountMenuButton at 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 via sync-doc-versions-from-cmake.sh.
  • Unit tests for CloudAccountMenuButton and CloudCredentialStore (isolated test storage, no OS keychain in CI).
  • Sentry ui.action breadcrumbs 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.0

Preview

image image

https://qtmesh.dev

3.3.1

28 May 19:54
5d537b5

Choose a tag to compare

Fixes

  • GUI File → Export Selected no longer crashes on Ogre .mesh or 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 through isTextureSerializable() before calling convertToImage, 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 QFileDialog opens a nested event loop, and queued timer callbacks were firing inside the dialog AND mid-export — MainWindow::m_pTimer calling renderOneFrame() while the serializer walked the mesh, plus AnimationControlController::m_pollTimer advancing the SkeletonInstance's time position. Both could mutate buffers under the serializer's feet. New AnimationControlController::suspendPollTimer/resumePollTimer API; both timers paused around the entire export action. (#693)
  • Texture export refactor. exportTextures split 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 via Ogre::LogManager and the rest of the export continues. (#693)

Quality

  • MeshImporterExporter::exporter(node) now accepts an optional QWidget* parent so the file dialog anchors to MainWindow instead of nullptr on macOS — cleaner modal cycle, matches every other dialog in the app.
  • sync-doc-versions-from-cmake.sh learned to keep image-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, default ogre) (#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 + --target alias (#362, #363)

🤖 Generated with Claude Code