Includes:
- compositor.app, compositor.session, compositor.session.app, compositor.audit.log models
- /web/compositor/{token,apps,launch,audit} HTTP controllers with JWT (HS256)
- CompositorService OWL service (reusable via useService('compositor'))
- CompositorCanvas OWL component (reusable canvas wrapper)
- Security: compositor_group_user, compositor_group_manager groups + ir.access.csv rules
- 5 demo apps pre-loaded (gnome-calculator, xterm, gtk4-demo, glxgears, featherpad)
- Audit log capturing JWT issuance + app launch events
- Stub mode: launching apps returns a stub SurfaceHandle when proxy isn't connected
- Tested against Odoo 20 + PostgreSQL 17
Author: 1bspace.com
Parent company: 1B Global
License: Proprietary (1B Space internal use)
107 lines
4.0 KiB
Python
107 lines
4.0 KiB
Python
{
|
|
"name": "1B Space Compositor Core",
|
|
"version": "20.0.1.0.0",
|
|
"category": "1B Global/OS",
|
|
"summary": "Wayland-to-HTML5 compositor core — OWL library + backend models",
|
|
"description": """
|
|
1B Space Compositor Core
|
|
========================
|
|
|
|
This addon is the **foundation** of the 1B Space Compositor — a fully proprietary
|
|
Wayland-to-HTML5 compositor that runs real Linux applications and displays them
|
|
natively inside the Odoo web client.
|
|
|
|
Architecture
|
|
------------
|
|
- **Backend models**: ``compositor.app``, ``compositor.session``, ``compositor.audit.log``
|
|
- **Controllers**: ``/web/compositor/{token,apps,launch,terminate,audit}``
|
|
- **OWL library**: ``CompositorService`` — reusable JS service that other addons
|
|
can import and use to embed a Wayland compositor surface anywhere in the Odoo
|
|
web client.
|
|
- **Auth**: JWT (HS256) issued by Odoo backend, validated by the Python
|
|
compositor proxy (separate process).
|
|
|
|
This addon is **reusable**: other 1B OS addons can depend on ``one_os_compositor``
|
|
and import its OWL components/services via ``@one_os_compositor/core``.
|
|
|
|
Sister addons
|
|
-------------
|
|
- ``one_os_compositor_shell``: the full-screen desktop shell UI (taskbar,
|
|
launcher, window manager).
|
|
- ``one_os_compositor_proxy``: backend bridge to the Python compositor proxy
|
|
(separate aiohttp process running pywayland + GStreamer + bubblewrap).
|
|
|
|
Author & License
|
|
----------------
|
|
- Author: 1bspace.com
|
|
- Company: 1B Global
|
|
- License: Proprietary (1B Space internal use)
|
|
|
|
Tech stack
|
|
----------
|
|
- Browser: TypeScript + OWL 3.x + WebGL2 + WebCodecs + Web Workers + OffscreenCanvas
|
|
- Host (in sister addon): Python + aiohttp + pywayland + PyGObject/GStreamer +
|
|
bubblewrap + seccomp
|
|
- Transport: WebSocket + KCP-over-WebSocket (reliable UDP-over-TCP)
|
|
- Auth: JWT HS256, 15-min expiry, signed by Odoo backend
|
|
|
|
See ``README.md`` for the full architecture and the ``greenfield-analysis`` /
|
|
``mit-compositor-analysis`` documents (in the 1B Space internal docs) for
|
|
the deep technical background.
|
|
""",
|
|
"author": "1bspace.com",
|
|
"website": "https://1bspace.com",
|
|
"maintainer": "1B Global <[email protected]>",
|
|
"license": "Other proprietary",
|
|
"depends": ["base", "web", "bus", "mail"],
|
|
"excludes": [],
|
|
"data": [
|
|
"security/compositor_security.xml",
|
|
"security/ir.access.csv",
|
|
"data/compositor_app_data.xml",
|
|
"data/ir_sequence_data.xml",
|
|
"data/ir_config_parameter_data.xml",
|
|
"models/compositor_app_views.xml",
|
|
"models/compositor_session_views.xml",
|
|
"models/compositor_audit_log_views.xml",
|
|
"views/ir_actions_client_views.xml",
|
|
"views/compositor_menu.xml",
|
|
],
|
|
"demo": ["demo/compositor_app_demo.xml"],
|
|
"assets": {
|
|
"web.assets_backend": [
|
|
"one_os_compositor/static/src/lib/**/*.js",
|
|
"one_os_compositor/static/src/lib/**/*.mjs",
|
|
"one_os_compositor/static/src/services/**/*.js",
|
|
"one_os_compositor/static/src/services/**/*.mjs",
|
|
"one_os_compositor/static/src/components/**/*.js",
|
|
"one_os_compositor/static/src/components/**/*.mjs",
|
|
"one_os_compositor/static/src/components/**/*.xml",
|
|
"one_os_compositor/static/src/scss/compositor.scss",
|
|
],
|
|
"web.assets_backend_minimal": [
|
|
"one_os_compositor/static/src/lib/**/*.js",
|
|
"one_os_compositor/static/src/lib/**/*.mjs",
|
|
"one_os_compositor/static/src/services/**/*.js",
|
|
"one_os_compositor/static/src/services/**/*.mjs",
|
|
],
|
|
"web.qunit_suite_tests": [
|
|
"one_os_compositor/static/tests/**/*.js",
|
|
],
|
|
},
|
|
"qweb": [],
|
|
"installable": True,
|
|
"application": True,
|
|
"auto_install": False,
|
|
"pre_init_hook": None,
|
|
"post_init_hook": "_post_init_hook",
|
|
"post_load": None,
|
|
"external_dependencies": {
|
|
"python": ["jwt"],
|
|
"bin": [],
|
|
},
|
|
"assets_version": "20.0.1.0.0",
|
|
"live_test_url": "/compositor",
|
|
"summary_login_user_field": None,
|
|
}
|