← Blog

PrintStash v0.5.0: first tagged release

The first tagged PrintStash release added URL and ZIP import, STEP previews, public share links, measured Moonraker jobs, and revision outcomes.

release

PrintStash v0.5.0 was the first tagged release. It established the basic model-to-print workflow: ingest a source file, keep G-code revisions with it, send one through Moonraker, and save the result.

This was a beta release for trusted self-hosted networks. The notes below describe v0.5.0 as it shipped, not the current feature set.

Import, CAD, and sharing

The ingest pipeline accepted STL, 3MF, OBJ, STEP/STP, and G-code through browser uploads, the OrcaSlicer post-processing hook, direct URLs, and ZIP archives. Server-side URL fetches included SSRF checks, while archive handling rejected path traversal and oversized expansion.

STEP and STP files were tessellated with OpenCASCADE for browser previews. The original CAD file remained available for download.

Public share links exposed one model through an expiring, read-only page. Downloads were opt-in, tokens were stored as hashes, and public requests were scoped back to the shared model.

Revisions and print records

G-code files could be kept as revisions of a model with parsed slicer metadata, notes, status, and a recommended choice. A successful job could mark an eligible revision known good automatically. Individual revisions used the same soft-delete and trash lifecycle as other files.

Moonraker supplied completed-job duration and filament use for print history and cost records. Manual history entries also worked without a registered printer.

The Moonraker provider included live status, upload and start, remote inventory, pause, resume, cancel, job history, and provider diagnostics. Bambu LAN support at this point was limited to beta local status and pause, resume, and cancel controls. It did not yet upload or start files.

Server features in the first release

v0.5.0 also included:

  • first-run setup and JWT authentication;
  • named API keys and collection-level roles;
  • trash restore and purge;
  • full backup and restore plus JSON or CSV metadata export;
  • health checks and audit logs;
  • SQLite and local disk by default, with Postgres and S3-compatible storage as options.

Metadata extraction still depended on what each slicer wrote into the file, and the G-code viewer was an inspection aid rather than a print simulator. Direct public exposure was outside the intended deployment model.

Historical upgrade notes

The v0.5.0 Compose flow required an explicit Alembic step:

Terminal window
docker compose down
docker compose pull
docker compose run --rm api uv run alembic upgrade head
docker compose up -d

The release images were:

  • ghcr.io/xiao-villamor/printstash-api:0.5.0
  • ghcr.io/xiao-villamor/printstash-frontend:0.5.0

Use the current installation guide for a new server. The v0.5 changelog retains the original setup and migration detail.