Skip to content

feat(plugins): add portable plugin lockfile - #2976

Merged
bbedward merged 2 commits into
AvengeMedia:masterfrom
artrixdotdev:feat/plugin-lockfile
Aug 7, 2026
Merged

feat(plugins): add portable plugin lockfile#2976
bbedward merged 2 commits into
AvengeMedia:masterfrom
artrixdotdev:feat/plugin-lockfile

Conversation

@artrixdotdev

@artrixdotdev artrixdotdev commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Description

Adds a portable ~/.config/DankMaterialShell/plugins.lock.json that stays synchronized with managed plugin installs, updates, and removals.

  • Records each plugin repository, optional monorepo path, and exact Git commit
  • Adds dms plugins lock and dms plugins restore [lockfile], with optional --prune
  • Migrates existing managed installs, preserves shared monorepo revisions, and validates/atomically writes lockfiles

Type of change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that changes existing behavior)
  • Refactor / internal cleanup
  • Documentation
  • Other

Related issues

None.

Screenshots / video

Not applicable; this is a CLI and backend change.

Checklist

  • My code follows the conventions in CONTRIBUTING.md
  • I have tested my changes locally
  • New user-facing strings are wrapped in I18n.tr() with translator context, reusing existing terms where possible (no QML strings added)
  • Go changes: ran make fmt, added/updated tests, make test passes, and go mod tidy is clean
  • QML changes: not applicable
  • I have opened a corresponding pull request in dlx-docs to document the new behavior: docs(plugins): document lockfile restore workflow DankLinux-Docs#122

@artrixdotdev
artrixdotdev marked this pull request as draft August 1, 2026 06:58
@artrixdotdev
artrixdotdev marked this pull request as ready for review August 1, 2026 07:00

@Purian23 Purian23 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

The structure, tests, and docs look good.
Couple of items to hit:

1. Shared monorepo cleanup shouldCleanupRepo now only trusts the lockfile. If a sibling is still on disk but missing from the lock, uninstall can wipe the shared .repos. Please also check remaining installs (e.g. .meta) and add a regression test.

2. Update rollback when recordInstalledPlugin fails after pull, don’t ignore CheckoutRevision errors; surface a failed rollback so HEAD and the lockfile can’t diverge silently.

That should put us in good shape, thanks again!

@bbedward
bbedward force-pushed the feat/plugin-lockfile branch from ab950dd to b884653 Compare August 7, 2026 14:45
@bbedward
bbedward merged commit b7ec57a into AvengeMedia:master Aug 7, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants