Skip to content

Release v0.1.1#28

Merged
crzykidd merged 4 commits into
mainfrom
dev
Jun 7, 2026
Merged

Release v0.1.1#28
crzykidd merged 4 commits into
mainfrom
dev

Conversation

@crzykidd

@crzykidd crzykidd commented Jun 7, 2026

Copy link
Copy Markdown
Owner

[0.1.1] — 2026-06-06

Added

  • Detailed, fail-fast startup logging — the container now logs its version and Python
    version, the effective (non-secret) configuration, the data directory, whether the database
    was created or opened, any schema migrations applied, and a "startup complete" line. Logging
    is configured before the config is loaded and sent unbuffered to stdout, so a misconfiguration
    is reported clearly instead of crashing silently.
  • Permission preflight on DATA_DIR — startup now write-probes the data directory and, if
    it isn't writable by the container's runtime user (uid 1000), aborts with an actionable
    CRITICAL message (showing the uid/gid and a chown hint) instead of a bare PermissionError.

Fixed

  • No more silent crash-on-start — required-env-var and configuration errors (e.g. a missing
    PRINTER_HOST or API_TOKEN) previously raised at import time before logging was set up,
    so a misconfigured deployment failed with no usable output. Configuration now loads behind
    logging and reports exactly which variable is missing. The Docker image also sets
    PYTHONUNBUFFERED=1 so logs are never lost to buffering on a fast restart, and creates/owns
    /data for the runtime user so named-volume deployments work out of the box. The in-app/API
    version display also now reflects the real package version instead of a hardcoded 0.0.1.

Changed

  • Dependency updates — rolled in the pending Dependabot bumps: backend fastapi >=0.136.3,
    pydantic >=2.13.4, python-barcode >=0.16.1, and dev tools mypy >=2.1.0 /
    types-PyYAML >=6.0.12; frontend fabric 7.4.0, vite 8, typescript 6; the Docker base
    image to python:3.14-slim; and CI actions (docker/metadata-action@v6,
    docker/build-push-action@v7, github/codeql-action@v4). Verified locally: backend lint +
    mypy 2.x + tests pass, and the frontend type-checks and builds. A frontend/src/vite-env.d.ts
    (vite/client reference) was added because TypeScript 6 now requires ambient types for the
    side-effect import './style.css'. Fabric 7's serialization was checked to still emit IText
    and preserve the labelforge_raw_content custom property, so existing saved templates and the
    server renderer are unaffected. No user-facing behaviour change.

crzykidd added 3 commits June 6, 2026 18:30
Backend: fastapi>=0.136.3, pydantic>=2.13.4, python-barcode>=0.16.1,
mypy>=2.1.0, types-PyYAML>=6.0.12. Frontend: fabric 7.4.0, vite 8,
typescript 6. Docker base: python:3.14-slim. CI actions: metadata-action@v6,
build-push-action@v7, codeql-action@v4.

Add frontend/src/vite-env.d.ts (vite/client) for TypeScript 6's stricter
side-effect-import typing. Verified: backend ruff+mypy 2.x+pytest, frontend
tsc+vite build, and a headless fabric 7 round-trip confirming IText
serialization and the labelforge_raw_content custom prop are preserved.
…light

Configure logging (stdout, unbuffered) before settings load via a new bootstrap
module, so a missing PRINTER_HOST/API_TOKEN is reported clearly instead of
crashing silently at import. Log version, effective config, data dir, DB
created/opened, migrations applied, and startup complete. Add a DATA_DIR
write-probe that aborts with an actionable uid-1000 message when the mounted
volume isn't writable. Dockerfile sets PYTHONUNBUFFERED=1 and creates/owns
/data. FastAPI/app version now read from package metadata, not hardcoded.
- pyproject.toml bumped to 0.1.1
- CHANGELOG: rolled [Unreleased] → [0.1.1] — 2026-06-06
- README: version badge + What's New entry, Status updated
- CLAUDE.md: Build Status block updated (Last shipped v0.1.1)
Comment thread backend/labelforge/config.py Fixed
Comment thread backend/labelforge/config.py Fixed
…l__ (CodeQL)

Replace the side-effect bootstrap import with an explicit configure_logging()
call (clears py/unused-import) and declare __all__ so settings is recognized as
the module's public export (clears py/unused-global-variable). No behavior change.

Note: CodeQL's autofix for the latter (_unused_settings = Settings()) would have
broken every 'from labelforge.config import settings' importer; not applied.
@crzykidd crzykidd merged commit c04e195 into main Jun 7, 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.

2 participants