🚀 PalworldSaveTools v2.2.4
🛠️ Compatibility
- App Version:
2.2.4 - Game Version:
1.0.1
📦 Downloads
| Platform | File |
|---|---|
| 🪟 Windows | PST_standalone_v2.2.4.zip
|
| 🐧 Linux | PalworldSaveTools-V2.2.4-linux.AppImage
|
| 🍎 macOS | PalworldSaveTools-V2.2.4-macos.dmg
|
📥 Full release: https://github.com/deafdudecomputers/PalworldSaveTools/releases/tag/v2.2.4
📝 Changelog
- Eliminated all deleteLater() calls — every
widget.deleteLater()in the codebase (29 sites across 20 files) replaced withwidget.hide()+widget.setParent(None).deleteLater()defers widget destruction to the Qt event loop, which when called inside a modaldialog.exec()causes the nested event loop to process the deferred delete immediately, destroying C++ widgets while signal handlers are still running — a guaranteed use-after-free crash. Simply detaching widgets from their parent avoids the event loop entirely; orphaned C++ objects are cleaned up by Qt's parent-child ownership when the container widget is destroyed. Fixes hard crashes in player inventory add-item, learned moves skill removal/bulk operations, world option setting switches, passive loadout preview, guild search, technology search, tab switching, breeding results, wiki content rebuild, base pal slots, item slot rebuild, mission list rebuild, map zone cleanup, context menus, and GamePass save list rebuild. - Base Pals column in map viewer tree — the guild/base tree in the Map tab now shows a sortable "Base Pals" column displaying the total worker pal count per guild and per base, read from each base's WorkerDirector container slot count.
- QTimer lambdas no longer capture self unsafely — 5
QTimer.singleShotcallbacks that referencedselfdirectly could fire after the owning widget was destroyed, causing use-after-free. Each now uses a default-arg guard or existence check so the callback is a no-op if the widget is already gone.
🤝 Support
- 🐛 Open a GitHub issue
- 💬 Join our Discord
- 📦 Nexus Mods page
- 📩 DM Pylar1991 on Discord
Thank you for using PalworldSaveTools! 🙏