- A downgrade leaves the recorded version alone, so going back up to it
isn't announced again.
- The recorded version is claimed by moving it on from the value read, so
of two processes starting at once only one notifies.
- The dialog clears the last notes before it paints.
- Clearer wording for fresh installs in the docs and for the picture move
in the 1.2.0 post.
Versions listed in release-notes/quiet-releases.json, e.g. a hotfix straight
after a release, update without a notification. A quiet version still counts
as the one that ran, so a restart doesn't announce it, while the version the
next announcement's notes start from stays on the last announced one, so
they cover the quiet release too. An unreadable list means not quiet.
The first time the backend starts on a newer version than it last ran, every
user gets a system notification that opens a What's new dialog; a fresh
install isn't told. The dialog is also in the user menu.
Its content is fetched from main, so it can be written after a release:
release-notes/latest-release-notes.json when its version matches the
instance's, otherwise the backend's CHANGELOG.md entry with the frontend
release that went out with it. An instance that skipped versions gets every
release since the one it ran, up to five. Curated items can be highlighted,
carry screenshots and a command to copy. RELEASE_NOTES_URL points at another
copy, or turns fetching off when empty.
Each provider gets its own page under docs/providers/ with a short description,
what it needs (sign-in, Thingport Grab, FlareSolverr) and its setup steps, with
the provider's icon as an accent. PROVIDER_SETUP.md becomes the overview, with a
dependency and feature table. MakerWorld, Printables and Thingiverse come first
everywhere.
Import, collection import and synced collections from MyMiniFactory, alongside MakerWorld,
Printables and Thingiverse.
- Backend: API v2 client with an instance-wide API key for metadata, collections and
authors; files from MyMiniFactory's own download links (free models need no login).
Paid models, and free ones whose files are archives, download as the user from their
MyMiniFactory library through their session (PHPSESSID), fetching the model files
MyMiniFactory unpacked from each archive. Paid models are left out of collection
listings and syncs.
- One migration: MyMiniFactory category ids, username and session columns, plus a data
migration giving existing users' starter categories the new category ids. Category
matching now prefers the most specific site category.
- Frontend: provider everywhere the others appear (badges, Configuration and
Administration providers, sync Browse tab, user menu, link detection, System Health,
category ids), shared instance-key form for Thingiverse and MyMiniFactory, en and lt.
- Thingport Grab: new provider sites are allowed once from the popup (optional
all-sites access, content script registered at runtime), so adding one never makes
the browser disable the extension; captures the signed-in MyMiniFactory username and
session; paid-model notice.
- Docs, website, store assets and screenshots updated.
regression/screenshots.mjs signs in to any instance (--url, --email,
THINGPORT_PASSWORD) and captures the README and website screenshots at
1400x790 and 2x scale. The account's theme and Categories/Folders choice
are switched for the shots and restored afterwards.