Conversation
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)
…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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
[0.1.1] — 2026-06-06
Added
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.
DATA_DIR— startup now write-probes the data directory and, ifit isn't writable by the container's runtime user (uid 1000), aborts with an actionable
CRITICAL message (showing the uid/gid and a
chownhint) instead of a barePermissionError.Fixed
PRINTER_HOSTorAPI_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=1so logs are never lost to buffering on a fast restart, and creates/owns/datafor the runtime user so named-volume deployments work out of the box. The in-app/APIversion display also now reflects the real package version instead of a hardcoded
0.0.1.Changed
fastapi >=0.136.3,pydantic >=2.13.4,python-barcode >=0.16.1, and dev toolsmypy >=2.1.0/types-PyYAML >=6.0.12; frontendfabric 7.4.0,vite 8,typescript 6; the Docker baseimage 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/clientreference) was added because TypeScript 6 now requires ambient types for theside-effect
import './style.css'. Fabric 7's serialization was checked to still emitITextand preserve the
labelforge_raw_contentcustom property, so existing saved templates and theserver renderer are unaffected. No user-facing behaviour change.