25 Commits
Author SHA1 Message Date
63a6f8abd6 fix: emit the install event and report a path for QML-only ui_qml packages (#59)
* fix: emit the install event and report a path for QML-only ui_qml packages

installPlugin() gated its corePluginFileInstalled/uiPluginFileInstalled event —
and response["path"] — on installedPluginPath being non-empty. That out-param
is a REPORTING detail, not the success signal: a QML-only ui_qml package has no
backend library, so an older logos-package-manager left it empty on a perfectly
good install. The result was that uiPluginFileInstalled never fired (Basecamp
only discovered the plugin after an app restart) and "path" came back empty,
which logos-package-manager-ui reads as failure and draws as a red RETRY.

Success is now the library's own signal — a non-empty return from
installPluginFile() — and the reported path falls back to that return value
when installedPluginPath is empty, so this stays correct against an
unpatched logos-package-manager.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Merge origin/master into feat/windows-cross

master landed #58 (manifest version). Merged clean -- no conflicts -- then the
lock was re-pinned to the merged logos-module-builder (L6) and
logos-package-manager (L3).

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 20:31:31 -03:00
Khushboo Mehta a32609177d feat: add manifest version 2026-08-11 22:21:38 +02:00
Dario LipicarandClaude Opus 4.8 cad6bab044 feat: fresh-install gate + thread dep changes through the gated flow (#57)
* feat: add fresh-install gate + thread dep changes through gated flow

Adds a confirmation gate for fresh installs (requestInstall / confirmInstall /
cancelInstall + beforeInstall / installApproved / installCancelled events),
mirroring the existing uninstall/upgrade gate but with no in-module uninstall
step — confirmInstall simply emits installApproved so the initiator runs its
own download+install chain.

Also extends requestUpgrade with an opaque `depChanges` JSON argument that is
echoed into the beforeUpgrade / beforeInstall payload, so a host confirmation
dialog can list the transitive dependency changes an operation will apply. The
module never interprets it (malformed/empty -> empty array).

This lets the host (basecamp) own a single confirmation dialog for install,
upgrade, and downgrade — replacing the double-dialog where PMUI and basecamp
both confirmed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore: address review nits — confirmInstall single critical section + depChanges doc

- confirmInstall now validates, captures the echo fields, and clears the gate
  in ONE critical section instead of two, so a concurrent cancel/reset/
  ack-timeout can't swap the pending action out between the check and the
  capture (which would emit installApproved with an empty/wrong payload).
  No behavior change under the current single-dispatch model; hardens against
  a future concurrency:multi flip.
- Fix requestUpgrade/requestInstall depChanges doc: the module DOES parse the
  JSON (to re-embed it as an array via attachDepChanges) but never interprets
  or acts on its contents.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 23:12:23 -03:00
Khushboo Mehta 165db365c3 chore: lift display name from manifest file 2026-06-22 13:56:45 +02:00
Dario LipicarandClaude Opus 4.8 82e14af2fe migrate to typed events (#49)
* migrate to typed events

* Address PR review: clarify event-related comments

- test_package_manager.cpp: EventCapture now comes from the test
  framework, not a local helper "below".
- package_manager_impl.h: drop the misleading "unit-test use" example
  for the no-listener case (tests do wire listeners).
- package_manager_impl.cpp: reword the destructor threading note to
  reference the typed event methods rather than a stored callback.

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-02 18:43:59 -03:00
Khushboo Mehta 6fd94e243a fix: add multi uninstall 2026-05-05 23:18:34 +05:30
Dario LipicardlipicarCopilotcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
aead48cefd implement inspectPackage, uninstallPackage, resolveDependencies, resolveDependents, and gated uninstall/upgrade (#47)
* implement inspectPackage, uninstallPackage, resolveDependencies, resolveDependents, and gated uninstall/upgrade

* fix: require ack before confirmUpgrade proceeds

Agent-Logs-Url: https://github.com/logos-co/logos-package-manager-module/sessions/2fc80a97-a06e-4a07-99f2-11d4a7a9ea99

Co-authored-by: dlipicar <11161531+dlipicar@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* pr comments

* add tests

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: dlipicar <11161531+dlipicar@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-16 19:34:03 -03:00
Iuri Matias eb501f5528 migrate to new api 2026-04-13 13:35:40 -04:00
Dario LipicarandClaude Opus 4.6 5f32acea50 refactor: replace hashesValid with packageValid (#43)
* refactor: replace hashesValid with packageValid

Update QVariantMap field names and documentation to match upstream
package_valid rename in SignatureVerificationResult.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: replace TOFU with explicit keyring management API

Remove setTofuEnabled and add addTrustedKey, removeTrustedKey, and
listTrustedKeys methods that call the lgx C API directly. This gives
the UI/app explicit control over trust decisions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: address PR review feedback

- Warn on invalid signature policy values instead of silently ignoring
- Distinguish signature verification errors from unsigned packages
- Document optional fields in installPlugin response

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* bump dependencies

* Add tests

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 18:39:29 -03:00
Dario Gabriel Lipicar f0d1b496d2 add support for multiple embedded dirs 2026-03-27 15:55:47 -03:00
Dario Lipicar d6f1680c43 rework package manager (#39) 2026-03-27 09:02:54 -03:00
Iuri Matias fc915bb9da trigger an event when a module is installed instead of talking directly to the core manager 2026-03-20 21:09:36 +00:00
Iuri Matias 09334546ae updates to use new api 2026-03-20 21:09:36 +00:00
Iuri Matias dab8c27bbd use new api 2026-03-20 21:09:36 +00:00
Dario Lipicar 2fa7da9558 discriminat dev and portable variants (#37) 2026-03-19 11:47:51 -03:00
Dario Lipicar 4c49df4c42 feat: support specifying github release tag (#29) 2026-02-25 15:07:00 -03:00
Dario LipicarandCopilot 1dbbc2452a Properly handle portable modules (#28)
* fix: properly handle portable modules

* restrict plugin installation to lgx packages and determine package type from manifest file

* adapt logic for finding installed modules

* proper package type detection

* proper package name detection

* add optional version check to install method

* add cli option to install lgx package from filesystem

* Update src/lib/package_manager_lib.cpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* adapt to package type

* bump logos-package

* remove double processing of QML plugins

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-25 13:13:02 -03:00
Iuri Matias 62a88b5ae9 Try variant aliases as a fallback 2026-02-17 10:25:47 -05:00
Dario Gabriel Lipicar 0cbf250ad2 chore: get packages from latest github release 2026-02-10 17:05:28 -03:00
Khushboo Mehta b7720393b3 fix for lag in installing core modules 2026-01-28 21:53:20 +01:00
Khushboo Mehta c6b510ae09 feat: Added a queue so that when sending mutiple requests to the package manager one of them is not discarded but added to the queue and executed sequentially 2026-01-28 15:53:47 +01:00
Iuri Matias f9e91aeb0f support installing plugins inside folders 2026-01-23 10:47:55 -05:00
Iuri Matias 952acf301c move logic previous on ui package
move logic previous on ui package

cleanup
2026-01-21 21:28:24 -05:00
Iuri Matias 2ec79626c7 extract logic from package manager into its own lib 2026-01-21 09:03:51 -05:00
Iuri Matias 70f4071cbe move code into src/ 2026-01-21 08:18:22 -05:00