Release Notes

Official historical changelog tracking core updates, bug patches, compatibility matrices, and development cycles of the Fenrir framework.

v1.2.1 — Packaging & Asset Integration Patch

Latest Stable

Logo and favicon assets are now properly included in the package distribution:

Logo Asset Packaging Issue

The fenrir new command failed to copy logo and favicon files when creating new projects outside the main repository environment.

  • Root cause: Logo files (logo.png, logo.jpg) were stored in the repository root instead of within the active fenrir/ package distribution directory, causing them to be left out during PyPI installation dependencies.
  • Fix: Moved logo.png and logo.jpg from the repository root directly into the fenrir/ core package bundle.
  • Configuration: Appended [tool.setuptools.package-data] specifications within pyproject.toml to explicitly track images: fenrir = ["logo.png", "logo.jpg"].
  • CLI Updates: Refactored the cmd_new() execution function inside fenrir/cli.py to fetch logos natively from the local package directory structure first, with standard automated fallbacks configured for active development modes.

Verification Status: All automation builds green (482 standard unit tests + 13 advanced tests passing). Scaffolding commands function seamlessly across all external operational environments.

v1.1.1 — Python 3.8–3.10 Full Compatibility Patch

Five core validation anomalies on Legacy Python 3.8 CI runners have been resolved:

  1. RuntimeError: Working outside of request context
    Context: Session and redirection access within synchronous request route pipelines.
    Root cause: loop.run_in_executor() drops active contextvars propagation states by default. Handlers using global session[...] dictionary schemas or redirect() workflows lost state data when shifted onto background execution threads.
    Fix: Updated fenrir/compat.py to introduce an isolation polyfill that executes contextvars.copy_context().run(func) explicitly instead of piping the handler raw into the thread pool.
  2. AssertionError: {'user': None} != {'user': 'Alice'}
    Context: Request dependency parsing targeting Annotated[str, Header()] structural definitions.
    Root cause: The vanilla typing.get_origin() wrapper on older Python 3.8 releases evaluates typing_extensions.Annotated[...] layouts back as a None value type, rendering arguments invisible to structural dependency containers.
    Fix: Refactored fenrir/compat.py to natively export proxy hooks for get_origin and get_args out of typing_extensions. Updated downstream resolution pipelines inside fenrir/dependencies.py and fenrir/openapi.py to process definitions via this fallback layer.
  3. AssertionError: {'content_type': ''} != {'content_type': 'text/plain'}
    Context: Multiform file parsing stream execution.
    Root cause: Legacy python-multipart < 0.0.21 components mounted across older continuous integration runtime systems fail to inject content_type properties down to backend File.__init__ initialization calls.
    Fix: Programmed a persistent fallback block inside fenrir/request.py that listens on the parser's on_header_field, on_header_value, and on_headers_finished callbacks to extract incoming part media-types before factory creation completes.
  4. AssertionError: 'target' == '/nested/target'
    Context: Relative redirection string target evaluation anomalies.
    Resolution: Mitigated as a downstream benefit of the contextvars thread-state fix, successfully preserving correct localized request.path records across parallel threadpools.
  5. CI Build Timeout Anomalies (Python 3.9 Matrix Environment)
    Detail: Addressed job termination blocks during deployment cycles. Investigations show processing constraints occurred while compiling dependencies like gevent on infrastructure setups. Classed as an architecture constraint requiring no modification to application codebases.

v1.1.0 — CI/CD & Centering Fix

  • Automated Testing Matrix: Integrated comprehensive **GitHub Actions** pipelines to enforce linting and check coverage variables across environments from Python 3.8 up to 3.13.
  • CLI Scaffold Polishing: Fixed centering alignment logic, geometry constraints, and layout boundaries for the PROJECT CREATED SUCCESSFULLY visual terminal emblem inside the project generator.
  • Protocol Enhancements: Achieved absolute RFC 7231 HEAD method compliance for structural pipeline operations.
  • Package Specifications: Registered itsdangerous and python-multipart explicitly into core setups as rigid backend architecture dependencies.

v0.1.0 — Initial Release (Alpha Genesis Core)

  • Multi-Paradigm Hybrid Engine: Created a unified application layer tying together architectural components from Flask, FastAPI, Sanic, Falcon, and Bottle onto a single ASGI runtime event loop.
  • Stability Groundwork: Developed and verified 482 structured validation unit tests to secure framework engine loop boundaries.
  • Premium CLI Binaries: Distributed out-of-the-box development management kits (including run, routes, shell, bench, new, and info).
  • Schema Introspection: Provided automated generation mechanics producing live interactive OpenAPI/Swagger document hubs directly on startup.
  • Asynchronous Streaming: Full support for real-time channels using WebSockets and Server-Sent Events (SSE).