The injectXmlSpacePreserve function was inserting the attribute AFTER
the self-closing slash in tags like <t t-name="foo"/>, producing
invalid XML: <t t-name="foo"/ xml:space="preserve">
Now correctly inserts before the slash:
<t t-name="foo" xml:space="preserve"/>
This fixes the "attributes construct error at column 33" that appeared
as a red banner in the Odoo webclient list view.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Copy all OWL frontend assets (JS/CSS/XML/fonts/images) into frontend/
directory (2925 files, 43MB) — no more runtime reads from Python Odoo
- Replace OdooAddonsPath config with FrontendDir pointing to local frontend/
- Rewire bundle.go, static.go, templates.go, webclient.go to read from
frontend/ instead of external Python Odoo addons directory
- Auto-detect frontend/ and build/ dirs relative to binary in main.go
- Delete obsolete Python helper scripts (tools/*.py)
The Go server is now fully self-contained: single binary + frontend/ folder.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>