Skip to content

Release v0.1.3#30

Merged
crzykidd merged 10 commits into
mainfrom
dev
Jun 8, 2026
Merged

Release v0.1.3#30
crzykidd merged 10 commits into
mainfrom
dev

Conversation

@crzykidd

@crzykidd crzykidd commented Jun 8, 2026

Copy link
Copy Markdown
Owner

[0.1.3] — 2026-06-07

Changed

  • README "What's New" now uses a tiered format — feature releases keep a full overview entry, patch releases get a one-line summary linking to the changelog; /release-prep Step 4 updated to match.

Added

  • feat: label pickers default to the last label you used (remembered across sessions via localStorage); applies to Quick Print, New Template, and Save As.
  • feat: app version shown in a fixed footer on every page, linking to its GitHub release notes; shows an "Update available" indicator and a one-time release-notes popup when a newer release is detected (toggle in Settings → Updates, on by default; backend-proxied with a 6-hour cache so the browser never contacts GitHub directly).
  • feat: dev/unreleased builds now show a -dev+<sha> suffix in the version footer (e.g. v0.1.2-dev+8e32bb1) and never show the "Update available" nag; release builds remain plain v0.1.2.

Fixed

  • fix: render templates at the correct position when elements use centered origins (originX: 'center' / originY: 'center'); previously such elements were shifted right and down by half their box size, fanning wider elements further than narrow ones.
  • fix: editor canvas now shows the selected font instead of a serif fallback; server fonts are loaded into the browser via the new GET /api/fonts/{name}/file endpoint and registered with the FontFace API on startup.

crzykidd added 10 commits June 7, 2026 14:15
Add _origin_top_left() helper that converts each element's stored left/top
(origin-relative) to the true top-left corner before pasting. Applied at
all three sites: the main draw loop, the continuous-canvas bottommost
accumulation, and detect_overflow. Templates using the default left/top
origin are unaffected (helper is a no-op). Fixes the "elements fan out
right" bug on templates saved with originX/Y: 'center' (e.g. testt).

Adds backend/tests/test_render_origin.py with three regression tests
confirming pixel-identical output between center-origin and equivalent
left-origin placements.
Add GET /api/fonts/{name}/file (FileResponse, auth-gated, long Cache-Control,
path resolved exclusively via get_font_path() allow-list — no traversal).
Add frontend/src/editor/fonts.ts: loadServerFonts() fetches each font via an
authenticated fetch() → ArrayBuffer → FontFace, registered under FontInfo.name
which is the same identifier Fabric uses for fontFamily. Guards double-registration.
Wire into main.ts (app-wide on startup) and template-editor.ts bootstrap (awaited
before canvas load, re-render after loadCanvasJSON). ADR in docs/decisions.md
documents why ArrayBuffer fetch was chosen over bare url() (header-based auth).
…sions)

Quick Print, New Template modal, and Save As modal now default to the last
label media the user selected. The choice is persisted in localStorage
(key: lf:last-label) and shared across all three pickers. Editing an
existing template continues to use the template's stored label_media
unchanged.
- pyproject.toml bumped to 0.1.3
- CHANGELOG: rolled [Unreleased] → [0.1.3] — 2026-06-07
- README: version badge + status line + compact What's New entry
- CLAUDE.md: Build Status "Last shipped" → v0.1.3
@crzykidd crzykidd merged commit 3e09035 into main Jun 8, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant