Release v0.70.0

29 June 2024

This releases brings BIG changes to the upload process. Firstly, file upload progress is shown as it happens, so you can see what’s going on; then, the extraction of zip files happens in the background, so you can carry on using Manyfold while it happens. Models are created straight away, without the need for a full scan, so the “scan after upload” button has gone away. And finally, perhaps our single most popular feature request - you can now upload individual files as new models! So, no need to zip up a single STL any more.

We’re certainly going to build on this more, with options like uploading files into an existing model, and renaming models during the upload process, which you can see on the feature roadmap.

We’ve also made changes to the way the background processing works. Expensive jobs like geometric analysis and file conversion may now take a little longer to work through by default, but they shouldn’t saturate the server and stop other things happening in the meantime. You can control the concurrency of the background runners using the new DEFAULT_WORKER_CONCURRENCY and PERFORMANCE_WORKER_CONCURRENCY options, which are set to 4 and 1 by default. If you have lots of CPU and memory on your server, you can bump those up.

The underlying change that’s enabled all of this is a big rewrite of the actual file storage engine. You shouldn’t notice any difference, although this enables some great stuff in future, like support for cloud storage.

NOTE: it may take a long time to migrate data during the upgrade, depending on the size of your library, perhaps in the region of 10-20 seconds per gigabyte.

If you have any problems, as always, come say hi in our very helpful support chat or file a bug report on GitHub.

What’s Changed

✨ New Features ✨

  • Upload single 3d or image files as new models by @Floppy in #2323
  • Improved uploader using Shrine and Uppy by @Floppy in #2315
  • Automatically scan uploaded files, and more efficiently by @Floppy in #2320
  • Change default upload size limit to 1GiB by @Floppy in #2319
  • Add environment variable for database pool size by @aneurinprice in #2293

    🐛 Bug Fixes 🐛

  • Use new Rails 7.1 Redis connection pool by @Floppy in #2298
  • Fix potential file access error when using read-only container filesystem by @Floppy in #2313
  • Renormalize i18n file by @Floppy in #2321
  • Fix CSS import for Uppy by @Floppy in #2326
  • Fix tag 404 error when deleting models by @Floppy in #2327

    🛠️ Other Improvements 🛠️

  • Use our own fork of sqlite3_ar_regexp to get Rails 7.1 support by @Floppy in #2294
  • Update to Ruby 3.3.1 by @Floppy in #2296
  • Update donate link to go to website donate page by @Floppy in #2300
  • Create security reporting policy by @Floppy in #2304
  • Add Shrine storage engine by @Floppy in #2198
  • Set connection pool size for ActiveJob::Status to same as DB by @Floppy in #2310
  • Improve behaviour of background workers by @Floppy in #2312
  • Move uploading into ModelsController by @Floppy in #2314
  • Move archive decompression into a background job by @Floppy in #2322

Full Changelog: v0.69.0…v0.70.0

See the original release on GitHub: v0.70.0