Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,58 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.5.0b0] - 2026-06-24

### Added

- **Flask adapter** (`[flask]` optional extras group) — adds a `FlaskRenderer`
(Jinja2-backed; share the app's `jinja_env` for consistent filters, globals,
and extensions) and a synchronous component endpoint exposed as a Flask
blueprint (`POST /components/<name>` via `register_component_routes(app)` or
`create_component_blueprint()`). Parses JSON and HTMX form-encoded bodies and
returns JSON `404`/`400`/`500` errors. The `[flask]` extra pulls only
`flask>=3.0` — no FastAPI/Django/JinjaX. See `examples/flask_example.py`.
- **Optimistic UI patching in the client** — `component-client.js` now applies
an optimistic patch synchronously before the request completes, reading
`data-optimistic` JSON / `data-optimistic-toggle` from the trigger element and
rolling back when the server response arrives. Ships an accompanying
`component-framework.css` with `[data-loading]` / `[data-optimistic]` hooks
(reduced-motion aware) and updated `component-client.d.ts` typings.
- **Sharing an existing JinjaX catalog** — documented and clarified that
`JinjaxRenderer` should be constructed with the application's existing
`Catalog` so component templates inherit host globals and filters, rather than
a fresh, empty catalog.

### Changed

- `[all]` and `[dev]` extras groups now include the `flask` extra.

## [0.4.1b0] - 2026-06-23

### Fixed

- FastAPI and Litestar adapters now accept form-encoded (HTMX default)
`POST` bodies in addition to JSON.
- CI: `ty`'s `invalid-method-override` diagnostic is treated as a warning to
accommodate Django's CBV/consumer signature narrowing.

## [0.4.0b0] - 2026-03-01

### Added

- **Litestar adapter** (`[litestar]` optional extras group) — HTTP, WebSocket,
and SSE support.
- **Async event handlers** — `async_dispatch()` / `async_handle_event()` for
adapters running in an async context.
- **SSE streaming** — `StreamingComponent` with async-generator handlers for
progressive rendering.
- **State size guard** — configurable warning at 64 KB and a hard limit at
512 KB on serialised component state.

### Fixed

- JS double-serialisation fix in `component-client.js`.

## [0.3.0b0] - 2026-02-23

### Breaking Changes
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Framework-agnostic server components with LiveView-style interactivity inspired

## Development Status

**Current Version:** 0.4.0-beta
**Current Version:** 0.5.0-beta
**API Documentation:** [fsecada01.github.io/component-framework](https://fsecada01.github.io/component-framework/)

The framework has a complete, tested feature set covering the full Beta roadmap. APIs are solidifying — the core lifecycle, permissions, composition, and testing utilities are stable. We welcome feedback before the 1.0 release.
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "component-framework"
version = "0.4.1b0"
version = "0.5.0b0"
description = "Framework-agnostic server components with LiveView-style interactivity"
readme = "README.md"
requires-python = ">=3.11"
Expand Down
Loading