Skip to content

Feat/taffy layout engine - #4

Merged
mitayan0 merged 2 commits into
mainfrom
feat/taffy-layout-engine
Aug 13, 2026
Merged

mitayan0 merged 2 commits into
mainfrom
feat/taffy-layout-engine

Conversation

@mitayan0

Copy link
Copy Markdown
Contributor

No description provided.

Render loop now only rebuilds, lays out, and redraws when the graph is dirty, the terminal resized, or the app hot-reloaded; idle frames block in tui_wait_event instead of busy-looping.

Engine is now policy-free: crossterm events translate to structured EventData (keys keep case and symbols, mouse, resize) and surface policy (Ctrl+C, Tab focus, Enter/Space activate, app-level key bindings) moves into Python. Layout crosses the FFI once as a LayoutSnapshot handle, not per-rect dicts.

Widgets: Dropdown, Slider, and TextField are keyboard-operable and themed; Row/Column accept on_key/on_focus/on_click; App.request_quit() and root-node on_key provide app-level bindings. Mouse clicks hit-test with scroll-offset awareness.

Also: pump_workers() auto-collects finished workers, shared _reload.re_execute_module, py.typed packaging, and the manual verify_composition.py folded into pytest.
@mitayan0
mitayan0 merged commit 7654ebf into main Aug 13, 2026
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant