Bump: Bump fabric from 6.6.1 to 7.4.0 in /frontend#27
Conversation
Deps: qrcode[pil]>=8.0 and python-barcode>=0.15 added to pyproject.toml — first new runtime deps since initial skeleton; required by the template renderer (Phase 3) for QR and barcode element generation. Schema: CREATE TABLE IF NOT EXISTS templates (id, name unique, display_name, label_media, canvas_json, field_schema, created_at, updated_at, deleted_at). Idempotent migration adds field_values TEXT and batch_id TEXT to print_jobs via PRAGMA table_info check + ALTER TABLE, since SQLite has no ADD COLUMN IF NOT EXISTS. Models: FieldSpec, Template, TemplateCreate, TemplateUpdate, PrintRequest, BatchPrintRequest, BatchJobResult, BatchPrintResponse added to labelforge.models. Store: labelforge.templates.store — list_templates, get_template, create_template, update_template, soft_delete, duplicate. Name validation enforces ^[a-z0-9][a-z0-9-]*$ slug; duplicate names raise ValueError (→ 409 in routes); missing templates return None (→ 404).
… output QR: use box_size=1 to generate the smallest natural image (1px/module), then scale by the largest integer multiple that fits the target box with NEAREST resampling. Every module is guaranteed N×N pure black/white pixels — no grey edges that the print threshold can crush. Barcode: binarize to pure 0/255 before scaling, then NEAREST instead of LANCZOS. LANCZOS was introducing anti-aliased grey at bar edges; those grey values survived the 1-bit threshold and merged adjacent bars. Preview: introduce PRINT_THRESHOLD (70, matching convert()'s default) and to_print_bitmap() in printer/client.py. Both preview endpoints now apply the same invert+threshold step as convert(), returning a pure B/W PNG that is the exact bitmap the printer rasterizes. print_image() passes the constant explicitly to convert() so the single definition governs both paths.
… job per template
Compose job: iterate over docker-compose.yml / docker-compose.dev.yml (correct filenames) with a hardened loop that skips absent files instead of failing under bash -e. CLAUDE.md convention note updated to match. Ruff: import order (I001) in main.py and routes/print.py; datetime.UTC (UP017) in templates/store.py; E741 ambiguous name in printer/client.py; E501 long-line wraps in printer/client.py, render/template.py, routes/print.py, and routes/template_print.py. Applied ruff format across 12 files.
Add mypy (>=1.11) and types-PyYAML to the dev extra; configure [tool.mypy] with the pydantic plugin and per-module ignore_missing_imports overrides for unstubbed third-party libs (brother_ql, qrcode, barcode). Fix the 11 backend type errors surfaced by enabling the check: - render/template.py: Image.BICUBIC/NEAREST → Image.Resampling.* (Pillow 9.1+ deprecation) - printer/client.py: hoist width_mm/length_mm declarations to avoid no-redef; guard both in _media_id_from_dims call - history.py: assert cursor.lastrowid is not None after INSERT - render/text.py: int() cast on textbbox pixel delta - routes/printer.py: widen return annotation to dict | JSONResponse
- .claude/commands/release-prep.md + release-cut.md added (slash commands) - build-and-push.yml: release:published replaces tags:v*.*.* trigger (ADR 2026-06-05) - .gitignore: un-ignore .claude/commands/ so slash commands are tracked - CLAUDE.md: Release process (operational rules) section pasted verbatim; Build Status block added - standards.md: release-prep-and-cut @ 1.0.0 registered - README.md: version line + What's New section added; status blurb updated - docs/decisions.md: ADR for publish trigger reconciliation - CHANGELOG.md: adoption entry added; stale [version] template header removed
… on loaded-roll mismatch
- pyproject.toml bumped to 0.1.0 - CHANGELOG: rolled [Unreleased] → [0.1.0] — 2026-06-06 - README: version badge + What's New entry, Status updated - CLAUDE.md: Build Status block updated (Last shipped v0.1.0)
Add a scrub() helper and apply it to the user-influenced values that reach log calls flagged by CodeQL py/log-injection: the history job_id path param and the requested label media on media-mismatch warnings.
…cept) Add explanatory comments to the shutdown-task cancellation and malformed-payload handlers, and log the best-effort printer-socket close at debug instead of pass.
…tack-trace-exposure) Log the StatusUnavailable exception server-side and return a generic message instead of str(exc) in the GET /api/printer/status error body.
Bumps [fabric](https://github.com/fabricjs/fabric.js) from 6.6.1 to 7.4.0. - [Release notes](https://github.com/fabricjs/fabric.js/releases) - [Changelog](https://github.com/fabricjs/fabric.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/fabricjs/fabric.js/commits) --- updated-dependencies: - dependency-name: fabric dependency-version: 7.4.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
LabelsThe following labels could not be found: Please fix the above issues or remove invalid values from |
|
Superseded by commit 6973cef on |
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
Bumps fabric from 6.6.1 to 7.4.0.
Release notes
Sourced from fabric's releases.
... (truncated)
Changelog
Sourced from fabric's changelog.
... (truncated)
Commits
Maintainer changes
This version was pushed to npm by GitHub Actions, a new releaser for fabric since your current version.
Install script changes
This version adds
preparescript that runs during installation. Review the package contents before updating.Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)