38 Commits
Author SHA1 Message Date
Dario LipicarandClaude Opus 5 a91569992d ci: use logos-co/setup-nix-cache-action for Nix setup and caching (#18)
Replaces the per-repo installer + cachix pair with the shared action, which
installs Nix with the Logos Attic cache (cache.nix.logos.co) preconfigured and
publishes what the job builds — master to the public cache, every other ref to
ci.

Each converted job also gains

    environment: ${{ github.ref == 'refs/heads/master' && 'public-cache' || '' }}

because ATTIC_TOKEN_PUBLIC only exists inside that environment. Without it the
secret resolves empty on master and publishing is silently skipped — the job
still passes, so the omission would not show up as a failure.

The action installs Nix itself on every runner, macOS included. That is a
deliberate reversal of the workaround these files carried: the comments here
said cachix/install-nix-action collides with the runner's pre-existing _nixbld
users (eDSRecordAlreadyExists), so DeterminateSystems' installer was used
instead. It no longer reproduces — logos-delivery-module has already been
converted the plain way and its `build-and-test (macos-latest)` leg passes.
Keeping the workaround would have meant a second installer plus a duplicated
substituter/key block in ten files, guarding against something two green runs
say does not happen. If it ever recurs it fails loudly at install, which is
recoverable; the silent-skip above is the failure mode worth engineering
against.

One property is deliberately NOT carried over: the old cachix step ran with
`continue-on-error: true` so a failed cache push could not fail a job whose
tests passed. The action exposes no equivalent, and adding one here would also
swallow genuine setup failures now that the same step installs Nix rather than
only publishing at the end.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 23:48:40 -03:00
Dario LipicarandClaude Opus 5 4fb867a72a docs: the universal/cdylib hosting step is logos-qt-host-generator (#17)
These were already wrong before any deletion. module-builder repointed the
cdylib Qt glue onto logos-plugin-qt's logos-qt-host-generator (5081088) and the
docs kept naming logos-qt-generator, so the pipeline they describe has not been
the pipeline that runs for some time.

That matters more here than in most docs: guidelines/ and docs/ are SHIPPED —
flake.nix copies them into the dev-boost output, and generate-agents-md.ts
embeds them into every scaffolded module's AGENTS.md/CLAUDE.md. So the stale
line was being handed to module authors, and to agents reading the scaffold, as
the instruction. That is why the six doctests/outputs/ files change too: they
are the recorded scaffolder output, and they carry the same text.

Only the middle step moves. `logos-cpp-generator --backend cdylib` — the Qt-free
C-ABI export wrapper — is a different tool doing a different job and is
deliberately untouched; it remains correct in every one of these blocks.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 23:00:07 -03:00
Dario LipicarandClaude Opus 4.8 53f30d106a docs: update for the universal→cdylib codegen pipeline (#13)
Universal modules build as header-first cdylibs now, but the docs still
described the old `logos-cpp-generator --from-header --backend qt` path that
emitted `<name>_qt_glue.h` + `<name>_dispatch.cpp` and listed them explicitly
in CMakeLists SOURCES. None of that is current:

  - The generator derives a `.lidl` from the impl header, then runs the cdylib
    backend → `<name>_cdylib_glue.{h,cpp}` (uniform Qt-plugin glue) +
    `<name>_module_impl.cpp` (Qt-free C-ABI export wrapper).
  - `mkLogosModule` runs the pipeline automatically — no `preConfigure`.
  - `LogosModule.cmake` globs `generated_code/` — modules must NOT list the
    generated files in SOURCES (the bug fixed in #12).

Updated across the board:
  - guidelines/{codegen.md (rewritten),universal-module,nix-build,metadata-json}
  - docs/{spec.md,project.md}, README.md
  - skills/{create-universal-module,nix-flake-setup,wrap-external-lib}
  - generators/generate-agents-md.ts, mcp-server/tools/build-help.ts
    (build-help now flags the "generated_code in SOURCES" mistake directly)
  - regenerated llms-full.txt + llms.txt
  - refreshed the committed example trees (outputs/logos-*) to match current
    `init` output: minimal flake (no preConfigure), CMakeLists without the
    generated_code sources, and regenerated AGENTS.md/CLAUDE.md/.claude skills
  - re-rendered dev-boost-scaffold-module.md

No source-code/behavior changes — docs + generated context only.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:54:08 -03:00
Dario LipicarandClaude Opus 4.8 12758ab844 fix(scaffold): drop stale generated_code sources from universal CMakeLists (#12)
`init --type module` scaffolds a universal module whose CMakeLists.txt listed
two generated files explicitly in `logos_module(SOURCES ...)`:

    generated_code/<name>_qt_glue.h
    generated_code/<name>_dispatch.cpp

Those were the filenames the *old* universal codegen emitted. Since universal
modules switched to the header-first cdylib mechanism (module-builder), the
codegen now emits `<name>_cdylib_glue.{h,cpp}` + `<name>_module_impl.cpp`, so
the hardcoded names no longer exist and CMake fails at configure:

    CMake Error at LogosModule.cmake (add_library):
      Cannot find source file: generated_code/<name>_qt_glue.h

LogosModule.cmake already globs `generated_code/*.cpp` + `*.h` automatically
(excluding logos_sdk/*_api), so the explicit listing was both wrong and
redundant. Drop both lines and rely on the glob — matching the convention in
the in-tree universal modules (test-basic-module-cpp, test-context-module-cpp:
"LogosModule.cmake picks up from generated_code/ automatically"). The
`cSourceLines` suffix (external-lib .c sources) is preserved on `_impl.cpp`.

Verified: scaffold → `nix build` (green) → `lm methods` (echo discoverable) →
`nix build .#unit-tests` (green). The dev-boost-scaffold-module doctest was
previously a false-green from a Cachix hit; this exercises the real build.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 10:34:18 -03:00
Dario LipicarandClaude Opus 4.8 277fa49389 fix(scaffold): rely on module-builder autoCodegen for universal modules (#11)
The scaffolded module flake.nix hard-coded a preConfigure calling
`logos-cpp-generator --from-header ... --backend qt`. The logos-qt-sdk
split moved Qt-plugin glue generation to `logos-qt-generator`, and
logos-cpp-generator now hard-errors on `--backend qt` ("Qt glue generation
moved to logos-qt-generator"). So every scaffolded universal module (and
the module half of `full-app`) failed to build against a post-split
cpp-sdk — masked until now only by Cachix hits on pre-split builds.

Drop the hand-written preConfigure entirely. logos-module-builder's
mkLogosModule already runs the generator automatically for
`interface: "universal"` modules (via logos-qt-generator + the .lidl
sidecar), and the scaffold's conventional <Pascal>Impl / <name>_impl.h
naming matches the builder's defaults — so no preConfigure or codegen
metadata is needed. Verified: `init --type module` then `nix build`
produces the plugin via the autoCodegen path.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 00:55:34 -03:00
Dario LipicarandClaude Opus 4.8 52c41168a9 docs: emit daemon-client logoscore examples, drop inline (-c) mode (#10)
* docs: emit daemon-client logoscore examples, drop inline (-c) mode

logos-logoscore-cli's inline mode (`logoscore -m <dir> -l <mod> -c
"mod.method(args)" --quit-on-finish`) is being removed. Update everything
dev-boost emits/ships so generated module docs and guidance use the daemon +
client workflow instead:

  logoscore -D -m ./result/lib -l <module> &     # start a daemon
  logoscore call <module> <method> [args...]     # call a method (positional)
  logoscore stop                                  # stop when done

- Code generators: generate-agents-md.ts, build-help.ts, scaffold.ts now emit
  the daemon/start + `call` + `stop` sequence (scaffold derives positional
  method + space-separated args instead of a `module.method(args)` string).
- Guidelines (testing.md, universal-module.md) and skills (testing-modules,
  create-universal-module, package-lgx, create-full-app) rewritten to the
  daemon/client flow; CI guidance is "background daemon, run calls, stop".
- docs/spec.md and templates/full-app/README.md examples updated.
- llms-full.txt re-synced to match (it aggregates the above).

`tsc` still compiles (nix build of the default package passes).

Note: doctests/outputs/* are regenerated end-to-end by the doctest harness
(doctests/run.sh, which scaffolds + builds + executes the commands), so those
snapshots refresh from the updated generators on the next doctest run rather
than being hand-edited here.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: address review — omit empty call args; fix llms type-detection line

- scaffold.ts: no-arg sample methods left `sampleCallArgs` empty, producing a
  trailing space / empty arg in the suggested `logoscore call`. Derive a
  `sampleCall` that omits the args when empty.
- llms-full.txt: the type-auto-detection line still said "`-c` args" while the
  surrounding section documents the `call` client command — now "`call` args".

tsc still compiles (nix build of .#default passes).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs: daemon starts clean — drop -l, load modules via load-module

Follow-up to dropping inline mode: logoscore's daemon now starts clean (the
-l/--load-modules autoload flag is removed). Update everything dev-boost
emits/ships to start a clean daemon and load modules with `load-module`:

  logoscore -D -m <dir> &
  logoscore load-module <module>
  logoscore call <module> <method> [args]
  logoscore stop

- Generators (generate-agents-md.ts, build-help.ts, scaffold.ts) emit a
  `load-module` step instead of `-D … -l <module>`.
- Guidelines/skills/docs/template + llms-full.txt updated (comma-separated
  `-l a,b` examples become one `load-module` per module).

tsc compiles (nix build of .#default passes).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 22:39:05 -03:00
Iuri Matias d522793840 Merge pull request #9 from logos-co/doctest
add doc tests
2026-06-05 18:09:07 -04:00
Iuri Matias d80f522109 add missing doctest to ci 2026-06-05 17:57:47 -04:00
Iuri Matias 9d2fadb689 make jobs run in both platforms and publish reports in both platforms
make jobs run in both platforms and publish reports in both platforms

ci fix
2026-06-05 17:39:35 -04:00
Iuri Matias 4316465066 add tests for ui qml backend 2026-06-05 15:47:36 -04:00
Iuri Matias a45e34c098 add doctest for ui
add doctest for ui

add doctest for ui
2026-06-05 15:27:16 -04:00
Iuri Matias 1d340d69d6 add doctest for external lib 2026-06-05 11:49:24 -04:00
Iuri Matias 2e755adfad publish reports 2026-06-05 11:29:19 -04:00
Iuri Matias b03ca325c4 add doc test for basic module 2026-06-05 11:09:15 -04:00
Iuri Matias 723a4394ea Merge pull request #8 from logos-co/lib_wrapper
improve auto lib wrapping when doing a scaffold
2026-05-20 10:23:06 -04:00
Iuri Matias 8807e0b952 improve app generation 2026-05-18 18:41:14 -04:00
Iuri Matias 60466f7550 fix perms 2026-04-27 15:08:23 -04:00
Iuri Matias fbd2ad80d6 improve auto lib wrapping when doing a scaffold 2026-04-27 14:27:34 -04:00
Iuri Matias b3325f3958 misc fixes 2026-04-23 10:38:29 -04:00
Iuri Matias ae4c63b43c Merge pull request #5 from logos-co/full_app
add support for 'full app' scaffold and tooling
2026-04-23 10:06:11 -04:00
Iuri Matias 334fdf4fea separate the two type of apps in the scaffold 2026-04-23 09:54:37 -04:00
Iuri Matias 2743b276d2 add support for 'full app' scaffold and tooling 2026-04-23 09:45:23 -04:00
Iuri Matias af8105f17a Merge pull request #4 from logos-co/update_new_api
update for new supported types
2026-04-23 09:26:54 -04:00
Khushboo-dev-cpp 6e43053271 Merge pull request #7 from logos-co/feat/ui-qml-support
feat: add support for new ui_qml file along with mcp server testing
2026-04-17 16:43:16 +02:00
Khushboo Mehta 70baf17bab feat: add support for new ui_qml file along with mcp server testing 2026-04-17 16:40:22 +02:00
Iuri Matias 90725ece99 Merge pull request #6 from logos-co/test_framework
add test framework to scaffolded module
2026-04-14 10:46:51 -04:00
Iuri Matias d35cf0f136 add test framework to scaffolded module 2026-04-14 10:38:58 -04:00
Iuri Matias aef51281f7 update for new supported types 2026-04-10 11:43:49 -04:00
Iuri Matias 8924915e6d Merge pull request #3 from logos-co/add_tests
add tests
2026-04-07 13:32:49 -04:00
Iuri Matias b24108da71 add tests 2026-04-07 13:29:29 -04:00
Iuri Matias 0a27fc544d add tests 2026-04-07 13:26:06 -04:00
Iuri Matias 57a208d739 Merge pull request #2 from logos-co/fix_ui_app
fix scaffold of UI apps
2026-04-07 10:27:55 -04:00
Iuri Matias 0fa56cc246 fix scaffold of UI apps 2026-04-07 10:26:04 -04:00
Iuri Matias 75cc275a85 update readme 2026-04-02 16:35:03 -04:00
Iuri Matias d5fdbe8cb9 auto-install mcp server 2026-04-02 16:10:34 -04:00
Iuri Matias c7b2ea5648 update flake 2026-04-02 15:45:23 -04:00
Iuri Matias 1baaeae8dc update flake 2026-04-02 15:21:31 -04:00
Iuri Matias 57f3bbcea9 logos dev boost 2026-04-02 15:13:59 -04:00