Skip to content

Releases: manolo/pyxflow

v0.5.6

11 Mar 12:14

Choose a tag to compare

Summary

  • Fix port probe failing on Windows with --host 0.0.0.0
  • Fix PyPI metadata: author name, documentation URL, README-DEV link

v0.5.5

10 Mar 10:32

Choose a tag to compare

Summary

  • Fix serverConnected ordering that caused resync when execute_js is called during before_enter
  • serverConnected is now always the last execute command in navigation responses
  • Add test view 34 (before_enter_js) with 8 UI tests and 2 unit tests

v0.5.4

06 Mar 07:46

Choose a tag to compare

What's New

DragSource & DropTarget API

  • DragSource.configure(component) -- make any component draggable
  • DropTarget.configure(component) -- make any component accept drops
  • set_drag_image() for custom drag ghosts
  • Server-side drag data tracking via set_drag_data() / get_drag_data()
  • EffectAllowed and DropEffect enums
  • Works as mixin or static factory on any component

Bug Fixes

  • Fix set_drag_image silently 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

04 Mar 22:47

Choose a tag to compare

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
  • Build script (scripts/build_mcp_content.py) generates 103 doc files from source
  • .mcp.json for automatic Claude Code integration

v0.5.0

04 Mar 17:11

Choose a tag to compare

What's changed

  • Module reorganization: split monolithic app.py into focused modules
    • main.py -- FlowApp class + CLI entry point
    • server/app_runner.py -- server startup (production and dev mode)
    • resources/setup_app.py -- project scaffolding (--setup, --vscode)
    • resources/generate_bundle.py -- bundle generation and copy
    • resources/scaffold/ -- template files moved from scaffold/
  • 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

03 Mar 15:38

Choose a tag to compare

First PyPI release with README image fixes

PyFlow v0.3.0

27 Feb 20:37

Choose a tag to compare

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.0

What's New

Package Rename

  • Renamed from vaadin-pyflow to pyflow
  • 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 *_view convention
  • 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 --dev

PyFlow v0.2.0

27 Feb 20:37

Choose a tag to compare

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.git

What's New

CLI & Developer Experience

  • pyflow --setup [appname] -- Scaffold a new project with templates and VS Code snippets
  • pyflow --bundle -- Auto-generate frontend bundle from component registry
  • pyflow 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, BeforeEnterEvent
  • UI.navigate(), UI.push_url(), browser back/forward support
  • @RouteAlias for 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)
  • ValueChangeMode support
  • @ClientCallable promise resolution
  • @ColorScheme decorator for initial dark/light mode
  • @Push WebSocket 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.appError with syncId: -1 for unrecoverable errors
  • _BufferedStyle for 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-pyflow to pyflow
  • 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 --dev

Vaadin Flow for Python v0.1.0

11 Feb 19:46

Choose a tag to compare

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.git

Highlights

  • 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()