Initial commit: one_os_compositor Odoo 20 addon — core OWL library + backend models + JWT auth
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)
This commit is contained in:
commit
93a5a0a221
32 files changed
+2497
No files matched your search
+106
@@ -0,0 +1,106 @@
|
||||
{
|
||||
"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,
|
||||
}
|
||||
Reference in new issue
Block a user