11 Commits
Author SHA1 Message Date
Tautvydas Derzinskas 9d41c4dee3 feat(admin): manage user roles and delete users, with an instance owner
Admins can now make members admins and delete members from the Users page.
The owner, the first admin, can also demote and delete other admins; nobody
can demote or delete the owner, or themselves. A migration adds the owner
flag and gives it to each existing instance's longest-standing admin, and
the first sign-up of a fresh instance takes an advisory lock so concurrent
sign-ups can't make two owners.

Deleting a user removes their models with every file, their tag mosaics and
storage folder, then the account. Roles are now read from the database on
each request, so a demotion or deletion takes effect at once. Both actions
are logged under the acting admin.
2026-10-15 12:47:06 +02:00
Tautvydas Derzinskas eefbde1bb5 perf(tags): render tag mosaics on the server and size pages to the screen
Each tag tile now loads one WebP built by the backend from its newest models'
pictures, instead of up to ten images laid out in the browser. Mosaics are
made on first request and cached under storage/tag-mosaics; their URL carries
a hash of the pictures in them, so tagging, untagging or a new render gives a
new URL with nothing to invalidate, and existing libraries need no backfill.

The summary joins pictures only for the requested page's tags, a single
tag's mosaic looks up just that tag's newest models, and the Tags page asks
for enough tags to fill the screen. Deleting a tag, or all of a user's
models, removes its mosaics.
2026-10-15 12:46:42 +02:00
Tautvydas Derzinskas d49d7c9919 feat: add rich text formatting toolbar to model descriptions 2026-10-07 00:53:49 +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 e111dc27d7 chore: update licence and perform comment clean up 2026-09-28 22:34:47 +02:00
Tautvydas Derzinskas 2813d47049 feat: show model usage in memory size 2026-09-21 22:53:05 +02:00
Tautvydas Derzinskas 56de86d5b5 feat: rebrand from PrintStash to Thingport 2026-09-10 07:08:51 +02:00
Tautvydas Derzinskas 75de79c4bc fix: minor fixes along admin 2026-09-09 11:24:26 +02:00
Tautvydas Derzinskas 2bce5a2049 feat: admin panel remake 2026-09-09 10:22:34 +02:00
Tautvydas Derzinskas 7d185395a3 feat: bulk feature changes 2026-09-08 15:03:10 +02:00