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 StableLogo 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 activefenrir/package distribution directory, causing them to be left out during PyPI installation dependencies. - Fix: Moved
logo.pngandlogo.jpgfrom the repository root directly into thefenrir/core package bundle. - Configuration: Appended
[tool.setuptools.package-data]specifications withinpyproject.tomlto explicitly track images:fenrir = ["logo.png", "logo.jpg"]. - CLI Updates: Refactored the
cmd_new()execution function insidefenrir/cli.pyto 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:
-
RuntimeError: Working outside of request context
Context: Session and redirection access within synchronous request route pipelines.
Root cause:loop.run_in_executor()drops activecontextvarspropagation states by default. Handlers using globalsession[...]dictionary schemas orredirect()workflows lost state data when shifted onto background execution threads.
Fix: Updatedfenrir/compat.pyto introduce an isolation polyfill that executescontextvars.copy_context().run(func)explicitly instead of piping the handler raw into the thread pool. -
AssertionError: {'user': None} != {'user': 'Alice'}
Context: Request dependency parsing targetingAnnotated[str, Header()]structural definitions.
Root cause: The vanillatyping.get_origin()wrapper on older Python 3.8 releases evaluatestyping_extensions.Annotated[...]layouts back as aNonevalue type, rendering arguments invisible to structural dependency containers.
Fix: Refactoredfenrir/compat.pyto natively export proxy hooks forget_originandget_argsout oftyping_extensions. Updated downstream resolution pipelines insidefenrir/dependencies.pyandfenrir/openapi.pyto process definitions via this fallback layer. -
AssertionError: {'content_type': ''} != {'content_type': 'text/plain'}
Context: Multiform file parsing stream execution.
Root cause: Legacypython-multipart < 0.0.21components mounted across older continuous integration runtime systems fail to injectcontent_typeproperties down to backendFile.__init__initialization calls.
Fix: Programmed a persistent fallback block insidefenrir/request.pythat listens on the parser'son_header_field,on_header_value, andon_headers_finishedcallbacks to extract incoming part media-types before factory creation completes. -
AssertionError: 'target' == '/nested/target'
Context: Relative redirection string target evaluation anomalies.
Resolution: Mitigated as a downstream benefit of thecontextvarsthread-state fix, successfully preserving correct localizedrequest.pathrecords across parallel threadpools. -
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 likegeventon 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 SUCCESSFULLYvisual terminal emblem inside the project generator. - Protocol Enhancements: Achieved absolute RFC 7231 HEAD method compliance for structural pipeline operations.
- Package Specifications: Registered
itsdangerousandpython-multipartexplicitly 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, andinfo). - 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).