Releases: manolo/pyxflow
Releases · manolo/pyxflow
v0.5.6
v0.5.5
v0.5.4
What's New
DragSource & DropTarget API
DragSource.configure(component)-- make any component draggableDropTarget.configure(component)-- make any component accept dropsset_drag_image()for custom drag ghosts- Server-side drag data tracking via
set_drag_data()/get_drag_data() EffectAllowedandDropEffectenums- Works as mixin or static factory on any component
Bug Fixes
- Fix
set_drag_imagesilently failing when image component attaches after drag source in the DOM tree - Per-item drag images instead of shared dynamic ghost (avoids async timing issue with browser snapshot)
Demo & Docs
- New Drag and Drop section in Components demo with two-basket fruit transfer
- Grid sections moved to end of Components view
- MCP pattern documentation for Drag and Drop
- Pitfalls 46-47 documented (drag image attach order, shared ghost timing)
- Fix spec path references in CLAUDE.md
Stats
- 2602 unit tests, 457 UI tests
- ~19,700 LOC (src/)
v0.5.1
What's New
- MCP Server for AI-assisted PyXFlow development
- 6 tools:
get_pyxflow_primer,list_components,get_component_api,get_example,get_pattern,get_constants - Cloudflare Worker serving pre-generated docs from GitHub Pages
- Auto-generated API docs for all 78 components via
inspect - 10 pattern guides (routing, binder, push, renderers, theming, etc.)
- 7 runnable examples from demo views
- 51 enum/constant reference tables
- 6 tools:
- Build script (
scripts/build_mcp_content.py) generates 103 doc files from source .mcp.jsonfor automatic Claude Code integration
v0.5.0
What's changed
- Module reorganization: split monolithic
app.pyinto focused modulesmain.py-- FlowApp class + CLI entry pointserver/app_runner.py-- server startup (production and dev mode)resources/setup_app.py-- project scaffolding (--setup,--vscode)resources/generate_bundle.py-- bundle generation and copyresources/scaffold/-- template files moved fromscaffold/
- Bumped bundled Vaadin to 25.1.0-beta1
- Handle array-form RPCs in
_process_rpc - Support both Vaadin 25.0 and 25.1 JSON response format
v0.4.1
PyFlow v0.3.0
PyFlow v0.3.0 -- Package rename, optimized bundles, auto-download from Maven
Third release of PyFlow.
Installation
pip install git+https://github.com/manolo/pyflow.git@v0.3.0What's New
Package Rename
- Renamed from
vaadin-pyflowtopyflow - New namespace:
from pyflow.components import Button, Grid, ... - CLI command:
pyflow myapp.views --port 8080 - All imports, references, and documentation updated
Bundle Generation
pyflow bundle --optimized-- Production-optimized frontend bundle- Auto-download Vaadin JARs from Maven Central (no local Maven needed)
- Vaadin version centralized and resolved from Maven BOM
- No more hardcoded flow-version
Other
- Demo tour GIF and improved README layout
- Views renamed to
*_viewconvention - CRUD demo renamed to Responsive CRUD
Quick Start
pip install git+https://github.com/manolo/pyflow.git@v0.3.0
pyflow --setup myapp
cd myapp
pyflow --devPyFlow v0.2.0
PyFlow v0.2.0 -- CLI scaffolding, dev-mode reload, landing site, and 140+ bug fixes
Second release of PyFlow -- a Python implementation of Vaadin Flow's server-side framework.
Installation
pip install git+https://github.com/manolo/pyflow.gitWhat's New
CLI & Developer Experience
pyflow --setup [appname]-- Scaffold a new project with templates and VS Code snippetspyflow --bundle-- Auto-generate frontend bundle from component registrypyflow myapp --dev-- Auto-reload on Python file changes via SSE- Auto-detect app module when not specified
- Port-in-use detection before binding (macOS workaround)
Routing Enhancements
- Wildcard routes (
:path*), mid-optional parameters (:id?) QueryParameters,RouteParameters,Location,BeforeEnterEventUI.navigate(),UI.push_url(), browser back/forward support@RouteAliasfor registering additional paths- Not-found view with clickable route list (dev mode)
Components & API
- 80+ new API methods across 37 components
- Field mixins:
HasReadOnly(18),HasValidation(15),HasRequired(16) ValueChangeModesupport@ClientCallablepromise resolution@ColorSchemedecorator for initial dark/light mode@PushWebSocket improvements- Overlay auto-add/remove matching Java's
OverlayAutoAddController - TreeGrid second-level expansion with dynamic providers
- MasterDetailLayout with view reuse and animations
Reliability
- 140+ bug fixes including mSync-before-events ordering, push syncId desync, execute_js try/catch safety wrapper, Dialog/ConfirmDialog reopen, Grid single-select push to client
- Bulletproof error handling:
meta.appErrorwithsyncId: -1for unrecoverable errors _BufferedStylefor pre-attach style operations
Testing
- 2415 unit + 446 UI tests (32 Playwright test views)
- UI test infrastructure: auto-start server, SPA navigation, fail-fast
Package
- Renamed from
vaadin-pyflowtopyflow - Namespace:
from pyflow.components import Button - CLI:
pyflow myapp.views --port 8080
Stats
- 2861 tests passing (2415 unit + 446 UI)
- ~18,100 LOC (core), ~55,300 (total)
- Vaadin 25.0.4 compatibility
- Single dependency: aiohttp>=3.9.0
Quick Start
pip install git+https://github.com/manolo/pyflow.git
pyflow --setup myapp
cd myapp
pyflow --devVaadin Flow for Python v0.1.0
Vaadin Flow for Python — 49 components, WebSocket Push, pip-installable
First public release of vaadin-pyflow — a Python implementation of Vaadin Flow's server-side framework.
Reuses Vaadin's existing frontend (web components + FlowClient.js) with a Python server implementing the UIDL protocol. No JavaScript required — build
full-stack web UIs in pure Python.
Installation
pip install git+https://github.com/manolo/vaadin-pyflow.gitHighlights
- 49 Vaadin 25 components — Button, TextField, Grid, Dialog, ComboBox, DatePicker, AppLayout, MenuBar, TreeGrid, and more
- Server-side routing — @route, @route(layout=...), navigation guards, @menu for auto-generated menus
- Data binding — Binder with validators, converters, dirty tracking
- WebSocket Push — Real-time server→client updates via UI.access()
- Dev mode — Auto-reload on Python file changes (--dev)
- Lumo & Aura themes — Runtime theme switching with dark mode support
- @ClientCallable — Call Python methods from client-side JavaScript
- pip-installable — Frontend bundle (1.5 MB) ships inside the wheel
- CLI — vaadin myapp.views --port 8080 [--dev]
Stats
- 1591 tests passing
- ~13,200 LOC (core), ~32,200 (total with demo + tests)
- Vaadin 25.0.4 compatibility
- Single dependency: aiohttp>=3.9.0
Quick Start
from vaadin.flow.components import Button, TextField, VerticalLayout, Span
from vaadin.flow.router import Route
from vaadin.flow import FlowApp
@Route("")
class HelloWorldView(VerticalLayout):
def __init__(self):
super().__init__()
name = TextField("Your name")
btn = Button("Say hello",
on_click=lambda e: self.add(Span(f"Hello {name.value}")))
self.add(name, btn)
FlowApp(port=8080).run()