14 Commits
Author SHA1 Message Date
Tautvydas Derzinskas 58eb011793 fix: announce each version once, and don't flash old notes on reopen
- 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.
2026-10-21 21:48:58 +02:00
Tautvydas Derzinskas aab83df886 feat: let a release update without notifying users
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.
2026-10-21 21:36:44 +02:00
Tautvydas Derzinskas 508c224e25 feat: open What's new from the Update Checker instead of the user menu
It sits beside the version an admin checks rather than in every user's menu; members still get it from the update notification.
2026-10-21 21:25:26 +02:00
Tautvydas Derzinskas aebc0ac97e feat: show what's new after an update
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.
2026-10-21 21:15:29 +02:00
Tautvydas Derzinskas 233c794065 docs: add a setup page per provider and a comparison of all ten
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.
2026-10-20 05:57:23 +02:00
Tautvydas Derzinskas a7a91902a0 feat: add MyMiniFactory as a provider
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.
2026-10-18 18:19:43 +02:00
Tautvydas Derzinskas 358dfc1a03 feat: system notifications updates, Thingport grab in System health check, node 24+ (#52)
* feat: update system notifications

* feat: add Thingport grab to system health check

* ci: upgrade to Node.js 24 and centralize version management
2026-10-17 10:44:13 +02:00
Tautvydas Derzinskas 1408b09c59 feat(notifications): reinvent notifications 2026-10-11 23:20:21 +02:00
Tautvydas Derzinskas 5fa6c40324 feat(flaresolverr): make URL configurable in admin settings 2026-10-11 19:34:29 +02:00
Tautvydas Derzinskas 62480d7828 docs: refresh app screenshots and add a script to capture them
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.
2026-10-04 21:09:52 +02:00
Tautvydas Derzinskas 300fe3db0d test: add regression test + couple minor bug fixes 2026-10-03 19:10:50 +01:00
Tautvydas Derzinskas dae33246aa chore: deal with formatting by adding prettier + reformat 2026-09-28 22:50:39 +02:00
Tautvydas Derzinskas 80c79f624f refactor: major overhaul related to browser extension 2026-09-27 09:38:05 +02:00
Tautvydas Derzinskas bc0e062180 docs: some updates in docs/workflow for future contributors 2026-09-22 21:10:01 +02:00