Web backend: run ManaTools AUI apps in a web browser - #7
Open
xquiet wants to merge 97 commits into
Open
Conversation
added 30 commits
March 28, 2026 23:44
…pointer-events sibling rule
Links inside YRichText now behave like Qt/GTK: browser navigation is blocked, the URL is stored in widget._last_url, and a YMenuEvent(id=url) is posted to the dialog queue when notify() is True.
…WS; drop page-size selector
added 30 commits
April 6, 2026 20:24
…; fix enabled handling
… was actually emitted
… endpoint; add autoScale and fallBackName
…andle labels with double quotes
…ns, Referrer-Policy
…_widget runs correctly inside YDumbTab
…nd_widget call; guard _items in _rebuildTree
…ckend_widget calls
…o build Resolved yui.py conflict: keep MUI_BACKEND/XDG detection, take main's DISPLAY/WAYLAND and PKEXEC_UID display-recovery steps, web backend stays explicit-only. treeqt.py merged both the init-before-super ordering and tooltip support.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This branch adds a fourth UI backend to the AUI layer: applications written
against manatools can now be served in a web browser with no code
changes - the same source runs on Qt, GTK, ncurses, or web.
What's included
webbackend (manatools/aui/backends/web/): renders the widgettree as HTML and serves it over HTTP, with real-time updates and events over
WebSocket. Pure Python standard library without extra dependencies;
labels, buttons, input fields, check/radio boxes, combo/selection boxes,
frames, progress bars, sliders, tables, trees, rich text, menu bars, images,
int/date/time fields, multi-line edit, log view, dumb tabs, paned splitter,
spacing, alignment, replace points;
MUI_BACKEND=web|qt|gtk|ncursesenvironmentvariable override; the web backend is opt-in only and it's never
auto-selected;
every response, localhost-only binding, origin checks on WebSocket upgrades
and the
/eventPOST fallback, frame/body size caps, path-traversal guardson static file and icon serving;
themes, deferred skeleton rendering for heavy widgets (table/tree),
coalesced server thus browser DOM updates;
before
super().__init__()so containers that trigger backend-widgetcreation mid-construction (e.g.
YDumbTab) no longer crash; popup dialoglifecycle fixes; guarded
_itemsaccess in table/tree rebuilds.How to test
The application prints its URL (http://127.0.0.1:8080/) - open it in a
modern browser. The same test runs unchanged under MUI_BACKEND=qt,
gtk, or ncurses.
Notes
not supported in the browser but they seems to degrade gracefully;
paned multi-layout, backend detection improvements), so it's ready to
fast-forward main, local testing show no conflicts.