* feat: Qt-typed context for universal UI plugins (LogosUiPluginContext)
A universal UI plugin (type: ui_qml) is a view, not a module — it derives a
QtRO SimpleSource whose .rep slots are Qt-typed. Mirror logos-plugin-qt's
api-style flip so the `generate` source-layout output drops the std flag for
ui_qml (Qt-typed modules() wrappers), and switch the UI authoring model from
the std-typed LogosModuleContext to the narrow Qt-layer LogosUiPluginContext:
- lib/mkLogosModule.nix — ui_qml api-style flag flip (mirror of buildPlugin.nix)
- lib/modulePreConfigure.nix — UI codegen comment
- templates/ui-qml-backend — backend derives LogosUiPluginContext
- skills/{create-ui-module,SKILL}, README, docs/quick-reference — Qt-typed
modules() + LogosUiPluginContext
- doctests/ui-typed-backend — backend derives LogosUiPluginContext, Qt-typed
event callback (int, not int64_t)
Depends on logos-co/logos-qt-sdk#3 (LogosUiPluginContext) and
logos-co/logos-plugin-qt#14 (api-style). Part of a 4-repo change.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* chore: bump logos-qt-sdk + logos-plugin-qt to merged master
Pin the flake.lock to the merged LogosUiPluginContext (logos-qt-sdk) and the
ui_qml api-style flip (logos-plugin-qt) so this PR's template/builder changes
resolve against deps that actually provide them:
- logos-qt-sdk → 872db45 (logos_ui_plugin_context.h + UI glue)
- logos-plugin-qt → f33f264 (ui_qml api-style qt)
- logos-plugin-core → f33f264
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* templates: convert C++ module templates to the universal authoring model
minimal-module, external-lib-module, and ui-qml-backend now use
interface: "universal" — you write only the impl (core) or the .rep +
*Backend (UI), and the *Plugin/*Interface Qt glue is generated:
- minimal-module: MinimalImpl : LogosModuleContext (std types, a
logos_events event); no hand-written interface/plugin.
- external-lib-module: ExternalLibImpl : LogosModuleContext wrapping the
vendored C lib.
- ui-qml-backend: UiExampleBackend : UiExampleSimpleSource +
LogosModuleContext; metadata gains interface:universal + codegen.rep.
CMake drops the module_config.h boilerplate (name/version come from the
generated glue). test-templates.nix asserts the universal interface (and
that the QML-only template stays legacy). minimal + ui-qml-backend build
green; lm shows the generated plugins load with methods + protocol stamp.
* docs/skills: teach the universal authoring model for the converted templates
create-logos-module, create-ui-module, update-logos-module, SKILL.md, README
and docs/{getting-started,configuration,quick-reference,cmake-reference,nix-api}
now show the impl-class (core) and .rep+Backend (UI) form that the templates
use, instead of the removed hand-written interface/plugin classes. Documents
the interface:universal + codegen fields, REP_FILE/INCLUDE_DIRS, logos_events:,
and modules() typed calls. The QML-only template and the legacy
initLogos(LogosAPI*) path are noted as still supported.
* templates: derive module NAME from metadata.json (single source of truth)
The universal conversion had hardcoded NAME in logos_module(); restore the
file(READ metadata.json) + string(JSON ... name) read so the module name lives
only in metadata.json. (The module_config.h #define boilerplate stays gone —
the universal impl does not use MODULE_NAME/MODULE_VERSION macros.)
1. embed the lgx bundler into the flake.nix so directly calling nix build .#lgx gives us a lgx pakcage out of the box
2. Remove metada.json file in case cpp libraries
Remove module.yaml and use metadata.json exclusively for both runtime
and Nix build configuration. The nix block in metadata.json replaces
module.yaml for build-time settings. Updates all docs, skills, templates,
lib/*.nix files, and the waku-module-migrated example.