Logoscore Weekly Update — 2026-08-24
Highlights
- The UI shell no longer holds host privilege. Basecamp moved to one runtime per process with a UI shell that carries no host privilege,
main_uiwent back to being a plugin behind host-privileged facades, andcapability_modulewas ported to a universal module sitting on a host-granted trust root — backed by a per-client token store and a host-services C ABI in the protocol logos-basecamp#337, #352, logos-capability-module#24, logos-protocol#59, logos-module-loader-qt#8 - Protocol 0.5 and 0.6 shipped — a module teardown surface (0.5) and caller identity (0.6), threaded through all three SDKs, both hosts and Basecamp so a module gets its chance to finish before it is torn down and a provider can resolve who is calling logos-protocol#62, #63, #70, logos-cpp-sdk#143, #147
- Windows bundles are published. Basecamp, logoscore and logosctl now build and publish Windows bundles alongside Linux and macOS, and the doctest runner gained cross-platform specs (build here, run there) so the exercise half executes on real Windows logos-basecamp#334, logos-logoscore-cli#88, logos-doctest#14, logos-package-manager#32
- macOS signing and notarization pipelines landed for logoscore-cli, lgpm and lgpd logos-logoscore-cli#64, logos-package-manager#30, logos-package-downloader#23
- The
logos-standalone-applock cycle was cut, taking the core repos from ~3,400 flake nodes to a few hundred: 3,391 → 130 in capability-module, 3,472 → 211 in liblogos, 3,390 → 360 in module-builder, 3,282 → 252 in standalone-app logos-capability-module#25, logos-liblogos#183, logos-module-builder#205, logos-standalone-app#38
Initiatives
Privilege separation and host-services grants
The week’s biggest structural change: privilege moved out of the UI shell and behind an explicit, per-client grant.
- Protocol: per-client token store, the host-services C ABI and a container shape-check; the proxy now authorizes against a store that can only hold INBOUND tokens logos-protocol#59, #69
- Basecamp: one runtime per process and a UI shell that holds no host privilege;
main_uiback to a plugin that holds none, reached through host-privileged facades logos-basecamp#337, #352 - Capability module: ported to a universal module over a host-granted trust root logos-capability-module#24
- Hosts and SDKs: the Qt loader delivers the grant to privileged modules instead of carrying JSON across argv; Rust’s generator emits
logos_module_grant_host_services(the missing 11th export) and calls it through the public API logos-module-loader-qt#8, logos-rust-sdk#41, #42
Protocol 0.5 / 0.6 — teardown and caller identity
- Teardown ABI: an optional teardown pair on the module C ABI, advertised as protocol 0.5 logos-protocol#62, #63
- SDKs:
aboutToUnloadin the C++ SDK, the teardown hook published on generated Qt view plugins, 0.5 teardown exports emitted for Rust modules logos-cpp-sdk#143, logos-qt-sdk#38, logos-rust-sdk#45 - Glue and hosts: the plugin class reaches the module’s teardown hook, the body is guarded on 0.5, the helper is shared; the Qt host waits for the module to finish, and ui-host gives a view its chance before teardown logos-plugin-qt#20, #21, #23, logos-module-loader-qt#9, logos-view-module-runtime#26
- Basecamp: an in-process UI plugin gets to finish before its widget is destroyed, and the shell stops reading the
package_manager_uiwidget after the host frees it logos-basecamp#350, #355, #351 - Caller identity (0.6): the protocol resolves who is calling and declares the export that carries it;
logos_module_set_call_callerdefined in the C++ and Rust SDKs; the Qt glue pulls the caller off the host image and pushes it across the C ABI logos-protocol#70, logos-cpp-sdk#147, logos-rust-sdk#47, logos-plugin-qt#25, logos-module-builder#213 - Coverage: a fixture for the module teardown contract; the hook restored on the generated PMUI plugin after a regression logos-test-modules#46, logos-package-manager-ui#72, logos-module-builder#214
One runtime per process (shared runtime and symbol gate)
- Linking: Basecamp and logosctl link the shared libraries and delete the shim; standalone-app links the shared Qt host and gates the invariant; liblogos imports the runtime instead of providing it;
liblogos_protocol.dllbecame a usable single provider logos-basecamp#348, logos-logoscore-cli#98, logos-standalone-app#39, logos-liblogos#182, logos-protocol#65 - The gate: CI asserts one logos runtime per process; archives emptied on every platform, not just Windows logos-logoscore-cli#96, #95, logos-basecamp#339
- Gate bugs found and fixed:
makeBinaryWrapperstubs thatnmreads as real, symlinked plugins silently not measured, and the gate not actually running — including on Windows, where it matters logos-basecamp#340, #341, #354, logos-logoscore-cli#102, logos-standalone-app#41 - Module viewer: bumped onto the shared runtime and ported to the current API; every liblogos shared library staged, not just
liblogos_corelogos-module-viewer#8, #7
SDKs split by capability, and generated view glue
- The split: the C++ SDK split by capability with the provider-header path retired and the cdylib decode hardened; the Qt SDK split by capability with the Qt-module backends retired logos-cpp-sdk#138, logos-qt-sdk#33
- New home for the Qt host:
logos-plugin-qtgained the Qt host runtime and cdylib-glue generator pluslogos_qt_host_sharedwith a layering assertion logos-plugin-qt#19, #22 - New home for view plugins:
logos-view-modulenow owns the view-plugin templates, the check that proves they work, and the UI plugin emitter with its paired header; the Qt SDK retired--backend uiand droppedlogos_ui_plugin_context.haccordingly logos-view-module#2, #3, logos-qt-sdk#39, #42 - Consumers: module-builder takes the view templates from logos-view-module and builds
ui_qmlglue with logos-view-generator; PMUI generates its view-plugin glue and drops the module-builder pin; the last Qt fixtures migrated to interfaceuniversal,test_ipc_moduleretired logos-module-builder#203, #211, logos-package-manager-ui#69, logos-test-modules#44 - JS SDK: a protocol-native, Qt-free
lp_*consumer and provider over koffi logos-js-sdk#11 - Async plumbing: the AsyncResult twin emitted and the LpClient create race fixed; the second
lp_clientbehindinvokeAsyncResultretired logos-cpp-sdk#142, logos-qt-sdk#36
ABI conformance gates
- The protocol publishes the module-impl export list as data, for backends to check against logos-protocol#66
- Generated cdylibs and the Rust scaffold are asserted to define every declared module-impl export; module-builder reads the exports off the built plugin, per backend logos-cpp-sdk#144, logos-rust-sdk#46, logos-module-builder#207
- Conditional exports guarded on MAJOR, not MINOR alone; the next-major probe asserts a subset rather than equality; an unparseable protocol version no longer silently vanishes logos-cpp-sdk#145, #146, logos-module-builder#208, logos-protocol#68
Error-channel correctness
A cross-SDK sweep: provider rejections were being collapsed to a single code, and failures were being reported as data.
- Every provider rejection code is now folded, not just
dispatch_failed— in the C++, Qt and Rust SDKs and in logosctl logos-cpp-sdk#148, logos-qt-sdk#40, logos-rust-sdk#49, #44, logos-logoscore-cli#101 - logosctl:
METHOD_FAILEDreported from the error channel instead of a null value, the daemon shutdown reply no longer lost or called a failure, and a missing daemon fails at once instead of being reported as data logos-logoscore-cli#99, #100, #103 - Conformance suite carries the provider’s own error code, not just the envelope’s logos-logoscore-py#21
- Host-core stats read (and mirror into the
QVariantMap) the keys process-stats actually emits logos-cpp-sdk#139, logos-qt-sdk#34
Type fidelity and derived identity
- Types: a lossless Qt type mapping with LIDL types in
getMethods; the Qt consumer keeps every type the std one keeps; record codecs qualified by wrapper class logos-cpp-sdk#149, logos-qt-sdk#41, #43 - Identity:
name()andversion()derived from the module declaration in LIDL, with derived identity methods emitted for C++, Qt and Rust providers and consumers; the proxy answers for a provider that does not logos-lidl#10, logos-cpp-sdk#141, logos-qt-sdk#35, logos-rust-sdk#43, logos-protocol#61 - Fallout: call sites updated for the widened Qt consumer surface, docs followed, and the SDK chain relocked logos-test-modules#47, logos-tutorial#84, logos-module-builder#212, logos-plugin-qt#24
Windows bundles and cross-platform doctests
- Bundles: Basecamp builds and publishes a Windows bundle alongside the other platforms; logoscore and logosctl do the same logos-basecamp#334, #332, logos-logoscore-cli#88, logos-package-manager-ui#68
- Doctest runner: machine-readable results and cross-platform specs — build on one platform, run on another; a spec that marks only its build half is no longer an error logos-doctest#14, #15
- Windows legs: the lgpm Windows leg is a doc-test leg publishing beside ubuntu/macos, with platforms marked so the run half executes there; the modules-bundle spec’s second half runs on real Windows; lgpd is cross-built and proven to start on real Windows logos-package-manager#32, #33, logos-logoscore-cli#89, logos-package-downloader#28
- Cross-build coverage: container-subprocess and lidl cross-build for Windows and gate their archives logos-container-subprocess#5, logos-lidl#9
Packaging and install correctness
- Signatures: an empty signer pin was selecting exactly the UNSIGNED releases; an unknown signing key now says so; one bundled-module failure no longer disarms
signature_policylogos-package-downloader#30, logos-package-manager#36, logos-logoscore-cli#90 - Resolution: the architecture half of a variant is aliased, so a bundler-built
.lgxinstalls on Intel Mac; an object-form dependency no longer loses the edge itself logos-package-manager#35, #34 - Install: reinstall removes files deleted by the new version; logosctl installs a local
.lgxby path and refuses the mixed request; liblogos-allocated arrays are freed withdelete[]logos-basecamp#336, logos-logoscore-cli#91, #93 - Icons and metadata: Basecamp supports icons shipped with packages, module-builder gained platform-keyed overlays in
metadata.json, and the 256×256 icons theui_qmlpackaging contract requires were added to the fixtures and the tutorial logos-basecamp#321, logos-module-builder#209, logos-test-modules#45, logos-tutorial#82
CI and release infrastructure
- macOS release pipelines: signing, notarization and release for logoscore-cli, lgpm and lgpd logos-logoscore-cli#64, logos-package-manager#30, logos-package-downloader#23
- Shared cache action: Nix and the Attic cache now come from
setup-nix-cache-actionin Basecamp, protocol, rust-sdk and the tutorial; Basecamp’s S3 storage moved from DO to Hetzner logos-basecamp#331, #330, logos-protocol#60, logos-rust-sdk#40, logos-tutorial#83 - Binary cache in flakes: added across the blockchain UIs, libp2p-module and storage-ui lez-explorer-ui#20, logos-blockchain-ui#60, logos-execution-zone-module#54, logos-execution-zone-wallet-ui#44, logos-libp2p-module#105, logos-storage-ui#90
- Pipelines: the Linux ARM path in the combined Jenkinsfile fixed; module-unload and failure-path test suites added to Basecamp logos-basecamp#335, #329, #318
UI and networking
- Logos Notice and Logos Toast added as generic components;
logosTabBarissues fixed logos-design-system#51, #52 - Hot reload fixed in standalone-app and the view-module runtime logos-standalone-app#36, logos-view-module-runtime#24
- NAT traversal configuration options exposed in the libp2p module logos-libp2p-module#104
Execution-zone wallet UI (in-review)
- Onboarding reworked into two paths — create a wallet, or open an existing one — with tests enabled in CI and the UI moved onto LogosDesignSystem components (in-review) logos-execution-zone-wallet-ui#41, #42, #43
- Execution-zone module exposes its persistent path through
LogosModuleContext(in-review) logos-execution-zone-module#53
Housekeeping
- Lock cycle cut: the
logos-standalone-appcycle removed from the locks of capability-module, liblogos, module-builder and standalone-app, plus the two private copies of the package-manager flakes Basecamp was unrolling logos-capability-module#25, logos-liblogos#183, logos-module-builder#205, logos-standalone-app#38, logos-basecamp#353, #356, #358, logos-package-manager-ui#71, logos-package-downloader-module#24, logos-package-manager-module#60 - Relocks tracking the waves above: liblogos, logosctl, standalone-app, module-builder, the package-manager/downloader modules, rust-sdk and test-modules moved onto the grant path, the teardown wait, the universal capability module and the deduplicated qt-sdk logos-liblogos#177, #178, #179, #181, #184, #185, logos-logoscore-cli#92, #94, #97, logos-standalone-app#37, #40, logos-module-builder#201, #204, #206, #210, logos-package-downloader-module#25, logos-package-manager-module#61, logos-rust-sdk#48, logos-test-modules#48, logos-basecamp#351
- Docs caught up with the refactors: Basecamp references to files, outputs and pins that no longer exist retired; the shared-API scheme that actually shipped described; removed generator flags dropped; the archived
logos-module-clientde-referenced logos-basecamp#357, logos-protocol#67, logos-qt-sdk#37, logos-tutorial#81, logos-view-module-runtime#25, logos-cpp-sdk#140 - Nix packaging:
nlohmann_jsonpropagated and a deleted-file reference dropped in liblogos; the deadgen_providerexample deleted logos-liblogos#184, logos-rust-sdk#39
Appendix: all merged PRs, by repo
lez-explorer-ui, logos-basecamp, logos-blockchain-ui, logos-capability-module, logos-container-subprocess, logos-cpp-sdk, logos-design-system, logos-doctest, logos-execution-zone-module, logos-execution-zone-wallet-ui, logos-js-sdk, logos-liblogos, logos-libp2p-module, logos-lidl, logos-logoscore-cli, logos-logoscore-py, logos-module-builder, logos-module-loader-qt, logos-module-viewer, logos-package-downloader, logos-package-downloader-module, logos-package-manager, logos-package-manager-module, logos-package-manager-ui, logos-plugin-qt, logos-protocol, logos-qt-sdk, logos-rust-sdk, logos-standalone-app, logos-storage-ui, logos-test-modules, logos-tutorial, logos-view-module, logos-view-module-runtime
lez-explorer-ui
logos-basecamp
- chore(deps): relock the package-manager repos, now that they are cut too (#358)
- docs: retire references to files, outputs and pins that no longer exist (#357)
- chore(deps): take the cycle cut that already landed upstream (#356)
- fix(shell): stop reading the package_manager_ui widget after the host frees it (#355)
- fix(ci): run the symbol gate — on Windows too, where it matters (#354)
- chore(deps): stop unrolling two private copies of the package-manager flakes (#353)
- feat(shell): host-privileged facades — main_ui goes back to a plugin that holds no privilege (#352)
- chore(deps): pick up ui-host’s teardown grace period (#351)
- feat(ui): let an in-process UI plugin finish before its widget is destroyed (#350)
- feat(shared-runtime): link the shared libraries, and delete the shim (#348)
- fix(symbol-gate): find -L, or a symlinked plugin is silently not measured (#341)
- fix(symbol-gate): resolve makeBinaryWrapper stubs, which nm reads as real (#340)
- fix(shared-runtime): empty the archives on every platform, and gate it (#339)
- feat(shell): one runtime per process, and a UI shell that holds no host privilege (#337)
- fix: Reinstall doesn’t remove files deleted by the new version — inst… (#336)
- fix(ci): wrong path to linux arm pipeline in combined jenkinsfile (#335)
- feat(windows): build and publish a Windows bundle alongside the other platforms (#334)
- fix(windows): bump logos-package-manager-ui so the Windows build completes (#332)
- ci: take Nix and the Attic cache from setup-nix-cache-action (#331)
- feat(ci): change s3 storage from DO to Hetzner (#330)
- Test/module unload (#329)
- feat: support icons available with packages (#321)
- Test/failure paths (#318)
logos-blockchain-ui
logos-capability-module
- fix(nix): cut the logos-standalone-app cycle out of the lock (3,391 → 130 nodes) (#25)
- feat: capability_module as a universal module, over a host-granted trust root (#24)
logos-container-subprocess
logos-cpp-sdk
- feat(codegen): a lossless Qt type mapping, and LIDL types in getMethods (#149)
- fix: fold EVERY provider rejection code, not just dispatch_failed (#148)
- feat(abi): define logos_module_set_call_caller, gated on protocol 0.6 (#147)
- fix(abi-check): the next-major probe asserts a SUBSET, not equality (#146)
- fix(cdylib): guard the conditional exports on MAJOR too, not MINOR alone (#145)
- test(abi): assert the generated cdylib defines every declared module-impl export (#144)
- feat(sdk): aboutToUnload — a module’s chance to finish before teardown (#143)
- feat(lp): emit the AsyncResult twin, and fix the LpClient create race (#142)
- feat(generator): emit the derived module identity methods (#141)
- docs(doctests): drop references to the archived logos-module-client (#140)
- fix(host-core): read the stats keys process-stats actually emits (#139)
- feat: split the SDK by capability, retire the provider-header path, and harden the cdylib decode (#138)
logos-design-system
- fix: issues in logosTabBar (#52)
- feat: add Logos Notice and Logos Toast to be used generically (#51)
logos-doctest
- fix(emit-smoke): a spec that marks only its build half is not an error (#15)
- feat: machine-readable results, and cross-platform specs (build here, run there) (#14)
logos-execution-zone-module
logos-execution-zone-wallet-ui
logos-js-sdk
logos-liblogos
- chore(deps): bump logos-qt-sdk past the header dedup, and follow its plugin-qt (#185)
- fix(nix): propagate nlohmann_json, and stop pointing at a deleted file (#184)
- chore(deps): relock logos-capability-module onto the cycle cut (3,472 → 211 nodes) (#183)
- feat(shared-runtime): import the runtime instead of providing it (#182)
- chore(deps): relock default-module-loader onto the teardown wait (#181)
- chore(deps): relock capability_module onto the universal port (#179)
- chore(deps): relock default-module-loader onto the host-services grant (#178)
- chore(deps): track protocol and plugin-qt master (#177)
logos-libp2p-module
logos-lidl
- feat: derive name() and version() from the module declaration (#10)
- ci(windows): cross-build for Windows and gate the archives (#9)
logos-logoscore-cli
- fix(client): fail at once when the daemon is gone, and stop reporting that as data (#103)
- fix(ci): run the symbol gate, and fix what it does on Windows (#102)
- fix: fold EVERY provider rejection code, not just dispatch_failed (#101)
- fix(daemon stop): stop losing the shutdown reply, and stop calling that a failure (#100)
- fix(core_service): report METHOD_FAILED from the error channel, not a null value (#99)
- feat(shared-runtime): link the shared libraries, and delete the shim (#98)
- chore(deps): relock liblogos onto the teardown wait (#97)
- feat(symbol-gate): assert one logos runtime per process, in CI (#96)
- fix(shared-runtime): empty the archives on every platform, not just Windows (#95)
- chore(deps): relock logos-protocol and logos-liblogos onto the grant path (#94)
- fix: delete[] the arrays liblogos allocates with new[], and clean up on error (#93)
- chore(deps): track master for protocol, cpp-sdk and plugin-qt (#92)
- feat(logosctl): install a local .lgx by path, and refuse the mixed request (#91)
- fix(logosctl): don’t let one bundled-module failure disarm signature_policy (#90)
- doctest(logosctl): run the modules-bundle spec’s second half on real Windows (#89)
- feat(windows): build and publish Windows bundles for logoscore and logosctl (#88)
- ci: add macOS signing, notarization and release pipeline (#64)
logos-logoscore-py
logos-module-builder
- fix(deps): restore the view teardown hook, and pick up the deduplicated qt-sdk (#214)
- chore(deps): bump onto the caller-identity wave — protocol 0.6 (#213)
- chore(deps): relock onto the SDKs carrying the lossless Qt mapping (#212)
- feat: build ui_qml glue with logos-view-generator, not logos-qt-generator (#211)
- chore(deps): pick up ui-host’s teardown grace period (#210)
- feat(metadata): platform-keyed overlays in metadata.json (#209)
- fix: a protocol version that will not parse must not silently vanish (#208)
- test(abi): read the module-impl exports off the BUILT plugin, per backend (#207)
- chore(deps): relock logos-rust-sdk onto the teardown exports (#45) (#206)
- chore(deps): relock logos-standalone-app onto the cycle cut (3,390 → 360 nodes) (#205)
- chore(deps): bump the SDK chain onto master (#204)
- feat: take the view templates from logos-view-module (#203)
- chore: bump logos-standalone-app and logos-view-module-runtime (#201)
logos-module-loader-qt
- feat(host): wait for the module to finish before tearing it down (#9)
- feat: deliver the host-services grant to privileged modules, and stop carrying JSON across argv (#8)
logos-module-viewer
- feat: bump liblogos onto the shared runtime, and port to the current API (#8)
- fix(nix): stage every liblogos shared library, not just liblogos_core (#7)
logos-package-downloader
- fix(resolver): an empty signer pin selected exactly the UNSIGNED releases (#30)
- ci(windows): cross-build lgpd and prove it starts on real Windows (#28)
- ci: add macOS signing, notarization and release pipeline (#23)
logos-package-downloader-module
- chore(deps): bump onto the module-builder that restores the view hook (#25)
- chore(deps): take the module-builder cycle cut (#24)
logos-package-manager
- fix(signature): say something when an unknown key signed the package (#36)
- fix(variant): alias the architecture half, so a bundler-built .lgx installs on Intel Mac (#35)
- fix: an object-form dependency lost the edge itself, not just its constraint (#34)
- doctest(lgpm-cli): mark the platforms, so the run half can execute on Windows (#33)
- ci(windows): the Windows leg is a doc-test leg, publishing beside ubuntu/macos (#32)
- ci: add macOS signing, notarization and release pipeline (#30)
logos-package-manager-module
- chore(deps): bump onto the module-builder that restores the view hook (#61)
- chore(deps): take the module-builder cycle cut (#60)
logos-package-manager-ui
- fix(deps): restore aboutToUnload() on the generated UI plugin (#72)
- chore(deps): take the module-builder cycle cut, in two passes (#71)
- refactor: generate the view-plugin glue, and drop the module-builder pin (#69)
- fix(windows): bump the pins so package_manager publishes an x86_64-windows target (#68)
logos-plugin-qt
- feat(glue): pull the caller from the host image and push it across the C ABI (#25)
- chore(deps): track logos-lidl master, for lidl/identity.hpp (#24)
- feat(qt-host): share the teardown helper, and guard the glue on MAJOR too (#23)
- feat(qt-host): add logos_qt_host_shared, and assert its layering (#22)
- fix(glue): guard the teardown body on protocol 0.5 (#21)
- feat(glue): reach the module’s teardown hook from the plugin class (#20)
- feat: the Qt host runtime and cdylib-glue generator (#19)
logos-protocol
- feat(caller): resolve who is calling, and declare the export that carries it (#70)
- fix(proxy): authorize against a store that can only hold INBOUND tokens (#69)
- docs(version): the obvious way to guard a conditional surface is wrong (#68)
- docs(shared-api): describe the scheme that actually shipped (#67)
- feat(abi): publish the module-impl export list as data, for backends to check against (#66)
- feat(shared-api): make liblogos_protocol.dll a usable single provider (#65)
- feat(abi): 0.5 — advertise the module teardown surface (#63)
- feat(abi): an optional teardown pair on the module C ABI (#62)
- feat(proxy): answer name()/version() for a provider that does not (#61)
- ci: use logos-co/setup-nix-cache-action for Nix setup and caching (#60)
- feat: per-client token store, the host-services C ABI, and a container shape-check (#59)
logos-qt-sdk
- fix(qt-consumer): qualify the record codecs by wrapper class (#43)
- chore: drop logos_ui_plugin_context.h; logos-view-module is its sole owner (#42)
- feat(consumer): the Qt consumer keeps every type the std one keeps (#41)
- fix: fold EVERY provider rejection code, not just dispatch_failed (#40)
- chore(qt-generator): retire —backend ui; logos-view-module owns it now (#39)
- feat(ui): publish the teardown hook on generated view plugins (#38)
- docs: point at the scheme that replaced LogosSharedFromDll.cmake (#37)
- chore(bridge): retire the second lp_client behind invokeAsyncResult (#36)
- feat(generator): derive identity methods onto Qt consumer wrappers (#35)
- fix(host-core): mirror the corrected stats fields into the QVariantMap (#34)
- feat: split the SDK by capability, and retire the Qt-module backends (#33)
logos-rust-sdk
- fix: fold EVERY provider rejection code, not just dispatch_failed (#49)
- chore(deps): relock logos-module-builder — the root ipc-test was red and unrun (#48)
- feat(abi): define logos_module_set_call_caller, gated on protocol 0.6 (#47)
- test(abi): assert the scaffold defines every declared module-impl export (#46)
- fix(lidl-gen): emit the protocol 0.5 teardown exports for Rust modules (#45)
- fix: fold provider rejections into the consumer error channel, and unblock the client-cache lock (#44)
- feat(lidl-gen): derive identity methods for Rust providers and consumers (#43)
- fix(lidl-gen): call grant_host_services through the public API, not
ffi(#42) - fix(lidl-gen): emit logos_module_grant_host_services, the missing 11th export (#41)
- ci: use logos-co/setup-nix-cache-action for Nix setup and caching (#40)
- chore(lidl-gen): delete the dead gen_provider example (#39)
logos-standalone-app
- fix(ci): run the symbol gate, and fix what it does on Windows (#41)
- chore(deps): pick up ui-host’s teardown grace period (#40)
- feat(shared-runtime): link the shared Qt host, and gate the invariant (#39)
- chore(deps): relock logos-liblogos onto the cycle cut (3,282 → 252 nodes) (#38)
- chore(deps): track master for protocol, cpp-sdk and plugin-qt (#37)
- fix: fix the hot relaods (#36)
logos-storage-ui
logos-test-modules
- chore(deps): bump module-builder — test_fullapi_ui does not compile without it (#48)
- fix(tests): update call sites for the widened Qt consumer surface (#47)
- test: a fixture for the module teardown contract (#46)
- fix(ui): ship the 256x256 icons that ui_qml packaging now requires (#45)
- Migrate the last Qt fixtures to interface “universal”, retire test_ipc_module, and repoint onto logos-qt-host (#44)
logos-tutorial
- docs: the widened Qt consumer surface (#84)
- ci: use logos-co/setup-nix-cache-action for Nix setup and caching (#83)
- fix(doctests): ship a 256x256 placeholder icon, per the LGX icon contract (#82)
- docs: stop documenting removed generator flags (#81)
logos-view-module
- feat(view-generator): own the ui plugin emitter, and the header it pairs with (#3)
- feat: own the view-plugin templates, and the check that proves they work (#2)