Skip to content

v0.4.0

Choose a tag to compare

@balakmran balakmran released this 16 Feb 06:07
· 331 commits to main since this release

Added

  • Domain Exceptions: NotFoundError, ConflictError, BadRequestError,
    ForbiddenError subclasses for better error handling granularity.
  • __all__ Exports: Explicit public API exports in all core modules and
    domain routers.
  • Pagination Guards: Query(ge=0), Query(ge=1, le=100) constraints on
    pagination parameters to prevent abuse.
  • Alembic in Docker: Copied alembic/ directory and alembic.ini into
    Docker image for production database migrations.

Changed

  • Database Engine: Refactored from global mutable engine to
    app.state.engine pattern for better test isolation and cleaner
    architecture.
  • Logging: Moved setup_logging() call inside create_app() to prevent
    import-time side effects.
  • Schema Validation: Added extra="forbid" to UserBase and UserUpdate
    schemas to reject extraneous fields.
  • Static Files: Updated to use absolute paths for static files and
    templates, avoiding relative path fragility.
  • OTEL Service Name: Now uses metadata.APP_NAME instead of hardcoded
    string.
  • Docker Compose: Renamed ENV → APP_ENV, replaced stale DATABASE_URL
    with individual POSTGRES_* variables.
  • Test Fixtures: Refactored to use monkeypatch for settings mutation in
    tests, avoiding direct global state modification.
  • CI Workflows: Standardized setup-uv action version to v7 across all
    workflows.
  • Documentation: Updated Zensical config with instant navigation, prefetch,
    progress, and modern mkdocstrings TOML format.

Fixed

  • updated_at Auto-update: Added onupdate parameter to User.updated_at
    field to ensure automatic timestamp updates on mutations.
  • Timezone-aware Datetimes: Fixed datetime.now() in system/routes.py to
    use datetime.now(UTC).
  • Duplicate Email Status: Changed HTTP status from 400 to 409 for
    duplicate email registration errors.
  • Alembic Offline Mode: Fixed driver mismatch by using postgresql+psycopg
    instead of postgresql+asyncpg for offline SQL generation.
  • Exception Handler Logging: Added structured logging for AppError
    exceptions in exception handlers.
  • Type Hints: Added missing return type hints to telemetry.py functions.
  • Metadata References: Fixed GEMINI.md and configuration.md to reference
    metadata.py, app.state.engine, and correct AppError class name.