Release v0.110.0

19 May 2025

Because of some medical issues (don’t get old, folks), it’s been an unusually long time between releases. But, that just means that this is a big one! And oh boy, it’s a big one.

Downloads

First off, we’ve got improvements to downloads; you now get a visual hint that your download zipfile will need to be created, and when you click, it’ll update the button state when it’s ready. There are also options for site admins to proactively create ZIP downloads and set how long they’re kept; if you’re running a site with lots of downloading, you might want them instantly available, at the cost of disk space of course!

Faster page loading

Next, we’ve got some new client-side technology that enables the live updates; using Hotwire, using your instance should now feel much faster, and act more like a client-side app. That also means that you’ll see updates to models live as they happen; if you rescan, or upload some files, they’ll appear in the page without you having to reload.

New “original” rendering mode

Manyfold is seeing use not just in 3D printing, but in the game development world, and in that case, showing an untextured model isn’t really right. Our new “original” rendering mode uses the textures and materials from the file itself, so complex formats like glTF, FBX, and more, will show the model as it really should look, while falling back to the usual preferences for models that don’t have any of that stuff. This also comes with indexing of .bin files for glTF, and preview rendering for DRACO, FBX, and 3DS.

GCODE previews

Rest assured we’ve not forgotten about print though; we’ve also added rendering for GCode files!

Finally, there’s a whole new search syntax, with powerful boolean operations, the ability to search specific fields, and more. Under the search box you’ll see a new “search syntax” link, which will bring up a help box that explains it all. Search now also includes model descriptions and captions, and even filenames!

What’s Changed

✨ New Features ✨

  • Show download readiness state on download buttons by @Floppy in #4121
  • Add options to admin UI for pregenerating downloads, and how long to keep them. by @Floppy in #4126
  • Add file URLs that include the original filename by @Floppy in #4151
  • Add support for .bin files (just as basic octet streams) by @Floppy in #4153
  • Add setting to render the actual materials defined in a file by @Floppy in #4152
  • Show filename on cards in model view by @Floppy in #4158
  • DRACO compression support for loading glTF files by @Floppy in #4159
  • Index and render DRACO drc files by @Floppy in #4160
  • Add render support for 3DS, FBX and GCode files by @Floppy in #4162
  • Automatically refresh model page when download becomes ready by @Floppy in #4164
  • More powerful search syntax by @Floppy in #4177
  • Match model notes and captions in searches by @Floppy in #4179
  • Match model filenames for search by @Floppy in #4181
  • Add search syntax help modal by @Floppy in #4186

    🐛 Bug Fixes 🐛

  • Fx potential nil error in ArchiveDownloadService by @Floppy in #4120
  • Fix links in creator and collection cards by @Floppy in #4130
  • Adjust CSP to allow the turbo progress bar to be displayed by @Floppy in #4133
  • Various UI fixes for Turbo by @Floppy in #4139
  • Fix upload initialization under Turbo by @Floppy in #4145
  • Fix relative-path asset loading by @Floppy in #4155
  • Fix bin file indexing by @Floppy in #4154
  • Fix loading by filename by @Floppy in #4161
  • Ensure special characters work in searches by @Floppy in #4173
  • Use DISTINCT ON for joining tables during search on PostgreSQL by @Floppy in #4189
  • Fix where clause in ModelSearchService on postgres by @Floppy in #4191
  • Reconnect tag select UI on morph by @Floppy in #4194
  • Fix random search test failure caused by fake captions by @Floppy in #4201

    🌍 Sustainability & Performance 🌍

  • Enhanced page performance using Turbo page morphing by @Floppy in #4131
  • Live refreshing for model, file, creator and collection pages using Turbo by @Floppy in #4132

    🛠️ Other Improvements 🛠️

  • Change from ViewComponents to Phlex by @Floppy in #4119
  • Move download archive creation into background job by @Floppy in #4122
  • Reorganise queues by priority by @Floppy in #4127
  • Remove unnecessary explicit render? check for phlex components by @Floppy in #4140
  • Add a helper for rendering collections of Phlex components by @Floppy in #4144
  • Complete refactoring of frontend code to use Stimulus controllers by @Floppy in #4150
  • Set turbo stream priority to critical by @Floppy in #4156
  • Automatically find new files in subfolders on model check if there aren’t any nested models by @Floppy in #4157
  • Better search query parsing, including “quoted terms for multiword matching” by @Floppy in #4169
  • Minor search refactoring by @Floppy in #4175
  • Remove direct dependency on ransack by @Floppy in #4182
  • Remove parslet-based search syntax by @Floppy in #4183
  • Alias “notes” internal field to “description” in search to match UI by @Floppy in #4187
  • Display error if search syntax was bad by @Floppy in #4188
  • Add Fediverse search syntax to help modal by @Floppy in #4200

Full Changelog: v0.109.2…v0.110.0

See the original release on GitHub: v0.110.0