Files
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
..
2026-10-18 18:19:43 +02:00
2026-10-18 18:19:43 +02:00
2026-09-23 23:28:26 +02:00

Thingport website

The product site, docs and blog, published to GitHub Pages by .github/workflows/web-pages.yml. Built with Astro as plain static HTML. The little JavaScript there is: the theme toggle, copy buttons, and the seasonal logo, which the visitor's browser picks by date (the pages are built ahead of time).

cd web
npm install
npm run dev   # http://localhost:4321/
npm run build # static output in dist/
npm run check # type-check

Requires Node 24+ (see the root .nvmrc).

Where the content lives

  • Docs are not copied here. The docs pages render the repo's own Markdown (docs/, extension/README.md, bridge/README.md, CONTRIBUTING.md) at build time. Edit those files, not the site. The list of pages, with their titles, sidebar groups and SEO descriptions, is DOCS in src/lib/site.mjs. Relative links in those files are rewritten by src/lib/rehypeRepoLinks.mjs: links to another rendered doc stay on the site, and everything else points to GitHub.
  • The Docker Compose install page (src/pages/docs/install.astro) embeds the real docker-compose.deploy.yml and .env.example.
  • Blog posts are Markdown files in src/content/blog/. Frontmatter: title, description, pubDate, and optionally updatedDate, tags and draft: true. Link to site pages root-relative (/docs/install/); the base path is added automatically.
  • Logos, fonts, favicons and screenshots come from frontend/, so the site always matches the app.
  • Colours mirror THEME_DEFS in frontend/src/theme.ts, as CSS variables in src/styles/global.css. The site follows the visitor's system light/dark setting, and the header button overrides it.

URL and custom domain

The site is served from https://thingport.net/ (a custom domain set in the repo's Pages settings). In CI the URL and base path come from GitHub Pages itself; local and PR builds default to that domain with base /. Override with SITE_URL=https://example.com BASE_PATH=/sub-path npm run build.