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:
1b-agent committed 2026-10-08 08:48:46 +00:00
commit 93a5a0a221
32 files changed
+2497

No files matched your search

+106
View File
@@ -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,
}