From d2056effa664cdeb75db632352eafc6a11cb6a6f Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 4 Sep 2026 06:29:35 -0400 Subject: [PATCH 01/18] release(prep): v1.0.1 for the 8 repackaged free plugins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps content-progress, cron, donorbox, maintenance, notifications, notify, search, storage from 1.0.0 to 1.0.1 in registry.json and each plugin's own plugin.json (CI's version-consistency gate requires the two to match). PRs routes on the 7 with an HTTP server, stale license gates removed) but the registry still pointed at the v1.0.0 GitHub Release tarballs, so nself plugin install still served the pre-repackage code. Also records the SHA-256 checksum on each of the 8 registry entries: the flat checksum field (what internal/plugin/registry_parse.go actually deserializes and installer_locked.go's verifyChecksum checks), plus checksums.sha256 + releaseTag (what registry-schema.json documents and build-and-upload-tarballs.sh writes, currently unread by the CLI — see .github/RELEASE-v1.0.1.md Known gap). Tarballs are NOT included in this commit (dist/ stays gitignored); they are attached to the v1.0.1 GitHub Release by the owner per the PR body. No merge, tag, or release performed here — see .github/RELEASE-v1.0.1.md for the three owner commands this PR sets up. --- .github/RELEASE-v1.0.1.md | 77 +++++++++++++++++++++++++++ free/content-progress/plugin.json | 2 +- free/cron/plugin.json | 2 +- free/donorbox/plugin.json | 2 +- free/maintenance/plugin.json | 2 +- free/notifications/plugin.json | 6 ++- free/notify/plugin.json | 2 +- free/search/plugin.json | 4 +- free/storage/plugin.json | 2 +- registry.json | 88 ++++++++++++++++++++++--------- 10 files changed, 153 insertions(+), 34 deletions(-) create mode 100644 .github/RELEASE-v1.0.1.md diff --git a/.github/RELEASE-v1.0.1.md b/.github/RELEASE-v1.0.1.md new file mode 100644 index 00000000..8fdf2df6 --- /dev/null +++ b/.github/RELEASE-v1.0.1.md @@ -0,0 +1,77 @@ +# v1.0.1 — repackaged free plugins + +## What changed + +Eight free plugins were repackaged in PRs #78/#79/#80 (self-contained build +contexts, `/health` routes on the seven that run an HTTP server, stale +license gates removed) but `registry.json` still pointed at the v1.0.0 +tarballs on the `v1.0.0` GitHub Release. `nself plugin install ` for +any of these eight therefore still installed the pre-#78/#79/#80 code. + +This release bumps those eight plugins' `version` to `1.0.1` (in both +`registry.json` and each plugin's own `plugin.json`, which CI's version- +consistency gate requires to match) and republishes their tarballs under +tag `v1.0.1`, so the registry worker's tarball redirect +(`.workers/plugins-registry/src/index.ts` `handlePluginTarball`, which +builds the GitHub Releases URL from `plugin.version`) starts serving the +repackaged code. + +**Plugins bumped 1.0.0 → 1.0.1** (all free, `requires_license: false`): +content-progress, cron, donorbox, maintenance, notifications, notify, +search, storage. + +Nothing else in the registry changed — the other 121 plugins keep their +existing versions and tarball URLs. + +## Also recorded on the registry entries + +- `checksum` (flat field) — the field `internal/plugin/registry_parse.go`'s + `pluginEntry` actually deserializes (`json:"checksum"`) and + `verifyChecksum` in `internal/plugin/installer_locked.go` checks against. + Populated with the tarball's real SHA-256 for all eight. +- `checksums.sha256` and `releaseTag` — the fields `registry-schema.json` + documents and `build-and-upload-tarballs.sh` writes. Populated too, for + schema/tooling parity, even though nothing in this repo or the deployed + worker currently reads them (see Known gap below). + +None of the eight plugins have `"status": "stable"` set, so +`verifyChecksum` does not hard-fail installs that lack a checksum — but a +correct one is now present regardless. + +## Known gap (pre-existing, not introduced by this PR) + +`registry-schema.json` and `build-and-upload-tarballs.sh` write checksums to +the nested `checksums.sha256` field. The CLI's registry parser +(`internal/plugin/registry_parse.go`) only ever reads the flat `checksum` +field — `checksums.sha256` is never consulted. Any future release built by +running `build-and-upload-tarballs.sh` as-is will silently populate a field +the installer ignores. Worth a follow-up ticket to fix the script (or add +the flat alias) so this doesn't bite a `status: stable` plugin later. + +## `scripts/build-tarballs.sh` behavior + +`scripts/build-tarballs.sh 1.0.1` builds a tarball for **every** plugin +under `free/` (129 of them) at the single VERSION argument you pass, tagging +even untouched plugins as `-1.0.1.tar.gz` — it does not read each +plugin's own `registry.json` version. This release keeps only the 8 +relevant tarballs; the other 121 mislabeled ones were discarded, not +uploaded, and never committed (dist/ is gitignored). + +## `maintenance` has no `/health` route + +`maintenance` is a Cobra CLI tool (`cmd/main.go`, disk-cleanup/scheduler +subcommands) with no HTTP server anywhere in its source — it never had a +`/health` route and #78/#79 didn't add one, correctly, since there is no +HTTP surface to health-check. This is not a gap in this release. + +## Verify commands + +```bash +# Tarball redirect resolves to the new release +curl -sI https://plugins.nself.org/plugins/storage/tarball +# expect: HTTP/2 302, location: .../releases/download/v1.0.1/storage-1.0.1.tar.gz + +# Fresh install reaches a healthy container +nself plugin install notifications +curl -sf http://localhost:/health +``` diff --git a/free/content-progress/plugin.json b/free/content-progress/plugin.json index 94cb69d3..4eeb3dd2 100644 --- a/free/content-progress/plugin.json +++ b/free/content-progress/plugin.json @@ -1,6 +1,6 @@ { "name": "content-progress", - "version": "1.0.0", + "version": "1.0.1", "description": "Track video, audio, and content playback progress with continue watching, watchlists, and favorites", "author": "nself", "license": "MIT", diff --git a/free/cron/plugin.json b/free/cron/plugin.json index e59d856f..4c6c9436 100644 --- a/free/cron/plugin.json +++ b/free/cron/plugin.json @@ -1,6 +1,6 @@ { "name": "cron", - "version": "1.0.0", + "version": "1.0.1", "description": "Cron job scheduler. Register jobs with standard cron syntax, execute via HTTP callbacks, track run history.", "author": "nself", "license": "MIT", diff --git a/free/donorbox/plugin.json b/free/donorbox/plugin.json index 3244af80..88787eab 100644 --- a/free/donorbox/plugin.json +++ b/free/donorbox/plugin.json @@ -1,6 +1,6 @@ { "name": "donorbox", - "version": "1.0.0", + "version": "1.0.1", "description": "Donorbox donation data sync with webhook handling", "author": "nself", "license": "MIT", diff --git a/free/maintenance/plugin.json b/free/maintenance/plugin.json index 5b58b947..e7f889cd 100644 --- a/free/maintenance/plugin.json +++ b/free/maintenance/plugin.json @@ -1,6 +1,6 @@ { "name": "maintenance", - "version": "1.0.0", + "version": "1.0.1", "description": "Maintenance utilities: disk cleanup, log rotation and the maintenance scheduler.", "author": "nself", "license": "MIT", diff --git a/free/notifications/plugin.json b/free/notifications/plugin.json index 80c6cf8f..1de962d8 100644 --- a/free/notifications/plugin.json +++ b/free/notifications/plugin.json @@ -1,6 +1,6 @@ { "name": "notifications", - "version": "1.0.0", + "version": "1.0.1", "description": "Email notification service (SMTP). Push and SMS channels are always-error placeholders — they accept requests but return 501 Not Implemented. Use the 'notify' plugin for real push notifications. Deprecated since v1.1.0; replacement: notify.", "author": "nself", "license": "MIT", @@ -80,7 +80,9 @@ "replacedBy": "notify", "removal_target": "v2.0.0", "status": "deprecated", - "capabilities": ["email"], + "capabilities": [ + "email" + ], "binary_name": "notifications", "health_endpoint": "/health", "arch_support": [ diff --git a/free/notify/plugin.json b/free/notify/plugin.json index c6472ac4..4bfc878b 100644 --- a/free/notify/plugin.json +++ b/free/notify/plugin.json @@ -1,6 +1,6 @@ { "name": "notify", - "version": "1.0.0", + "version": "1.0.1", "description": "Multi-channel notification service. Channels: Email (SMTP), Webhook (HMAC-signed). HTTP endpoints for sending notifications, managing templates, and viewing delivery history.", "author": "nself", "license": "MIT", diff --git a/free/search/plugin.json b/free/search/plugin.json index 2ae0f3c7..6767dfc8 100644 --- a/free/search/plugin.json +++ b/free/search/plugin.json @@ -1,6 +1,6 @@ { "name": "search", - "version": "1.0.0", + "version": "1.0.1", "description": "Full-text search engine with PostgreSQL FTS and MeiliSearch support", "author": "nself", "license": "MIT", @@ -109,4 +109,4 @@ "min_memory_mb": 64, "systemd_after": "network.target", "tier": "free" -} \ No newline at end of file +} diff --git a/free/storage/plugin.json b/free/storage/plugin.json index 3332bfe5..57126279 100644 --- a/free/storage/plugin.json +++ b/free/storage/plugin.json @@ -1,6 +1,6 @@ { "name": "storage", - "version": "1.0.0", + "version": "1.0.1", "api_version": "1.0", "description": "S3-compatible file storage: bucket management, object PUT/GET/DELETE/LIST, presigned URLs, per-tenant isolation.", "author": "nself", diff --git a/registry.json b/registry.json index d5e472bc..648a5c63 100644 --- a/registry.json +++ b/registry.json @@ -343,13 +343,13 @@ } }, "content-progress": { - "version": "1.0.0", + "version": "1.0.1", "description": "Track video, audio, and content playback progress with continue watching, watchlists, and favorites", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/content-progress-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/content-progress-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/content-progress/tarball", "requires_license": false, "language": "go", @@ -376,7 +376,12 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" - } + }, + "checksum": "f3ff367a61c38d039136c96ec3b42dded23334bed532a50071f623adaa5644ac", + "checksums": { + "sha256": "f3ff367a61c38d039136c96ec3b42dded23334bed532a50071f623adaa5644ac" + }, + "releaseTag": "v1.0.1" }, "costs": { "version": "1.0.0", @@ -408,13 +413,13 @@ } }, "cron": { - "version": "1.0.0", + "version": "1.0.1", "description": "Cron job scheduler. Register jobs with standard cron syntax, execute via HTTP callbacks, track run history.", "category": "automation", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/cron-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/cron-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/cron/tarball", "requires_license": false, "tier_pair": true, @@ -438,7 +443,12 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" - } + }, + "checksum": "e79736337868685a85fd25ba3d98ad1bc4ab9d2c8eaa5f3185383f39719b2940", + "checksums": { + "sha256": "e79736337868685a85fd25ba3d98ad1bc4ab9d2c8eaa5f3185383f39719b2940" + }, + "releaseTag": "v1.0.1" }, "dlq": { "version": "1.0.0", @@ -503,13 +513,13 @@ } }, "donorbox": { - "version": "1.0.0", + "version": "1.0.1", "description": "Donorbox donation data sync with webhook handling", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/donorbox-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/donorbox-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/donorbox/tarball", "requires_license": false, "language": "go", @@ -537,7 +547,12 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" - } + }, + "checksum": "b0f8057faa416e45c54e34b8f3c8b78734aae6257a1bda07ff59ecfe7966fae3", + "checksums": { + "sha256": "b0f8057faa416e45c54e34b8f3c8b78734aae6257a1bda07ff59ecfe7966fae3" + }, + "releaseTag": "v1.0.1" }, "dr": { "version": "1.0.0", @@ -1112,13 +1127,13 @@ } }, "maintenance": { - "version": "1.0.0", + "version": "1.0.1", "description": "Maintenance utilities: disk cleanup, log rotation and the maintenance scheduler.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/maintenance-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/maintenance-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/maintenance/tarball", "requires_license": false, "language": "go", @@ -1139,7 +1154,12 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-maintenance" - } + }, + "checksum": "a330de5ba86fcbc5a2466b82f893c31990e2903d0db01ed51437b60a939daf3b", + "checksums": { + "sha256": "a330de5ba86fcbc5a2466b82f893c31990e2903d0db01ed51437b60a939daf3b" + }, + "releaseTag": "v1.0.1" }, "mdns": { "version": "1.0.0", @@ -1300,13 +1320,13 @@ } }, "notifications": { - "version": "1.0.0", + "version": "1.0.1", "description": "Multi-channel notification service. Channels: Email (SMTP), Push (placeholder), SMS (placeholder). HTTP endpoints for sending notifications, managing templates, and user notification preferences.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/notifications-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/notifications-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/notifications/tarball", "requires_license": false, "language": "go", @@ -1331,16 +1351,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" - } + }, + "checksum": "7a2e1d5e9c2043a52b7767bafca901625d2ea156196d736c69de38f59d5e406c", + "checksums": { + "sha256": "7a2e1d5e9c2043a52b7767bafca901625d2ea156196d736c69de38f59d5e406c" + }, + "releaseTag": "v1.0.1" }, "notify": { - "version": "1.0.0", + "version": "1.0.1", "description": "Multi-channel notification service. Channels: Email (SMTP), Webhook (HMAC-signed). HTTP endpoints for sending notifications, managing templates, and viewing delivery history.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/notify-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/notify-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/notify/tarball", "requires_license": false, "tier_pair": true, @@ -1363,7 +1388,12 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" - } + }, + "checksum": "0594ae00ced6c6ec04ae388ebc9ff654e8b71baf7799f9ca75bb7b040ee96ee2", + "checksums": { + "sha256": "0594ae00ced6c6ec04ae388ebc9ff654e8b71baf7799f9ca75bb7b040ee96ee2" + }, + "releaseTag": "v1.0.1" }, "ollama": { "version": "1.1.1", @@ -1562,13 +1592,13 @@ } }, "search": { - "version": "1.0.0", + "version": "1.0.1", "description": "Full-text search engine with PostgreSQL FTS and MeiliSearch support", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/search-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/search-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/search/tarball", "requires_license": false, "language": "go", @@ -1598,7 +1628,12 @@ }, "bundles": [ "task" - ] + ], + "checksum": "631876a4982ca5129a095b44f699cf835aeba3897b8fdbd7c8c39a333c338796", + "checksums": { + "sha256": "631876a4982ca5129a095b44f699cf835aeba3897b8fdbd7c8c39a333c338796" + }, + "releaseTag": "v1.0.1" }, "sentry-cli": { "version": "1.0.0", @@ -3414,13 +3449,13 @@ "tables": [] }, "storage": { - "version": "1.0.0", + "version": "1.0.1", "description": "S3-compatible file storage: bucket management, object PUT/GET/DELETE/LIST, presigned URLs, per-tenant isolation.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/storage-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/storage-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/storage/tarball", "requires_license": false, "language": "go", @@ -3435,7 +3470,12 @@ "name": "storage", "author": "nself", "minNselfVersion": "1.1.0", - "tables": [] + "tables": [], + "checksum": "8f9edd9027ad44526fdede098370d549ca20495dcd9b11ff190a4832e82f9c1c", + "checksums": { + "sha256": "8f9edd9027ad44526fdede098370d549ca20495dcd9b11ff190a4832e82f9c1c" + }, + "releaseTag": "v1.0.1" }, "storage-transform": { "version": "1.1.2", From b7ebf3b8455884f56895e7668b9ef949ee309300 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 4 Sep 2026 07:01:24 -0400 Subject: [PATCH 02/18] release(prep): expand v1.0.1 to all 129 free plugins (70 were unpublished) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit plugins#84 found that 70 of the 129 free plugins have no published tarball for the version registry.json currently states (11 have no release tag for that version at all, 59 have the tag but no matching *-.tar.gz asset — every *@1.1.2 entry). nself plugin install 404s for all 70 today, independent of the original 8-plugin scope of this PR. Aligns every free-registry entry's version to 1.0.1 (128 of 129 — ollama stays at its already-published, working 1.1.1; forcing it back would be a regression) and rewrites each tarball URL + plugin.json version to match (CI's version-consistency gate requires the two to agree). Writes checksum + checksums.sha256 + releaseTag for 128 of 129 entries from the tarballs scripts/build-tarballs.sh built this session (pipeline- generated, not TOFU) — checksum coverage 1/129 -> 128/129. shared-utils (installable: false, no tarball/download_url field, an internal library other plugins import at build time) has nothing to checksum against. ollama's checksum was still populated, from its real published v1.1.1 asset downloaded and hashed this session (matches the existing .sha256 sidecar byte for byte). plugins#84's 51 newly-populated TOFU baseline checksums are superseded for every entry whose version moved here — they were computed against each entry's prior version, which no longer matches. Tarballs are NOT included in this commit (dist/ stays gitignored); all 129 are attached to the v1.0.1 GitHub Release by the owner per the PR body. No merge, tag, or release performed here — see .github/RELEASE-v1.0.1.md for the three owner commands this PR sets up. --- .github/RELEASE-v1.0.1.md | 187 ++-- free/access-controls/plugin.json | 2 +- free/admin-api/plugin.json | 2 +- free/ai-cli/plugin.json | 2 +- free/ai-studio/plugin.json | 2 +- free/alerts/plugin.json | 4 +- free/analytics/plugin.json | 2 +- free/api/plugin.json | 2 +- free/audit-analytics/plugin.json | 2 +- free/audit-log/plugin.json | 2 +- free/audit/plugin.json | 2 +- free/auth-enterprise/plugin.json | 2 +- free/backup/plugin.json | 2 +- free/byok/plugin.json | 4 +- free/cdc/plugin.json | 4 +- free/cdn/plugin.json | 2 +- free/claw-cli/plugin.json | 2 +- free/cloudflare/plugin.json | 2 +- free/compliance/plugin.json | 2 +- free/content-acquisition/plugin.json | 2 +- free/content-safety/plugin.json | 2 +- free/costs/plugin.json | 4 +- free/crdt/plugin.json | 2 +- free/ddns/plugin.json | 2 +- free/devices/plugin.json | 2 +- free/dlq/plugin.json | 4 +- free/documents/plugin.json | 2 +- free/dogfood/plugin.json | 2 +- free/dr/plugin.json | 2 +- free/e2ee/plugin.json | 2 +- free/email/plugin.json | 2 +- free/encryption/plugin.json | 4 +- free/entitlements/plugin.json | 2 +- free/event-bus/plugin.json | 2 +- free/family-ancestry/plugin.json | 4 +- free/family-familysearch/plugin.json | 4 +- free/family-gedcom/plugin.json | 33 +- free/family-myheritage/plugin.json | 4 +- free/family-wikitree/plugin.json | 4 +- free/feature-flags/plugin.json | 2 +- free/federation/plugin.json | 2 +- free/file-processing/plugin.json | 2 +- free/flags/plugin.json | 2 +- free/forgejo/plugin.json | 2 +- free/functions-v8/plugin.json | 2 +- free/game-metadata/plugin.json | 2 +- free/gateway/plugin.json | 2 +- free/gauth/plugin.json | 2 +- free/gdpr/plugin.json | 2 +- free/geocoding/plugin.json | 2 +- free/github-runner/plugin.json | 2 +- free/github/plugin.json | 2 +- free/hipaa/plugin.json | 4 +- free/home/plugin.json | 2 +- free/idme/plugin.json | 2 +- free/infra/plugin.json | 2 +- free/invitations/plugin.json | 2 +- free/job-queue/plugin.json | 2 +- free/jobs/plugin.json | 2 +- free/k8s/plugin.json | 4 +- free/link-preview/plugin.json | 2 +- free/linkedin/plugin.json | 2 +- free/mail/plugin.json | 4 +- free/mdns/plugin.json | 2 +- free/media-processing/plugin.json | 2 +- free/meetings/plugin.json | 2 +- free/mlflow/plugin.json | 2 +- free/model/plugin.json | 2 +- free/monitor/plugin.json | 4 +- free/monitoring/plugin.json | 2 +- free/nself-cloud/plugin.json | 6 +- free/nself-eval-gate/plugin.json | 2 +- free/nself-geo/plugin.json | 2 +- free/nself-image/plugin.json | 2 +- free/nself-pdf/plugin.json | 2 +- free/nself-scan/plugin.json | 6 +- free/nself-sync/plugin.json | 2 +- free/nself-vault/plugin.json | 2 +- free/object-storage/plugin.json | 2 +- free/observability/plugin.json | 2 +- free/payments/plugin.json | 2 +- free/paypal/plugin.json | 2 +- free/pentest-kit/plugin.json | 2 +- free/pentest/plugin.json | 4 +- free/plugin-clawde/plugin.json | 2 +- free/plugin-gauth/plugin.json | 2 +- free/plugin-llm-gateway/plugin.json | 2 +- free/plugin-pty/plugin.json | 2 +- free/plugin-retrieval/plugin.json | 2 +- free/podcast/plugin.json | 2 +- free/post/plugin.json | 2 +- free/push/plugin.json | 6 +- free/queue/plugin.json | 2 +- free/region/plugin.json | 2 +- free/release/plugin.json | 2 +- free/retro-gaming/plugin.json | 2 +- free/rom-discovery/plugin.json | 2 +- free/sentry-cli/plugin.json | 2 +- free/shared-utils/plugin.json | 22 +- free/shopify/plugin.json | 2 +- free/siem/plugin.json | 2 +- free/sms/plugin.json | 2 +- free/soak/plugin.json | 2 +- free/sports/plugin.json | 2 +- free/storage-transform/plugin.json | 2 +- free/stripe/plugin.json | 2 +- free/subtitle-manager/plugin.json | 2 +- free/tenant-controller/plugin.json | 2 +- free/tenant/plugin.json | 2 +- free/tmdb/plugin.json | 2 +- free/tokens/plugin.json | 2 +- free/torrent-manager/plugin.json | 2 +- free/transactional-email/plugin.json | 2 +- free/vpn/plugin.json | 2 +- free/waf/plugin.json | 2 +- free/warehouse/plugin.json | 4 +- free/watchdog/plugin.json | 4 +- free/web3/plugin.json | 2 +- free/webhooks/plugin.json | 2 +- free/workflows/plugin.json | 2 +- registry.json | 1249 +++++++++++++++++++------- 121 files changed, 1240 insertions(+), 531 deletions(-) diff --git a/.github/RELEASE-v1.0.1.md b/.github/RELEASE-v1.0.1.md index 8fdf2df6..1d71a6e6 100644 --- a/.github/RELEASE-v1.0.1.md +++ b/.github/RELEASE-v1.0.1.md @@ -1,77 +1,152 @@ -# v1.0.1 — repackaged free plugins +# v1.0.1 — all 129 free plugins + +## Scope change from the original plan + +This PR originally bumped 8 repackaged plugins (content-progress, cron, +donorbox, maintenance, notifications, notify, search, storage — PRs +#78/#79/#80) to `1.0.1`. **It now covers all 129 free-registry entries.** + +The reason: plugins#84 (data audit, still open) found that **70 of the 129 +free plugins have no published tarball for the version `registry.json` +currently states** — 11 have no release tag at all for that version, and 59 +have the tag but no matching `-.tar.gz` asset in it (every +`*@1.1.2` entry in particular — that release is a partial re-release of a +different, mostly-1.0.0 plugin set, not a superset). `nself plugin install` +404s for all 70 of these today, independent of anything this PR changes. +Bumping only the 8 already-repackaged plugins would have shipped a v1.0.1 +release that still left the other 121 registry entries pointing at broken +or unverified download links. Full defect list: plugins#84. + +**v1.0.1 fixes this by aligning every registry entry's version to `1.0.1` +and having the build pipeline produce a real, matching tarball for all of +them**, so `download_url` → `tarball` → the release asset is a working +chain for the whole free catalog, not just 8 plugins. ## What changed -Eight free plugins were repackaged in PRs #78/#79/#80 (self-contained build -contexts, `/health` routes on the seven that run an HTTP server, stale -license gates removed) but `registry.json` still pointed at the v1.0.0 -tarballs on the `v1.0.0` GitHub Release. `nself plugin install ` for -any of these eight therefore still installed the pre-#78/#79/#80 code. - -This release bumps those eight plugins' `version` to `1.0.1` (in both -`registry.json` and each plugin's own `plugin.json`, which CI's version- -consistency gate requires to match) and republishes their tarballs under -tag `v1.0.1`, so the registry worker's tarball redirect -(`.workers/plugins-registry/src/index.ts` `handlePluginTarball`, which -builds the GitHub Releases URL from `plugin.version`) starts serving the -repackaged code. - -**Plugins bumped 1.0.0 → 1.0.1** (all free, `requires_license: false`): -content-progress, cron, donorbox, maintenance, notifications, notify, -search, storage. - -Nothing else in the registry changed — the other 121 plugins keep their -existing versions and tarball URLs. - -## Also recorded on the registry entries - -- `checksum` (flat field) — the field `internal/plugin/registry_parse.go`'s - `pluginEntry` actually deserializes (`json:"checksum"`) and - `verifyChecksum` in `internal/plugin/installer_locked.go` checks against. - Populated with the tarball's real SHA-256 for all eight. -- `checksums.sha256` and `releaseTag` — the fields `registry-schema.json` - documents and `build-and-upload-tarballs.sh` writes. Populated too, for - schema/tooling parity, even though nothing in this repo or the deployed - worker currently reads them (see Known gap below). - -None of the eight plugins have `"status": "stable"` set, so -`verifyChecksum` does not hard-fail installs that lack a checksum — but a -correct one is now present regardless. +- `registry.json` — `version` set to `1.0.1` for 128 of 129 entries (see + exceptions below), `tarball` URL rewritten to + `.../releases/download/v1.0.1/-1.0.1.tar.gz`, `releaseTag` set to + `v1.0.1`. +- Each plugin's own `free//plugin.json` — `version` bumped to `1.0.1` + to match (CI's version-consistency gate requires the two to agree; see + `.github/workflows/registry-check.yml` "Registry version consistency + check"). +- `scripts/build-tarballs.sh 1.0.1` built a tarball for all 129 plugins + under `free/`. All 129 tarballs + `.sha256` files are kept for the + release upload (`dist/` stays gitignored — not committed to git). +- `checksum` (flat field — what `internal/plugin/registry_parse.go` + actually deserializes and `installer_locked.go`'s `verifyChecksum` + checks) and `checksums.sha256` (nested — what `registry-schema.json` + documents and `build-and-upload-tarballs.sh` writes) written for every + entry from the tarball this pipeline actually built this session — not + trust-on-first-use against an already-published asset. **Checksum + coverage: 128/129**, up from 1/129 before this PR. + +## Two exceptions (not bumped to 1.0.1) — and why + +- **`ollama`** stays at `1.1.1`. It already has a real, working, + currently-served release (`v1.1.1`, verified: `ollama-1.1.1.tar.gz` is a + genuine asset on that tag) — forcing it back to `1.0.1` would have been a + regression, shipping older code under a newer-looking version number. + Its `checksum`/`checksums.sha256`/`releaseTag` were still written this + session: the real `v1.1.1` asset was downloaded from the GitHub release + and hashed (`affe917f...9d52f`), matching the already-published + `.sha256` sidecar file byte-for-byte. This replaces the previous empty + `""` placeholder with a verified value, without touching its version. +- **`shared-utils`** has no `checksum` (129th entry, the only one without + one). It's `installable: false` in its own `plugin.json` — an internal Go + library (request-ID tracing middleware, HTTP client propagation) other + free plugins import at build time, not something a user ever + `nself plugin install`s directly. It has no `tarball`/`download_url` + field in `registry.json` at all (not added here, to avoid implying it's + independently distributable) — there is nothing for a checksum to + attest to. Its `version` was still bumped to `1.0.1` for consistency + with its own `plugin.json`, and `scripts/build-tarballs.sh` (which walks + every `free/*/plugin.json` unconditionally) still built a + `shared-utils-1.0.1.tar.gz` — kept in the upload set for completeness, + simply not referenced by any registry field. + +## plugins#84 TOFU baselines — superseded + +plugins#84 populated the flat `checksum` field for 51 previously-empty +entries (plus fixing the pre-existing `ollama` `""` placeholder) as +trust-on-first-use baselines against each entry's **then-current** +published version. Every one of those 51 entries' `version` has now moved +to `1.0.1` in this PR, so plugins#84's baseline checksums — computed +against the old version's asset — no longer match the `version` field they +would be checked against and are superseded by the pipeline-generated +values here. plugins#84 itself is unaffected/still valid as a historical +record of the TOFU methodology; its checksums for the moved entries should +not be merged over this PR's. ## Known gap (pre-existing, not introduced by this PR) -`registry-schema.json` and `build-and-upload-tarballs.sh` write checksums to -the nested `checksums.sha256` field. The CLI's registry parser +`registry-schema.json` and `build-and-upload-tarballs.sh` write checksums +to the nested `checksums.sha256` field. The CLI's registry parser (`internal/plugin/registry_parse.go`) only ever reads the flat `checksum` -field — `checksums.sha256` is never consulted. Any future release built by -running `build-and-upload-tarballs.sh` as-is will silently populate a field -the installer ignores. Worth a follow-up ticket to fix the script (or add -the flat alias) so this doesn't bite a `status: stable` plugin later. - -## `scripts/build-tarballs.sh` behavior - -`scripts/build-tarballs.sh 1.0.1` builds a tarball for **every** plugin -under `free/` (129 of them) at the single VERSION argument you pass, tagging -even untouched plugins as `-1.0.1.tar.gz` — it does not read each -plugin's own `registry.json` version. This release keeps only the 8 -relevant tarballs; the other 121 mislabeled ones were discarded, not -uploaded, and never committed (dist/ is gitignored). +field — `checksums.sha256` is never consulted. Both are populated here for +schema/tooling parity, but only the flat field is load-bearing for install +verification today. ## `maintenance` has no `/health` route `maintenance` is a Cobra CLI tool (`cmd/main.go`, disk-cleanup/scheduler subcommands) with no HTTP server anywhere in its source — it never had a `/health` route and #78/#79 didn't add one, correctly, since there is no -HTTP surface to health-check. This is not a gap in this release. - -## Verify commands +HTTP surface to health-check. Not a gap in this release. + +## Local gate (self-hosted CI backlog — per P6 crunch brief §8, not watched) + +- `python3 -c "import json; json.load(open('registry.json'))"` — valid. +- Version-consistency check (mirrors `.github/workflows/registry-check.yml` + "Registry version consistency check", reproduced by hand across all 129 + `free/*/plugin.json` files): 0 mismatches. +- `bash shared/validate-registry.sh` — 0 errors, 1 pre-existing unrelated + warning (alphabetical sort order — same before and after this change). +- `bash shared/validate-registry.sh --strict` — 0 errors, 1 additional + informational warning (strict legacy schema mode not re-enabled in v2 — + script-level notice, not a registry defect). +- 5 randomly sampled built tarballs (`job-queue`, `nself-eval-gate`, + `devices`, `release`, `vpn`) extracted cleanly to `free//` with a + `plugin.json` at `version: 1.0.1` inside. +- `pnpm run ci:local` — passes (no tsconfig in this repo, gate no-ops by + design, same as before). + +This is a PUBLIC repo (`nself-org/plugins`) — this account cannot +self-approve, so this PR stays open per the P6 crunch brief. GitHub-hosted +Actions will run automatically; not watched here per brief §8. + +## This PR does NOT merge, tag, or release anything + +Per the P6 crunch brief this session may not create tags, run +`gh release create`, or merge. The owner's remaining action, once this PR +is approved, is exactly these three commands: ```bash -# Tarball redirect resolves to the new release +# 1. Merge this PR (owner reviews + merges), then tag the merge commit: +git -C fetch origin main +git -C tag v1.0.1 +git -C push origin v1.0.1 + +# 2. Create the release and attach all 129 tarballs + their .sha256 files +# (built locally in this session, NOT committed to git — dist/ stays +# gitignored). ollama is intentionally NOT among these 129 — it ships +# under its own existing v1.1.1 release, untouched by this PR: +gh release create v1.0.1 -R nself-org/plugins \ + /private/tmp/claude-501/-Volumes-UG-Sites-nself/fc66fc90-9fbd-441a-8372-5626c5d07a60/scratchpad/plugins-v1.0.1-dist/upload-all/*.tar.gz \ + /private/tmp/claude-501/-Volumes-UG-Sites-nself/fc66fc90-9fbd-441a-8372-5626c5d07a60/scratchpad/plugins-v1.0.1-dist/upload-all/*.tar.gz.sha256 \ + -F .github/RELEASE-v1.0.1.md + +# 3. Verify (tarball redirect + a previously-404ing plugin + a fresh install): curl -sI https://plugins.nself.org/plugins/storage/tarball # expect: HTTP/2 302, location: .../releases/download/v1.0.1/storage-1.0.1.tar.gz -# Fresh install reaches a healthy container +curl -sI https://plugins.nself.org/plugins/access-controls/tarball +# expect: HTTP/2 302 (was 404 before this release — one of plugins#84's 70) + nself plugin install notifications curl -sf http://localhost:/health ``` + +**Do not merge until the owner has reviewed this PR and given the go-ahead.** diff --git a/free/access-controls/plugin.json b/free/access-controls/plugin.json index c43e1dd9..0c94c10d 100644 --- a/free/access-controls/plugin.json +++ b/free/access-controls/plugin.json @@ -1,6 +1,6 @@ { "name": "access-controls", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Role-based and attribute-based access control (RBAC + ABAC) with policy engine", "author": "nself", diff --git a/free/admin-api/plugin.json b/free/admin-api/plugin.json index 185fdd80..400fac3d 100644 --- a/free/admin-api/plugin.json +++ b/free/admin-api/plugin.json @@ -1,6 +1,6 @@ { "name": "admin-api", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Admin API service providing aggregated metrics, system health, session counts, storage breakdown, and real-time dashboard endpoints", "author": "nself", diff --git a/free/ai-cli/plugin.json b/free/ai-cli/plugin.json index 142aca50..9dd816d5 100644 --- a/free/ai-cli/plugin.json +++ b/free/ai-cli/plugin.json @@ -1,6 +1,6 @@ { "name": "ai-cli", - "version": "1.0.0", + "version": "1.0.1", "description": "AI operations for nSelf: chat, local Ollama model management, and Gemini API key pool provisioning and rotation.", "author": "nself", "license": "MIT", diff --git a/free/ai-studio/plugin.json b/free/ai-studio/plugin.json index 13d5ec45..d06b5580 100644 --- a/free/ai-studio/plugin.json +++ b/free/ai-studio/plugin.json @@ -1,6 +1,6 @@ { "name": "ai-studio", - "version": "1.0.0", + "version": "1.0.1", "description": "Google AI Studio integration for local nSelf instances: secure Cloudflare Tunnel bridge with schema-context injection and read-only enforcement.", "author": "nself", "license": "MIT", diff --git a/free/alerts/plugin.json b/free/alerts/plugin.json index 3c917e96..20f870af 100644 --- a/free/alerts/plugin.json +++ b/free/alerts/plugin.json @@ -1,6 +1,6 @@ { "name": "alerts", - "version": "1.0.0", + "version": "1.0.1", "description": "Manage Prometheus alert rules and Alertmanager silences: list, silence, and send synthetic test alerts.", "author": "nself", "license": "MIT", @@ -45,5 +45,5 @@ "required": [], "optional": [] }, - "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install alerts` must place the built nself-alerts binary at ~/.nself/plugins/bin/nself-alerts, where internal/plugin/router.go's ProxyCommand execs it for `nself alerts ` with stdio inherited. Extracted from cli/cmd/commands/alerts.go and cli/internal/alerts/ under CLI-R11 \u2014 internal/alerts was self-contained (stdlib only, plus exec of amtool/curl) and moved wholesale unchanged. The only core-side change was decoupling internal/admin/alerts.go, which used the same package purely to describe two static admin alert rules \u2014 it now defines its own minimal type." + "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install alerts` must place the built nself-alerts binary at ~/.nself/plugins/bin/nself-alerts, where internal/plugin/router.go's ProxyCommand execs it for `nself alerts ` with stdio inherited. Extracted from cli/cmd/commands/alerts.go and cli/internal/alerts/ under CLI-R11 — internal/alerts was self-contained (stdlib only, plus exec of amtool/curl) and moved wholesale unchanged. The only core-side change was decoupling internal/admin/alerts.go, which used the same package purely to describe two static admin alert rules — it now defines its own minimal type." } diff --git a/free/analytics/plugin.json b/free/analytics/plugin.json index 77e94db0..b622e3f0 100644 --- a/free/analytics/plugin.json +++ b/free/analytics/plugin.json @@ -1,6 +1,6 @@ { "name": "analytics", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Event tracking, counters, funnels, and quota management analytics engine", "author": "nself", diff --git a/free/api/plugin.json b/free/api/plugin.json index eefa6fc1..66426208 100644 --- a/free/api/plugin.json +++ b/free/api/plugin.json @@ -1,6 +1,6 @@ { "name": "api", - "version": "1.0.0", + "version": "1.0.1", "description": "Inspect the nSelf plugin API surface: endpoint probes, deprecation calendar, and the API changelog.", "author": "nself", "license": "MIT", diff --git a/free/audit-analytics/plugin.json b/free/audit-analytics/plugin.json index b6a6f0ae..c9534f4c 100644 --- a/free/audit-analytics/plugin.json +++ b/free/audit-analytics/plugin.json @@ -1,6 +1,6 @@ { "name": "audit-analytics", - "version": "1.0.0", + "version": "1.0.1", "api_version": "1.0.0", "description": "Advanced audit analytics over np_audit_log: anomaly detection (z-score baseline), user behaviour heatmaps, privileged-action review queue, and webhook/email alerts.", "author": "nself", diff --git a/free/audit-log/plugin.json b/free/audit-log/plugin.json index a7b9b6e4..a4fc8f32 100644 --- a/free/audit-log/plugin.json +++ b/free/audit-log/plugin.json @@ -1,6 +1,6 @@ { "name": "audit-log", - "version": "1.0.0", + "version": "1.0.1", "description": "Append-only audit log for security-relevant events: auth, privilege change, secret access, plugin install/uninstall. Queryable from Admin with filters by event type, actor, severity, and time range.", "author": "nself", "license": "MIT", diff --git a/free/audit/plugin.json b/free/audit/plugin.json index 438ee6b3..987635d1 100644 --- a/free/audit/plugin.json +++ b/free/audit/plugin.json @@ -1,6 +1,6 @@ { "name": "audit", - "version": "1.0.0", + "version": "1.0.1", "description": "Ecosystem documentation audit: banned words, dead links, and missing anchors across READMEs, wiki, docs, SPORT, PPI, and PRI.", "author": "nself", "license": "MIT", diff --git a/free/auth-enterprise/plugin.json b/free/auth-enterprise/plugin.json index b713392b..08b7f3c3 100644 --- a/free/auth-enterprise/plugin.json +++ b/free/auth-enterprise/plugin.json @@ -1,6 +1,6 @@ { "name": "auth-enterprise", - "version": "1.1.2", + "version": "1.0.1", "description": "MFA enforcement (TOTP + WebAuthn policy) and SSO via SAML 2.0 and OIDC for Google Workspace, Okta, and Microsoft Entra ID.", "category": "authentication", "isCommercial": false, diff --git a/free/backup/plugin.json b/free/backup/plugin.json index 27002ab3..56a5d51f 100644 --- a/free/backup/plugin.json +++ b/free/backup/plugin.json @@ -1,6 +1,6 @@ { "name": "backup", - "version": "1.0.0", + "version": "1.0.1", "description": "PostgreSQL backup and restore automation with scheduling", "author": "nself", "license": "MIT", diff --git a/free/byok/plugin.json b/free/byok/plugin.json index bba1f072..2904f979 100644 --- a/free/byok/plugin.json +++ b/free/byok/plugin.json @@ -1,6 +1,6 @@ { "name": "byok", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Bring Your Own Key (BYOK) per-tenant encryption. Envelope encryption with customer-managed keys (CMK) via AWS KMS, GCP Cloud KMS, or HashiCorp Vault Transit. DEK wrapped by CMK. Satisfies HIPAA, FedRAMP High, FFIEC, and DORA key-control requirements. Enterprise-only.", "author": "nself", @@ -59,7 +59,7 @@ "kms.configured": "KMS provider configured for tenant", "kms.verified": "KMS connectivity verified", "key.rotated": "Key rotation job completed", - "key.revoked": "CMK revoked \u2014 data access blocked", + "key.revoked": "CMK revoked — data access blocked", "rotation.started": "Key rotation job started", "rotation.failed": "Key rotation job failed" }, diff --git a/free/cdc/plugin.json b/free/cdc/plugin.json index 428f315c..0097356f 100644 --- a/free/cdc/plugin.json +++ b/free/cdc/plugin.json @@ -1,8 +1,8 @@ { "name": "cdc", - "version": "1.0.0", + "version": "1.0.1", "api_version": "1.0.0", - "description": "Change Data Capture \u2014 streams Postgres WAL events to downstream consumers via webhooks or message queues.", + "description": "Change Data Capture — streams Postgres WAL events to downstream consumers via webhooks or message queues.", "author": "nself", "license": "MIT", "isCommercial": false, diff --git a/free/cdn/plugin.json b/free/cdn/plugin.json index d06fac77..dce48ac3 100644 --- a/free/cdn/plugin.json +++ b/free/cdn/plugin.json @@ -1,6 +1,6 @@ { "name": "cdn", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "CDN management and integration plugin - cache purging, signed URLs. Planned: analytics sync from Cloudflare/BunnyCDN", "author": "nself", diff --git a/free/claw-cli/plugin.json b/free/claw-cli/plugin.json index 386e8958..6835d168 100644 --- a/free/claw-cli/plugin.json +++ b/free/claw-cli/plugin.json @@ -1,6 +1,6 @@ { "name": "claw-cli", - "version": "1.0.0", + "version": "1.0.1", "description": "CLI client for the nClaw AI assistant: prompt, chat, pairing, keys, memories, topics, sessions, MCP server, OpenAI-compatible proxy, and schema migrations.", "author": "nself", "license": "MIT", diff --git a/free/cloudflare/plugin.json b/free/cloudflare/plugin.json index a28e5a1f..8354ec40 100644 --- a/free/cloudflare/plugin.json +++ b/free/cloudflare/plugin.json @@ -1,6 +1,6 @@ { "name": "cloudflare", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Cloudflare zone, DNS, R2, cache, and analytics management", "author": "nself", diff --git a/free/compliance/plugin.json b/free/compliance/plugin.json index 761ae5b3..79ed7bcf 100644 --- a/free/compliance/plugin.json +++ b/free/compliance/plugin.json @@ -1,6 +1,6 @@ { "name": "compliance", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Comprehensive compliance and audit platform with GDPR/CCPA/HIPAA/SOC2/PCI management, DSARs, consent tracking, data retention, breach notification, immutable audit logging, SIEM integration, and compliance reporting", "author": "nself", diff --git a/free/content-acquisition/plugin.json b/free/content-acquisition/plugin.json index 9d8f5951..db3fe76b 100644 --- a/free/content-acquisition/plugin.json +++ b/free/content-acquisition/plugin.json @@ -1,6 +1,6 @@ { "name": "content-acquisition", - "version": "1.0.0", + "version": "1.0.1", "description": "Content acquisition with download rules engine. Planned: RSS feed monitoring, release calendar integration, automated download orchestration", "author": "nself", "license": "MIT", diff --git a/free/content-safety/plugin.json b/free/content-safety/plugin.json index f7cf5a5b..f96d6979 100644 --- a/free/content-safety/plugin.json +++ b/free/content-safety/plugin.json @@ -1,7 +1,7 @@ { "name": "content-safety", "displayName": "ɳSelf Content Safety", - "version": "1.0.0", + "version": "1.0.1", "description": "Trust-safety evidence, legal holds, spam detection, raid protection, and abuse scoring", "author": "nSelf", "license": "MIT", diff --git a/free/costs/plugin.json b/free/costs/plugin.json index f795013b..604edf10 100644 --- a/free/costs/plugin.json +++ b/free/costs/plugin.json @@ -1,6 +1,6 @@ { "name": "costs", - "version": "1.0.0", + "version": "1.0.1", "description": "Show estimated per-install operational costs: Hetzner VPS, Cloudflare, Vercel, Stripe fees, and installed paid plugin licenses.", "author": "nself", "license": "MIT", @@ -44,5 +44,5 @@ "required": [], "optional": [] }, - "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install costs` must place the built nself-costs binary at ~/.nself/plugins/bin/nself-costs, where internal/plugin/router.go's ProxyCommand execs it for `nself costs ` with stdio inherited. Extracted from cli/cmd/commands/costs.go under CLI-R11. The core CLI's internal/plugin.ListInstalled() is unreachable across the module boundary, so this plugin's internal/plugininfo package reimplements only the narrow read it needs (plugin.json's tier/requires_license/licenseType fields) rather than the full manifest validation internal/plugin performs at install time \u2014 see that package's doc comment for the exact scope of the simplification." + "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install costs` must place the built nself-costs binary at ~/.nself/plugins/bin/nself-costs, where internal/plugin/router.go's ProxyCommand execs it for `nself costs ` with stdio inherited. Extracted from cli/cmd/commands/costs.go under CLI-R11. The core CLI's internal/plugin.ListInstalled() is unreachable across the module boundary, so this plugin's internal/plugininfo package reimplements only the narrow read it needs (plugin.json's tier/requires_license/licenseType fields) rather than the full manifest validation internal/plugin performs at install time — see that package's doc comment for the exact scope of the simplification." } diff --git a/free/crdt/plugin.json b/free/crdt/plugin.json index 2f656d66..626ea5fd 100644 --- a/free/crdt/plugin.json +++ b/free/crdt/plugin.json @@ -1,6 +1,6 @@ { "name": "crdt", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.3.0", "description": "CRDT offline-first primitives. Self-hosted Yjs (y-websocket protocol) and automerge sync server with Postgres persistence. Drop-in replacement for Liveblocks/PartyKit with zero extra infra.", "author": "nself", diff --git a/free/ddns/plugin.json b/free/ddns/plugin.json index 990457ef..640c5da2 100644 --- a/free/ddns/plugin.json +++ b/free/ddns/plugin.json @@ -1,6 +1,6 @@ { "name": "ddns", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Dynamic DNS plugin with external IP monitoring. Planned: DNS provider API integration (Cloudflare, Route53) for automated record updates", "author": "nself", diff --git a/free/devices/plugin.json b/free/devices/plugin.json index d2a6ee39..ca36f932 100644 --- a/free/devices/plugin.json +++ b/free/devices/plugin.json @@ -1,6 +1,6 @@ { "name": "devices", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "IoT device enrollment, trust management, and command dispatch service.", "author": "nself", diff --git a/free/dlq/plugin.json b/free/dlq/plugin.json index 925b59da..c8fc5a4e 100644 --- a/free/dlq/plugin.json +++ b/free/dlq/plugin.json @@ -1,6 +1,6 @@ { "name": "dlq", - "version": "1.0.0", + "version": "1.0.1", "description": "Manage dead-letter queues for nSelf plugins: re-enqueue rows that failed processing back to the work queue, with safe row limits and dry-run preview.", "author": "nself", "license": "MIT", @@ -46,5 +46,5 @@ "required": [], "optional": [] }, - "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables of its own \u2014 it calls the running stack's REST API (default http://localhost:8080) to fetch and replay a named plugin's DLQ rows. `nself plugin install dlq` must place the built nself-dlq binary at ~/.nself/plugins/bin/nself-dlq, where internal/plugin/router.go's ProxyCommand execs it for `nself dlq ` with stdio inherited. Extracted from cli/cmd/commands/dlq_replay.go under CLI-R11 \u2014 a straight file move, since the command had zero github.com/nself-org/cli/internal/* dependencies beyond internal/dlq itself." + "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables of its own — it calls the running stack's REST API (default http://localhost:8080) to fetch and replay a named plugin's DLQ rows. `nself plugin install dlq` must place the built nself-dlq binary at ~/.nself/plugins/bin/nself-dlq, where internal/plugin/router.go's ProxyCommand execs it for `nself dlq ` with stdio inherited. Extracted from cli/cmd/commands/dlq_replay.go under CLI-R11 — a straight file move, since the command had zero github.com/nself-org/cli/internal/* dependencies beyond internal/dlq itself." } diff --git a/free/documents/plugin.json b/free/documents/plugin.json index 8c5c62d7..b7800956 100644 --- a/free/documents/plugin.json +++ b/free/documents/plugin.json @@ -1,6 +1,6 @@ { "name": "documents", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Document management and generation service with templates, versioning, and sharing", "author": "nself", diff --git a/free/dogfood/plugin.json b/free/dogfood/plugin.json index a1fdef61..cdd32823 100644 --- a/free/dogfood/plugin.json +++ b/free/dogfood/plugin.json @@ -1,6 +1,6 @@ { "name": "dogfood", - "version": "1.0.0", + "version": "1.0.1", "description": "Production dogfood audit and reporting: 21 read-only checks covering backups, DR, tenancy, licensing, secrets, migrations, monitoring, security, watchdog, and queue health.", "author": "nself", "license": "MIT", diff --git a/free/dr/plugin.json b/free/dr/plugin.json index 6c099427..4d2c0798 100644 --- a/free/dr/plugin.json +++ b/free/dr/plugin.json @@ -1,6 +1,6 @@ { "name": "dr", - "version": "1.0.0", + "version": "1.0.1", "description": "Disaster recovery: promote a standby, fence the old primary, run drills, and install the systemd units DR needs.", "author": "nself", "license": "MIT", diff --git a/free/e2ee/plugin.json b/free/e2ee/plugin.json index 830e59e3..9b302085 100644 --- a/free/e2ee/plugin.json +++ b/free/e2ee/plugin.json @@ -1,6 +1,6 @@ { "name": "e2ee", - "version": "1.0.0", + "version": "1.0.1", "description": "End-to-end encryption key directory: X3DH prekey distribution + Kyber-1024 (ML-KEM-1024) post-quantum prekeys for nchat. Server stores PUBLIC keys only; private keys never leave the client.", "author": "nself", "license": "MIT", diff --git a/free/email/plugin.json b/free/email/plugin.json index 21d5386a..7ebce9d7 100644 --- a/free/email/plugin.json +++ b/free/email/plugin.json @@ -1,6 +1,6 @@ { "name": "email", - "version": "1.0.0", + "version": "1.0.1", "displayName": "plugin-email", "description": "Transactional email via Elastic Email. Send, template, and track emails.", "port": 9008, diff --git a/free/encryption/plugin.json b/free/encryption/plugin.json index 491bda30..2f337083 100644 --- a/free/encryption/plugin.json +++ b/free/encryption/plugin.json @@ -1,6 +1,6 @@ { "name": "encryption", - "version": "1.0.0", + "version": "1.0.1", "description": "Bring Your Own Key (BYOK) per-tenant envelope encryption for nSelf Cloud: AWS KMS, GCP Cloud KMS, and HashiCorp Vault Transit, with key rotation and an audit trail.", "author": "nself", "license": "MIT", @@ -51,5 +51,5 @@ "required": [], "optional": [] }, - "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables of its own \u2014 it calls the BYOK plugin's own HTTP API (default http://localhost:3741). `nself plugin install encryption` must place the built nself-encryption binary at ~/.nself/plugins/bin/nself-encryption, where internal/plugin/router.go's ProxyCommand execs it for `nself encryption ` with stdio inherited. Extracted from cli/cmd/commands/encryption.go under CLI-R11 \u2014 a straight file move, since the command had zero github.com/nself-org/cli/internal/* dependencies before extraction." + "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables of its own — it calls the BYOK plugin's own HTTP API (default http://localhost:3741). `nself plugin install encryption` must place the built nself-encryption binary at ~/.nself/plugins/bin/nself-encryption, where internal/plugin/router.go's ProxyCommand execs it for `nself encryption ` with stdio inherited. Extracted from cli/cmd/commands/encryption.go under CLI-R11 — a straight file move, since the command had zero github.com/nself-org/cli/internal/* dependencies before extraction." } diff --git a/free/entitlements/plugin.json b/free/entitlements/plugin.json index b5cca850..16e4cd89 100644 --- a/free/entitlements/plugin.json +++ b/free/entitlements/plugin.json @@ -1,6 +1,6 @@ { "name": "entitlements", - "version": "1.2.0", + "version": "1.0.1", "api_version": "1.0.0", "description": "Feature gating, subscription plan management, usage quota tracking, and metered billing", "author": "nself", diff --git a/free/event-bus/plugin.json b/free/event-bus/plugin.json index e1be9a6e..db08b921 100644 --- a/free/event-bus/plugin.json +++ b/free/event-bus/plugin.json @@ -1,6 +1,6 @@ { "name": "event-bus", - "version": "1.0.0", + "version": "1.0.1", "api_version": "1.0.0", "description": "Internal event bus with pub/sub, fan-out delivery, dead-letter queue, and replay for inter-plugin messaging.", "author": "nself", diff --git a/free/family-ancestry/plugin.json b/free/family-ancestry/plugin.json index 56232ab1..c22702c5 100644 --- a/free/family-ancestry/plugin.json +++ b/free/family-ancestry/plugin.json @@ -1,8 +1,8 @@ { "name": "family-ancestry", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", - "description": "Ancestry.com \u2192 nFamily migration helper (PLANNED). Imports profiles, photos, documents, sources into the family plugin. Pattern mirrors family-geni.", + "description": "Ancestry.com → nFamily migration helper (PLANNED). Imports profiles, photos, documents, sources into the family plugin. Pattern mirrors family-geni.", "author": "nself", "license": "MIT", "isCommercial": false, diff --git a/free/family-familysearch/plugin.json b/free/family-familysearch/plugin.json index cb45960c..91f5e629 100644 --- a/free/family-familysearch/plugin.json +++ b/free/family-familysearch/plugin.json @@ -1,8 +1,8 @@ { "name": "family-familysearch", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", - "description": "FamilySearch \u2192 nFamily migration helper (PLANNED). Free public API from FamilySearch (LDS). Lowest-friction next-step importer after family-geni.", + "description": "FamilySearch → nFamily migration helper (PLANNED). Free public API from FamilySearch (LDS). Lowest-friction next-step importer after family-geni.", "author": "nself", "license": "MIT", "isCommercial": false, diff --git a/free/family-gedcom/plugin.json b/free/family-gedcom/plugin.json index 5c61d29b..8bb47934 100644 --- a/free/family-gedcom/plugin.json +++ b/free/family-gedcom/plugin.json @@ -1,18 +1,26 @@ { "name": "family-gedcom", - "version": "0.0.1", + "version": "1.0.1", "description": "Generic GEDCOM file importer for the family plugin. Accepts any GEDCOM 5.5.1 / 7.0 file from any provider with optional photo-folder upload. PLANNED: requires the 'family' plugin (ɳFamily bundle, planned v1.1.0) and 'object-storage' + 'photos' plugins. Not installable until the family plugin ships.", "author": "nself", "license": "MIT", "isCommercial": false, "minNselfVersion": "1.0.0", "category": "social", - "tags": ["family", "genealogy", "gedcom", "migration", "importer"], + "tags": [ + "family", + "genealogy", + "gedcom", + "migration", + "importer" + ], "tables": [], "webhooks": {}, "actions": {}, "envVars": { - "required": ["DATABASE_URL"], + "required": [ + "DATABASE_URL" + ], "optional": [] }, "config": {}, @@ -23,12 +31,25 @@ "defaultValue": "primary" }, "permissions": { - "database": ["create", "read", "update", "delete"], + "database": [ + "create", + "read", + "update", + "delete" + ], "network": [], - "filesystem": ["storage", "temp", "logs"] + "filesystem": [ + "storage", + "temp", + "logs" + ] }, "dependencies": { - "plugins": ["family", "object-storage", "photos"] + "plugins": [ + "family", + "object-storage", + "photos" + ] }, "homepage": "https://nself.org/plugins", "repository": "https://github.com/nself-org/plugins", diff --git a/free/family-myheritage/plugin.json b/free/family-myheritage/plugin.json index 203fd675..0cfdf834 100644 --- a/free/family-myheritage/plugin.json +++ b/free/family-myheritage/plugin.json @@ -1,8 +1,8 @@ { "name": "family-myheritage", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", - "description": "MyHeritage \u2192 nFamily migration helper (PLANNED). MyHeritage is Geni.com's parent company \u2014 lowest legal risk, potential partnership path.", + "description": "MyHeritage → nFamily migration helper (PLANNED). MyHeritage is Geni.com's parent company — lowest legal risk, potential partnership path.", "author": "nself", "license": "MIT", "isCommercial": false, diff --git a/free/family-wikitree/plugin.json b/free/family-wikitree/plugin.json index 96ec850d..ba5a2885 100644 --- a/free/family-wikitree/plugin.json +++ b/free/family-wikitree/plugin.json @@ -1,8 +1,8 @@ { "name": "family-wikitree", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", - "description": "WikiTree \u2192 nFamily migration helper (PLANNED). WikiTree is a free public genealogy wiki with a REST API (Apps API).", + "description": "WikiTree → nFamily migration helper (PLANNED). WikiTree is a free public genealogy wiki with a REST API (Apps API).", "author": "nself", "license": "MIT", "isCommercial": false, diff --git a/free/feature-flags/plugin.json b/free/feature-flags/plugin.json index fde4eb75..47c22f12 100644 --- a/free/feature-flags/plugin.json +++ b/free/feature-flags/plugin.json @@ -1,6 +1,6 @@ { "name": "feature-flags", - "version": "1.0.0", + "version": "1.0.1", "description": "Feature flags service with targeting rules, segments, and evaluation engine", "author": "nself", "license": "MIT", diff --git a/free/federation/plugin.json b/free/federation/plugin.json index d42b0f85..227881a8 100644 --- a/free/federation/plugin.json +++ b/free/federation/plugin.json @@ -1,6 +1,6 @@ { "name": "federation", - "version": "1.0.0", + "version": "1.0.1", "description": "Manage GraphQL Federation: compose an Apollo Router supergraph from installed plugin subgraphs, check subgraph health, and introspect the composed schema.", "author": "nself", "license": "MIT", diff --git a/free/file-processing/plugin.json b/free/file-processing/plugin.json index 1a5aada7..042e4c25 100644 --- a/free/file-processing/plugin.json +++ b/free/file-processing/plugin.json @@ -1,6 +1,6 @@ { "name": "file-processing", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "File processing with thumbnails and optimization for MinIO/S3/GCS/R2/B2/Azure. Planned: Inbound webhook support for storage provider notifications", "author": "nself", diff --git a/free/flags/plugin.json b/free/flags/plugin.json index 103f148c..9f41a8fa 100644 --- a/free/flags/plugin.json +++ b/free/flags/plugin.json @@ -1,6 +1,6 @@ { "name": "flags", - "version": "1.0.0", + "version": "1.0.1", "description": "Manage feature flags served by the feature-flags plugin: list, get, set, history, canary rollouts and kill switches.", "author": "nself", "license": "MIT", diff --git a/free/forgejo/plugin.json b/free/forgejo/plugin.json index d2a94709..22ba2d4b 100644 --- a/free/forgejo/plugin.json +++ b/free/forgejo/plugin.json @@ -1,6 +1,6 @@ { "name": "forgejo", - "version": "1.0.0", + "version": "1.0.1", "description": "Self-hosted Forgejo git forge + Forgejo Actions runner. Provides offline CI that executes .github/workflows/*.yml YAML on self-hosted compute — zero GitHub Actions quota consumed. Designed for the ops profile (ops server on staging/prod).", "author": "nself", "license": "MIT", diff --git a/free/functions-v8/plugin.json b/free/functions-v8/plugin.json index 3df32d5b..594470df 100644 --- a/free/functions-v8/plugin.json +++ b/free/functions-v8/plugin.json @@ -1,6 +1,6 @@ { "name": "functions-edge", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Edge Functions V8 Runtime. Deploy short-lived TypeScript functions with a Deno V8 isolate pool. HTTP-trigger, <50ms cold-start, allowlist-only env injection, Prometheus metrics, SSE log streaming.", "author": "nself", diff --git a/free/game-metadata/plugin.json b/free/game-metadata/plugin.json index 44bfd74e..329bf90d 100644 --- a/free/game-metadata/plugin.json +++ b/free/game-metadata/plugin.json @@ -1,6 +1,6 @@ { "name": "game-metadata", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Game metadata service with IGDB integration, ROM hash matching, tier requirements, and artwork management", "author": "nself", diff --git a/free/gateway/plugin.json b/free/gateway/plugin.json index 50da5647..e083a26d 100644 --- a/free/gateway/plugin.json +++ b/free/gateway/plugin.json @@ -1,6 +1,6 @@ { "name": "gateway", - "version": "1.0.0", + "version": "1.0.1", "description": "Manage the nSelf AI gateway (nself-ai-gateway, port 3761): service health, provider key vault, quota usage, and routing rules.", "author": "nself", "license": "MIT", diff --git a/free/gauth/plugin.json b/free/gauth/plugin.json index c194ff6d..a5a54618 100644 --- a/free/gauth/plugin.json +++ b/free/gauth/plugin.json @@ -1,6 +1,6 @@ { "name": "gauth", - "version": "1.0.0", + "version": "1.0.1", "description": "Manage Google OAuth tokens for nSelf AI services: status, refresh, and revoke against plugin-gauth.", "author": "nself", "license": "MIT", diff --git a/free/gdpr/plugin.json b/free/gdpr/plugin.json index 1196b4c5..23069c2a 100644 --- a/free/gdpr/plugin.json +++ b/free/gdpr/plugin.json @@ -1,6 +1,6 @@ { "name": "gdpr", - "version": "1.0.0", + "version": "1.0.1", "description": "GDPR data portability (Art. 20) and right-to-erasure (Art. 17) tools for self-hosted nSelf instances.", "author": "nself", "license": "MIT", diff --git a/free/geocoding/plugin.json b/free/geocoding/plugin.json index dc7a1899..9d6164f9 100644 --- a/free/geocoding/plugin.json +++ b/free/geocoding/plugin.json @@ -1,6 +1,6 @@ { "name": "geocoding", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Geocoding plugin with geofence storage. Planned: Google Maps API integration for forward/reverse geocoding and place search", "author": "nself", diff --git a/free/github-runner/plugin.json b/free/github-runner/plugin.json index a77e6475..99c73689 100644 --- a/free/github-runner/plugin.json +++ b/free/github-runner/plugin.json @@ -1,6 +1,6 @@ { "name": "github-runner", - "version": "1.0.0", + "version": "1.0.1", "description": "GitHub Actions self-hosted runner. Registers with your GitHub org and picks up CI jobs tagged `runs-on: ubuntu-latest` — enabling private repos to run CI without GitHub-hosted runners.", "author": "nself", "license": "MIT", diff --git a/free/github/plugin.json b/free/github/plugin.json index 063aabf5..a588d00e 100644 --- a/free/github/plugin.json +++ b/free/github/plugin.json @@ -1,6 +1,6 @@ { "name": "github", - "version": "1.0.0", + "version": "1.0.1", "description": "GitHub repository, issue, and workflow integration", "author": "nself", "license": "MIT", diff --git a/free/hipaa/plugin.json b/free/hipaa/plugin.json index 0d850bda..3c8a365f 100644 --- a/free/hipaa/plugin.json +++ b/free/hipaa/plugin.json @@ -1,6 +1,6 @@ { "name": "hipaa", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "HIPAA compliance add-on: PHI column registry, PHI access logging with 6-year retention, de-identification helpers (masking + tokenization), encryption-at-rest audit, and BAA workflow.", "author": "nself", @@ -29,7 +29,7 @@ "np_baa_records" ], "webhooks": { - "phi.accessed": "PHI column accessed \u2014 row written to np_phi_audit_log", + "phi.accessed": "PHI column accessed — row written to np_phi_audit_log", "phi.column.registered": "PHI column registered in registry", "phi.column.unregistered": "PHI column unregistered", "baa.requested": "BAA signing workflow initiated", diff --git a/free/home/plugin.json b/free/home/plugin.json index eaf3cf0a..5e91261b 100644 --- a/free/home/plugin.json +++ b/free/home/plugin.json @@ -1,6 +1,6 @@ { "name": "home", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Home automation bridge. Connects Home Assistant and MQTT to ɳSelf, enabling smart device control, state monitoring, scene activation, and command logging.", "author": "nself", diff --git a/free/idme/plugin.json b/free/idme/plugin.json index ed806ae8..58ac3139 100644 --- a/free/idme/plugin.json +++ b/free/idme/plugin.json @@ -1,6 +1,6 @@ { "name": "idme", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "ID.me OAuth authentication with government-grade identity verification for 7 groups", "author": "nself", diff --git a/free/infra/plugin.json b/free/infra/plugin.json index 9226b19a..657e1dab 100644 --- a/free/infra/plugin.json +++ b/free/infra/plugin.json @@ -1,6 +1,6 @@ { "name": "infra", - "version": "1.0.0", + "version": "1.0.1", "description": "Provision nSelf infrastructure with Terraform: plan, apply and destroy modules for aws, gcp, azure, hetzner, do and linode.", "author": "nself", "license": "MIT", diff --git a/free/invitations/plugin.json b/free/invitations/plugin.json index 30d6232b..d96276e1 100644 --- a/free/invitations/plugin.json +++ b/free/invitations/plugin.json @@ -1,6 +1,6 @@ { "name": "invitations", - "version": "1.0.0", + "version": "1.0.1", "description": "Invitation management system with email/SMS delivery and tracking", "author": "nself", "license": "MIT", diff --git a/free/job-queue/plugin.json b/free/job-queue/plugin.json index 004109a8..3df3bc58 100644 --- a/free/job-queue/plugin.json +++ b/free/job-queue/plugin.json @@ -1,6 +1,6 @@ { "name": "job-queue", - "version": "1.0.0", + "version": "1.0.1", "api_version": "1.0.0", "description": "Durable background job queue with priorities, retries, scheduled execution, and per-job progress tracking.", "author": "nself", diff --git a/free/jobs/plugin.json b/free/jobs/plugin.json index 8eaebd3f..6e9ce0e4 100644 --- a/free/jobs/plugin.json +++ b/free/jobs/plugin.json @@ -1,6 +1,6 @@ { "name": "jobs", - "version": "1.0.0", + "version": "1.0.1", "description": "PostgreSQL-backed background job queue with priorities, scheduling, retries, and REST API. Simplified Go implementation using database polling instead of Redis/BullMQ.", "author": "nself", "license": "MIT", diff --git a/free/k8s/plugin.json b/free/k8s/plugin.json index 84938d0e..d94b7ec5 100644 --- a/free/k8s/plugin.json +++ b/free/k8s/plugin.json @@ -1,6 +1,6 @@ { "name": "k8s", - "version": "1.0.0", + "version": "1.0.1", "description": "Deploy and manage nSelf on any Kubernetes cluster via the official Helm chart: install, upgrade, and status commands wrapping helm.", "author": "nself", "license": "MIT", @@ -48,5 +48,5 @@ "required": [], "optional": [] }, - "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install k8s` must place the built nself-k8s binary at ~/.nself/plugins/bin/nself-k8s, where internal/plugin/router.go's ProxyCommand execs it for `nself k8s ` with stdio inherited. Extracted from cli/cmd/commands/k8s.go, cli/internal/k8s/, and cli/charts/nself/ under CLI-R11. Status is 'planned' (not 'stable') because the source command itself was PLANNED \u2014 deferred pending UD-12 minor release approval. The chart has a Postgres StatefulSet+Service, a Hasura Deployment+Service, an Auth Deployment, and an nginx Ingress (+ optional cert-manager Certificate) \u2014 it has not been helm-lint/template validated against a real cluster since extraction." + "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install k8s` must place the built nself-k8s binary at ~/.nself/plugins/bin/nself-k8s, where internal/plugin/router.go's ProxyCommand execs it for `nself k8s ` with stdio inherited. Extracted from cli/cmd/commands/k8s.go, cli/internal/k8s/, and cli/charts/nself/ under CLI-R11. Status is 'planned' (not 'stable') because the source command itself was PLANNED — deferred pending UD-12 minor release approval. The chart has a Postgres StatefulSet+Service, a Hasura Deployment+Service, an Auth Deployment, and an nginx Ingress (+ optional cert-manager Certificate) — it has not been helm-lint/template validated against a real cluster since extraction." } diff --git a/free/link-preview/plugin.json b/free/link-preview/plugin.json index aec7415f..d447d650 100644 --- a/free/link-preview/plugin.json +++ b/free/link-preview/plugin.json @@ -1,6 +1,6 @@ { "name": "link-preview", - "version": "1.0.0", + "version": "1.0.1", "description": "URL metadata extraction with Open Graph, Twitter Cards, and caching", "author": "nself", "license": "MIT", diff --git a/free/linkedin/plugin.json b/free/linkedin/plugin.json index 91a881b1..0d79c467 100644 --- a/free/linkedin/plugin.json +++ b/free/linkedin/plugin.json @@ -1,6 +1,6 @@ { "name": "linkedin", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "LinkedIn publishing integration. OAuth 2.0 connection, post to LinkedIn feed with optional image attachments, post history, and Claw tool descriptor.", "author": "nself", diff --git a/free/mail/plugin.json b/free/mail/plugin.json index 3d19ceba..3c60c716 100644 --- a/free/mail/plugin.json +++ b/free/mail/plugin.json @@ -1,6 +1,6 @@ { "name": "mail", - "version": "1.0.0", + "version": "1.0.1", "description": "Send transactional and broadcast email through the nSelf stack: mux + Postmark pipeline via ping_api, template management, and DKIM verification.", "author": "nself", "license": "MIT", @@ -51,5 +51,5 @@ "required": [], "optional": [] }, - "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables of its own \u2014 it calls ping_api (default https://ping.nself.org), which proxies to the mux + transactional-email (Postmark) pro plugins. `nself plugin install mail` must place the built nself-mail binary at ~/.nself/plugins/bin/nself-mail, where internal/plugin/router.go's ProxyCommand execs it for `nself mail ` with stdio inherited. Extracted from cli/cmd/commands/mail.go, mail_transactional.go, and mail_admin.go under CLI-R11. Requires an nSelf+ or nClaw bundle license (matching the underlying transactional-email plugin's requires_license: true); exits 2 with a clear message when no license key is configured, exactly as the in-core command did." + "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables of its own — it calls ping_api (default https://ping.nself.org), which proxies to the mux + transactional-email (Postmark) pro plugins. `nself plugin install mail` must place the built nself-mail binary at ~/.nself/plugins/bin/nself-mail, where internal/plugin/router.go's ProxyCommand execs it for `nself mail ` with stdio inherited. Extracted from cli/cmd/commands/mail.go, mail_transactional.go, and mail_admin.go under CLI-R11. Requires an nSelf+ or nClaw bundle license (matching the underlying transactional-email plugin's requires_license: true); exits 2 with a clear message when no license key is configured, exactly as the in-core command did." } diff --git a/free/mdns/plugin.json b/free/mdns/plugin.json index 8425e3bc..9f202855 100644 --- a/free/mdns/plugin.json +++ b/free/mdns/plugin.json @@ -1,6 +1,6 @@ { "name": "mdns", - "version": "1.0.0", + "version": "1.0.1", "description": "mDNS/Bonjour service discovery for zero-config LAN advertising", "author": "nself", "language": "go", diff --git a/free/media-processing/plugin.json b/free/media-processing/plugin.json index f98a4546..b4e94cdc 100644 --- a/free/media-processing/plugin.json +++ b/free/media-processing/plugin.json @@ -1,6 +1,6 @@ { "name": "media-processing", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "FFmpeg-based media encoding and processing with HLS streaming support", "author": "nself", diff --git a/free/meetings/plugin.json b/free/meetings/plugin.json index 7dad0fb5..e5779eb7 100644 --- a/free/meetings/plugin.json +++ b/free/meetings/plugin.json @@ -1,6 +1,6 @@ { "name": "meetings", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Calendar integration and meeting management with room booking, recurring meetings, and availability tracking. External calendar sync (Google/Outlook) planned for future release.", "author": "nself", diff --git a/free/mlflow/plugin.json b/free/mlflow/plugin.json index a358618f..c126a5d6 100644 --- a/free/mlflow/plugin.json +++ b/free/mlflow/plugin.json @@ -1,6 +1,6 @@ { "name": "mlflow", - "version": "1.0.0", + "version": "1.0.1", "description": "MLflow experiment tracking and model registry", "author": "nself", "license": "MIT", diff --git a/free/model/plugin.json b/free/model/plugin.json index 9550a1cd..0d7dd48c 100644 --- a/free/model/plugin.json +++ b/free/model/plugin.json @@ -1,6 +1,6 @@ { "name": "model", - "version": "1.0.0", + "version": "1.0.1", "description": "Manage local AI models via Ollama: list, pull, remove, update, benchmark, plus the legacy `ollama` command tree.", "author": "nself", "license": "MIT", diff --git a/free/monitor/plugin.json b/free/monitor/plugin.json index 69f6e12b..8a63e8c4 100644 --- a/free/monitor/plugin.json +++ b/free/monitor/plugin.json @@ -1,6 +1,6 @@ { "name": "monitor", - "version": "1.0.0", + "version": "1.0.1", "description": "Monitoring stack management: upgrade the bundled Grafana dashboards.", "author": "nself", "license": "MIT", @@ -43,5 +43,5 @@ "required": [], "optional": [] }, - "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install monitor` must place the built nself-monitor binary at ~/.nself/plugins/bin/nself-monitor, where internal/plugin/router.go's ProxyCommand execs it for `nself monitor ` with stdio inherited. Extracted from cli/cmd/commands/monitor.go under CLI-R11 (the command had no internal/* package of its own \u2014 the dashboard list was inline)." + "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install monitor` must place the built nself-monitor binary at ~/.nself/plugins/bin/nself-monitor, where internal/plugin/router.go's ProxyCommand execs it for `nself monitor ` with stdio inherited. Extracted from cli/cmd/commands/monitor.go under CLI-R11 (the command had no internal/* package of its own — the dashboard list was inline)." } diff --git a/free/monitoring/plugin.json b/free/monitoring/plugin.json index bc14756c..dfcacde5 100644 --- a/free/monitoring/plugin.json +++ b/free/monitoring/plugin.json @@ -1,6 +1,6 @@ { "name": "monitoring", - "version": "1.0.0", + "version": "1.0.1", "description": "Full monitoring stack: Prometheus, Grafana, Loki, Promtail, Tempo, Alertmanager, and exporters", "author": "nself", "license": "MIT", diff --git a/free/nself-cloud/plugin.json b/free/nself-cloud/plugin.json index a8933cb9..110df6f3 100644 --- a/free/nself-cloud/plugin.json +++ b/free/nself-cloud/plugin.json @@ -1,6 +1,6 @@ { "name": "nself-cloud", - "version": "0.1.0", + "version": "1.0.1", "api_version": "1.0.0", "description": "ɳCloud managed hosting infrastructure: tenant lifecycle, server provisioning saga, Stripe metered billing, custom domain management, and team memberships for cloud.nself.org.", "author": "nSelf Team", @@ -108,7 +108,7 @@ "method": "POST", "path": "/api/cloud/login", "auth": "none", - "description": "Email+password or magic link \u2014 returns JWT." + "description": "Email+password or magic link — returns JWT." }, { "method": "GET", @@ -181,7 +181,7 @@ "path": "/webhooks/stripe", "auth": "none", "hmac": "STRIPE_PLATFORM_WEBHOOK_SECRET", - "description": "Stripe platform webhook \u2014 HMAC verified, raw body required." + "description": "Stripe platform webhook — HMAC verified, raw body required." }, { "method": "POST", diff --git a/free/nself-eval-gate/plugin.json b/free/nself-eval-gate/plugin.json index 992f7e07..76916ae7 100644 --- a/free/nself-eval-gate/plugin.json +++ b/free/nself-eval-gate/plugin.json @@ -1,6 +1,6 @@ { "name": "nself-eval-gate", - "version": "1.0.0", + "version": "1.0.1", "api_version": "1.0.0", "description": "Eval harness and autonomy-tier gate for nSelf. Three-mode scoring (exact, semantic via BGE-M3, rubric via LLM-as-judge), recall-quality precision/recall/fact_f1 metrics, CI integration via nself ci eval, and autonomy-tier threshold enforcement.", "author": "nself", diff --git a/free/nself-geo/plugin.json b/free/nself-geo/plugin.json index 2ebee4cb..82ceeaa7 100644 --- a/free/nself-geo/plugin.json +++ b/free/nself-geo/plugin.json @@ -1,6 +1,6 @@ { "name": "nself-geo", - "version": "1.1.0", + "version": "1.0.1", "api_version": "1.0.0", "description": "Forward and reverse geocoding with provider-agnostic caching layer. Nominatim (free, OSM) is the default; Google Places and Mapbox are premium fallbacks. Exposes geocodeAddress, reverseGeocode, geocodeBatch, clearGeoCache via Hasura Remote Schema.", "author": "nself", diff --git a/free/nself-image/plugin.json b/free/nself-image/plugin.json index 28cdc048..70c4127f 100644 --- a/free/nself-image/plugin.json +++ b/free/nself-image/plugin.json @@ -1,6 +1,6 @@ { "name": "nself-image", - "version": "0.1.0", + "version": "1.0.1", "api_version": "1.1.0", "description": "Server-side image processing plugin for nSelf: resize, crop, format conversion (WebP/AVIF/JPEG/PNG), EXIF strip, and MinIO-integrated upload pipeline. Replaces per-app Sharp/Node.js usage across nFamily, nChat, and any consumer app needing image normalization.", "author": "nSelf Team", diff --git a/free/nself-pdf/plugin.json b/free/nself-pdf/plugin.json index 5f51b28b..989bcbf0 100644 --- a/free/nself-pdf/plugin.json +++ b/free/nself-pdf/plugin.json @@ -3,7 +3,7 @@ "author": "nSelf Team", "minNselfVersion": "1.0.0", "display_name": "PDF Generation", - "version": "0.1.0", + "version": "1.0.1", "language": "go", "bundle": "shared", "visibility": "public", diff --git a/free/nself-scan/plugin.json b/free/nself-scan/plugin.json index 2f017480..e1e0fff6 100644 --- a/free/nself-scan/plugin.json +++ b/free/nself-scan/plugin.json @@ -3,7 +3,7 @@ "author": "nSelf Team", "minNselfVersion": "1.0.0", "display_name": "File Virus & Content Scanning", - "version": "0.1.0", + "version": "1.0.1", "language": "go", "bundle": [ "nFamily", @@ -14,7 +14,7 @@ "tier": "free", "port": 3829, "service_type": "custom_service", - "description": "Server-side file scanning for MinIO uploads: magic-byte MIME validation, ClamAV virus/malware scanning (always free, Security-Always-Free Doctrine), and optional CSAM hash detection (deferred \u2014 requires partner agreement)", + "description": "Server-side file scanning for MinIO uploads: magic-byte MIME validation, ClamAV virus/malware scanning (always free, Security-Always-Free Doctrine), and optional CSAM hash detection (deferred — requires partner agreement)", "category": "security", "license": "MIT", "min_nself_version": "1.1.0", @@ -78,7 +78,7 @@ "SCAN-CSAM-02", "SCAN-PERF-01" ], - "csam_note": "CSAM hash detection disabled by default. Requires operator partner agreement (Microsoft PhotoDNA or NCMEC). Not a bundle add-on. See SPEC.md \u00a714.", + "csam_note": "CSAM hash detection disabled by default. Requires operator partner agreement (Microsoft PhotoDNA or NCMEC). Not a bundle add-on. See SPEC.md §14.", "checksum": "2a8943610ddd543293f398437a371290485e6d27c3d8feb034d5f813f0670018", "bundles": [ "nsentry" diff --git a/free/nself-sync/plugin.json b/free/nself-sync/plugin.json index 6aff4174..d0d66e1c 100644 --- a/free/nself-sync/plugin.json +++ b/free/nself-sync/plugin.json @@ -2,7 +2,7 @@ "name": "nself-sync", "author": "nSelf Team", "displayName": "Event-Log Sync Engine for ɳClaw", - "version": "1.1.2", + "version": "1.0.1", "tier": "free", "category": "infrastructure", "minNselfVersion": "1.1.1", diff --git a/free/nself-vault/plugin.json b/free/nself-vault/plugin.json index 12fe360b..8341db69 100644 --- a/free/nself-vault/plugin.json +++ b/free/nself-vault/plugin.json @@ -2,7 +2,7 @@ "name": "nself-vault", "author": "nSelf Team", "displayName": "Per-Row Encryption (Vault)", - "version": "1.0.0", + "version": "1.0.1", "tier": "free", "category": "security", "minNselfVersion": "1.0.0", diff --git a/free/object-storage/plugin.json b/free/object-storage/plugin.json index 1f7725ef..a7e6066f 100644 --- a/free/object-storage/plugin.json +++ b/free/object-storage/plugin.json @@ -1,6 +1,6 @@ { "name": "object-storage", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Multi-provider object storage with S3-compatible API, local storage, presigned URLs, and multipart uploads", "author": "nself", diff --git a/free/observability/plugin.json b/free/observability/plugin.json index 55589212..d65b4c9f 100644 --- a/free/observability/plugin.json +++ b/free/observability/plugin.json @@ -1,6 +1,6 @@ { "name": "observability", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Unified observability service with health probes, watchdog timers, service auto-discovery, and systemd integration", "author": "nself", diff --git a/free/payments/plugin.json b/free/payments/plugin.json index 1837a69a..25a9a8ab 100644 --- a/free/payments/plugin.json +++ b/free/payments/plugin.json @@ -1,6 +1,6 @@ { "name": "payments", - "version": "1.0.0", + "version": "1.0.1", "api_version": "1.0.0", "description": "Unified payments abstraction supporting Stripe, PayPal, and Apple/Google Pay with webhook normalization.", "author": "nself", diff --git a/free/paypal/plugin.json b/free/paypal/plugin.json index 7fa2b775..af0f4012 100644 --- a/free/paypal/plugin.json +++ b/free/paypal/plugin.json @@ -1,6 +1,6 @@ { "name": "paypal", - "version": "1.0.0", + "version": "1.0.1", "description": "PayPal payment data sync with webhook handling", "author": "nself", "license": "MIT", diff --git a/free/pentest-kit/plugin.json b/free/pentest-kit/plugin.json index 4ae76d58..a8fb85e0 100644 --- a/free/pentest-kit/plugin.json +++ b/free/pentest-kit/plugin.json @@ -1,6 +1,6 @@ { "name": "pentest-kit", - "version": "1.0.0", + "version": "1.0.1", "description": "CLI front end for the pentest plugin: generate scope documents, provision test credentials, import findings, and check remediation status. Business+ tier.", "author": "nself", "license": "MIT", diff --git a/free/pentest/plugin.json b/free/pentest/plugin.json index 0e529010..5e2c0c47 100644 --- a/free/pentest/plugin.json +++ b/free/pentest/plugin.json @@ -1,7 +1,7 @@ { "name": "pentest", - "version": "1.1.2", - "description": "Penetration-test readiness kit. Generates structured scope documents, provisions pentest credentials, tracks findings, and manages remediation. FREE \u2014 Security-Always-Free Doctrine.", + "version": "1.0.1", + "description": "Penetration-test readiness kit. Generates structured scope documents, provisions pentest credentials, tracks findings, and manages remediation. FREE — Security-Always-Free Doctrine.", "author": "nself", "license": "MIT", "isCommercial": false, diff --git a/free/plugin-clawde/plugin.json b/free/plugin-clawde/plugin.json index c443963d..6fb72f44 100644 --- a/free/plugin-clawde/plugin.json +++ b/free/plugin-clawde/plugin.json @@ -1,6 +1,6 @@ { "name": "plugin-clawde", - "version": "0.1.0", + "version": "1.0.1", "description": "ClawDE daemon integration backend. Manages session lifecycle, tracks daemon health, and streams events via SSE for the ClawDE AI development environment.", "author": "nSelf", "license": "MIT", diff --git a/free/plugin-gauth/plugin.json b/free/plugin-gauth/plugin.json index 4bb46674..fdfc1904 100644 --- a/free/plugin-gauth/plugin.json +++ b/free/plugin-gauth/plugin.json @@ -1,6 +1,6 @@ { "name": "plugin-gauth", - "version": "0.1.0", + "version": "1.0.1", "description": "Headless server-side Google OAuth token refresh for nSelf AI services", "author": "nSelf", "license": "MIT", diff --git a/free/plugin-llm-gateway/plugin.json b/free/plugin-llm-gateway/plugin.json index 927d8358..450934f1 100644 --- a/free/plugin-llm-gateway/plugin.json +++ b/free/plugin-llm-gateway/plugin.json @@ -1,6 +1,6 @@ { "name": "plugin-llm-gateway", - "version": "0.1.0", + "version": "1.0.1", "description": "ClawDE-facing LLM gateway: per-tenant token quota, Redis response caching, session context injection, and SSRF guard over nself-ai-gateway (port 3761). Simplifies ClawDE client LLM calls.", "author": "nSelf", "license": "MIT", diff --git a/free/plugin-pty/plugin.json b/free/plugin-pty/plugin.json index 8dbf8a52..f8fd33f3 100644 --- a/free/plugin-pty/plugin.json +++ b/free/plugin-pty/plugin.json @@ -1,7 +1,7 @@ { "name": "plugin-pty", "display_name": "ɳSelf PTY Bridge", - "version": "1.0.0", + "version": "1.0.1", "description": "Pseudo-terminal bridge for ClawDE AI sessions. Spawns, manages, and relays PTY processes with per-tenant resource limits and WebSocket I/O.", "author": "nself-org", "license": "MIT", diff --git a/free/plugin-retrieval/plugin.json b/free/plugin-retrieval/plugin.json index 925cf9b8..d7455550 100644 --- a/free/plugin-retrieval/plugin.json +++ b/free/plugin-retrieval/plugin.json @@ -1,6 +1,6 @@ { "name": "plugin-retrieval", - "version": "0.1.0", + "version": "1.0.1", "description": "Hybrid retrieval plugin: pgvector ANN + tsvector BM25 merged with Reciprocal Rank Fusion (RRF). Provides the search backend for ɳClaw memory and nself-ai-mcp search/recall tools.", "author": "nSelf", "license": "MIT", diff --git a/free/podcast/plugin.json b/free/podcast/plugin.json index 04e7457b..eb8fc7c7 100644 --- a/free/podcast/plugin.json +++ b/free/podcast/plugin.json @@ -1,6 +1,6 @@ { "name": "podcast", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Podcast service with RSS feed parsing, episode management, playback position sync, and subscription management", "author": "nself", diff --git a/free/post/plugin.json b/free/post/plugin.json index 28c997b0..a169f9fe 100644 --- a/free/post/plugin.json +++ b/free/post/plugin.json @@ -1,6 +1,6 @@ { "name": "post", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Multi-platform content publishing. Publish to WordPress, Ghost, Twitter/X, LinkedIn, Telegram channels, Dev.to, and Hashnode with optional scheduling.", "author": "nself", diff --git a/free/push/plugin.json b/free/push/plugin.json index a4dae523..e98bcce8 100644 --- a/free/push/plugin.json +++ b/free/push/plugin.json @@ -1,6 +1,6 @@ { "name": "push", - "version": "1.0.0", + "version": "1.0.1", "description": "APNs + FCM push notification relay. Hasura event-trigger fan-out, delivery state tracking, exponential backoff retry. Handles iOS (Apple Push Notification service) and Android (Firebase Cloud Messaging v1 API).", "author": "nself", "license": "MIT", @@ -26,7 +26,9 @@ "np_push_outbox", "np_push_devices" ], - "dependencies": {"redis": ">=1.0.0"}, + "dependencies": { + "redis": ">=1.0.0" + }, "optionalDependencies": [], "envVars": { "required": [ diff --git a/free/queue/plugin.json b/free/queue/plugin.json index 0a422e7e..b3620b34 100644 --- a/free/queue/plugin.json +++ b/free/queue/plugin.json @@ -1,6 +1,6 @@ { "name": "queue", - "version": "1.0.0", + "version": "1.0.1", "description": "Inspect and manage nSelf background job queues: depth, stuck jobs, retries and purges.", "author": "nself", "license": "MIT", diff --git a/free/region/plugin.json b/free/region/plugin.json index 11a94db8..b65f5591 100644 --- a/free/region/plugin.json +++ b/free/region/plugin.json @@ -1,6 +1,6 @@ { "name": "region", - "version": "1.0.0", + "version": "1.0.1", "description": "Multi-region management: add replica regions, list and inspect their status, and promote a region to primary.", "author": "nself", "license": "MIT", diff --git a/free/release/plugin.json b/free/release/plugin.json index 381e6c0e..dfab6bdf 100644 --- a/free/release/plugin.json +++ b/free/release/plugin.json @@ -1,6 +1,6 @@ { "name": "release", - "version": "1.0.0", + "version": "1.0.1", "description": "Orchestrate the nSelf project's own 12-step release cascade: tag and release cli and plugins-pro, build and push the admin image, and open the Homebrew formula PR.", "author": "nself", "license": "MIT", diff --git a/free/retro-gaming/plugin.json b/free/retro-gaming/plugin.json index f47026cc..ec230d31 100644 --- a/free/retro-gaming/plugin.json +++ b/free/retro-gaming/plugin.json @@ -1,6 +1,6 @@ { "name": "retro-gaming", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Retro gaming ROM library management, emulator core serving, save state synchronization, play sessions, and controller configuration for nself-tv", "author": "nself", diff --git a/free/rom-discovery/plugin.json b/free/rom-discovery/plugin.json index b11b00bd..39084f3b 100644 --- a/free/rom-discovery/plugin.json +++ b/free/rom-discovery/plugin.json @@ -1,6 +1,6 @@ { "name": "rom-discovery", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "ROM metadata database, search, discovery, automated download orchestration, and multi-source scraping for nself-tv", "author": "nself", diff --git a/free/sentry-cli/plugin.json b/free/sentry-cli/plugin.json index d8d13053..46b4e420 100644 --- a/free/sentry-cli/plugin.json +++ b/free/sentry-cli/plugin.json @@ -1,6 +1,6 @@ { "name": "sentry-cli", - "version": "1.0.0", + "version": "1.0.1", "description": "ɳSentry operations: monitors, incidents, status pages, alerts, cloud login, and provisioning a self-hosted sentry server.", "author": "nself", "license": "MIT", diff --git a/free/shared-utils/plugin.json b/free/shared-utils/plugin.json index 5fc2d0b6..9dbdd7e8 100644 --- a/free/shared-utils/plugin.json +++ b/free/shared-utils/plugin.json @@ -1,6 +1,6 @@ { "name": "shared-utils", - "version": "1.0.0", + "version": "1.0.1", "description": "Shared Go utilities (request-ID tracing middleware, HTTP client propagation, server lifecycle helpers) used internally by multiple free nself plugins. Not installable directly.", "author": "nself", "license": "MIT", @@ -10,9 +10,21 @@ "requires_license": false, "installable": false, "port": 0, - "tags": ["shared", "internal", "library"], - "multiApp": { "supported": false }, + "tags": [ + "shared", + "internal", + "library" + ], + "multiApp": { + "supported": false + }, "tables": [], - "dependencies": { "required": [], "optional": [] }, - "envVars": { "required": [], "optional": [] } + "dependencies": { + "required": [], + "optional": [] + }, + "envVars": { + "required": [], + "optional": [] + } } diff --git a/free/shopify/plugin.json b/free/shopify/plugin.json index d62ba1f9..fe74be31 100644 --- a/free/shopify/plugin.json +++ b/free/shopify/plugin.json @@ -1,6 +1,6 @@ { "name": "shopify", - "version": "1.0.0", + "version": "1.0.1", "description": "Shopify store, orders, and product synchronization", "author": "nself", "language": "go", diff --git a/free/siem/plugin.json b/free/siem/plugin.json index 5cae8ed8..a590e8dd 100644 --- a/free/siem/plugin.json +++ b/free/siem/plugin.json @@ -1,6 +1,6 @@ { "name": "siem", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.3.0", "description": "Forward nSelf audit logs and security events to external SIEM platforms: Datadog, Splunk HEC, Elastic, Loki, and custom webhooks. OCSF/ECS schema normalization.", "author": "nself", diff --git a/free/sms/plugin.json b/free/sms/plugin.json index a838efe2..f3471a73 100644 --- a/free/sms/plugin.json +++ b/free/sms/plugin.json @@ -1,6 +1,6 @@ { "name": "sms", - "version": "1.0.0", + "version": "1.0.1", "displayName": "plugin-sms", "description": "SMS messaging via Twilio. Send, track, and manage opt-outs.", "port": 9009, diff --git a/free/soak/plugin.json b/free/soak/plugin.json index a06b22e5..2e413100 100644 --- a/free/soak/plugin.json +++ b/free/soak/plugin.json @@ -1,6 +1,6 @@ { "name": "soak", - "version": "1.0.0", + "version": "1.0.1", "description": "Manage soak testing lifecycle: abort an active soak and roll back to a prior version.", "author": "nself", "license": "MIT", diff --git a/free/sports/plugin.json b/free/sports/plugin.json index 54ebccde..7ccb49aa 100644 --- a/free/sports/plugin.json +++ b/free/sports/plugin.json @@ -1,6 +1,6 @@ { "name": "sports", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Sports data plugin with storage for scores, schedules, and standings. Planned: Live data provider integration (ESPN, The Sports DB) for real-time scores and stats", "author": "nself", diff --git a/free/storage-transform/plugin.json b/free/storage-transform/plugin.json index ab63df20..2fb8f334 100644 --- a/free/storage-transform/plugin.json +++ b/free/storage-transform/plugin.json @@ -1,6 +1,6 @@ { "name": "storage-transform", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "On-the-fly image transformation CDN: resize, crop, format convert (WebP/AVIF/JPEG/PNG), quality, and device-pixel-ratio support. URL-param driven, Redis LRU cache, Nginx cache headers, rate limiting.", "author": "nself", diff --git a/free/stripe/plugin.json b/free/stripe/plugin.json index 5937ef86..2a4bce91 100644 --- a/free/stripe/plugin.json +++ b/free/stripe/plugin.json @@ -1,6 +1,6 @@ { "name": "stripe", - "version": "1.0.0", + "version": "1.0.1", "description": "Stripe billing data sync with webhook handling", "author": "nself", "license": "MIT", diff --git a/free/subtitle-manager/plugin.json b/free/subtitle-manager/plugin.json index bf50a845..d073116e 100644 --- a/free/subtitle-manager/plugin.json +++ b/free/subtitle-manager/plugin.json @@ -1,6 +1,6 @@ { "name": "subtitle-manager", - "version": "1.0.0", + "version": "1.0.1", "description": "Subtitle search, download, and sync verification via OpenSubtitles", "author": "nself", "license": "MIT", diff --git a/free/tenant-controller/plugin.json b/free/tenant-controller/plugin.json index 24c355b5..75b9295c 100644 --- a/free/tenant-controller/plugin.json +++ b/free/tenant-controller/plugin.json @@ -1,6 +1,6 @@ { "name": "tenant-controller", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.3.0", "description": "Multi-tenant master controller for nCloud. Manages N isolated nSelf project instances behind a single deploy: per-project Postgres schema, Hasura metadata namespace, Nginx vhost, JWT secret, Redis key prefix, and MinIO bucket. Enables 50 projects on one Hetzner CX21.", "author": "nself", diff --git a/free/tenant/plugin.json b/free/tenant/plugin.json index 6e6da5c8..70e7aebc 100644 --- a/free/tenant/plugin.json +++ b/free/tenant/plugin.json @@ -1,6 +1,6 @@ { "name": "tenant", - "version": "1.0.0", + "version": "1.0.1", "description": "Multi-tenant operations: create, suspend, upgrade and destroy tenants, plus per-tenant usage metering and billing reports.", "author": "nself", "license": "MIT", diff --git a/free/tmdb/plugin.json b/free/tmdb/plugin.json index b16d4e09..28fc2749 100644 --- a/free/tmdb/plugin.json +++ b/free/tmdb/plugin.json @@ -1,6 +1,6 @@ { "name": "tmdb", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Comprehensive media metadata enrichment from TMDB/IMDb/TVDB/MusicBrainz with auto-matching, manual review queue, and multi-provider support", "author": "nself", diff --git a/free/tokens/plugin.json b/free/tokens/plugin.json index bb541410..abd69c9d 100644 --- a/free/tokens/plugin.json +++ b/free/tokens/plugin.json @@ -1,6 +1,6 @@ { "name": "tokens", - "version": "1.0.0", + "version": "1.0.1", "description": "Secure content delivery tokens, HLS encryption key management, and entitlement checks", "author": "nself", "license": "MIT", diff --git a/free/torrent-manager/plugin.json b/free/torrent-manager/plugin.json index 53d7d34b..481396f7 100644 --- a/free/torrent-manager/plugin.json +++ b/free/torrent-manager/plugin.json @@ -1,6 +1,6 @@ { "name": "torrent-manager", - "version": "1.0.0", + "version": "1.0.1", "description": "Torrent downloading with Transmission/qBittorrent integration, multi-source search, seeding policies, and VPN enforcement", "author": "nself", "license": "MIT", diff --git a/free/transactional-email/plugin.json b/free/transactional-email/plugin.json index 77dfa967..06f33084 100644 --- a/free/transactional-email/plugin.json +++ b/free/transactional-email/plugin.json @@ -1,6 +1,6 @@ { "name": "transactional-email", - "version": "1.1.0", + "version": "1.0.1", "api_version": "1.0", "description": "Provider-agnostic transactional email: template rendering, per-tenant domain management, SPF/DKIM reporting, delivery webhook relay.", "author": "nself", diff --git a/free/vpn/plugin.json b/free/vpn/plugin.json index d04f1f34..79bfbd4e 100644 --- a/free/vpn/plugin.json +++ b/free/vpn/plugin.json @@ -1,6 +1,6 @@ { "name": "vpn", - "version": "1.0.0", + "version": "1.0.1", "description": "Multi-provider VPN management (NordVPN, PIA, Mullvad) with P2P optimization, server carousel, kill switch, and leak protection. Torrent download forwarding requires the torrent-manager plugin.", "author": "nself", "license": "MIT", diff --git a/free/waf/plugin.json b/free/waf/plugin.json index 0548840a..de6cef47 100644 --- a/free/waf/plugin.json +++ b/free/waf/plugin.json @@ -1,6 +1,6 @@ { "name": "waf", - "version": "1.0.0", + "version": "1.0.1", "description": "Web Application Firewall management: enable Coraza with the OWASP Core Rule Set, switch between detection and blocking mode, and review recent WAF events.", "author": "nself", "license": "MIT", diff --git a/free/warehouse/plugin.json b/free/warehouse/plugin.json index 979a1c1c..addb2c48 100644 --- a/free/warehouse/plugin.json +++ b/free/warehouse/plugin.json @@ -1,8 +1,8 @@ { "name": "warehouse", - "version": "1.0.0", + "version": "1.0.1", "api_version": "1.0.0", - "description": "Data warehouse sync \u2014 exports nself table data to BigQuery, Snowflake, or Redshift on a configurable schedule.", + "description": "Data warehouse sync — exports nself table data to BigQuery, Snowflake, or Redshift on a configurable schedule.", "author": "nself", "license": "MIT", "isCommercial": false, diff --git a/free/watchdog/plugin.json b/free/watchdog/plugin.json index fd90a47f..c24b1ca4 100644 --- a/free/watchdog/plugin.json +++ b/free/watchdog/plugin.json @@ -1,6 +1,6 @@ { "name": "watchdog", - "version": "1.0.0", + "version": "1.0.1", "description": "Self-healing container watchdog with circuit breaker: status, resets, event history, and TG/email escalation alerts.", "author": "nself", "license": "MIT", @@ -58,5 +58,5 @@ "required": [], "optional": [] }, - "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install watchdog` must place the built nself-watchdog binary at ~/.nself/plugins/bin/nself-watchdog, where internal/plugin/router.go's ProxyCommand execs it for `nself watchdog ` with stdio inherited. Extracted from cli/cmd/commands/watchdog.go and cli/internal/watchdog/ under CLI-R11. internal/watchdog depended on internal/health.DockerClient (a Docker-CLI shell-exec adapter), which lives in a file cli/cmd/commands/start.go also uses and therefore could not move \u2014 so this plugin reimplements that narrow adapter (docker ps/inspect/restart) locally in internal/watchdog/docker.go rather than forking internal/health's health-check engine. internal/watchdog's escalation.go also used internal/httptimeout, replaced with an inline *http.Client at the same 30s default." + "notes": "This is a CLI-proxy plugin, not a service plugin: it has no port, no HTTP server, and no database tables. `nself plugin install watchdog` must place the built nself-watchdog binary at ~/.nself/plugins/bin/nself-watchdog, where internal/plugin/router.go's ProxyCommand execs it for `nself watchdog ` with stdio inherited. Extracted from cli/cmd/commands/watchdog.go and cli/internal/watchdog/ under CLI-R11. internal/watchdog depended on internal/health.DockerClient (a Docker-CLI shell-exec adapter), which lives in a file cli/cmd/commands/start.go also uses and therefore could not move — so this plugin reimplements that narrow adapter (docker ps/inspect/restart) locally in internal/watchdog/docker.go rather than forking internal/health's health-check engine. internal/watchdog's escalation.go also used internal/httptimeout, replaced with an inline *http.Client at the same 30s default." } diff --git a/free/web3/plugin.json b/free/web3/plugin.json index fe0f74b5..2b4a1fc8 100644 --- a/free/web3/plugin.json +++ b/free/web3/plugin.json @@ -1,6 +1,6 @@ { "name": "web3", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Blockchain integration, NFT support, token-gated access, DAO governance, and decentralized identity", "author": "nself", diff --git a/free/webhooks/plugin.json b/free/webhooks/plugin.json index 79f94d8f..e6d47d16 100644 --- a/free/webhooks/plugin.json +++ b/free/webhooks/plugin.json @@ -1,6 +1,6 @@ { "name": "webhooks", - "version": "1.0.0", + "version": "1.0.1", "description": "Outbound webhook delivery service with retry logic, HMAC signing, and dead-letter queue", "author": "nself", "license": "MIT", diff --git a/free/workflows/plugin.json b/free/workflows/plugin.json index 8d27e604..c2294a07 100644 --- a/free/workflows/plugin.json +++ b/free/workflows/plugin.json @@ -1,6 +1,6 @@ { "name": "workflows", - "version": "1.1.2", + "version": "1.0.1", "api_version": "1.0.0", "description": "Automation engine providing trigger-action workflow chains, conditional logic, scheduled tasks, webhook integrations, and cross-plugin orchestration", "author": "nself", diff --git a/registry.json b/registry.json index 648a5c63..1399246a 100644 --- a/registry.json +++ b/registry.json @@ -8,13 +8,13 @@ "note": "nSelf Free Plugin Registry — 60 MIT-licensed plugins.", "plugins": { "ai-cli": { - "version": "1.0.0", + "version": "1.0.1", "description": "AI operations for nSelf: chat, local Ollama model management, and Gemini API key pool provisioning and rotation.", "category": "automation", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/ai-cli-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/ai-cli-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/ai-cli/tarball", "requires_license": false, "language": "go", @@ -37,16 +37,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-ai" + }, + "releaseTag": "v1.0.1", + "checksum": "929f40d695cc73a27d5594ef27631f22ee211cce3d5be591ddab5f97f2897b4a", + "checksums": { + "sha256": "929f40d695cc73a27d5594ef27631f22ee211cce3d5be591ddab5f97f2897b4a" } }, "ai-studio": { - "version": "1.0.0", + "version": "1.0.1", "description": "Google AI Studio integration for local nSelf instances via a secure Cloudflare Tunnel.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/ai-studio-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/ai-studio-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/ai-studio/tarball", "requires_license": false, "language": "go", @@ -67,16 +72,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-ai-studio" + }, + "releaseTag": "v1.0.1", + "checksum": "82ba400708acd347a188596f0096f29c3846b531f627b1903cd40989c7a49875", + "checksums": { + "sha256": "82ba400708acd347a188596f0096f29c3846b531f627b1903cd40989c7a49875" } }, "alerts": { - "version": "1.0.0", + "version": "1.0.1", "description": "Manage Prometheus alert rules and Alertmanager silences: list, silence, and send synthetic test alerts.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/alerts-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/alerts-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/alerts/tarball", "requires_license": false, "language": "go", @@ -98,16 +108,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-alerts" + }, + "releaseTag": "v1.0.1", + "checksum": "d07deb6fbb5af9341785d5b17fae3438ccfca78027f53ab2cdfb53fd59f15928", + "checksums": { + "sha256": "d07deb6fbb5af9341785d5b17fae3438ccfca78027f53ab2cdfb53fd59f15928" } }, "api": { - "version": "1.0.0", + "version": "1.0.1", "description": "Inspect the nSelf plugin API surface: endpoint probes, deprecation calendar, and the API changelog.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/api-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/api-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/api/tarball", "requires_license": false, "language": "go", @@ -128,16 +143,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-api" + }, + "releaseTag": "v1.0.1", + "checksum": "7bca130829cc77a8b583c8fdce1de9a3ff498c0edb150eb625197abe61c95cef", + "checksums": { + "sha256": "7bca130829cc77a8b583c8fdce1de9a3ff498c0edb150eb625197abe61c95cef" } }, "audit": { - "version": "1.0.0", + "version": "1.0.1", "description": "Ecosystem documentation audit: banned words, dead links, and missing anchors across READMEs, wiki, docs, SPORT, PPI, and PRI.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/audit-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/audit-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/audit/tarball", "requires_license": false, "language": "go", @@ -158,16 +178,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-audit" + }, + "releaseTag": "v1.0.1", + "checksum": "1bfb60421ce0ceaf48c50bebfeeb0845e727c3d36b6e8631e8cdcaa01c641277", + "checksums": { + "sha256": "1bfb60421ce0ceaf48c50bebfeeb0845e727c3d36b6e8631e8cdcaa01c641277" } }, "audit-log": { - "version": "1.0.0", + "version": "1.0.1", "description": "Append-only audit log for security-relevant events: auth, privilege change, secret access, plugin install/uninstall. Queryable from Admin with filters by event type, actor, severity, and time range.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/audit-log-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/audit-log-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/audit-log/tarball", "requires_license": false, "language": "go", @@ -189,16 +214,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "53a00ff7bd1268739ad55340a47b4d66e38c86dfe77af4dacd9693cc2a5ace8d", + "checksums": { + "sha256": "53a00ff7bd1268739ad55340a47b4d66e38c86dfe77af4dacd9693cc2a5ace8d" } }, "backup": { - "version": "1.0.0", + "version": "1.0.1", "description": "PostgreSQL backup and restore automation with scheduling", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/backup-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/backup-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/backup/tarball", "requires_license": false, "language": "go", @@ -221,6 +251,11 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main" + }, + "releaseTag": "v1.0.1", + "checksum": "5a7f60f21c3638d701797523f823495ba0096585ad54a9826ed3c559dfc64de4", + "checksums": { + "sha256": "5a7f60f21c3638d701797523f823495ba0096585ad54a9826ed3c559dfc64de4" } }, "ci": { @@ -230,7 +265,7 @@ "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/ci-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/ci-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/ci/tarball", "requires_license": false, "language": "go", @@ -253,16 +288,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "7cc9e2cba7ef23c950ceb584c9407155347376a7663f53aae44aa68d05893f4f", + "checksums": { + "sha256": "7cc9e2cba7ef23c950ceb584c9407155347376a7663f53aae44aa68d05893f4f" } }, "claw-cli": { - "version": "1.0.0", + "version": "1.0.1", "description": "CLI client for the nClaw AI assistant: prompt, chat, pairing, keys, memories, topics, sessions, MCP server, OpenAI-compatible proxy, and schema migrations.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/claw-cli-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/claw-cli-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/claw-cli/tarball", "requires_license": false, "language": "go", @@ -284,16 +324,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-claw" + }, + "releaseTag": "v1.0.1", + "checksum": "c47f1034c3b8cf594df44a6fe438d34f271afe370f80675df8f8920b01801d7b", + "checksums": { + "sha256": "c47f1034c3b8cf594df44a6fe438d34f271afe370f80675df8f8920b01801d7b" } }, "content-acquisition": { - "version": "1.0.0", + "version": "1.0.1", "description": "Content acquisition with download rules engine. Planned: RSS feed monitoring, release calendar integration, automated download orchestration", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/content-acquisition-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/content-acquisition-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/content-acquisition/tarball", "requires_license": false, "language": "go", @@ -340,6 +385,11 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "3b1111ac8e208abdca8211609d8204e537e9fe239a7464cb75a15216f46de9d4", + "checksums": { + "sha256": "3b1111ac8e208abdca8211609d8204e537e9fe239a7464cb75a15216f46de9d4" } }, "content-progress": { @@ -377,20 +427,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "f3ff367a61c38d039136c96ec3b42dded23334bed532a50071f623adaa5644ac", + "checksum": "4aa627cae1f3fe38d2eb84807c3de3e34c7b4fd6df5281c3f96ef1ffad99badb", "checksums": { - "sha256": "f3ff367a61c38d039136c96ec3b42dded23334bed532a50071f623adaa5644ac" + "sha256": "4aa627cae1f3fe38d2eb84807c3de3e34c7b4fd6df5281c3f96ef1ffad99badb" }, "releaseTag": "v1.0.1" }, "costs": { - "version": "1.0.0", + "version": "1.0.1", "description": "Show estimated per-install operational costs: Hetzner VPS, Cloudflare, Vercel, Stripe fees, and installed paid plugin licenses.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/costs-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/costs-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/costs/tarball", "requires_license": false, "language": "go", @@ -410,6 +460,11 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-costs" + }, + "releaseTag": "v1.0.1", + "checksum": "42de877b7d08c626e509b49fc18983b498f91f8afd40de22af0f7bb369ff16b7", + "checksums": { + "sha256": "42de877b7d08c626e509b49fc18983b498f91f8afd40de22af0f7bb369ff16b7" } }, "cron": { @@ -444,20 +499,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "e79736337868685a85fd25ba3d98ad1bc4ab9d2c8eaa5f3185383f39719b2940", + "checksum": "428b023440b3d1cd171c4393b8d5d105c4d819106ea676761deef3fdd26d6170", "checksums": { - "sha256": "e79736337868685a85fd25ba3d98ad1bc4ab9d2c8eaa5f3185383f39719b2940" + "sha256": "428b023440b3d1cd171c4393b8d5d105c4d819106ea676761deef3fdd26d6170" }, "releaseTag": "v1.0.1" }, "dlq": { - "version": "1.0.0", + "version": "1.0.1", "description": "Manage dead-letter queues for nSelf plugins: re-enqueue rows that failed processing back to the work queue, with safe row limits and dry-run preview.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/dlq-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/dlq-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/dlq/tarball", "requires_license": false, "language": "go", @@ -479,16 +534,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-dlq" + }, + "releaseTag": "v1.0.1", + "checksum": "94d607388f664d95d006596b4c27431d45122fa2edbc79ca942aa90907e1e337", + "checksums": { + "sha256": "94d607388f664d95d006596b4c27431d45122fa2edbc79ca942aa90907e1e337" } }, "dogfood": { - "version": "1.0.0", + "version": "1.0.1", "description": "Production dogfood audit and reporting: 21 read-only checks covering backups, DR, tenancy, licensing, secrets, migrations, monitoring, security, watchdog, and queue health.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/dogfood-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/dogfood-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/dogfood/tarball", "requires_license": false, "language": "go", @@ -510,6 +570,11 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-dogfood" + }, + "releaseTag": "v1.0.1", + "checksum": "17c4320a75deba1b8ddc5ee699604159147d72059725e0c164d578ab9e7f6808", + "checksums": { + "sha256": "17c4320a75deba1b8ddc5ee699604159147d72059725e0c164d578ab9e7f6808" } }, "donorbox": { @@ -548,20 +613,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "b0f8057faa416e45c54e34b8f3c8b78734aae6257a1bda07ff59ecfe7966fae3", + "checksum": "e53b414cc3cf5e51caf17600a2db632cff81b5484846fd12afeabb02d7d62842", "checksums": { - "sha256": "b0f8057faa416e45c54e34b8f3c8b78734aae6257a1bda07ff59ecfe7966fae3" + "sha256": "e53b414cc3cf5e51caf17600a2db632cff81b5484846fd12afeabb02d7d62842" }, "releaseTag": "v1.0.1" }, "dr": { - "version": "1.0.0", + "version": "1.0.1", "description": "Disaster recovery: promote a standby, fence the old primary, run drills, and install the systemd units DR needs.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/dr-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/dr-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/dr/tarball", "requires_license": false, "language": "go", @@ -583,16 +648,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-dr" + }, + "releaseTag": "v1.0.1", + "checksum": "c313238697e5a4ad49c1b0313c7003db05225dbc6fdea2814872796c0d41f9ca", + "checksums": { + "sha256": "c313238697e5a4ad49c1b0313c7003db05225dbc6fdea2814872796c0d41f9ca" } }, "e2ee": { - "version": "1.0.0", + "version": "1.0.1", "description": "End-to-end encryption key directory: X3DH prekey distribution + Kyber-1024 (ML-KEM-1024) post-quantum prekeys for nchat. Server stores PUBLIC keys only; private keys never leave the client.", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/e2ee-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/e2ee-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/e2ee/tarball", "requires_license": false, "language": "go", @@ -626,16 +696,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "bcfe85b98b14ea38c716f8e8af85343accf8851fa501e7e388cd13969574a695", + "checksums": { + "sha256": "bcfe85b98b14ea38c716f8e8af85343accf8851fa501e7e388cd13969574a695" } }, "family-gedcom": { - "version": "0.0.1", + "version": "1.0.1", "description": "Generic GEDCOM file importer for the family plugin (PLANNED). Accepts any GEDCOM 5.5.1 / 7.0 file from any provider, with optional photo-folder upload. Free MIT plugin — showcases the core + helper-importer pattern.", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v0.0.1/family-gedcom-0.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-gedcom-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-gedcom/tarball", "requires_license": false, "language": "go", @@ -659,16 +734,21 @@ "language": "go", "runtime": "go", "entryPoint": "binary" + }, + "releaseTag": "v1.0.1", + "checksum": "beb154eff26de41146400e0c2e811c311f30e41d57a1f12a144f4f1791657a66", + "checksums": { + "sha256": "beb154eff26de41146400e0c2e811c311f30e41d57a1f12a144f4f1791657a66" } }, "feature-flags": { - "version": "1.0.0", + "version": "1.0.1", "description": "Feature flags service with targeting rules, segments, and evaluation engine", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/feature-flags-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/feature-flags-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/feature-flags/tarball", "requires_license": false, "language": "go", @@ -691,16 +771,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "1524bd911dad654d53831e9e67353380ab527521181afd97931832cb2345a386", + "checksums": { + "sha256": "1524bd911dad654d53831e9e67353380ab527521181afd97931832cb2345a386" } }, "federation": { - "version": "1.0.0", + "version": "1.0.1", "description": "Manage GraphQL Federation: compose an Apollo Router supergraph from installed plugin subgraphs, check subgraph health, and introspect the composed schema.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/federation-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/federation-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/federation/tarball", "requires_license": false, "language": "go", @@ -722,16 +807,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-federation" + }, + "releaseTag": "v1.0.1", + "checksum": "b9d33347c04dc5de7639987abd8f5a8fe2c07e2e217f05b67e14e16774179df7", + "checksums": { + "sha256": "b9d33347c04dc5de7639987abd8f5a8fe2c07e2e217f05b67e14e16774179df7" } }, "flags": { - "version": "1.0.0", + "version": "1.0.1", "description": "Manage feature flags served by the feature-flags plugin: list, get, set, history, canary rollouts and kill switches.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/flags-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/flags-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/flags/tarball", "requires_license": false, "language": "go", @@ -752,16 +842,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-flags" + }, + "releaseTag": "v1.0.1", + "checksum": "482ebc0b1a91ab18e5a78f37c9ec02b9aec5ab89c312f889045312a80e21c61c", + "checksums": { + "sha256": "482ebc0b1a91ab18e5a78f37c9ec02b9aec5ab89c312f889045312a80e21c61c" } }, "forgejo": { - "version": "1.0.0", + "version": "1.0.1", "description": "Self-hosted Forgejo git forge + Forgejo Actions runner. Provides offline CI that executes .github/workflows/*.yml YAML on self-hosted compute — zero GitHub Actions quota consumed. Designed for the ops profile (ops server on staging/prod).", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/forgejo-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/forgejo-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/forgejo/tarball", "requires_license": false, "language": "config", @@ -785,16 +880,21 @@ "language": "shell", "runtime": "docker", "entryPoint": "docker-compose.plugin.yml" + }, + "releaseTag": "v1.0.1", + "checksum": "06b21dc8aeb09b43a97c6cffb8848bd60d15ef6ec6a961b5e733023d821e5958", + "checksums": { + "sha256": "06b21dc8aeb09b43a97c6cffb8848bd60d15ef6ec6a961b5e733023d821e5958" } }, "gateway": { - "version": "1.0.0", + "version": "1.0.1", "description": "Manage the nSelf AI gateway (nself-ai-gateway, port 3761): service health, provider key vault, quota usage, and routing rules.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/gateway-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/gateway-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/gateway/tarball", "requires_license": false, "language": "go", @@ -815,16 +915,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-gateway" + }, + "releaseTag": "v1.0.1", + "checksum": "62e17f6263ae9cc467c8a4be3a010118c969235d87343b0e7277c015bc0f3551", + "checksums": { + "sha256": "62e17f6263ae9cc467c8a4be3a010118c969235d87343b0e7277c015bc0f3551" } }, "gauth": { - "version": "1.0.0", + "version": "1.0.1", "description": "Manage Google OAuth tokens for nSelf AI services: status, refresh, and revoke against plugin-gauth.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/gauth-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/gauth-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/gauth/tarball", "requires_license": false, "language": "go", @@ -845,16 +950,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-gauth" + }, + "releaseTag": "v1.0.1", + "checksum": "3c3a7faa9973559ef948828e3725b016c3686c940b05f8f92adae3f1569b4dcc", + "checksums": { + "sha256": "3c3a7faa9973559ef948828e3725b016c3686c940b05f8f92adae3f1569b4dcc" } }, "gdpr": { - "version": "1.0.0", + "version": "1.0.1", "description": "GDPR data portability (Art. 20) and right-to-erasure (Art. 17) tools for self-hosted nSelf instances.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/gdpr-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/gdpr-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/gdpr/tarball", "requires_license": false, "language": "go", @@ -877,16 +987,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-gdpr" + }, + "releaseTag": "v1.0.1", + "checksum": "5cb6e085982b6745581e7f6fa87a6e0899334f20df2d873569dac80b8be95fdf", + "checksums": { + "sha256": "5cb6e085982b6745581e7f6fa87a6e0899334f20df2d873569dac80b8be95fdf" } }, "github": { - "version": "1.0.0", + "version": "1.0.1", "description": "GitHub repository, issue, and workflow integration", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/github-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/github-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/github/tarball", "requires_license": false, "language": "go", @@ -931,16 +1046,21 @@ "language": "go", "runtime": "go", "entryPoint": "nself-github" + }, + "releaseTag": "v1.0.1", + "checksum": "2014ea4c985f5281110f347094fa9707874b718c601e9b8cbfe333dc5dad2b29", + "checksums": { + "sha256": "2014ea4c985f5281110f347094fa9707874b718c601e9b8cbfe333dc5dad2b29" } }, "github-runner": { - "version": "1.0.0", + "version": "1.0.1", "description": "GitHub Actions self-hosted runner. Registers with your GitHub org and picks up CI jobs tagged `runs-on: ubuntu-latest` — enabling private repos to run CI without GitHub-hosted runners.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/github-runner-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/github-runner-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/github-runner/tarball", "requires_license": false, "language": "go", @@ -962,16 +1082,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "7ef16d2fc3ba95075787d15d0909950faaade1b4895766eebf7015d316d9fd16", + "checksums": { + "sha256": "7ef16d2fc3ba95075787d15d0909950faaade1b4895766eebf7015d316d9fd16" } }, "infra": { - "version": "1.0.0", + "version": "1.0.1", "description": "Provision nSelf infrastructure with Terraform: plan, apply and destroy modules for aws, gcp, azure, hetzner, do and linode.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/infra-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/infra-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/infra/tarball", "requires_license": false, "language": "go", @@ -996,16 +1121,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-infra" + }, + "releaseTag": "v1.0.1", + "checksum": "253c2828438e44219400fc3dae6e06e2bef37ed99ad0c1d8593fec1d0e04f2da", + "checksums": { + "sha256": "253c2828438e44219400fc3dae6e06e2bef37ed99ad0c1d8593fec1d0e04f2da" } }, "invitations": { - "version": "1.0.0", + "version": "1.0.1", "description": "Invitation management system with email/SMS delivery and tracking", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/invitations-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/invitations-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/invitations/tarball", "requires_license": false, "language": "go", @@ -1028,16 +1158,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "3cf1d9acc19ff50c5929af91951b832c34c6f9603c932a8acbb79565a35cbd83", + "checksums": { + "sha256": "3cf1d9acc19ff50c5929af91951b832c34c6f9603c932a8acbb79565a35cbd83" } }, "jobs": { - "version": "1.0.0", + "version": "1.0.1", "description": "PostgreSQL-backed background job queue with priorities, scheduling, retries, and REST API. Simplified Go implementation using database polling instead of Redis/BullMQ.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/jobs-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/jobs-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/jobs/tarball", "requires_license": false, "language": "go", @@ -1061,16 +1196,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "9e86cc86215a3340cfbaa1966b6cf0c715af6fa58228be3a3fd4b34c54cd36fa", + "checksums": { + "sha256": "9e86cc86215a3340cfbaa1966b6cf0c715af6fa58228be3a3fd4b34c54cd36fa" } }, "k8s": { - "version": "1.0.0", + "version": "1.0.1", "description": "Deploy and manage nSelf on any Kubernetes cluster via the official Helm chart: install, upgrade, and status commands wrapping helm.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/k8s-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/k8s-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/k8s/tarball", "requires_license": false, "language": "go", @@ -1092,16 +1232,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-k8s" + }, + "releaseTag": "v1.0.1", + "checksum": "02f349cbbb20b9e052986671fceeeb03e52a2eb457c31acaaadacea5e9cee518", + "checksums": { + "sha256": "02f349cbbb20b9e052986671fceeeb03e52a2eb457c31acaaadacea5e9cee518" } }, "link-preview": { - "version": "1.0.0", + "version": "1.0.1", "description": "URL metadata extraction with Open Graph, Twitter Cards, and caching", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/link-preview-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/link-preview-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/link-preview/tarball", "requires_license": false, "language": "go", @@ -1124,6 +1269,11 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "7bdc88448b7f7d26f4bdb0e92e91969251f8cae69d88e88640f949ba83b5f895", + "checksums": { + "sha256": "7bdc88448b7f7d26f4bdb0e92e91969251f8cae69d88e88640f949ba83b5f895" } }, "maintenance": { @@ -1155,20 +1305,20 @@ "pluginType": "cli", "binaryName": "nself-maintenance" }, - "checksum": "a330de5ba86fcbc5a2466b82f893c31990e2903d0db01ed51437b60a939daf3b", + "checksum": "6d6821ca10516847ec97a7cc9fe3cc213104091b7eb64203ab047b00212e796d", "checksums": { - "sha256": "a330de5ba86fcbc5a2466b82f893c31990e2903d0db01ed51437b60a939daf3b" + "sha256": "6d6821ca10516847ec97a7cc9fe3cc213104091b7eb64203ab047b00212e796d" }, "releaseTag": "v1.0.1" }, "mdns": { - "version": "1.0.0", + "version": "1.0.1", "description": "mDNS/Bonjour service discovery for zero-config LAN advertising", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/mdns-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/mdns-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/mdns/tarball", "requires_license": false, "language": "go", @@ -1191,16 +1341,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "9994fc1c572e4c1f04fcc58d0fd06e871c5e2317b83595f6e1a1d61cd226940a", + "checksums": { + "sha256": "9994fc1c572e4c1f04fcc58d0fd06e871c5e2317b83595f6e1a1d61cd226940a" } }, "mlflow": { - "version": "1.0.0", + "version": "1.0.1", "description": "MLflow experiment tracking and model registry", "category": "data", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/mlflow-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/mlflow-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/mlflow/tarball", "requires_license": false, "language": "go", @@ -1221,16 +1376,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "366b85b397b29ee5478046b9668ac68735348c3bf4b00ced910b6916578a2676", + "checksums": { + "sha256": "366b85b397b29ee5478046b9668ac68735348c3bf4b00ced910b6916578a2676" } }, "model": { - "version": "1.0.0", + "version": "1.0.1", "description": "Manage local AI models via Ollama: list, pull, remove, update, benchmark, plus the legacy ollama command tree.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/model-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/model-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/model/tarball", "requires_license": false, "language": "go", @@ -1251,16 +1411,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-model" + }, + "releaseTag": "v1.0.1", + "checksum": "0d956ffb7b5e5a3b394c8c6beed04804d69593d2270013eb5a3c2784b530486d", + "checksums": { + "sha256": "0d956ffb7b5e5a3b394c8c6beed04804d69593d2270013eb5a3c2784b530486d" } }, "monitor": { - "version": "1.0.0", + "version": "1.0.1", "description": "Monitoring stack management: upgrade the bundled Grafana dashboards.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/monitor-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/monitor-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/monitor/tarball", "requires_license": false, "language": "go", @@ -1282,16 +1447,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-monitor" + }, + "releaseTag": "v1.0.1", + "checksum": "60bae7945c03fadc2e23134b0c9df801c1bd6f794e4cfc3283125f0cc9f68d65", + "checksums": { + "sha256": "60bae7945c03fadc2e23134b0c9df801c1bd6f794e4cfc3283125f0cc9f68d65" } }, "monitoring": { - "version": "1.0.0", + "version": "1.0.1", "description": "Full monitoring stack: Prometheus, Grafana, Loki, Promtail, Tempo, Alertmanager, and exporters", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/monitoring-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/monitoring-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/monitoring/tarball", "requires_license": false, "language": "config", @@ -1317,6 +1487,11 @@ "language": "config", "runtime": "compose", "entryPoint": "docker-compose.plugin.yml" + }, + "releaseTag": "v1.0.1", + "checksum": "607f8bf657cf47b40d987b9e76c8232e19d25ec0800a588b60de267d530fc3ff", + "checksums": { + "sha256": "607f8bf657cf47b40d987b9e76c8232e19d25ec0800a588b60de267d530fc3ff" } }, "notifications": { @@ -1352,9 +1527,9 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "7a2e1d5e9c2043a52b7767bafca901625d2ea156196d736c69de38f59d5e406c", + "checksum": "0f1a96c77bf746531bc9936b35b1fd68bb3b770489e75571ea753815fbc5278f", "checksums": { - "sha256": "7a2e1d5e9c2043a52b7767bafca901625d2ea156196d736c69de38f59d5e406c" + "sha256": "0f1a96c77bf746531bc9936b35b1fd68bb3b770489e75571ea753815fbc5278f" }, "releaseTag": "v1.0.1" }, @@ -1389,9 +1564,9 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "0594ae00ced6c6ec04ae388ebc9ff654e8b71baf7799f9ca75bb7b040ee96ee2", + "checksum": "8f8e159221ea1bd6dde14e0f0ef0bfa84abbedbbef7a5bd7d03db2acd9abf267", "checksums": { - "sha256": "0594ae00ced6c6ec04ae388ebc9ff654e8b71baf7799f9ca75bb7b040ee96ee2" + "sha256": "8f8e159221ea1bd6dde14e0f0ef0bfa84abbedbbef7a5bd7d03db2acd9abf267" }, "releaseTag": "v1.0.1" }, @@ -1417,16 +1592,20 @@ ], "dependencies": [], "name": "ollama", - "checksum": "" + "checksum": "affe917f8d212725db3ed2852ef0cc6b4513fac701406e4bf2774dbcb869d52f", + "checksums": { + "sha256": "affe917f8d212725db3ed2852ef0cc6b4513fac701406e4bf2774dbcb869d52f" + }, + "releaseTag": "v1.1.1" }, "paypal": { - "version": "1.0.0", + "version": "1.0.1", "description": "PayPal payment data sync with webhook handling", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/paypal-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/paypal-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/paypal/tarball", "requires_license": false, "language": "go", @@ -1461,16 +1640,21 @@ "language": "go", "runtime": "go", "entryPoint": "nself-paypal" + }, + "releaseTag": "v1.0.1", + "checksum": "4e83db8fcf1a130fdae4e214bfc53880f363964d829df38cb6a349ce88982fb8", + "checksums": { + "sha256": "4e83db8fcf1a130fdae4e214bfc53880f363964d829df38cb6a349ce88982fb8" } }, "push": { - "version": "1.0.0", + "version": "1.0.1", "description": "APNs + FCM push notification relay. Hasura event-trigger fan-out, delivery state tracking, exponential backoff retry. Handles iOS (Apple Push Notification service) and Android (Firebase Cloud Messaging v1 API).", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/push-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/push-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/push/tarball", "requires_license": false, "language": "go", @@ -1497,16 +1681,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "4dcf1390bd469b6b382d1c35bff8b83e3d2257f56e80eda0e13e6f971574c047", + "checksums": { + "sha256": "4dcf1390bd469b6b382d1c35bff8b83e3d2257f56e80eda0e13e6f971574c047" } }, "queue": { - "version": "1.0.0", + "version": "1.0.1", "description": "Inspect and manage nSelf background job queues: depth, stuck jobs, retries and purges.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/queue-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/queue-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/queue/tarball", "requires_license": false, "language": "go", @@ -1527,16 +1716,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-queue" + }, + "releaseTag": "v1.0.1", + "checksum": "cc42ff87dee15da9054d000eaa6f741ba36ba96b0a998db813ad86c2b34a5e09", + "checksums": { + "sha256": "cc42ff87dee15da9054d000eaa6f741ba36ba96b0a998db813ad86c2b34a5e09" } }, "region": { - "version": "1.0.0", + "version": "1.0.1", "description": "Multi-region management: add replica regions, list and inspect their status, and promote a region to primary.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/region-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/region-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/region/tarball", "requires_license": false, "language": "go", @@ -1558,16 +1752,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-region" + }, + "releaseTag": "v1.0.1", + "checksum": "4b666bae91337cc939894af65e40e1bdd845d031948ec4ac39488bdc55d07941", + "checksums": { + "sha256": "4b666bae91337cc939894af65e40e1bdd845d031948ec4ac39488bdc55d07941" } }, "release": { - "version": "1.0.0", + "version": "1.0.1", "description": "Orchestrate the nSelf project's own 12-step release cascade: tag and release cli and plugins-pro, build and push the admin image, and open the Homebrew formula PR.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/release-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/release-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/release/tarball", "requires_license": false, "language": "go", @@ -1589,6 +1788,11 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-release" + }, + "releaseTag": "v1.0.1", + "checksum": "53b25c469f679c21770412cdbfcb23cbd37c7ef690042285b80423202d1ea11d", + "checksums": { + "sha256": "53b25c469f679c21770412cdbfcb23cbd37c7ef690042285b80423202d1ea11d" } }, "search": { @@ -1629,20 +1833,20 @@ "bundles": [ "task" ], - "checksum": "631876a4982ca5129a095b44f699cf835aeba3897b8fdbd7c8c39a333c338796", + "checksum": "e7289716e97530f05f8bd97a66f12da5af4677019063df4b00abb1bf1cfd956d", "checksums": { - "sha256": "631876a4982ca5129a095b44f699cf835aeba3897b8fdbd7c8c39a333c338796" + "sha256": "e7289716e97530f05f8bd97a66f12da5af4677019063df4b00abb1bf1cfd956d" }, "releaseTag": "v1.0.1" }, "sentry-cli": { - "version": "1.0.0", + "version": "1.0.1", "description": "ɳSentry operations: monitors, incidents, status pages, alerts, cloud login, and provisioning a self-hosted sentry server.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/sentry-cli-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/sentry-cli-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/sentry-cli/tarball", "requires_license": false, "language": "go", @@ -1675,16 +1879,21 @@ "name": "sentry-server", "description": "Provision and manage a self-hosted ɳSentry server" } - ] + ], + "releaseTag": "v1.0.1", + "checksum": "9365ce7bc6a7054b7a309e7b6e5e0988501562b2da6828f39b06107bbe61bcd9", + "checksums": { + "sha256": "9365ce7bc6a7054b7a309e7b6e5e0988501562b2da6828f39b06107bbe61bcd9" + } }, "shopify": { - "version": "1.0.0", + "version": "1.0.1", "description": "Shopify store, orders, and product synchronization", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/shopify-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/shopify-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/shopify/tarball", "requires_license": false, "language": "go", @@ -1714,16 +1923,21 @@ "language": "go", "runtime": "go", "entryPoint": "nself-shopify" + }, + "releaseTag": "v1.0.1", + "checksum": "3b15141c2e88e9ff7702ba43a2ad5c32bfe6e1a365d480cd837b5f94502b6609", + "checksums": { + "sha256": "3b15141c2e88e9ff7702ba43a2ad5c32bfe6e1a365d480cd837b5f94502b6609" } }, "soak": { - "version": "1.0.0", + "version": "1.0.1", "description": "Manage soak testing lifecycle: abort an active soak and roll back to a prior version.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/soak-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/soak-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/soak/tarball", "requires_license": false, "language": "go", @@ -1744,16 +1958,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-soak" + }, + "releaseTag": "v1.0.1", + "checksum": "a749b85a584ad0a86c5f29ace5aec702ab1d66da0d8719577d2185d2fcb1f4fe", + "checksums": { + "sha256": "a749b85a584ad0a86c5f29ace5aec702ab1d66da0d8719577d2185d2fcb1f4fe" } }, "stripe": { - "version": "1.0.0", + "version": "1.0.1", "description": "Stripe billing data sync with webhook handling", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/stripe-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/stripe-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/stripe/tarball", "requires_license": false, "language": "go", @@ -1798,16 +2017,21 @@ "language": "go", "runtime": "go", "entryPoint": "nself-stripe" + }, + "releaseTag": "v1.0.1", + "checksum": "61eb1e6f88c159f0a85321107c42f970585c6c166cc1a6485dabff36546bd881", + "checksums": { + "sha256": "61eb1e6f88c159f0a85321107c42f970585c6c166cc1a6485dabff36546bd881" } }, "subtitle-manager": { - "version": "1.0.0", + "version": "1.0.1", "description": "Subtitle search, download, and sync verification via OpenSubtitles", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/subtitle-manager-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/subtitle-manager-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/subtitle-manager/tarball", "requires_license": false, "language": "go", @@ -1844,16 +2068,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "21852338855eebee7e30a23e0db33a225c68199045f03eae71fc59393d361313", + "checksums": { + "sha256": "21852338855eebee7e30a23e0db33a225c68199045f03eae71fc59393d361313" } }, "tenant": { - "version": "1.0.0", + "version": "1.0.1", "description": "Multi-tenant operations: create, suspend, upgrade and destroy tenants, plus per-tenant usage metering and billing reports.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/tenant-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/tenant-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/tenant/tarball", "requires_license": false, "language": "go", @@ -1885,16 +2114,21 @@ "name": "billing", "description": "Per-tenant usage metering, invoices and billing reports" } - ] + ], + "releaseTag": "v1.0.1", + "checksum": "8950500b0301f58c1fde2ffd09258053693795b95f743c5c42148eba2acf852a", + "checksums": { + "sha256": "8950500b0301f58c1fde2ffd09258053693795b95f743c5c42148eba2acf852a" + } }, "tokens": { - "version": "1.0.0", + "version": "1.0.1", "description": "Secure content delivery tokens, HLS encryption key management, and entitlement checks", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/tokens-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/tokens-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/tokens/tarball", "requires_license": false, "language": "go", @@ -1922,16 +2156,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "2c42f2ecfa676aaccc617b9435e5dd63b47f892f037674cc309a7f886d303ace", + "checksums": { + "sha256": "2c42f2ecfa676aaccc617b9435e5dd63b47f892f037674cc309a7f886d303ace" } }, "torrent-manager": { - "version": "1.0.0", + "version": "1.0.1", "description": "Torrent downloading with Transmission/qBittorrent integration, multi-source search, seeding policies, and VPN enforcement", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/torrent-manager-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/torrent-manager-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/torrent-manager/tarball", "requires_license": false, "language": "go", @@ -1980,16 +2219,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "7526353648c0817c9596ba453898a7daa6d050825dafa05694033409a0ff95e1", + "checksums": { + "sha256": "7526353648c0817c9596ba453898a7daa6d050825dafa05694033409a0ff95e1" } }, "vpn": { - "version": "1.0.0", + "version": "1.0.1", "description": "Multi-provider VPN management (NordVPN, PIA, Mullvad) with P2P optimization, server carousel, kill switch, and leak protection. Torrent download forwarding requires the torrent-manager plugin.", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/vpn-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/vpn-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/vpn/tarball", "requires_license": false, "language": "go", @@ -2018,16 +2262,21 @@ "language": "go", "runtime": "go", "entryPoint": "cmd/main.go" + }, + "releaseTag": "v1.0.1", + "checksum": "853564f1aaa2e80840e17e34a4fc0f357bbc3e33e3ea5cbfa274f1e28bbd112d", + "checksums": { + "sha256": "853564f1aaa2e80840e17e34a4fc0f357bbc3e33e3ea5cbfa274f1e28bbd112d" } }, "waf": { - "version": "1.0.0", + "version": "1.0.1", "description": "Web Application Firewall management: enable Coraza with the OWASP Core Rule Set, switch between detection and blocking mode, and review recent WAF events.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/waf-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/waf-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/waf/tarball", "requires_license": false, "language": "go", @@ -2049,16 +2298,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-waf" + }, + "releaseTag": "v1.0.1", + "checksum": "113cf3f68e042f09ea9ad0705409596ed06782ccf83b33f05533c0d8532fc2d2", + "checksums": { + "sha256": "113cf3f68e042f09ea9ad0705409596ed06782ccf83b33f05533c0d8532fc2d2" } }, "watchdog": { - "version": "1.0.0", + "version": "1.0.1", "description": "Self-healing container watchdog with circuit breaker: status, resets, event history, and TG/email escalation alerts.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/watchdog-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/watchdog-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/watchdog/tarball", "requires_license": false, "language": "go", @@ -2080,16 +2334,21 @@ "entryPoint": "cmd/", "pluginType": "cli", "binaryName": "nself-watchdog" + }, + "releaseTag": "v1.0.1", + "checksum": "bfee984fc52203ade2601e57d4dee58b7521da30d78e5dccb39fe9739c1d6361", + "checksums": { + "sha256": "bfee984fc52203ade2601e57d4dee58b7521da30d78e5dccb39fe9739c1d6361" } }, "webhooks": { - "version": "1.0.0", + "version": "1.0.1", "description": "Outbound webhook delivery service with retry logic, HMAC signing, and dead-letter queue", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/webhooks-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/webhooks-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/webhooks/tarball", "requires_license": false, "language": "go", @@ -2115,16 +2374,21 @@ }, "bundles": [ "task" - ] + ], + "releaseTag": "v1.0.1", + "checksum": "661ae10b78fde4712a96fa5b6bd6a6a87ca7d62b2c0b2658d81e329cd7a06bd9", + "checksums": { + "sha256": "661ae10b78fde4712a96fa5b6bd6a6a87ca7d62b2c0b2658d81e329cd7a06bd9" + } }, "access-controls": { - "version": "1.1.2", + "version": "1.0.1", "description": "Role-based and attribute-based access control (RBAC + ABAC) with policy engine", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/access-controls-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/access-controls-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/access-controls/tarball", "requires_license": false, "language": "go", @@ -2140,16 +2404,21 @@ "name": "access-controls", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "e18d769b9892971b0fab59340f335bf0cda961e9da331ac48f8227e8e7a6d4e1", + "checksums": { + "sha256": "e18d769b9892971b0fab59340f335bf0cda961e9da331ac48f8227e8e7a6d4e1" + } }, "admin-api": { - "version": "1.1.2", + "version": "1.0.1", "description": "Admin API service providing aggregated metrics, system health, session counts, storage breakdown, and real-time dashboard endpoints", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/admin-api-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/admin-api-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/admin-api/tarball", "requires_license": false, "language": "go", @@ -2164,16 +2433,21 @@ "name": "admin-api", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "898eae4cb4a7fc011a8c3065db69ce6649753d26bc1b441742cfa5f96417c82b", + "checksums": { + "sha256": "898eae4cb4a7fc011a8c3065db69ce6649753d26bc1b441742cfa5f96417c82b" + } }, "analytics": { - "version": "1.1.2", + "version": "1.0.1", "description": "Event tracking, counters, funnels, and quota management analytics engine", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/analytics-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/analytics-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/analytics/tarball", "requires_license": false, "language": "go", @@ -2188,16 +2462,21 @@ "name": "analytics", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "e1c0303cc47aba74110d35afdad0b4c84ad53612239f94dcfe79573e0f5455a8", + "checksums": { + "sha256": "e1c0303cc47aba74110d35afdad0b4c84ad53612239f94dcfe79573e0f5455a8" + } }, "audit-analytics": { - "version": "1.0.0", + "version": "1.0.1", "description": "Advanced audit analytics over np_audit_log: anomaly detection (z-score baseline), user behaviour heatmaps, privileged-action review queue, and webhook/email alerts.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/audit-analytics-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/audit-analytics-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/audit-analytics/tarball", "requires_license": false, "language": "go", @@ -2216,16 +2495,21 @@ "name": "audit-analytics", "author": "nself", "minNselfVersion": "1.0.9", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "a3fe57d141a6942619ff372fcda392ae509ced54ca943d5083de8304288a59e3", + "checksums": { + "sha256": "a3fe57d141a6942619ff372fcda392ae509ced54ca943d5083de8304288a59e3" + } }, "auth-enterprise": { - "version": "1.1.2", + "version": "1.0.1", "description": "MFA enforcement (TOTP + WebAuthn policy) and SSO via SAML 2.0 and OIDC for Google Workspace, Okta, and Microsoft Entra ID.", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/auth-enterprise-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/auth-enterprise-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/auth-enterprise/tarball", "requires_license": false, "language": "go", @@ -2234,16 +2518,21 @@ "name": "auth-enterprise", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "7699c8a293a29b6bd508cbf8bda5dd7a503296777e366cb5fa52b81860bf1d5b", + "checksums": { + "sha256": "7699c8a293a29b6bd508cbf8bda5dd7a503296777e366cb5fa52b81860bf1d5b" + } }, "byok": { - "version": "1.1.2", + "version": "1.0.1", "description": "Bring Your Own Key (BYOK) per-tenant encryption. Envelope encryption with customer-managed keys (CMK) via AWS KMS, GCP Cloud KMS, or HashiCorp Vault Transit. DEK wrapped by CMK. Satisfies HIPAA, FedRAMP High, FFIEC, and DORA key-control requirements. Enterprise-only.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/byok-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/byok-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/byok/tarball", "requires_license": false, "language": "go", @@ -2263,16 +2552,21 @@ "name": "byok", "author": "nself", "minNselfVersion": "1.0.9", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "304ca7b1e44dd075c3ed306c014badd9c09774f749bec79538da9abf84b7b193", + "checksums": { + "sha256": "304ca7b1e44dd075c3ed306c014badd9c09774f749bec79538da9abf84b7b193" + } }, "cdc": { - "version": "1.0.0", + "version": "1.0.1", "description": "Change Data Capture — streams Postgres WAL events to downstream consumers via webhooks or message queues.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/cdc-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/cdc-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/cdc/tarball", "requires_license": false, "language": "go", @@ -2287,16 +2581,21 @@ "name": "cdc", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "27283b38f2b2ebe1ad0880294f5c92c8edbc9b16a460c0f956db1f17e9241b1b", + "checksums": { + "sha256": "27283b38f2b2ebe1ad0880294f5c92c8edbc9b16a460c0f956db1f17e9241b1b" + } }, "cdn": { - "version": "1.1.2", + "version": "1.0.1", "description": "CDN management and integration plugin - cache purging, signed URLs. Planned: analytics sync from Cloudflare/BunnyCDN", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/cdn-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/cdn-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/cdn/tarball", "requires_license": false, "language": "go", @@ -2311,16 +2610,21 @@ "name": "cdn", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "c5246780f162c44eeae8a399f63a7438470f869f8444b578fd2d2182d2ed5615", + "checksums": { + "sha256": "c5246780f162c44eeae8a399f63a7438470f869f8444b578fd2d2182d2ed5615" + } }, "cloudflare": { - "version": "1.1.2", + "version": "1.0.1", "description": "Cloudflare zone, DNS, R2, cache, and analytics management", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/cloudflare-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/cloudflare-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/cloudflare/tarball", "requires_license": false, "language": "go", @@ -2336,16 +2640,21 @@ "name": "cloudflare", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "eca7aee1ff93a7ab0382e6e03ae4433c247108a36db295c98638b5c952c377ff", + "checksums": { + "sha256": "eca7aee1ff93a7ab0382e6e03ae4433c247108a36db295c98638b5c952c377ff" + } }, "compliance": { - "version": "1.1.2", + "version": "1.0.1", "description": "Comprehensive compliance and audit platform with GDPR/CCPA/HIPAA/SOC2/PCI management, DSARs, consent tracking, data retention, breach notification, immutable audit logging, SIEM integration, and compliance reporting", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/compliance-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/compliance-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/compliance/tarball", "requires_license": false, "language": "go", @@ -2370,16 +2679,21 @@ "name": "compliance", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "64f7dd87d62aa5067da7676405b66f2d08af3162f984eed613862e889f7efab6", + "checksums": { + "sha256": "64f7dd87d62aa5067da7676405b66f2d08af3162f984eed613862e889f7efab6" + } }, "content-safety": { - "version": "1.0.0", + "version": "1.0.1", "description": "Trust-safety evidence, legal holds, spam detection, raid protection, and abuse scoring", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/content-safety-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/content-safety-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/content-safety/tarball", "requires_license": false, "language": "go", @@ -2395,16 +2709,21 @@ "name": "content-safety", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "5649ee9d565d7458fea9cb1bf2da4ea2ac9a05d37c1e1c51bde7acca76b0e9af", + "checksums": { + "sha256": "5649ee9d565d7458fea9cb1bf2da4ea2ac9a05d37c1e1c51bde7acca76b0e9af" + } }, "crdt": { - "version": "1.1.2", + "version": "1.0.1", "description": "CRDT offline-first primitives. Self-hosted Yjs (y-websocket protocol) and automerge sync server with Postgres persistence. Drop-in replacement for Liveblocks/PartyKit with zero extra infra.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/crdt-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/crdt-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/crdt/tarball", "requires_license": false, "language": "go", @@ -2422,16 +2741,21 @@ "name": "crdt", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "4597773f5630a34707af29756b0144dbc4f36544498a55dad6acb86c46888369", + "checksums": { + "sha256": "4597773f5630a34707af29756b0144dbc4f36544498a55dad6acb86c46888369" + } }, "ddns": { - "version": "1.1.2", + "version": "1.0.1", "description": "Dynamic DNS plugin with external IP monitoring. Planned: DNS provider API integration (Cloudflare, Route53) for automated record updates", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/ddns-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/ddns-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/ddns/tarball", "requires_license": false, "language": "go", @@ -2447,16 +2771,21 @@ "name": "ddns", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "0df7bcd666c646319c5e4fed150c5e7b5850da168ca3cae08edc408e166aa1ac", + "checksums": { + "sha256": "0df7bcd666c646319c5e4fed150c5e7b5850da168ca3cae08edc408e166aa1ac" + } }, "devices": { - "version": "1.1.2", + "version": "1.0.1", "description": "IoT device enrollment, trust management, and command dispatch service.", "category": "streaming", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/devices-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/devices-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/devices/tarball", "requires_license": false, "language": "go", @@ -2472,16 +2801,21 @@ "name": "devices", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "894c0311e6ef913bbe7a03eeb15e42ff9fd3c20e4ecb9e5dee43b20c85082308", + "checksums": { + "sha256": "894c0311e6ef913bbe7a03eeb15e42ff9fd3c20e4ecb9e5dee43b20c85082308" + } }, "documents": { - "version": "1.1.2", + "version": "1.0.1", "description": "Document management and generation service with templates, versioning, and sharing", "category": "data", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/documents-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/documents-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/documents/tarball", "requires_license": false, "language": "go", @@ -2497,16 +2831,21 @@ "name": "documents", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "cab7fbda0d68a5676f9547810edeb1c4b788f43a304c8a387b1cc2a1b8a658cc", + "checksums": { + "sha256": "cab7fbda0d68a5676f9547810edeb1c4b788f43a304c8a387b1cc2a1b8a658cc" + } }, "email": { - "version": "1.0.0", + "version": "1.0.1", "description": "Transactional email via Elastic Email. Send, template, and track emails.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/email-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/email-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/email/tarball", "requires_license": false, "language": "go", @@ -2515,16 +2854,21 @@ "name": "email", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "8e42a8e106881ca7daf6e176af3ebcd564bf00648011c6767b408607de8a1e6c", + "checksums": { + "sha256": "8e42a8e106881ca7daf6e176af3ebcd564bf00648011c6767b408607de8a1e6c" + } }, "encryption": { - "version": "1.0.0", + "version": "1.0.1", "description": "Bring Your Own Key (BYOK) per-tenant envelope encryption for nSelf Cloud: AWS KMS, GCP Cloud KMS, and HashiCorp Vault Transit, with key rotation and an audit trail.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/encryption-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/encryption-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/encryption/tarball", "requires_license": false, "language": "go", @@ -2539,16 +2883,21 @@ "name": "encryption", "author": "nself", "minNselfVersion": "1.2.8", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "de2bd338986e79ccd44d34417c8e5e77beb1a2889880fdacacb41d4637a376e0", + "checksums": { + "sha256": "de2bd338986e79ccd44d34417c8e5e77beb1a2889880fdacacb41d4637a376e0" + } }, "entitlements": { - "version": "1.2.0", + "version": "1.0.1", "description": "Feature gating, subscription plan management, usage quota tracking, and metered billing", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.0/entitlements-1.2.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/entitlements-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/entitlements/tarball", "requires_license": false, "language": "go", @@ -2564,16 +2913,21 @@ "name": "entitlements", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "0b04c598bd0e64fb23f4a2ae7c3b71d463d428e06dd6ac3502f35239db2661d2", + "checksums": { + "sha256": "0b04c598bd0e64fb23f4a2ae7c3b71d463d428e06dd6ac3502f35239db2661d2" + } }, "event-bus": { - "version": "1.0.0", + "version": "1.0.1", "description": "Internal event bus with pub/sub, fan-out delivery, dead-letter queue, and replay for inter-plugin messaging.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/event-bus-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/event-bus-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/event-bus/tarball", "requires_license": false, "language": "go", @@ -2587,16 +2941,21 @@ "name": "event-bus", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "003a90f8bbc609123ee6b24cf8d20d289df31ca57dd0fe61d617d235c3abbf07", + "checksums": { + "sha256": "003a90f8bbc609123ee6b24cf8d20d289df31ca57dd0fe61d617d235c3abbf07" + } }, "family-ancestry": { - "version": "1.1.2", + "version": "1.0.1", "description": "Ancestry.com → nFamily migration helper (PLANNED). Imports profiles, photos, documents, sources into the family plugin. Pattern mirrors family-geni.", "category": "social", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/family-ancestry-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-ancestry-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-ancestry/tarball", "requires_license": false, "language": "go", @@ -2612,16 +2971,21 @@ "name": "family-ancestry", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "93ef6dcc17675bb30c041b12cfac5da52294bd6af7db7d573774937f4f85bea7", + "checksums": { + "sha256": "93ef6dcc17675bb30c041b12cfac5da52294bd6af7db7d573774937f4f85bea7" + } }, "family-familysearch": { - "version": "1.1.2", + "version": "1.0.1", "description": "FamilySearch → nFamily migration helper (PLANNED). Free public API from FamilySearch (LDS). Lowest-friction next-step importer after family-geni.", "category": "social", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/family-familysearch-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-familysearch-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-familysearch/tarball", "requires_license": false, "language": "go", @@ -2638,16 +3002,21 @@ "name": "family-familysearch", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "8759be1318a484259d732377d5dddc9b3ec3e5dd08f9275ac71ffe279e302ebe", + "checksums": { + "sha256": "8759be1318a484259d732377d5dddc9b3ec3e5dd08f9275ac71ffe279e302ebe" + } }, "family-myheritage": { - "version": "1.1.2", + "version": "1.0.1", "description": "MyHeritage → nFamily migration helper (PLANNED). MyHeritage is Geni.com's parent company — lowest legal risk, potential partnership path.", "category": "social", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/family-myheritage-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-myheritage-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-myheritage/tarball", "requires_license": false, "language": "go", @@ -2663,16 +3032,21 @@ "name": "family-myheritage", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "fbde06c21904033de8773821fc6da82e7c73973037dd5271063b330f36fbaaf9", + "checksums": { + "sha256": "fbde06c21904033de8773821fc6da82e7c73973037dd5271063b330f36fbaaf9" + } }, "family-wikitree": { - "version": "1.1.2", + "version": "1.0.1", "description": "WikiTree → nFamily migration helper (PLANNED). WikiTree is a free public genealogy wiki with a REST API (Apps API).", "category": "social", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/family-wikitree-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-wikitree-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-wikitree/tarball", "requires_license": false, "language": "go", @@ -2688,16 +3062,21 @@ "name": "family-wikitree", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "5980bbd3add7a4f577312ed0ffecb3d9bfb6615d350ad06b3840d520dc15decc", + "checksums": { + "sha256": "5980bbd3add7a4f577312ed0ffecb3d9bfb6615d350ad06b3840d520dc15decc" + } }, "functions-v8": { - "version": "1.1.2", + "version": "1.0.1", "description": "Edge Functions V8 Runtime. Deploy short-lived TypeScript functions with a Deno V8 isolate pool. HTTP-trigger, <50ms cold-start, allowlist-only env injection, Prometheus metrics, SSE log streaming.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/functions-v8-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/functions-v8-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/functions-v8/tarball", "requires_license": false, "language": "go", @@ -2714,16 +3093,21 @@ "name": "functions-v8", "author": "nself", "minNselfVersion": "1.0.9", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "416874eb50c747e80558ddbca02bcc79b9efc868b524e04c6df67d07fe965984", + "checksums": { + "sha256": "416874eb50c747e80558ddbca02bcc79b9efc868b524e04c6df67d07fe965984" + } }, "hipaa": { - "version": "1.1.2", + "version": "1.0.1", "description": "HIPAA compliance add-on: PHI column registry, PHI access logging with 6-year retention, de-identification helpers (masking + tokenization), encryption-at-rest audit, and BAA workflow.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/hipaa-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/hipaa-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/hipaa/tarball", "requires_license": false, "language": "go", @@ -2741,16 +3125,21 @@ "name": "hipaa", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "d185750737dd8817d320652db5b3958ff498a3dcec39656635a8e4c703307650", + "checksums": { + "sha256": "d185750737dd8817d320652db5b3958ff498a3dcec39656635a8e4c703307650" + } }, "home": { - "version": "1.1.2", + "version": "1.0.1", "description": "Home automation bridge. Connects Home Assistant and MQTT to ɳSelf, enabling smart device control, state monitoring, scene activation, and command logging.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/home-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/home-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/home/tarball", "requires_license": false, "language": "go", @@ -2765,16 +3154,21 @@ "name": "home", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "1cc72e9017b0ff7163aa78051d25aa5f8dbbc8b8fe0058d899bd78fe2fe29187", + "checksums": { + "sha256": "1cc72e9017b0ff7163aa78051d25aa5f8dbbc8b8fe0058d899bd78fe2fe29187" + } }, "idme": { - "version": "1.1.2", + "version": "1.0.1", "description": "ID.me OAuth authentication with government-grade identity verification for 7 groups", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/idme-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/idme-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/idme/tarball", "requires_license": false, "language": "go", @@ -2791,16 +3185,21 @@ "name": "idme", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "a7ea57d0d17d038a5a6b7bd703577007d4badb8012f2bf1e3d6db2441167a38e", + "checksums": { + "sha256": "a7ea57d0d17d038a5a6b7bd703577007d4badb8012f2bf1e3d6db2441167a38e" + } }, "job-queue": { - "version": "1.0.0", + "version": "1.0.1", "description": "Durable background job queue with priorities, retries, scheduled execution, and per-job progress tracking.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/job-queue-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/job-queue-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/job-queue/tarball", "requires_license": false, "language": "go", @@ -2814,16 +3213,21 @@ "name": "job-queue", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "1abbd052c5c564d5772212bcb87de643e8275190b89b0081f10310adf8ad418a", + "checksums": { + "sha256": "1abbd052c5c564d5772212bcb87de643e8275190b89b0081f10310adf8ad418a" + } }, "linkedin": { - "version": "1.1.2", + "version": "1.0.1", "description": "LinkedIn publishing integration. OAuth 2.0 connection, post to LinkedIn feed with optional image attachments, post history, and Claw tool descriptor.", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/linkedin-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/linkedin-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/linkedin/tarball", "requires_license": false, "language": "go", @@ -2838,16 +3242,21 @@ "name": "linkedin", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "157f2502e026d382c06008271914ce97e1e4d6c4e7f13d7ac8a4c977ac41e20a", + "checksums": { + "sha256": "157f2502e026d382c06008271914ce97e1e4d6c4e7f13d7ac8a4c977ac41e20a" + } }, "mail": { - "version": "1.0.0", + "version": "1.0.1", "description": "Send transactional and broadcast email through the nSelf stack: mux + Postmark pipeline via ping_api, template management, and DKIM verification.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/mail-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/mail-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/mail/tarball", "requires_license": false, "language": "go", @@ -2862,16 +3271,21 @@ "name": "mail", "author": "nself", "minNselfVersion": "1.2.8", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "7b28487eddd2a5ec866e31ebb11d4ce19cd6fa73b724bda9d83b7e319f80689c", + "checksums": { + "sha256": "7b28487eddd2a5ec866e31ebb11d4ce19cd6fa73b724bda9d83b7e319f80689c" + } }, "meetings": { - "version": "1.1.2", + "version": "1.0.1", "description": "Calendar integration and meeting management with room booking, recurring meetings, and availability tracking. External calendar sync (Google/Outlook) planned for future release.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/meetings-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/meetings-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/meetings/tarball", "requires_license": false, "language": "go", @@ -2888,16 +3302,21 @@ "name": "meetings", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "dde30f60460c66b5295b3847726a63c688e44692f7beba3d85848477e000ac2f", + "checksums": { + "sha256": "dde30f60460c66b5295b3847726a63c688e44692f7beba3d85848477e000ac2f" + } }, "nself-cloud": { - "version": "0.1.0", + "version": "1.0.1", "description": "Internal ɳCloud managed hosting infrastructure plugin — provisions isolated nSelf instances for Cloud customers", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v0.1.0/nself-cloud-0.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-cloud-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-cloud/tarball", "requires_license": false, "language": "go", @@ -2911,16 +3330,21 @@ "name": "nself-cloud", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "79fb2a982d8e5dd72cb2130adb3ba6bdbe44230985b301f310d381876e241c79", + "checksums": { + "sha256": "79fb2a982d8e5dd72cb2130adb3ba6bdbe44230985b301f310d381876e241c79" + } }, "nself-eval-gate": { - "version": "1.0.0", + "version": "1.0.1", "description": "Eval harness and autonomy-tier gate for nSelf. Three-mode scoring (exact, semantic via BGE-M3, rubric via LLM-as-judge), recall-quality precision/recall/fact_f1 metrics, CI integration via nself ci eval, and autonomy-tier threshold enforcement.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/nself-eval-gate-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-eval-gate-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-eval-gate/tarball", "requires_license": false, "language": "go", @@ -2935,16 +3359,21 @@ "name": "nself-eval-gate", "author": "nself", "minNselfVersion": "1.1.1", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "0d5c1f9ff4f24e50093890b60f9f8480b255905edcde025a4b62ac36e3e8a360", + "checksums": { + "sha256": "0d5c1f9ff4f24e50093890b60f9f8480b255905edcde025a4b62ac36e3e8a360" + } }, "nself-geo": { - "version": "1.1.0", + "version": "1.0.1", "description": "Forward and reverse geocoding with provider-agnostic caching layer. Nominatim (free, OSM) is the default; Google Places and Mapbox are premium fallbacks. Exposes geocodeAddress, reverseGeocode, geocodeBatch, clearGeoCache via Hasura Remote Schema.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.0/nself-geo-1.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-geo-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-geo/tarball", "requires_license": false, "language": "go", @@ -2960,16 +3389,21 @@ "name": "nself-geo", "author": "nself", "minNselfVersion": "1.1.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "42ffc22524d78e9ede45823960ce2174aff06cf099f8818e896396fd99bed6b8", + "checksums": { + "sha256": "42ffc22524d78e9ede45823960ce2174aff06cf099f8818e896396fd99bed6b8" + } }, "nself-image": { - "version": "0.1.0", + "version": "1.0.1", "description": "Server-side image processing plugin for nSelf: resize, crop, format conversion (WebP/AVIF/JPEG/PNG), EXIF strip, and MinIO-integrated upload pipeline. Replaces per-app Sharp/Node.js usage across nFamily, nChat, and any consumer app needing image normalization.", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.2.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v0.1.0/nself-image-0.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-image-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-image/tarball", "requires_license": false, "language": "rust", @@ -2990,16 +3424,21 @@ "name": "nself-image", "author": "nself", "minNselfVersion": "1.2.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "16881c2975f870712b720f4546101c3534c33a082065f31ff20f8289c2bbc2d7", + "checksums": { + "sha256": "16881c2975f870712b720f4546101c3534c33a082065f31ff20f8289c2bbc2d7" + } }, "nself-pdf": { - "version": "0.1.0", + "version": "1.0.1", "description": "Server-side PDF generation from HTML templates (Handlebars/Nunjucks) with MinIO output and Hasura Action trigger", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v0.1.0/nself-pdf-0.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-pdf-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-pdf/tarball", "requires_license": false, "language": "go", @@ -3017,16 +3456,21 @@ "name": "nself-pdf", "author": "nself", "minNselfVersion": "1.1.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "5fdb8e8f76b282266a2018368de24d87ec674ac797c0737b6c4df34751fb2568", + "checksums": { + "sha256": "5fdb8e8f76b282266a2018368de24d87ec674ac797c0737b6c4df34751fb2568" + } }, "nself-scan": { - "version": "0.1.0", + "version": "1.0.1", "description": "Server-side file scanning for MinIO uploads: magic-byte MIME validation, ClamAV virus/malware scanning (always free, Security-Always-Free Doctrine), and optional CSAM hash detection (deferred — requires partner agreement)", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v0.1.0/nself-scan-0.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-scan-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-scan/tarball", "requires_license": false, "language": "go", @@ -3046,16 +3490,21 @@ "name": "nself-scan", "author": "nself", "minNselfVersion": "1.1.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "5220e812687655b7b0cdbb94daaf783b1bd23ba0ca3880b53c457e519346c5d1", + "checksums": { + "sha256": "5220e812687655b7b0cdbb94daaf783b1bd23ba0ca3880b53c457e519346c5d1" + } }, "nself-sync": { - "version": "1.1.2", + "version": "1.0.1", "description": "Event-log sync engine for nClaw. Multi-device state synchronization via hybrid logical clocks (HLC) and last-write-wins (LWW) conflict resolution. JWT-authenticated push/pull/snapshot/subscribe with Ed25519-signed events.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/nself-sync-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-sync-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-sync/tarball", "requires_license": false, "language": "go", @@ -3078,16 +3527,21 @@ "np_sync_events", "np_devices", "np_sync_cursors" - ] + ], + "releaseTag": "v1.0.1", + "checksum": "365865218e415d628bb4e7519288573accca71649a2ed990546417cfe2324d38", + "checksums": { + "sha256": "365865218e415d628bb4e7519288573accca71649a2ed990546417cfe2324d38" + } }, "nself-vault": { - "version": "1.0.0", + "version": "1.0.1", "description": "nSelf-managed envelope encryption KMS. Provides per-row/column selective encryption with key rotation, audit logging, and Hasura Action surface. Eliminates ad-hoc per-team AES wrappers.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/nself-vault-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-vault-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-vault/tarball", "requires_license": false, "language": "go", @@ -3105,16 +3559,21 @@ "name": "nself-vault", "author": "nself", "minNselfVersion": "1.1.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "8a580e105cc45a8ac5c860eae957948445fa72daafa70915cf2a7b4964702bfa", + "checksums": { + "sha256": "8a580e105cc45a8ac5c860eae957948445fa72daafa70915cf2a7b4964702bfa" + } }, "object-storage": { - "version": "1.1.2", + "version": "1.0.1", "description": "Multi-provider object storage with S3-compatible API, local storage, presigned URLs, and multipart uploads", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/object-storage-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/object-storage-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/object-storage/tarball", "requires_license": false, "language": "go", @@ -3133,16 +3592,21 @@ "name": "object-storage", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "8d8b02a9ad5f83b5ceb236188a6305d768751647e50629708337fe6cc8449218", + "checksums": { + "sha256": "8d8b02a9ad5f83b5ceb236188a6305d768751647e50629708337fe6cc8449218" + } }, "observability": { - "version": "1.1.2", + "version": "1.0.1", "description": "Unified observability service with health probes, watchdog timers, service auto-discovery, and systemd integration", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/observability-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/observability-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/observability/tarball", "requires_license": false, "language": "go", @@ -3157,16 +3621,21 @@ "name": "observability", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "32e1031b640e9a744d2cdaeaa1dbc77835bda9c507fe49b6194c16252695b0e3", + "checksums": { + "sha256": "32e1031b640e9a744d2cdaeaa1dbc77835bda9c507fe49b6194c16252695b0e3" + } }, "payments": { - "version": "1.0.0", + "version": "1.0.1", "description": "Unified payments abstraction supporting Stripe, PayPal, and Apple/Google Pay with webhook normalization.", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/payments-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/payments-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/payments/tarball", "requires_license": false, "language": "go", @@ -3181,16 +3650,21 @@ "name": "payments", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "6b609410d6b4afd2cd731ee6405dfa465e1bb3fa9bf5503310a56980a4ce997f", + "checksums": { + "sha256": "6b609410d6b4afd2cd731ee6405dfa465e1bb3fa9bf5503310a56980a4ce997f" + } }, "pentest": { - "version": "1.1.2", + "version": "1.0.1", "description": "Penetration-test readiness kit. Generates structured scope documents, provisions pentest credentials, tracks findings, and manages remediation. ɳSelf+ tier.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/pentest-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/pentest-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/pentest/tarball", "requires_license": false, "language": "go", @@ -3205,16 +3679,21 @@ "name": "pentest", "author": "nself", "minNselfVersion": "1.0.9", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "406641a69aef5ee4301fb4ecb6db55b235c33a8d584e1aaa836c2416d80b8a5f", + "checksums": { + "sha256": "406641a69aef5ee4301fb4ecb6db55b235c33a8d584e1aaa836c2416d80b8a5f" + } }, "pentest-kit": { - "version": "1.0.0", + "version": "1.0.1", "description": "CLI front end for the pentest plugin: generate scope documents, provision test credentials, import findings, and check remediation status from `nself pentest-kit`. Business+ tier.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/pentest-kit-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/pentest-kit-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/pentest-kit/tarball", "requires_license": false, "language": "go", @@ -3228,16 +3707,21 @@ "name": "pentest-kit", "author": "nself", "minNselfVersion": "1.2.8", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "8a13ec5fd704b38a2aa4c978fb0dac20e4bfd8bf3fdf96550589dd897db7713a", + "checksums": { + "sha256": "8a13ec5fd704b38a2aa4c978fb0dac20e4bfd8bf3fdf96550589dd897db7713a" + } }, "plugin-clawde": { - "version": "0.1.0", + "version": "1.0.1", "description": "ClawDE daemon integration backend. Manages session lifecycle, tracks daemon health, and streams events via SSE for the ClawDE AI development environment.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v0.1.0/plugin-clawde-0.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-clawde-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-clawde/tarball", "requires_license": false, "language": "go", @@ -3246,16 +3730,21 @@ "name": "plugin-clawde", "author": "nself", "minNselfVersion": "1.1.1", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "20bed42be70497a920b109b3f21c9e05fe76070c2f2f8d534e3366fd6574afa8", + "checksums": { + "sha256": "20bed42be70497a920b109b3f21c9e05fe76070c2f2f8d534e3366fd6574afa8" + } }, "plugin-gauth": { - "version": "0.1.0", + "version": "1.0.1", "description": "Headless server-side Google OAuth token refresh for nSelf AI services", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v0.1.0/plugin-gauth-0.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-gauth-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-gauth/tarball", "requires_license": false, "language": "rust", @@ -3264,16 +3753,21 @@ "name": "plugin-gauth", "author": "nself", "minNselfVersion": "1.1.1", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "fef4fdaea54c4ec250e6d104d5c7f66894229465e32e63c4991c978946cbea3b", + "checksums": { + "sha256": "fef4fdaea54c4ec250e6d104d5c7f66894229465e32e63c4991c978946cbea3b" + } }, "plugin-llm-gateway": { - "version": "0.1.0", + "version": "1.0.1", "description": "ClawDE-facing LLM gateway: per-tenant token quota, Redis response caching, session context injection, and SSRF guard over nself-ai-gateway (port 3761). Simplifies ClawDE client LLM calls.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v0.1.0/plugin-llm-gateway-0.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-llm-gateway-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-llm-gateway/tarball", "requires_license": false, "language": "go", @@ -3282,16 +3776,21 @@ "name": "plugin-llm-gateway", "author": "nself", "minNselfVersion": "1.1.1", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "79b02e05e909ea75ef2dd9cb3a76a5499bd6e22c88dff60af486c12f09a381e5", + "checksums": { + "sha256": "79b02e05e909ea75ef2dd9cb3a76a5499bd6e22c88dff60af486c12f09a381e5" + } }, "plugin-pty": { - "version": "1.0.0", + "version": "1.0.1", "description": "Pseudo-terminal bridge for ClawDE AI sessions. Spawns, manages, and relays PTY processes with per-tenant resource limits and WebSocket I/O.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/plugin-pty-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-pty-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-pty/tarball", "requires_license": false, "language": "go", @@ -3300,16 +3799,21 @@ "name": "plugin-pty", "author": "nself", "minNselfVersion": "1.1.1", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "f25dbb28223f439b4e5ad53b3540689f393cf4e23de57f8b31336fddf4df4ff1", + "checksums": { + "sha256": "f25dbb28223f439b4e5ad53b3540689f393cf4e23de57f8b31336fddf4df4ff1" + } }, "plugin-retrieval": { - "version": "0.1.0", + "version": "1.0.1", "description": "Hybrid retrieval plugin: pgvector ANN + tsvector BM25 merged with Reciprocal Rank Fusion (RRF). Provides the search backend for ɳClaw memory and nself-ai-mcp search/recall tools.", "category": "data", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v0.1.0/plugin-retrieval-0.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-retrieval-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-retrieval/tarball", "requires_license": false, "language": "go", @@ -3318,16 +3822,21 @@ "name": "plugin-retrieval", "author": "nself", "minNselfVersion": "1.1.1", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "44f2739e254c1e7fc4eebaf147ed4143923e705f02403aae562cb6be2c1f3418", + "checksums": { + "sha256": "44f2739e254c1e7fc4eebaf147ed4143923e705f02403aae562cb6be2c1f3418" + } }, "post": { - "version": "1.1.2", + "version": "1.0.1", "description": "Multi-platform content publishing. Publish to WordPress, Ghost, Twitter/X, LinkedIn, Telegram channels, Dev.to, and Hashnode with optional scheduling.", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/post-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/post-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/post/tarball", "requires_license": false, "language": "go", @@ -3346,16 +3855,21 @@ "name": "post", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "7131e61958567798262219bd82b3ab5510777f859c999bb3b13c22dbecdec522", + "checksums": { + "sha256": "7131e61958567798262219bd82b3ab5510777f859c999bb3b13c22dbecdec522" + } }, "retro-gaming": { - "version": "1.1.2", + "version": "1.0.1", "description": "Retro gaming ROM library management, emulator core serving, save state synchronization, play sessions, and controller configuration for nself-tv", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/retro-gaming-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/retro-gaming-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/retro-gaming/tarball", "requires_license": false, "language": "go", @@ -3373,16 +3887,21 @@ "name": "retro-gaming", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "3be264e6953c6ec7917bac24691b476770c4248e5c61f2ef76e8ccaf3dddbf42", + "checksums": { + "sha256": "3be264e6953c6ec7917bac24691b476770c4248e5c61f2ef76e8ccaf3dddbf42" + } }, "rom-discovery": { - "version": "1.1.2", + "version": "1.0.1", "description": "ROM metadata database, search, discovery, automated download orchestration, and multi-source scraping for nself-tv", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/rom-discovery-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/rom-discovery-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/rom-discovery/tarball", "requires_license": false, "language": "go", @@ -3400,16 +3919,21 @@ "name": "rom-discovery", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "4b8abc0c03b7a0304a72c40fc1daed9db01266c0c5eac7abcb4461c63831dcb8", + "checksums": { + "sha256": "4b8abc0c03b7a0304a72c40fc1daed9db01266c0c5eac7abcb4461c63831dcb8" + } }, "siem": { - "version": "1.1.2", + "version": "1.0.1", "description": "Forward nSelf audit logs and security events to external SIEM platforms: Datadog, Splunk HEC, Elastic, Loki, and custom webhooks. OCSF/ECS schema normalization.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/siem-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/siem-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/siem/tarball", "requires_license": false, "language": "go", @@ -3428,16 +3952,21 @@ "name": "siem", "author": "nself", "minNselfVersion": "1.0.9", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "cd0ce7b4b47eab94e2d15eba337ef50453ee640e0d0caecfa207311ebad462d5", + "checksums": { + "sha256": "cd0ce7b4b47eab94e2d15eba337ef50453ee640e0d0caecfa207311ebad462d5" + } }, "sms": { - "version": "1.0.0", + "version": "1.0.1", "description": "SMS messaging via Twilio. Send, track, and manage opt-outs.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/sms-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/sms-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/sms/tarball", "requires_license": false, "language": "go", @@ -3446,7 +3975,12 @@ "name": "sms", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "ce8253e6287bf697b957f8e8f9d56b3848eab9ca5d2b54a9fff3f674d1239bdf", + "checksums": { + "sha256": "ce8253e6287bf697b957f8e8f9d56b3848eab9ca5d2b54a9fff3f674d1239bdf" + } }, "storage": { "version": "1.0.1", @@ -3471,20 +4005,20 @@ "author": "nself", "minNselfVersion": "1.1.0", "tables": [], - "checksum": "8f9edd9027ad44526fdede098370d549ca20495dcd9b11ff190a4832e82f9c1c", + "checksum": "8ae54cd144a1209ef9c3317b78e90c86c370064af90eb1cef8119cd24f73e34c", "checksums": { - "sha256": "8f9edd9027ad44526fdede098370d549ca20495dcd9b11ff190a4832e82f9c1c" + "sha256": "8ae54cd144a1209ef9c3317b78e90c86c370064af90eb1cef8119cd24f73e34c" }, "releaseTag": "v1.0.1" }, "storage-transform": { - "version": "1.1.2", + "version": "1.0.1", "description": "On-the-fly image transformation CDN: resize, crop, format convert (WebP/AVIF/JPEG/PNG), quality, and device-pixel-ratio support. URL-param driven, Redis LRU cache, Nginx cache headers, rate limiting.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/storage-transform-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/storage-transform-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/storage-transform/tarball", "requires_license": false, "language": "go", @@ -3501,16 +4035,21 @@ "name": "storage-transform", "author": "nself", "minNselfVersion": "1.0.9", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "8d1c6b5789466d28a2ebd7ec094076f9b7fb4121c638fb909feb247d0575ad77", + "checksums": { + "sha256": "8d1c6b5789466d28a2ebd7ec094076f9b7fb4121c638fb909feb247d0575ad77" + } }, "tenant-controller": { - "version": "1.1.2", + "version": "1.0.1", "description": "Multi-tenant master controller for nCloud. Manages N isolated nSelf project instances behind a single deploy: per-project Postgres schema, Hasura metadata namespace, Nginx vhost, JWT secret, Redis key prefix, and MinIO bucket. Enables 50 projects on one Hetzner CX21.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/tenant-controller-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/tenant-controller-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/tenant-controller/tarball", "requires_license": false, "language": "go", @@ -3526,16 +4065,21 @@ "name": "tenant-controller", "author": "nself", "minNselfVersion": "1.0.9", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "0c718c096dddad1941c26aaaed3a8f5548da42dc4a6baf84aff558dae0009ffa", + "checksums": { + "sha256": "0c718c096dddad1941c26aaaed3a8f5548da42dc4a6baf84aff558dae0009ffa" + } }, "transactional-email": { - "version": "1.1.0", + "version": "1.0.1", "description": "Provider-agnostic transactional email: template rendering, per-tenant domain management, SPF/DKIM reporting, delivery webhook relay.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.0/transactional-email-1.1.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/transactional-email-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/transactional-email/tarball", "requires_license": false, "language": "go", @@ -3552,16 +4096,21 @@ "name": "transactional-email", "author": "nself", "minNselfVersion": "1.1.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "cc9fc21e72e7c09cc18823b23c273b01d647a8ca539318206db31e99b588869d", + "checksums": { + "sha256": "cc9fc21e72e7c09cc18823b23c273b01d647a8ca539318206db31e99b588869d" + } }, "warehouse": { - "version": "1.0.0", + "version": "1.0.1", "description": "Data warehouse sync — exports nself table data to BigQuery, Snowflake, or Redshift on a configurable schedule.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.0/warehouse-1.0.0.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/warehouse-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/warehouse/tarball", "requires_license": false, "language": "go", @@ -3576,16 +4125,21 @@ "name": "warehouse", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "29d7bd10cefffcf4c487e065639b31d0f1f5aad9834fa330f6da9271d0b4652c", + "checksums": { + "sha256": "29d7bd10cefffcf4c487e065639b31d0f1f5aad9834fa330f6da9271d0b4652c" + } }, "web3": { - "version": "1.1.2", + "version": "1.0.1", "description": "Blockchain integration, NFT support, token-gated access, DAO governance, and decentralized identity", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/web3-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/web3-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/web3/tarball", "requires_license": false, "language": "go", @@ -3603,16 +4157,21 @@ "name": "web3", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "63467f3f0d1dfe9c90cdbc1b0f65b5a2bfc21a05b3442a697d79b367259e7575", + "checksums": { + "sha256": "63467f3f0d1dfe9c90cdbc1b0f65b5a2bfc21a05b3442a697d79b367259e7575" + } }, "workflows": { - "version": "1.1.2", + "version": "1.0.1", "description": "Automation engine providing trigger-action workflow chains, conditional logic, scheduled tasks, webhook integrations, and cross-plugin orchestration", "category": "automation", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/workflows-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/workflows-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/workflows/tarball", "requires_license": false, "language": "go", @@ -3629,10 +4188,15 @@ "name": "workflows", "author": "nself", "minNselfVersion": "1.0.0", - "tables": [] + "tables": [], + "releaseTag": "v1.0.1", + "checksum": "4e51cd2f137606ef9ffa1893ffb46f6f56dabfb825fc6287f57b829ff8603360", + "checksums": { + "sha256": "4e51cd2f137606ef9ffa1893ffb46f6f56dabfb825fc6287f57b829ff8603360" + } }, "shared-utils": { - "version": "1.0.0", + "version": "1.0.1", "description": "Shared Go utilities (request-ID tracing middleware, HTTP client propagation, server lifecycle helpers) used internally by multiple free nself plugins. Not installable directly.", "category": "infrastructure", "tier": "free", @@ -3653,13 +4217,13 @@ "installable": false }, "tmdb": { - "version": "1.1.2", + "version": "1.0.1", "description": "Comprehensive media metadata enrichment from TMDB/IMDb/TVDB/MusicBrainz with auto-matching, manual review queue, and multi-provider support", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/tmdb-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/tmdb-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/tmdb/tarball", "requires_license": false, "language": "go", @@ -3687,16 +4251,21 @@ "np_tmdb_genres", "np_tmdb_match_queue", "np_tmdb_webhook_events" - ] + ], + "releaseTag": "v1.0.1", + "checksum": "321658a5f9b4675d3ef8057437a27b1cc86fe0f8f741b6a2c7def8b18b092fa8", + "checksums": { + "sha256": "321658a5f9b4675d3ef8057437a27b1cc86fe0f8f741b6a2c7def8b18b092fa8" + } }, "game-metadata": { - "version": "1.1.2", + "version": "1.0.1", "description": "Game metadata service with IGDB integration, ROM hash matching, tier requirements, and artwork management", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/game-metadata-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/game-metadata-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/game-metadata/tarball", "requires_license": false, "language": "go", @@ -3718,16 +4287,21 @@ "np_game_artwork", "np_game_platforms", "np_game_genres" - ] + ], + "releaseTag": "v1.0.1", + "checksum": "56e10843c4621defb361b488bc5eaadb7042d4664fb9b8d2fd3bad12941dac1d", + "checksums": { + "sha256": "56e10843c4621defb361b488bc5eaadb7042d4664fb9b8d2fd3bad12941dac1d" + } }, "sports": { - "version": "1.1.2", + "version": "1.0.1", "description": "Sports data plugin with storage for scores, schedules, and standings. Planned: Live data provider integration (ESPN, The Sports DB) for real-time scores and stats", "category": "sports", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/sports-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/sports-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/sports/tarball", "requires_license": false, "language": "go", @@ -3760,16 +4334,21 @@ "np_sports_schedule_cache", "np_sports_sync_state", "np_sports_webhook_events" - ] + ], + "releaseTag": "v1.0.1", + "checksum": "4b03bede383a8cafa9dd5def446354f05f13f0ed6c3efa0db2a30ea1fad188b4", + "checksums": { + "sha256": "4b03bede383a8cafa9dd5def446354f05f13f0ed6c3efa0db2a30ea1fad188b4" + } }, "podcast": { - "version": "1.1.2", + "version": "1.0.1", "description": "Podcast service with RSS feed parsing, episode management, playback position sync, and subscription management", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/podcast-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/podcast-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/podcast/tarball", "requires_license": false, "language": "go", @@ -3791,16 +4370,21 @@ "np_podcast_subscriptions", "np_podcast_playback_positions", "np_podcast_categories" - ] + ], + "releaseTag": "v1.0.1", + "checksum": "c52fe13426ff43596fd890f02a31a3420012d16307d0496677c001540030d138", + "checksums": { + "sha256": "c52fe13426ff43596fd890f02a31a3420012d16307d0496677c001540030d138" + } }, "file-processing": { - "version": "1.1.2", + "version": "1.0.1", "description": "File processing with thumbnails and optimization for MinIO/S3/GCS/R2/B2/Azure. Planned: Inbound webhook support for storage provider notifications", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/file-processing-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/file-processing-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/file-processing/tarball", "requires_license": false, "language": "rust", @@ -3819,16 +4403,21 @@ "np_fileproc_jobs", "np_fileproc_thumbnails", "np_fileproc_metadata" - ] + ], + "releaseTag": "v1.0.1", + "checksum": "1f6a3e10d0ad03305cf03fa31a23d116d521c7c9816e527d706c058668075476", + "checksums": { + "sha256": "1f6a3e10d0ad03305cf03fa31a23d116d521c7c9816e527d706c058668075476" + } }, "media-processing": { - "version": "1.1.2", + "version": "1.0.1", "description": "FFmpeg-based media encoding and processing with HLS streaming support", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/media-processing-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/media-processing-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/media-processing/tarball", "requires_license": false, "language": "rust", @@ -3857,16 +4446,21 @@ "np_mediap_webhook_events", "np_mediap_watcher_events", "np_mediap_uploads" - ] + ], + "releaseTag": "v1.0.1", + "checksum": "09cd367c834a7a0fb056eb7b968b024698fd459da5970d0264d08ed1c9101077", + "checksums": { + "sha256": "09cd367c834a7a0fb056eb7b968b024698fd459da5970d0264d08ed1c9101077" + } }, "geocoding": { - "version": "1.1.2", + "version": "1.0.1", "description": "Geocoding plugin with geofence storage. Planned: Google Maps API integration for forward/reverse geocoding and place search", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.2/geocoding-1.1.2.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/geocoding-1.0.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/geocoding/tarball", "requires_license": false, "language": "go", @@ -3886,7 +4480,12 @@ "np_geoc_geofences", "np_geoc_geofence_events", "np_geoc_places" - ] + ], + "releaseTag": "v1.0.1", + "checksum": "d2da7cd5ac419533f49e069a160e89e9e90147999c2812a48884173a4fff9e98", + "checksums": { + "sha256": "d2da7cd5ac419533f49e069a160e89e9e90147999c2812a48884173a4fff9e98" + } } } } From 2e3daf1861c87c5db0cffe37258dd705cf7fbfb0 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 09:55:37 -0400 Subject: [PATCH 03/18] feat(scripts): add deterministic-tar.sh, the one reproducible tarball recipe scripts/build-tarballs.sh and .github/workflows/release-tarballs.yml each called plain `tar -czf` independently, so the bytes they produced for the same plugin could differ: one walked `free/*/` via a bash glob, the other via `find free -maxdepth 1 -type d`, and both let tar preserve real mtimes and gzip stamp the wall-clock build time. Two builds of identical source never produced identical bytes, so a sha256 recorded in registry.json could never reliably hold against what either pipeline actually published later. deterministic-tar.sh fixes mtime (pinned to epoch, matching the normalization already shipped for paid plugins in nself-org/web@51518c38), owner/group (zeroed), pax atime/ctime headers (stripped), and member order (--sort=name) so identical input always produces identical output regardless of which of the two build sites ran it. Requires GNU tar; macOS ships bsdtar which cannot reproduce the same byte layout, so the script fails loudly with an install hint (`brew install gnu-tar`) rather than silently diverging from CI. Verified on this machine: two independent full rebuilds of all 129 free plugin tarballs (via build-tarballs.sh, which now calls this script) produced byte-identical sha256 for every one, including after bumping a source file's mtime between runs. --- scripts/deterministic-tar.sh | 83 ++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100755 scripts/deterministic-tar.sh diff --git a/scripts/deterministic-tar.sh b/scripts/deterministic-tar.sh new file mode 100755 index 00000000..1e233c92 --- /dev/null +++ b/scripts/deterministic-tar.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +# deterministic-tar.sh +# The ONE tarball recipe for this repo. Both scripts/build-tarballs.sh and +# .github/workflows/release-tarballs.yml call this instead of invoking `tar` +# directly, so a source tarball or a per-platform binary tarball built here, +# built on a laptop, or built by CI always produces byte-identical output for +# byte-identical input. That is a hard requirement: registry.json stores a +# single sha256 per plugin and `nself plugin install` refuses the install on +# any mismatch (internal/plugin/security.go verifyChecksum) — so if two build +# sites can disagree on the bytes, the checksum is worthless. +# +# What made plain `tar -czf` non-reproducible, both fixed here: +# 1. mtime — tar preserves each member's on-disk mtime, and gzip stamps the +# wall-clock build time into its header. Two builds of the identical +# source tree, seconds apart, produced different bytes. +# 2. member order — scripts/build-tarballs.sh (bash glob "*/ ") and the old +# inline workflow step (`find | sort`) could walk directories in +# different orders, changing tar's member sequence and therefore the +# output bytes even when every member's content was identical. +# +# Usage: +# deterministic-tar.sh +# +# are passed through to `tar -cf -` after the fixed +# determinism flags, so both plain forms work: +# deterministic-tar.sh dist/foo-1.0.1.tar.gz free/foo +# deterministic-tar.sh dist/foo-1.0.1-darwin-arm64.tar.gz -C "$stage" foo +# +# Requires GNU tar. macOS ships bsdtar as `/usr/bin/tar`, which does not +# support --sort/--owner/--group/--numeric-owner/--pax-option the same way +# (some are silently ignored, some error) — there is no equivalent bsdtar +# invocation that reliably reproduces GNU tar's byte layout, and CI runs GNU +# tar (ubuntu-latest), so a "works on my Mac" bsdtar path would silently +# diverge from what CI actually publishes. Policy: require GNU tar +# everywhere. On macOS: `brew install gnu-tar` (provides the `gtar` binary) +# and this script picks it up automatically. On Linux, `tar` already is GNU +# tar. + +set -euo pipefail + +if [ "$#" -lt 2 ]; then + printf "usage: %s \n" "$0" >&2 + exit 1 +fi + +OUT="$1" +shift + +# Locate a GNU tar binary: prefer `tar` if it identifies as GNU tar (true on +# every Linux CI runner), else fall back to `gtar` (Homebrew's GNU tar on +# macOS). Fail loudly and tell the operator exactly how to fix it rather than +# silently building non-reproducible archives with bsdtar. +TAR_BIN="" +if tar --version 2>/dev/null | grep -q "GNU tar"; then + TAR_BIN="tar" +elif command -v gtar >/dev/null 2>&1 && gtar --version 2>/dev/null | grep -q "GNU tar"; then + TAR_BIN="gtar" +else + printf "[deterministic-tar] ERROR: GNU tar is required to build reproducible tarballs.\n" >&2 + printf "[deterministic-tar] macOS: brew install gnu-tar (installs GNU tar as 'gtar')\n" >&2 + printf "[deterministic-tar] Linux: GNU tar ships as 'tar' by default — check your PATH.\n" >&2 + printf "[deterministic-tar] Refusing to fall back to bsdtar: it cannot reproduce GNU tar's\n" >&2 + printf "[deterministic-tar] byte layout, and CI (ubuntu-latest) always uses GNU tar — a\n" >&2 + printf "[deterministic-tar] bsdtar-built tarball would not match the checksum CI records.\n" >&2 + exit 1 +fi + +mkdir -p "$(dirname "$OUT")" + +# Fixed epoch chosen to match the same normalization already shipped for paid +# plugins (nself-org/web@51518c38, ping_api's streamScopedPluginTarball): +# every entry's mtime pinned to the Unix epoch. --owner/--group/--numeric-owner +# zero out uid/gid so the building machine's user account never leaks into +# the archive or its bytes. --pax-option strips the PAX extended-header +# atime/ctime fields GNU tar otherwise emits for some filesystems, which are +# themselves wall-clock noise. --sort=name makes the member order a pure +# function of the file tree, independent of the underlying filesystem's +# directory-entry order or which shell mechanism (glob vs find) enumerated it. +"$TAR_BIN" --sort=name \ + --mtime='UTC 1970-01-01' \ + --owner=0 --group=0 --numeric-owner \ + --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \ + -cf - "$@" | gzip -n -9 > "$OUT" From add188af5d04068e36774f34ebb22d2300dcbdfa Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 09:55:41 -0400 Subject: [PATCH 04/18] fix(release): build source and binary tarballs with the deterministic recipe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both build-tarballs.sh and release-tarballs.yml's build_plugin() now call scripts/deterministic-tar.sh instead of invoking `tar -czf` directly, for both the per-plugin source tarball and the per-platform binary tarball (the `-C "$stage" "$plugin_name"` step) — the binary archives had the identical mtime/ordering non-determinism as the source ones, from compiled-binary mtimes and per-run staging-directory enumeration order. build-tarballs.sh also now walks free/ via `find ... | sort` instead of a bash glob, matching the workflow's traversal, so both scripts iterate plugin directories in the same fixed order. The directory argument passed to tar no longer carries a trailing slash in either place. --- .github/workflows/release-tarballs.yml | 11 +++++++++-- scripts/build-tarballs.sh | 20 +++++++++++++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release-tarballs.yml b/.github/workflows/release-tarballs.yml index ff7e87db..c649be49 100644 --- a/.github/workflows/release-tarballs.yml +++ b/.github/workflows/release-tarballs.yml @@ -77,7 +77,11 @@ jobs: return fi - tar -czf "$tarball" "$plugin_dir" + # scripts/deterministic-tar.sh is the ONE tarball recipe shared with + # scripts/build-tarballs.sh — fixed mtime/owner/sort/pax so the bytes + # this workflow publishes always match whatever built the checksum + # recorded in registry.json, no matter which of the two built it. + bash scripts/deterministic-tar.sh "$tarball" "$plugin_dir" sha256=$(sha256sum "$tarball" | cut -d' ' -f1) printf "%s %s\n" "$sha256" "${plugin_name}-${VERSION}.tar.gz" > "$checksum_file" echo "BUILT $plugin_name sha256:${sha256}" @@ -151,7 +155,10 @@ jobs: fi local ptar="${DIST_DIR}/${plugin_name}-${VERSION}-${platform}.tar.gz" - tar -czf "$ptar" -C "$stage" "${plugin_name}" + # Same shared recipe as the source tarball above — the per-platform + # binary archives had the identical mtime/ordering non-determinism + # (compiled-binary mtimes and per-run staging-dir enumeration order). + bash scripts/deterministic-tar.sh "$ptar" -C "$stage" "${plugin_name}" psha=$(sha256sum "$ptar" | cut -d' ' -f1) printf "%s %s\n" "$psha" "$(basename "$ptar")" > "${ptar}.sha256" rm -rf "$stage" diff --git a/scripts/build-tarballs.sh b/scripts/build-tarballs.sh index cebf8746..12971dee 100755 --- a/scripts/build-tarballs.sh +++ b/scripts/build-tarballs.sh @@ -45,10 +45,16 @@ sha256_file() { mkdir -p "$DIST_DIR" -# Walk free/ plugin directories +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DETERMINISTIC_TAR="${SCRIPT_DIR}/deterministic-tar.sh" + +# Walk free/ plugin directories in a fixed, filesystem-order-independent +# sequence (matches the traversal .github/workflows/release-tarballs.yml +# uses) — member order inside each individual tarball is already pinned by +# deterministic-tar.sh's --sort=name, this just makes the build log/exit +# order predictable too. BUILT=0 -for plugin_dir in "${PLUGINS_DIR}"/*/; do - [ -d "$plugin_dir" ] || continue +while IFS= read -r plugin_dir; do plugin_name="$(basename "$plugin_dir")" tarball_name="${plugin_name}-${VERSION}.tar.gz" checksum_name="${tarball_name}.sha256" @@ -62,7 +68,11 @@ for plugin_dir in "${PLUGINS_DIR}"/*/; do fi log "Building ${tarball_name} ..." - if ! tar -czf "$tarball_path" "$plugin_dir" 2>/dev/null; then + # No trailing slash on plugin_dir: deterministic-tar.sh's --sort=name + # already makes member order stable regardless, but a consistent + # no-trailing-slash argument keeps this script and the workflow's + # `find -type d` output (which never has one) textually identical inputs. + if ! "$DETERMINISTIC_TAR" "$tarball_path" "${plugin_dir%/}"; then err "Failed to build tarball for $plugin_name" continue fi @@ -72,7 +82,7 @@ for plugin_dir in "${PLUGINS_DIR}"/*/; do log " sha256: ${sha256}" BUILT=$((BUILT + 1)) -done +done < <(find "$PLUGINS_DIR" -maxdepth 1 -mindepth 1 -type d | sort) log "Built ${BUILT} tarballs in ${DIST_DIR}/" From b9403fa550a34d438935ba258cfcc999a057c838 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 09:55:47 -0400 Subject: [PATCH 05/18] ci: add pull_request gate that rebuilds tarballs and diffs registry checksums MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rebuilds every free plugin's source tarball from the checked-out tree with scripts/deterministic-tar.sh and fails the PR if the freshly computed sha256 disagrees with registry.json's checksum or checksums.sha256 for that plugin. nself plugin install hard-refuses on a checksum mismatch (internal/plugin/security.go verifyChecksum), so a stale or wrong checksum in registry.json is a shipped defect — this makes it unmergeable instead of discoverable only after a release breaks installs. ollama is excluded: its checksum is verified against its own external, already-published v1.1.1 release rather than this repo's build pipeline, so rebuilding free/ollama here has no matching artifact to compare against by design. Entries with no checksum recorded at all (shared-utils) are skipped, not failed. Verified locally by extracting the workflow's run: script and executing it directly: fails with 128 mismatches against the pre-fix registry.json (one per plugin, matching the tar non-determinism), passes cleanly against the regenerated one, and fails again — only on the one plugin touched — when a single checksum is deliberately corrupted. --- .github/workflows/tarball-checksum-gate.yml | 150 ++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 .github/workflows/tarball-checksum-gate.yml diff --git a/.github/workflows/tarball-checksum-gate.yml b/.github/workflows/tarball-checksum-gate.yml new file mode 100644 index 00000000..ac42f665 --- /dev/null +++ b/.github/workflows/tarball-checksum-gate.yml @@ -0,0 +1,150 @@ +name: Tarball Checksum Gate + +# Rebuilds every free plugin's source tarball from the checked-out tree +# using the SAME recipe (scripts/deterministic-tar.sh) that +# release-tarballs.yml uses to build the assets a tag push actually +# publishes, then asserts the freshly built sha256 matches registry.json's +# `checksum` (and, when present, `checksums.sha256`) for that plugin. +# +# Why this exists: registry.json can carry a checksum that was computed by +# ANY build (a contributor's laptop, an earlier CI run, hand-editing) at ANY +# point, with no guarantee it still matches what the release pipeline would +# produce today. `nself plugin install` hard-fails on a checksum mismatch +# (internal/plugin/security.go verifyChecksum) — so a stale or +# wrongly-computed checksum in registry.json is a shipped defect, not a +# cosmetic one. This gate makes that defect impossible to merge: it rebuilds +# the real bytes and fails the PR the moment they disagree, rather than +# discovering it after users start getting failed installs post-release. +# +# This job does not build the per-platform binary tarballs (those need Go +# compilation for every plugin with a binaryName, which is what +# build-test.yml already exercises) — registry.json stores exactly one +# checksum per plugin, and that one checksum was always computed from the +# source tarball (scripts/build-tarballs.sh), never from a per-platform +# binary. Comparing the source tarball's bytes against it is the whole +# claim this field makes. + +on: + pull_request: + branches: [main] + paths: + - 'free/**' + - 'registry.json' + - 'scripts/deterministic-tar.sh' + - 'scripts/build-tarballs.sh' + - '.github/workflows/tarball-checksum-gate.yml' + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + checksum-gate: + name: Verify registry.json checksums match rebuilt tarballs + runs-on: ubuntu-latest + timeout-minutes: 15 + + steps: + - name: Checkout + uses: actions/checkout@v7 + + - name: Install jq + run: sudo apt-get install -y jq + + - name: Rebuild every free plugin's source tarball and diff against registry.json + run: | + set -euo pipefail + + WORK="$(mktemp -d)" + FAIL=0 + CHECKED=0 + SKIPPED_NO_CHECKSUM=0 + + # tar's own --sort=name inside deterministic-tar.sh makes each + # individual archive's member order stable; sort here too so the + # gate's own iteration order (and therefore its log/output) is + # deterministic across runs. + while IFS= read -r plugin_dir; do + name="$(basename "$plugin_dir")" + + # ollama is the one deliberate, permanent exception (see + # .github/RELEASE-v1.0.1.md "Two exceptions"): it ships under its + # own pre-existing v1.1.1 GitHub release, built independently of + # this repo's tarball pipeline, and its registry.json checksum was + # verified by downloading and hashing that real live asset + # directly — not by this pipeline rebuilding free/ollama from the + # checked-out tree. Rebuilding it here would compare against a + # tarball this gate has no way of reproducing (a different + # release, built on a different date, by a different process) and + # would fail forever regardless of whether free/ollama/ is fine. + if [ "$name" = "ollama" ]; then + echo "SKIP ollama — checksum verified against its own external v1.1.1 release, not this pipeline's build" + continue + fi + + entry="$(jq -c --arg n "$name" '.plugins[$n] // empty' registry.json)" + if [ -z "$entry" ]; then + # A free/* directory with no registry.json entry at all is + # registry-check.yml's concern (presence parity), not this + # gate's (checksum correctness) — skip rather than duplicate it. + continue + fi + + expected_checksum="$(printf '%s' "$entry" | jq -r '.checksum // empty')" + expected_nested="$(printf '%s' "$entry" | jq -r '.checksums.sha256 // empty')" + + if [ -z "$expected_checksum" ] && [ -z "$expected_nested" ]; then + # e.g. shared-utils: installable:false, no tarball/download_url, + # no checksum to attest to — deliberately not distributed. + SKIPPED_NO_CHECKSUM=$((SKIPPED_NO_CHECKSUM + 1)) + continue + fi + + out="${WORK}/${name}.tar.gz" + bash scripts/deterministic-tar.sh "$out" "$plugin_dir" + actual="$(sha256sum "$out" | cut -d' ' -f1)" + CHECKED=$((CHECKED + 1)) + + # Case-insensitive compare, matching internal/plugin/security.go's + # verifyChecksum (strings.EqualFold) — the actual install-time check. + if [ -n "$expected_checksum" ]; then + lhs="$(printf '%s' "$expected_checksum" | tr '[:upper:]' '[:lower:]')" + rhs="$(printf '%s' "$actual" | tr '[:upper:]' '[:lower:]')" + if [ "$lhs" != "$rhs" ]; then + echo "MISMATCH $name: registry .checksum=$expected_checksum rebuilt=$actual" + FAIL=1 + fi + fi + + # checksums.sha256 may carry a "sha256:" prefix (the release + # workflow's backfill step writes it that way); strip it before + # comparing so both conventions are handled. + if [ -n "$expected_nested" ]; then + nested_hex="${expected_nested#sha256:}" + lhs="$(printf '%s' "$nested_hex" | tr '[:upper:]' '[:lower:]')" + rhs="$(printf '%s' "$actual" | tr '[:upper:]' '[:lower:]')" + if [ "$lhs" != "$rhs" ]; then + echo "MISMATCH $name: registry .checksums.sha256=$expected_nested rebuilt=$actual" + FAIL=1 + fi + fi + done < <(find free -maxdepth 1 -mindepth 1 -type d | sort) + + echo "" + echo "Checked: $CHECKED plugin(s) with a registry checksum" + echo "Skipped (no checksum recorded): $SKIPPED_NO_CHECKSUM" + + rm -rf "$WORK" + + if [ "$FAIL" -ne 0 ]; then + echo "" + echo "ERROR: one or more registry.json checksums do not match the tarball" >&2 + echo "scripts/deterministic-tar.sh builds from the checked-out free/" >&2 + echo "tree right now. Rebuild with:" >&2 + echo " bash scripts/build-tarballs.sh " >&2 + echo "and update the mismatched entries' checksum / checksums.sha256." >&2 + exit 1 + fi + + echo "OK: every registry.json checksum matches a freshly rebuilt tarball" From 1d1ea645911f1a2015e680bbd48d12b36c938d49 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 09:55:53 -0400 Subject: [PATCH 06/18] fix(registry): regenerate free-plugin checksums with the deterministic recipe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The checksum and checksums.sha256 values this PR previously wrote for all 128 free entries were computed with the old, non-reproducible `tar -czf` (real mtimes, gzip timestamp) — bytes that .github/workflows/release-tarballs.yml would never actually reproduce when it built the real release assets, since it used a different traversal of the same non-deterministic primitive. Every one of those checksums would have failed nself plugin install's verification the moment the real release tarball was built. Regenerated all 127 non-ollama entries' checksum and checksums.sha256 from a fresh scripts/deterministic-tar.sh build of the checked-out free/ tree, confirmed byte-for-byte identical across two independent rebuilds. ollama's checksum is untouched — kept exactly as PR81 verified it, against its own real, already-published v1.1.1 release asset, which this pipeline does not rebuild. shared-utils keeps having no checksum field, unchanged (installable:false, not independently distributed). jq empty registry.json and shared/validate-registry.sh both pass with the same 0 errors / 1 pre-existing warning as before this change. The new tarball-checksum-gate.yml workflow passes cleanly against this file. --- registry.json | 508 +++++++++++++++++++++++++------------------------- 1 file changed, 254 insertions(+), 254 deletions(-) diff --git a/registry.json b/registry.json index 1399246a..d856b723 100644 --- a/registry.json +++ b/registry.json @@ -39,9 +39,9 @@ "binaryName": "nself-ai" }, "releaseTag": "v1.0.1", - "checksum": "929f40d695cc73a27d5594ef27631f22ee211cce3d5be591ddab5f97f2897b4a", + "checksum": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16", "checksums": { - "sha256": "929f40d695cc73a27d5594ef27631f22ee211cce3d5be591ddab5f97f2897b4a" + "sha256": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16" } }, "ai-studio": { @@ -74,9 +74,9 @@ "binaryName": "nself-ai-studio" }, "releaseTag": "v1.0.1", - "checksum": "82ba400708acd347a188596f0096f29c3846b531f627b1903cd40989c7a49875", + "checksum": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb", "checksums": { - "sha256": "82ba400708acd347a188596f0096f29c3846b531f627b1903cd40989c7a49875" + "sha256": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb" } }, "alerts": { @@ -110,9 +110,9 @@ "binaryName": "nself-alerts" }, "releaseTag": "v1.0.1", - "checksum": "d07deb6fbb5af9341785d5b17fae3438ccfca78027f53ab2cdfb53fd59f15928", + "checksum": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd", "checksums": { - "sha256": "d07deb6fbb5af9341785d5b17fae3438ccfca78027f53ab2cdfb53fd59f15928" + "sha256": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd" } }, "api": { @@ -145,9 +145,9 @@ "binaryName": "nself-api" }, "releaseTag": "v1.0.1", - "checksum": "7bca130829cc77a8b583c8fdce1de9a3ff498c0edb150eb625197abe61c95cef", + "checksum": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757", "checksums": { - "sha256": "7bca130829cc77a8b583c8fdce1de9a3ff498c0edb150eb625197abe61c95cef" + "sha256": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757" } }, "audit": { @@ -180,9 +180,9 @@ "binaryName": "nself-audit" }, "releaseTag": "v1.0.1", - "checksum": "1bfb60421ce0ceaf48c50bebfeeb0845e727c3d36b6e8631e8cdcaa01c641277", + "checksum": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e", "checksums": { - "sha256": "1bfb60421ce0ceaf48c50bebfeeb0845e727c3d36b6e8631e8cdcaa01c641277" + "sha256": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e" } }, "audit-log": { @@ -216,9 +216,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "53a00ff7bd1268739ad55340a47b4d66e38c86dfe77af4dacd9693cc2a5ace8d", + "checksum": "215bfb2e2764ba2626a297a78adab845a7815ee17957c377f38ca7848ccea55f", "checksums": { - "sha256": "53a00ff7bd1268739ad55340a47b4d66e38c86dfe77af4dacd9693cc2a5ace8d" + "sha256": "215bfb2e2764ba2626a297a78adab845a7815ee17957c377f38ca7848ccea55f" } }, "backup": { @@ -253,9 +253,9 @@ "entryPoint": "cmd/main" }, "releaseTag": "v1.0.1", - "checksum": "5a7f60f21c3638d701797523f823495ba0096585ad54a9826ed3c559dfc64de4", + "checksum": "458e3b22b604a0d76e2993e5e7843182281ad1e84214afc31dc6364e3cc7d35a", "checksums": { - "sha256": "5a7f60f21c3638d701797523f823495ba0096585ad54a9826ed3c559dfc64de4" + "sha256": "458e3b22b604a0d76e2993e5e7843182281ad1e84214afc31dc6364e3cc7d35a" } }, "ci": { @@ -290,9 +290,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "7cc9e2cba7ef23c950ceb584c9407155347376a7663f53aae44aa68d05893f4f", + "checksum": "118c7967172a7cedd1426cd180c95d0a76778d2cdee8fce5411511e3aaea752d", "checksums": { - "sha256": "7cc9e2cba7ef23c950ceb584c9407155347376a7663f53aae44aa68d05893f4f" + "sha256": "118c7967172a7cedd1426cd180c95d0a76778d2cdee8fce5411511e3aaea752d" } }, "claw-cli": { @@ -326,9 +326,9 @@ "binaryName": "nself-claw" }, "releaseTag": "v1.0.1", - "checksum": "c47f1034c3b8cf594df44a6fe438d34f271afe370f80675df8f8920b01801d7b", + "checksum": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589", "checksums": { - "sha256": "c47f1034c3b8cf594df44a6fe438d34f271afe370f80675df8f8920b01801d7b" + "sha256": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589" } }, "content-acquisition": { @@ -387,9 +387,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "3b1111ac8e208abdca8211609d8204e537e9fe239a7464cb75a15216f46de9d4", + "checksum": "095fa07082add3e68fb4706d031300ace955256b47a2d737b8724369698a78e3", "checksums": { - "sha256": "3b1111ac8e208abdca8211609d8204e537e9fe239a7464cb75a15216f46de9d4" + "sha256": "095fa07082add3e68fb4706d031300ace955256b47a2d737b8724369698a78e3" } }, "content-progress": { @@ -427,9 +427,9 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "4aa627cae1f3fe38d2eb84807c3de3e34c7b4fd6df5281c3f96ef1ffad99badb", + "checksum": "5bc44b327755732a219ecdaec757126e6550616cf4fcaa6ac8869c4a32b9e286", "checksums": { - "sha256": "4aa627cae1f3fe38d2eb84807c3de3e34c7b4fd6df5281c3f96ef1ffad99badb" + "sha256": "5bc44b327755732a219ecdaec757126e6550616cf4fcaa6ac8869c4a32b9e286" }, "releaseTag": "v1.0.1" }, @@ -462,9 +462,9 @@ "binaryName": "nself-costs" }, "releaseTag": "v1.0.1", - "checksum": "42de877b7d08c626e509b49fc18983b498f91f8afd40de22af0f7bb369ff16b7", + "checksum": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31", "checksums": { - "sha256": "42de877b7d08c626e509b49fc18983b498f91f8afd40de22af0f7bb369ff16b7" + "sha256": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31" } }, "cron": { @@ -499,9 +499,9 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "428b023440b3d1cd171c4393b8d5d105c4d819106ea676761deef3fdd26d6170", + "checksum": "2cb08a2843c49c027504499c643b44d6156224d0275e6422e3488705801a665a", "checksums": { - "sha256": "428b023440b3d1cd171c4393b8d5d105c4d819106ea676761deef3fdd26d6170" + "sha256": "2cb08a2843c49c027504499c643b44d6156224d0275e6422e3488705801a665a" }, "releaseTag": "v1.0.1" }, @@ -536,9 +536,9 @@ "binaryName": "nself-dlq" }, "releaseTag": "v1.0.1", - "checksum": "94d607388f664d95d006596b4c27431d45122fa2edbc79ca942aa90907e1e337", + "checksum": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96", "checksums": { - "sha256": "94d607388f664d95d006596b4c27431d45122fa2edbc79ca942aa90907e1e337" + "sha256": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96" } }, "dogfood": { @@ -572,9 +572,9 @@ "binaryName": "nself-dogfood" }, "releaseTag": "v1.0.1", - "checksum": "17c4320a75deba1b8ddc5ee699604159147d72059725e0c164d578ab9e7f6808", + "checksum": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498", "checksums": { - "sha256": "17c4320a75deba1b8ddc5ee699604159147d72059725e0c164d578ab9e7f6808" + "sha256": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498" } }, "donorbox": { @@ -613,9 +613,9 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "e53b414cc3cf5e51caf17600a2db632cff81b5484846fd12afeabb02d7d62842", + "checksum": "b25c64cb98710de42be81aaf257f9db75e153e81f7878ed6c768451e04c192a2", "checksums": { - "sha256": "e53b414cc3cf5e51caf17600a2db632cff81b5484846fd12afeabb02d7d62842" + "sha256": "b25c64cb98710de42be81aaf257f9db75e153e81f7878ed6c768451e04c192a2" }, "releaseTag": "v1.0.1" }, @@ -650,9 +650,9 @@ "binaryName": "nself-dr" }, "releaseTag": "v1.0.1", - "checksum": "c313238697e5a4ad49c1b0313c7003db05225dbc6fdea2814872796c0d41f9ca", + "checksum": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3", "checksums": { - "sha256": "c313238697e5a4ad49c1b0313c7003db05225dbc6fdea2814872796c0d41f9ca" + "sha256": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3" } }, "e2ee": { @@ -698,9 +698,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "bcfe85b98b14ea38c716f8e8af85343accf8851fa501e7e388cd13969574a695", + "checksum": "5d995fcd2a876d2ce69e45922c2b0a6cbd99d7edb11a4185ffab8ff2652d2d2e", "checksums": { - "sha256": "bcfe85b98b14ea38c716f8e8af85343accf8851fa501e7e388cd13969574a695" + "sha256": "5d995fcd2a876d2ce69e45922c2b0a6cbd99d7edb11a4185ffab8ff2652d2d2e" } }, "family-gedcom": { @@ -736,9 +736,9 @@ "entryPoint": "binary" }, "releaseTag": "v1.0.1", - "checksum": "beb154eff26de41146400e0c2e811c311f30e41d57a1f12a144f4f1791657a66", + "checksum": "cbf04fc56d0b8121d84da19e9e5e6715fa3f9394e2bda3d02966898199817d81", "checksums": { - "sha256": "beb154eff26de41146400e0c2e811c311f30e41d57a1f12a144f4f1791657a66" + "sha256": "cbf04fc56d0b8121d84da19e9e5e6715fa3f9394e2bda3d02966898199817d81" } }, "feature-flags": { @@ -773,9 +773,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "1524bd911dad654d53831e9e67353380ab527521181afd97931832cb2345a386", + "checksum": "837ca39444c01f878d42538503afc36f375d80882db08bffde2030e251398531", "checksums": { - "sha256": "1524bd911dad654d53831e9e67353380ab527521181afd97931832cb2345a386" + "sha256": "837ca39444c01f878d42538503afc36f375d80882db08bffde2030e251398531" } }, "federation": { @@ -809,9 +809,9 @@ "binaryName": "nself-federation" }, "releaseTag": "v1.0.1", - "checksum": "b9d33347c04dc5de7639987abd8f5a8fe2c07e2e217f05b67e14e16774179df7", + "checksum": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d", "checksums": { - "sha256": "b9d33347c04dc5de7639987abd8f5a8fe2c07e2e217f05b67e14e16774179df7" + "sha256": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d" } }, "flags": { @@ -844,9 +844,9 @@ "binaryName": "nself-flags" }, "releaseTag": "v1.0.1", - "checksum": "482ebc0b1a91ab18e5a78f37c9ec02b9aec5ab89c312f889045312a80e21c61c", + "checksum": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b", "checksums": { - "sha256": "482ebc0b1a91ab18e5a78f37c9ec02b9aec5ab89c312f889045312a80e21c61c" + "sha256": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b" } }, "forgejo": { @@ -882,9 +882,9 @@ "entryPoint": "docker-compose.plugin.yml" }, "releaseTag": "v1.0.1", - "checksum": "06b21dc8aeb09b43a97c6cffb8848bd60d15ef6ec6a961b5e733023d821e5958", + "checksum": "f818e08355c4eaec6fd0add1f46674e6fdd455fa2c2d0f3855f044e871f859e8", "checksums": { - "sha256": "06b21dc8aeb09b43a97c6cffb8848bd60d15ef6ec6a961b5e733023d821e5958" + "sha256": "f818e08355c4eaec6fd0add1f46674e6fdd455fa2c2d0f3855f044e871f859e8" } }, "gateway": { @@ -917,9 +917,9 @@ "binaryName": "nself-gateway" }, "releaseTag": "v1.0.1", - "checksum": "62e17f6263ae9cc467c8a4be3a010118c969235d87343b0e7277c015bc0f3551", + "checksum": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b", "checksums": { - "sha256": "62e17f6263ae9cc467c8a4be3a010118c969235d87343b0e7277c015bc0f3551" + "sha256": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b" } }, "gauth": { @@ -952,9 +952,9 @@ "binaryName": "nself-gauth" }, "releaseTag": "v1.0.1", - "checksum": "3c3a7faa9973559ef948828e3725b016c3686c940b05f8f92adae3f1569b4dcc", + "checksum": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369", "checksums": { - "sha256": "3c3a7faa9973559ef948828e3725b016c3686c940b05f8f92adae3f1569b4dcc" + "sha256": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369" } }, "gdpr": { @@ -989,9 +989,9 @@ "binaryName": "nself-gdpr" }, "releaseTag": "v1.0.1", - "checksum": "5cb6e085982b6745581e7f6fa87a6e0899334f20df2d873569dac80b8be95fdf", + "checksum": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88", "checksums": { - "sha256": "5cb6e085982b6745581e7f6fa87a6e0899334f20df2d873569dac80b8be95fdf" + "sha256": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88" } }, "github": { @@ -1048,9 +1048,9 @@ "entryPoint": "nself-github" }, "releaseTag": "v1.0.1", - "checksum": "2014ea4c985f5281110f347094fa9707874b718c601e9b8cbfe333dc5dad2b29", + "checksum": "2249b35287164a57769bf437951f8e5720e76adbc5060c7ab30d76b8e5396554", "checksums": { - "sha256": "2014ea4c985f5281110f347094fa9707874b718c601e9b8cbfe333dc5dad2b29" + "sha256": "2249b35287164a57769bf437951f8e5720e76adbc5060c7ab30d76b8e5396554" } }, "github-runner": { @@ -1084,9 +1084,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "7ef16d2fc3ba95075787d15d0909950faaade1b4895766eebf7015d316d9fd16", + "checksum": "812ed28c5375ec45057462a582a086228754fc90579bc26307a3ae99adb2dead", "checksums": { - "sha256": "7ef16d2fc3ba95075787d15d0909950faaade1b4895766eebf7015d316d9fd16" + "sha256": "812ed28c5375ec45057462a582a086228754fc90579bc26307a3ae99adb2dead" } }, "infra": { @@ -1123,9 +1123,9 @@ "binaryName": "nself-infra" }, "releaseTag": "v1.0.1", - "checksum": "253c2828438e44219400fc3dae6e06e2bef37ed99ad0c1d8593fec1d0e04f2da", + "checksum": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20", "checksums": { - "sha256": "253c2828438e44219400fc3dae6e06e2bef37ed99ad0c1d8593fec1d0e04f2da" + "sha256": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20" } }, "invitations": { @@ -1160,9 +1160,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "3cf1d9acc19ff50c5929af91951b832c34c6f9603c932a8acbb79565a35cbd83", + "checksum": "4789b2293589617ccadb3bf0cff64c816eb40c16ac88a6e971f60bbbaf13b36d", "checksums": { - "sha256": "3cf1d9acc19ff50c5929af91951b832c34c6f9603c932a8acbb79565a35cbd83" + "sha256": "4789b2293589617ccadb3bf0cff64c816eb40c16ac88a6e971f60bbbaf13b36d" } }, "jobs": { @@ -1198,9 +1198,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "9e86cc86215a3340cfbaa1966b6cf0c715af6fa58228be3a3fd4b34c54cd36fa", + "checksum": "36e9a5ae3626ae392a93054ce59be209c5e0aed18bec33559fd781a632f88f96", "checksums": { - "sha256": "9e86cc86215a3340cfbaa1966b6cf0c715af6fa58228be3a3fd4b34c54cd36fa" + "sha256": "36e9a5ae3626ae392a93054ce59be209c5e0aed18bec33559fd781a632f88f96" } }, "k8s": { @@ -1234,9 +1234,9 @@ "binaryName": "nself-k8s" }, "releaseTag": "v1.0.1", - "checksum": "02f349cbbb20b9e052986671fceeeb03e52a2eb457c31acaaadacea5e9cee518", + "checksum": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed", "checksums": { - "sha256": "02f349cbbb20b9e052986671fceeeb03e52a2eb457c31acaaadacea5e9cee518" + "sha256": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed" } }, "link-preview": { @@ -1271,9 +1271,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "7bdc88448b7f7d26f4bdb0e92e91969251f8cae69d88e88640f949ba83b5f895", + "checksum": "18396b5a1b3f6a914557f96a03994d0bb889647a64feb17688ff8445efea8e4b", "checksums": { - "sha256": "7bdc88448b7f7d26f4bdb0e92e91969251f8cae69d88e88640f949ba83b5f895" + "sha256": "18396b5a1b3f6a914557f96a03994d0bb889647a64feb17688ff8445efea8e4b" } }, "maintenance": { @@ -1305,9 +1305,9 @@ "pluginType": "cli", "binaryName": "nself-maintenance" }, - "checksum": "6d6821ca10516847ec97a7cc9fe3cc213104091b7eb64203ab047b00212e796d", + "checksum": "81eeefba47402707b2ed8c19c01195a2c2059303c0ca6030af8b8f88a73b8845", "checksums": { - "sha256": "6d6821ca10516847ec97a7cc9fe3cc213104091b7eb64203ab047b00212e796d" + "sha256": "81eeefba47402707b2ed8c19c01195a2c2059303c0ca6030af8b8f88a73b8845" }, "releaseTag": "v1.0.1" }, @@ -1343,9 +1343,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "9994fc1c572e4c1f04fcc58d0fd06e871c5e2317b83595f6e1a1d61cd226940a", + "checksum": "427df3ebb91a2162599add09b8fde145901b781da11fbe3d7ed6746ce1dfa995", "checksums": { - "sha256": "9994fc1c572e4c1f04fcc58d0fd06e871c5e2317b83595f6e1a1d61cd226940a" + "sha256": "427df3ebb91a2162599add09b8fde145901b781da11fbe3d7ed6746ce1dfa995" } }, "mlflow": { @@ -1378,9 +1378,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "366b85b397b29ee5478046b9668ac68735348c3bf4b00ced910b6916578a2676", + "checksum": "cddc0c0c7005b2b35160f01e23c9c12d78fbb457730a362c08f0f3ea29456194", "checksums": { - "sha256": "366b85b397b29ee5478046b9668ac68735348c3bf4b00ced910b6916578a2676" + "sha256": "cddc0c0c7005b2b35160f01e23c9c12d78fbb457730a362c08f0f3ea29456194" } }, "model": { @@ -1413,9 +1413,9 @@ "binaryName": "nself-model" }, "releaseTag": "v1.0.1", - "checksum": "0d956ffb7b5e5a3b394c8c6beed04804d69593d2270013eb5a3c2784b530486d", + "checksum": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794", "checksums": { - "sha256": "0d956ffb7b5e5a3b394c8c6beed04804d69593d2270013eb5a3c2784b530486d" + "sha256": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794" } }, "monitor": { @@ -1449,9 +1449,9 @@ "binaryName": "nself-monitor" }, "releaseTag": "v1.0.1", - "checksum": "60bae7945c03fadc2e23134b0c9df801c1bd6f794e4cfc3283125f0cc9f68d65", + "checksum": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a", "checksums": { - "sha256": "60bae7945c03fadc2e23134b0c9df801c1bd6f794e4cfc3283125f0cc9f68d65" + "sha256": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a" } }, "monitoring": { @@ -1489,9 +1489,9 @@ "entryPoint": "docker-compose.plugin.yml" }, "releaseTag": "v1.0.1", - "checksum": "607f8bf657cf47b40d987b9e76c8232e19d25ec0800a588b60de267d530fc3ff", + "checksum": "6d9fbb34cea12b625955a49c2474450cb8704119249d57d95ff4bf1a183df88d", "checksums": { - "sha256": "607f8bf657cf47b40d987b9e76c8232e19d25ec0800a588b60de267d530fc3ff" + "sha256": "6d9fbb34cea12b625955a49c2474450cb8704119249d57d95ff4bf1a183df88d" } }, "notifications": { @@ -1527,9 +1527,9 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "0f1a96c77bf746531bc9936b35b1fd68bb3b770489e75571ea753815fbc5278f", + "checksum": "dfcb4b63140ba3b92903c3b61467c1c22b6fcf175fd255d81ab41dc20c8687dd", "checksums": { - "sha256": "0f1a96c77bf746531bc9936b35b1fd68bb3b770489e75571ea753815fbc5278f" + "sha256": "dfcb4b63140ba3b92903c3b61467c1c22b6fcf175fd255d81ab41dc20c8687dd" }, "releaseTag": "v1.0.1" }, @@ -1564,9 +1564,9 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "8f8e159221ea1bd6dde14e0f0ef0bfa84abbedbbef7a5bd7d03db2acd9abf267", + "checksum": "ed66f58a66cb2c7a715eb534a2bd6b6a1bcbec6d3a4b118b8f53513a894a1c34", "checksums": { - "sha256": "8f8e159221ea1bd6dde14e0f0ef0bfa84abbedbbef7a5bd7d03db2acd9abf267" + "sha256": "ed66f58a66cb2c7a715eb534a2bd6b6a1bcbec6d3a4b118b8f53513a894a1c34" }, "releaseTag": "v1.0.1" }, @@ -1642,9 +1642,9 @@ "entryPoint": "nself-paypal" }, "releaseTag": "v1.0.1", - "checksum": "4e83db8fcf1a130fdae4e214bfc53880f363964d829df38cb6a349ce88982fb8", + "checksum": "e51790ab52ccf1515d1cd8e266d393517de564f31480cd9245243cd6340e2be8", "checksums": { - "sha256": "4e83db8fcf1a130fdae4e214bfc53880f363964d829df38cb6a349ce88982fb8" + "sha256": "e51790ab52ccf1515d1cd8e266d393517de564f31480cd9245243cd6340e2be8" } }, "push": { @@ -1683,9 +1683,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "4dcf1390bd469b6b382d1c35bff8b83e3d2257f56e80eda0e13e6f971574c047", + "checksum": "9fe3a18eda502ac0a6752e4bf1c49fc656b680ca1fd9035a22cdba5a5b24d58a", "checksums": { - "sha256": "4dcf1390bd469b6b382d1c35bff8b83e3d2257f56e80eda0e13e6f971574c047" + "sha256": "9fe3a18eda502ac0a6752e4bf1c49fc656b680ca1fd9035a22cdba5a5b24d58a" } }, "queue": { @@ -1718,9 +1718,9 @@ "binaryName": "nself-queue" }, "releaseTag": "v1.0.1", - "checksum": "cc42ff87dee15da9054d000eaa6f741ba36ba96b0a998db813ad86c2b34a5e09", + "checksum": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626", "checksums": { - "sha256": "cc42ff87dee15da9054d000eaa6f741ba36ba96b0a998db813ad86c2b34a5e09" + "sha256": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626" } }, "region": { @@ -1754,9 +1754,9 @@ "binaryName": "nself-region" }, "releaseTag": "v1.0.1", - "checksum": "4b666bae91337cc939894af65e40e1bdd845d031948ec4ac39488bdc55d07941", + "checksum": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc", "checksums": { - "sha256": "4b666bae91337cc939894af65e40e1bdd845d031948ec4ac39488bdc55d07941" + "sha256": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc" } }, "release": { @@ -1790,9 +1790,9 @@ "binaryName": "nself-release" }, "releaseTag": "v1.0.1", - "checksum": "53b25c469f679c21770412cdbfcb23cbd37c7ef690042285b80423202d1ea11d", + "checksum": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8", "checksums": { - "sha256": "53b25c469f679c21770412cdbfcb23cbd37c7ef690042285b80423202d1ea11d" + "sha256": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8" } }, "search": { @@ -1833,9 +1833,9 @@ "bundles": [ "task" ], - "checksum": "e7289716e97530f05f8bd97a66f12da5af4677019063df4b00abb1bf1cfd956d", + "checksum": "f5ad32a815f4edc9d4f350314f51e6b1a35e424d0a2259181f52a30c7e907c41", "checksums": { - "sha256": "e7289716e97530f05f8bd97a66f12da5af4677019063df4b00abb1bf1cfd956d" + "sha256": "f5ad32a815f4edc9d4f350314f51e6b1a35e424d0a2259181f52a30c7e907c41" }, "releaseTag": "v1.0.1" }, @@ -1881,9 +1881,9 @@ } ], "releaseTag": "v1.0.1", - "checksum": "9365ce7bc6a7054b7a309e7b6e5e0988501562b2da6828f39b06107bbe61bcd9", + "checksum": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f", "checksums": { - "sha256": "9365ce7bc6a7054b7a309e7b6e5e0988501562b2da6828f39b06107bbe61bcd9" + "sha256": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f" } }, "shopify": { @@ -1925,9 +1925,9 @@ "entryPoint": "nself-shopify" }, "releaseTag": "v1.0.1", - "checksum": "3b15141c2e88e9ff7702ba43a2ad5c32bfe6e1a365d480cd837b5f94502b6609", + "checksum": "ccee3978999fea81981d8ca6c83c4a6bc52ebd61557efe1ff6016f0ffbfce56f", "checksums": { - "sha256": "3b15141c2e88e9ff7702ba43a2ad5c32bfe6e1a365d480cd837b5f94502b6609" + "sha256": "ccee3978999fea81981d8ca6c83c4a6bc52ebd61557efe1ff6016f0ffbfce56f" } }, "soak": { @@ -1960,9 +1960,9 @@ "binaryName": "nself-soak" }, "releaseTag": "v1.0.1", - "checksum": "a749b85a584ad0a86c5f29ace5aec702ab1d66da0d8719577d2185d2fcb1f4fe", + "checksum": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee", "checksums": { - "sha256": "a749b85a584ad0a86c5f29ace5aec702ab1d66da0d8719577d2185d2fcb1f4fe" + "sha256": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee" } }, "stripe": { @@ -2019,9 +2019,9 @@ "entryPoint": "nself-stripe" }, "releaseTag": "v1.0.1", - "checksum": "61eb1e6f88c159f0a85321107c42f970585c6c166cc1a6485dabff36546bd881", + "checksum": "1333b4119fe65b099d7cc614577c4171848f86b1c83f10b456fac08faf263100", "checksums": { - "sha256": "61eb1e6f88c159f0a85321107c42f970585c6c166cc1a6485dabff36546bd881" + "sha256": "1333b4119fe65b099d7cc614577c4171848f86b1c83f10b456fac08faf263100" } }, "subtitle-manager": { @@ -2070,9 +2070,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "21852338855eebee7e30a23e0db33a225c68199045f03eae71fc59393d361313", + "checksum": "bef3fdb2502141e0c25219ded69d704e923759b268b88b58514a8ae19a1a6e80", "checksums": { - "sha256": "21852338855eebee7e30a23e0db33a225c68199045f03eae71fc59393d361313" + "sha256": "bef3fdb2502141e0c25219ded69d704e923759b268b88b58514a8ae19a1a6e80" } }, "tenant": { @@ -2116,9 +2116,9 @@ } ], "releaseTag": "v1.0.1", - "checksum": "8950500b0301f58c1fde2ffd09258053693795b95f743c5c42148eba2acf852a", + "checksum": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae", "checksums": { - "sha256": "8950500b0301f58c1fde2ffd09258053693795b95f743c5c42148eba2acf852a" + "sha256": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae" } }, "tokens": { @@ -2158,9 +2158,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "2c42f2ecfa676aaccc617b9435e5dd63b47f892f037674cc309a7f886d303ace", + "checksum": "2e5cd40780b4ad27479ffd59e56e839b40f5cac119eebe6456a0501bc426562f", "checksums": { - "sha256": "2c42f2ecfa676aaccc617b9435e5dd63b47f892f037674cc309a7f886d303ace" + "sha256": "2e5cd40780b4ad27479ffd59e56e839b40f5cac119eebe6456a0501bc426562f" } }, "torrent-manager": { @@ -2221,9 +2221,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "7526353648c0817c9596ba453898a7daa6d050825dafa05694033409a0ff95e1", + "checksum": "792ec903947aa318983772cb61058a02eefce68f6321fad5ae2f7ae772a0eeae", "checksums": { - "sha256": "7526353648c0817c9596ba453898a7daa6d050825dafa05694033409a0ff95e1" + "sha256": "792ec903947aa318983772cb61058a02eefce68f6321fad5ae2f7ae772a0eeae" } }, "vpn": { @@ -2264,9 +2264,9 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.0.1", - "checksum": "853564f1aaa2e80840e17e34a4fc0f357bbc3e33e3ea5cbfa274f1e28bbd112d", + "checksum": "ae0484724af35ce5a2405b9b4310f5ebe697c4383dced62286f30b2308227886", "checksums": { - "sha256": "853564f1aaa2e80840e17e34a4fc0f357bbc3e33e3ea5cbfa274f1e28bbd112d" + "sha256": "ae0484724af35ce5a2405b9b4310f5ebe697c4383dced62286f30b2308227886" } }, "waf": { @@ -2300,9 +2300,9 @@ "binaryName": "nself-waf" }, "releaseTag": "v1.0.1", - "checksum": "113cf3f68e042f09ea9ad0705409596ed06782ccf83b33f05533c0d8532fc2d2", + "checksum": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542", "checksums": { - "sha256": "113cf3f68e042f09ea9ad0705409596ed06782ccf83b33f05533c0d8532fc2d2" + "sha256": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542" } }, "watchdog": { @@ -2336,9 +2336,9 @@ "binaryName": "nself-watchdog" }, "releaseTag": "v1.0.1", - "checksum": "bfee984fc52203ade2601e57d4dee58b7521da30d78e5dccb39fe9739c1d6361", + "checksum": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f", "checksums": { - "sha256": "bfee984fc52203ade2601e57d4dee58b7521da30d78e5dccb39fe9739c1d6361" + "sha256": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f" } }, "webhooks": { @@ -2376,9 +2376,9 @@ "task" ], "releaseTag": "v1.0.1", - "checksum": "661ae10b78fde4712a96fa5b6bd6a6a87ca7d62b2c0b2658d81e329cd7a06bd9", + "checksum": "0ee5c202f4456c3aca514ab79b706aef36d0032a4a56595e925c0f51c2a93223", "checksums": { - "sha256": "661ae10b78fde4712a96fa5b6bd6a6a87ca7d62b2c0b2658d81e329cd7a06bd9" + "sha256": "0ee5c202f4456c3aca514ab79b706aef36d0032a4a56595e925c0f51c2a93223" } }, "access-controls": { @@ -2406,9 +2406,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "e18d769b9892971b0fab59340f335bf0cda961e9da331ac48f8227e8e7a6d4e1", + "checksum": "6e9d3966a4588ce1c2d7a10c0f5c48f64015c68fc80a648ad7392c81223e8530", "checksums": { - "sha256": "e18d769b9892971b0fab59340f335bf0cda961e9da331ac48f8227e8e7a6d4e1" + "sha256": "6e9d3966a4588ce1c2d7a10c0f5c48f64015c68fc80a648ad7392c81223e8530" } }, "admin-api": { @@ -2435,9 +2435,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "898eae4cb4a7fc011a8c3065db69ce6649753d26bc1b441742cfa5f96417c82b", + "checksum": "3c9ba5681c326ed0d3d3cfc1d4d64b1e215ad69e8202bbc1d5221e1ee1a45be5", "checksums": { - "sha256": "898eae4cb4a7fc011a8c3065db69ce6649753d26bc1b441742cfa5f96417c82b" + "sha256": "3c9ba5681c326ed0d3d3cfc1d4d64b1e215ad69e8202bbc1d5221e1ee1a45be5" } }, "analytics": { @@ -2464,9 +2464,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "e1c0303cc47aba74110d35afdad0b4c84ad53612239f94dcfe79573e0f5455a8", + "checksum": "24731bcf900ecb1e0c4910f29559f7f0b34e94e9775f2aafe7c8841f00761b74", "checksums": { - "sha256": "e1c0303cc47aba74110d35afdad0b4c84ad53612239f94dcfe79573e0f5455a8" + "sha256": "24731bcf900ecb1e0c4910f29559f7f0b34e94e9775f2aafe7c8841f00761b74" } }, "audit-analytics": { @@ -2497,9 +2497,9 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.0.1", - "checksum": "a3fe57d141a6942619ff372fcda392ae509ced54ca943d5083de8304288a59e3", + "checksum": "5b04e63cbf0fc749e821c746b4e6324b77af6dab33142a874bbd05ba243319da", "checksums": { - "sha256": "a3fe57d141a6942619ff372fcda392ae509ced54ca943d5083de8304288a59e3" + "sha256": "5b04e63cbf0fc749e821c746b4e6324b77af6dab33142a874bbd05ba243319da" } }, "auth-enterprise": { @@ -2520,9 +2520,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "7699c8a293a29b6bd508cbf8bda5dd7a503296777e366cb5fa52b81860bf1d5b", + "checksum": "30489ebbaf7b4ef63c7ec0e073ca5f228f5e8ee91f91bd16b434f305e9ecbedd", "checksums": { - "sha256": "7699c8a293a29b6bd508cbf8bda5dd7a503296777e366cb5fa52b81860bf1d5b" + "sha256": "30489ebbaf7b4ef63c7ec0e073ca5f228f5e8ee91f91bd16b434f305e9ecbedd" } }, "byok": { @@ -2554,9 +2554,9 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.0.1", - "checksum": "304ca7b1e44dd075c3ed306c014badd9c09774f749bec79538da9abf84b7b193", + "checksum": "3069a7d9a2797069881476d8fdc7ee51de79c761acc1249ad9070b851ff6b191", "checksums": { - "sha256": "304ca7b1e44dd075c3ed306c014badd9c09774f749bec79538da9abf84b7b193" + "sha256": "3069a7d9a2797069881476d8fdc7ee51de79c761acc1249ad9070b851ff6b191" } }, "cdc": { @@ -2583,9 +2583,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "27283b38f2b2ebe1ad0880294f5c92c8edbc9b16a460c0f956db1f17e9241b1b", + "checksum": "b81f8530b1b42d81a2ecb5064581ac4f84cef01c5b6616b5b86489b28e5eabbe", "checksums": { - "sha256": "27283b38f2b2ebe1ad0880294f5c92c8edbc9b16a460c0f956db1f17e9241b1b" + "sha256": "b81f8530b1b42d81a2ecb5064581ac4f84cef01c5b6616b5b86489b28e5eabbe" } }, "cdn": { @@ -2612,9 +2612,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "c5246780f162c44eeae8a399f63a7438470f869f8444b578fd2d2182d2ed5615", + "checksum": "09d3af8e778af8d12017c8780305036648fe26bc2ea71d9108e67a1d39383a04", "checksums": { - "sha256": "c5246780f162c44eeae8a399f63a7438470f869f8444b578fd2d2182d2ed5615" + "sha256": "09d3af8e778af8d12017c8780305036648fe26bc2ea71d9108e67a1d39383a04" } }, "cloudflare": { @@ -2642,9 +2642,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "eca7aee1ff93a7ab0382e6e03ae4433c247108a36db295c98638b5c952c377ff", + "checksum": "a5af1c0d901bfa883b56f69f20ad523014746916da144e5ffb50f59ea795c8cd", "checksums": { - "sha256": "eca7aee1ff93a7ab0382e6e03ae4433c247108a36db295c98638b5c952c377ff" + "sha256": "a5af1c0d901bfa883b56f69f20ad523014746916da144e5ffb50f59ea795c8cd" } }, "compliance": { @@ -2681,9 +2681,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "64f7dd87d62aa5067da7676405b66f2d08af3162f984eed613862e889f7efab6", + "checksum": "90c1a11d71c0d7cb2fbc66da981c4a6cef1971268998d0deb726d7f697a7ae97", "checksums": { - "sha256": "64f7dd87d62aa5067da7676405b66f2d08af3162f984eed613862e889f7efab6" + "sha256": "90c1a11d71c0d7cb2fbc66da981c4a6cef1971268998d0deb726d7f697a7ae97" } }, "content-safety": { @@ -2711,9 +2711,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "5649ee9d565d7458fea9cb1bf2da4ea2ac9a05d37c1e1c51bde7acca76b0e9af", + "checksum": "0bd848955d59d7472a826e65a8d7e5b0778d78c482cda5574576c2484d91081e", "checksums": { - "sha256": "5649ee9d565d7458fea9cb1bf2da4ea2ac9a05d37c1e1c51bde7acca76b0e9af" + "sha256": "0bd848955d59d7472a826e65a8d7e5b0778d78c482cda5574576c2484d91081e" } }, "crdt": { @@ -2743,9 +2743,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "4597773f5630a34707af29756b0144dbc4f36544498a55dad6acb86c46888369", + "checksum": "592b535e6331bd1d8241cbf138cefaae8de5e1b1683b6bb86fb77fbc685db402", "checksums": { - "sha256": "4597773f5630a34707af29756b0144dbc4f36544498a55dad6acb86c46888369" + "sha256": "592b535e6331bd1d8241cbf138cefaae8de5e1b1683b6bb86fb77fbc685db402" } }, "ddns": { @@ -2773,9 +2773,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "0df7bcd666c646319c5e4fed150c5e7b5850da168ca3cae08edc408e166aa1ac", + "checksum": "df8d74fbcf27336bdcfc25371865c905e1b972cec93ef7ce339bce3801d7be7c", "checksums": { - "sha256": "0df7bcd666c646319c5e4fed150c5e7b5850da168ca3cae08edc408e166aa1ac" + "sha256": "df8d74fbcf27336bdcfc25371865c905e1b972cec93ef7ce339bce3801d7be7c" } }, "devices": { @@ -2803,9 +2803,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "894c0311e6ef913bbe7a03eeb15e42ff9fd3c20e4ecb9e5dee43b20c85082308", + "checksum": "d63bbb38f214d7a126dbe6251088511f396288c042bf0e6d4ef1c2ff21b69d01", "checksums": { - "sha256": "894c0311e6ef913bbe7a03eeb15e42ff9fd3c20e4ecb9e5dee43b20c85082308" + "sha256": "d63bbb38f214d7a126dbe6251088511f396288c042bf0e6d4ef1c2ff21b69d01" } }, "documents": { @@ -2833,9 +2833,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "cab7fbda0d68a5676f9547810edeb1c4b788f43a304c8a387b1cc2a1b8a658cc", + "checksum": "4316ffc6541cf1c7a8c0d4b968eaadf03b990580019a8bf3232da4f38dfc60d3", "checksums": { - "sha256": "cab7fbda0d68a5676f9547810edeb1c4b788f43a304c8a387b1cc2a1b8a658cc" + "sha256": "4316ffc6541cf1c7a8c0d4b968eaadf03b990580019a8bf3232da4f38dfc60d3" } }, "email": { @@ -2856,9 +2856,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "8e42a8e106881ca7daf6e176af3ebcd564bf00648011c6767b408607de8a1e6c", + "checksum": "9330c3b0e9ace6613e6ed5edf88c99b03bcbcd1bfb22dec32ddeb403917d41bb", "checksums": { - "sha256": "8e42a8e106881ca7daf6e176af3ebcd564bf00648011c6767b408607de8a1e6c" + "sha256": "9330c3b0e9ace6613e6ed5edf88c99b03bcbcd1bfb22dec32ddeb403917d41bb" } }, "encryption": { @@ -2885,9 +2885,9 @@ "minNselfVersion": "1.2.8", "tables": [], "releaseTag": "v1.0.1", - "checksum": "de2bd338986e79ccd44d34417c8e5e77beb1a2889880fdacacb41d4637a376e0", + "checksum": "83c67d0ced4bae71407601524bcf163d6cd721b04ae3c505e63526928110a03b", "checksums": { - "sha256": "de2bd338986e79ccd44d34417c8e5e77beb1a2889880fdacacb41d4637a376e0" + "sha256": "83c67d0ced4bae71407601524bcf163d6cd721b04ae3c505e63526928110a03b" } }, "entitlements": { @@ -2915,9 +2915,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "0b04c598bd0e64fb23f4a2ae7c3b71d463d428e06dd6ac3502f35239db2661d2", + "checksum": "5e9445780e78bfb0f04d15f20ffbdbfcf7ae69feca427c46a7b3865b4c197b80", "checksums": { - "sha256": "0b04c598bd0e64fb23f4a2ae7c3b71d463d428e06dd6ac3502f35239db2661d2" + "sha256": "5e9445780e78bfb0f04d15f20ffbdbfcf7ae69feca427c46a7b3865b4c197b80" } }, "event-bus": { @@ -2943,9 +2943,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "003a90f8bbc609123ee6b24cf8d20d289df31ca57dd0fe61d617d235c3abbf07", + "checksum": "818b61f997ef6052f915e96fc59ab288006455f8523c13dc6f5b087481cfeb98", "checksums": { - "sha256": "003a90f8bbc609123ee6b24cf8d20d289df31ca57dd0fe61d617d235c3abbf07" + "sha256": "818b61f997ef6052f915e96fc59ab288006455f8523c13dc6f5b087481cfeb98" } }, "family-ancestry": { @@ -2973,9 +2973,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "93ef6dcc17675bb30c041b12cfac5da52294bd6af7db7d573774937f4f85bea7", + "checksum": "ef05c58b911c37f00d1c1f1feaa84bf4ed0a6742cfe388297e35110a157b72a4", "checksums": { - "sha256": "93ef6dcc17675bb30c041b12cfac5da52294bd6af7db7d573774937f4f85bea7" + "sha256": "ef05c58b911c37f00d1c1f1feaa84bf4ed0a6742cfe388297e35110a157b72a4" } }, "family-familysearch": { @@ -3004,9 +3004,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "8759be1318a484259d732377d5dddc9b3ec3e5dd08f9275ac71ffe279e302ebe", + "checksum": "31fe27efc8875036dbdc17e43ac36906fc27de38706086954fb6af7cf9d8a751", "checksums": { - "sha256": "8759be1318a484259d732377d5dddc9b3ec3e5dd08f9275ac71ffe279e302ebe" + "sha256": "31fe27efc8875036dbdc17e43ac36906fc27de38706086954fb6af7cf9d8a751" } }, "family-myheritage": { @@ -3034,9 +3034,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "fbde06c21904033de8773821fc6da82e7c73973037dd5271063b330f36fbaaf9", + "checksum": "e88fca02f8ed544aab0695e2e462cc7a5ea552f07a639461c07981758187790e", "checksums": { - "sha256": "fbde06c21904033de8773821fc6da82e7c73973037dd5271063b330f36fbaaf9" + "sha256": "e88fca02f8ed544aab0695e2e462cc7a5ea552f07a639461c07981758187790e" } }, "family-wikitree": { @@ -3064,9 +3064,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "5980bbd3add7a4f577312ed0ffecb3d9bfb6615d350ad06b3840d520dc15decc", + "checksum": "a7c494f0fc166a880d17efdade77a56500428c29ff142cd96239e1782ba83a25", "checksums": { - "sha256": "5980bbd3add7a4f577312ed0ffecb3d9bfb6615d350ad06b3840d520dc15decc" + "sha256": "a7c494f0fc166a880d17efdade77a56500428c29ff142cd96239e1782ba83a25" } }, "functions-v8": { @@ -3095,9 +3095,9 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.0.1", - "checksum": "416874eb50c747e80558ddbca02bcc79b9efc868b524e04c6df67d07fe965984", + "checksum": "f5ca59c1f8b9b484537d58904633250de6505ed13c4a58b67eb1481c68333508", "checksums": { - "sha256": "416874eb50c747e80558ddbca02bcc79b9efc868b524e04c6df67d07fe965984" + "sha256": "f5ca59c1f8b9b484537d58904633250de6505ed13c4a58b67eb1481c68333508" } }, "hipaa": { @@ -3127,9 +3127,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "d185750737dd8817d320652db5b3958ff498a3dcec39656635a8e4c703307650", + "checksum": "a822f40d2f55e0fa2f327ed8e1abb8b8d06f7060e3b9b37be15ae7c73b4d6fb5", "checksums": { - "sha256": "d185750737dd8817d320652db5b3958ff498a3dcec39656635a8e4c703307650" + "sha256": "a822f40d2f55e0fa2f327ed8e1abb8b8d06f7060e3b9b37be15ae7c73b4d6fb5" } }, "home": { @@ -3156,9 +3156,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "1cc72e9017b0ff7163aa78051d25aa5f8dbbc8b8fe0058d899bd78fe2fe29187", + "checksum": "b516901b055cbf661cb93d8067d049ed09f2db42f142958235ae489ff8531be1", "checksums": { - "sha256": "1cc72e9017b0ff7163aa78051d25aa5f8dbbc8b8fe0058d899bd78fe2fe29187" + "sha256": "b516901b055cbf661cb93d8067d049ed09f2db42f142958235ae489ff8531be1" } }, "idme": { @@ -3187,9 +3187,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "a7ea57d0d17d038a5a6b7bd703577007d4badb8012f2bf1e3d6db2441167a38e", + "checksum": "c830f4c19b0e4e44353b54dabfff1e3185d615577fd21f21590465eea9ff28ba", "checksums": { - "sha256": "a7ea57d0d17d038a5a6b7bd703577007d4badb8012f2bf1e3d6db2441167a38e" + "sha256": "c830f4c19b0e4e44353b54dabfff1e3185d615577fd21f21590465eea9ff28ba" } }, "job-queue": { @@ -3215,9 +3215,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "1abbd052c5c564d5772212bcb87de643e8275190b89b0081f10310adf8ad418a", + "checksum": "e2831cd3c06444ce9f0976ab965b066d3cee91d5608d9c3fe0b15421f45fdae2", "checksums": { - "sha256": "1abbd052c5c564d5772212bcb87de643e8275190b89b0081f10310adf8ad418a" + "sha256": "e2831cd3c06444ce9f0976ab965b066d3cee91d5608d9c3fe0b15421f45fdae2" } }, "linkedin": { @@ -3244,9 +3244,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "157f2502e026d382c06008271914ce97e1e4d6c4e7f13d7ac8a4c977ac41e20a", + "checksum": "761d4027be619d52f72925b5f260dde6eb8d8bcc28b32ef7d67ea2afe644fb15", "checksums": { - "sha256": "157f2502e026d382c06008271914ce97e1e4d6c4e7f13d7ac8a4c977ac41e20a" + "sha256": "761d4027be619d52f72925b5f260dde6eb8d8bcc28b32ef7d67ea2afe644fb15" } }, "mail": { @@ -3273,9 +3273,9 @@ "minNselfVersion": "1.2.8", "tables": [], "releaseTag": "v1.0.1", - "checksum": "7b28487eddd2a5ec866e31ebb11d4ce19cd6fa73b724bda9d83b7e319f80689c", + "checksum": "a547a631637d4d1c2cad1cc960ec1796e14b59178973b7c54e7dd9c34265f0d8", "checksums": { - "sha256": "7b28487eddd2a5ec866e31ebb11d4ce19cd6fa73b724bda9d83b7e319f80689c" + "sha256": "a547a631637d4d1c2cad1cc960ec1796e14b59178973b7c54e7dd9c34265f0d8" } }, "meetings": { @@ -3304,9 +3304,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "dde30f60460c66b5295b3847726a63c688e44692f7beba3d85848477e000ac2f", + "checksum": "6f49a02a07ada9bb72daffdf70e06da92caf71a95b2ec05d413fa60b2f4c99a0", "checksums": { - "sha256": "dde30f60460c66b5295b3847726a63c688e44692f7beba3d85848477e000ac2f" + "sha256": "6f49a02a07ada9bb72daffdf70e06da92caf71a95b2ec05d413fa60b2f4c99a0" } }, "nself-cloud": { @@ -3332,9 +3332,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "79fb2a982d8e5dd72cb2130adb3ba6bdbe44230985b301f310d381876e241c79", + "checksum": "81d6ad39e3ef18c2812f1a664d1c13ceb6940159b556f56f63d60af227f624ea", "checksums": { - "sha256": "79fb2a982d8e5dd72cb2130adb3ba6bdbe44230985b301f310d381876e241c79" + "sha256": "81d6ad39e3ef18c2812f1a664d1c13ceb6940159b556f56f63d60af227f624ea" } }, "nself-eval-gate": { @@ -3361,9 +3361,9 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.0.1", - "checksum": "0d5c1f9ff4f24e50093890b60f9f8480b255905edcde025a4b62ac36e3e8a360", + "checksum": "fd1287c644e3c60d29038c68c62e7e20bc15d5f407fe59cc10c9b1862514dba1", "checksums": { - "sha256": "0d5c1f9ff4f24e50093890b60f9f8480b255905edcde025a4b62ac36e3e8a360" + "sha256": "fd1287c644e3c60d29038c68c62e7e20bc15d5f407fe59cc10c9b1862514dba1" } }, "nself-geo": { @@ -3391,9 +3391,9 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "42ffc22524d78e9ede45823960ce2174aff06cf099f8818e896396fd99bed6b8", + "checksum": "48367db3d350895d27fe742237d89ebd1c0210ecca1e2285c78e237cc1d507e5", "checksums": { - "sha256": "42ffc22524d78e9ede45823960ce2174aff06cf099f8818e896396fd99bed6b8" + "sha256": "48367db3d350895d27fe742237d89ebd1c0210ecca1e2285c78e237cc1d507e5" } }, "nself-image": { @@ -3426,9 +3426,9 @@ "minNselfVersion": "1.2.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "16881c2975f870712b720f4546101c3534c33a082065f31ff20f8289c2bbc2d7", + "checksum": "a664b5853c5df24ceaa0fea75a59da1aac25e7c07a596fa2d69f2ca4b873f1d0", "checksums": { - "sha256": "16881c2975f870712b720f4546101c3534c33a082065f31ff20f8289c2bbc2d7" + "sha256": "a664b5853c5df24ceaa0fea75a59da1aac25e7c07a596fa2d69f2ca4b873f1d0" } }, "nself-pdf": { @@ -3458,9 +3458,9 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "5fdb8e8f76b282266a2018368de24d87ec674ac797c0737b6c4df34751fb2568", + "checksum": "3ddade984c51555b8ee81aa83c1b5e2fcf9f7c9f3d09562e102f573e9de597df", "checksums": { - "sha256": "5fdb8e8f76b282266a2018368de24d87ec674ac797c0737b6c4df34751fb2568" + "sha256": "3ddade984c51555b8ee81aa83c1b5e2fcf9f7c9f3d09562e102f573e9de597df" } }, "nself-scan": { @@ -3492,9 +3492,9 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "5220e812687655b7b0cdbb94daaf783b1bd23ba0ca3880b53c457e519346c5d1", + "checksum": "85db1a432059ce4588ac0f36dcfc62270c11b473c267db8acc0567e3dfeadbc5", "checksums": { - "sha256": "5220e812687655b7b0cdbb94daaf783b1bd23ba0ca3880b53c457e519346c5d1" + "sha256": "85db1a432059ce4588ac0f36dcfc62270c11b473c267db8acc0567e3dfeadbc5" } }, "nself-sync": { @@ -3529,9 +3529,9 @@ "np_sync_cursors" ], "releaseTag": "v1.0.1", - "checksum": "365865218e415d628bb4e7519288573accca71649a2ed990546417cfe2324d38", + "checksum": "e78deb7b78f361deac0c1529f92a9ca40edfbedfbf9e9e437eda2cbd5837aa6c", "checksums": { - "sha256": "365865218e415d628bb4e7519288573accca71649a2ed990546417cfe2324d38" + "sha256": "e78deb7b78f361deac0c1529f92a9ca40edfbedfbf9e9e437eda2cbd5837aa6c" } }, "nself-vault": { @@ -3561,9 +3561,9 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "8a580e105cc45a8ac5c860eae957948445fa72daafa70915cf2a7b4964702bfa", + "checksum": "af60a93d84444127ea7e22a826c951b2a31a2a4a71a8a7bb37a0b1205e1937a2", "checksums": { - "sha256": "8a580e105cc45a8ac5c860eae957948445fa72daafa70915cf2a7b4964702bfa" + "sha256": "af60a93d84444127ea7e22a826c951b2a31a2a4a71a8a7bb37a0b1205e1937a2" } }, "object-storage": { @@ -3594,9 +3594,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "8d8b02a9ad5f83b5ceb236188a6305d768751647e50629708337fe6cc8449218", + "checksum": "5b7bf3e129efdde764528d9cd4fb96a4f790067778eaf5aa7a709f4147b8c7df", "checksums": { - "sha256": "8d8b02a9ad5f83b5ceb236188a6305d768751647e50629708337fe6cc8449218" + "sha256": "5b7bf3e129efdde764528d9cd4fb96a4f790067778eaf5aa7a709f4147b8c7df" } }, "observability": { @@ -3623,9 +3623,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "32e1031b640e9a744d2cdaeaa1dbc77835bda9c507fe49b6194c16252695b0e3", + "checksum": "c5c66501998cc7aa423a18ac8f0ba9509dfc15c440b641856028087679c50ef7", "checksums": { - "sha256": "32e1031b640e9a744d2cdaeaa1dbc77835bda9c507fe49b6194c16252695b0e3" + "sha256": "c5c66501998cc7aa423a18ac8f0ba9509dfc15c440b641856028087679c50ef7" } }, "payments": { @@ -3652,9 +3652,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "6b609410d6b4afd2cd731ee6405dfa465e1bb3fa9bf5503310a56980a4ce997f", + "checksum": "7e25ca3e13a458eddbfa97e73e5a11dd1534cf7da917f768ac9dddfa387810fd", "checksums": { - "sha256": "6b609410d6b4afd2cd731ee6405dfa465e1bb3fa9bf5503310a56980a4ce997f" + "sha256": "7e25ca3e13a458eddbfa97e73e5a11dd1534cf7da917f768ac9dddfa387810fd" } }, "pentest": { @@ -3681,9 +3681,9 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.0.1", - "checksum": "406641a69aef5ee4301fb4ecb6db55b235c33a8d584e1aaa836c2416d80b8a5f", + "checksum": "039d896548cc7c64c3033712906baacb0aa21ddd3c7629451c140133bc2d32fc", "checksums": { - "sha256": "406641a69aef5ee4301fb4ecb6db55b235c33a8d584e1aaa836c2416d80b8a5f" + "sha256": "039d896548cc7c64c3033712906baacb0aa21ddd3c7629451c140133bc2d32fc" } }, "pentest-kit": { @@ -3709,9 +3709,9 @@ "minNselfVersion": "1.2.8", "tables": [], "releaseTag": "v1.0.1", - "checksum": "8a13ec5fd704b38a2aa4c978fb0dac20e4bfd8bf3fdf96550589dd897db7713a", + "checksum": "4495d4ad638f6b791ac5f01ba4fc9493cee0fa26122b7391542bd9fd514d3c5a", "checksums": { - "sha256": "8a13ec5fd704b38a2aa4c978fb0dac20e4bfd8bf3fdf96550589dd897db7713a" + "sha256": "4495d4ad638f6b791ac5f01ba4fc9493cee0fa26122b7391542bd9fd514d3c5a" } }, "plugin-clawde": { @@ -3732,9 +3732,9 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.0.1", - "checksum": "20bed42be70497a920b109b3f21c9e05fe76070c2f2f8d534e3366fd6574afa8", + "checksum": "32e27e2fb3036a89aae6c69617ef25cb7cff8fcf13992583e4e68d9251f13abc", "checksums": { - "sha256": "20bed42be70497a920b109b3f21c9e05fe76070c2f2f8d534e3366fd6574afa8" + "sha256": "32e27e2fb3036a89aae6c69617ef25cb7cff8fcf13992583e4e68d9251f13abc" } }, "plugin-gauth": { @@ -3755,9 +3755,9 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.0.1", - "checksum": "fef4fdaea54c4ec250e6d104d5c7f66894229465e32e63c4991c978946cbea3b", + "checksum": "f5d3ae0adbdfb86c3cdb18f0c41975645d85a723616f73d40d431bbaba751abf", "checksums": { - "sha256": "fef4fdaea54c4ec250e6d104d5c7f66894229465e32e63c4991c978946cbea3b" + "sha256": "f5d3ae0adbdfb86c3cdb18f0c41975645d85a723616f73d40d431bbaba751abf" } }, "plugin-llm-gateway": { @@ -3778,9 +3778,9 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.0.1", - "checksum": "79b02e05e909ea75ef2dd9cb3a76a5499bd6e22c88dff60af486c12f09a381e5", + "checksum": "773524889faa560b682a1d648fe76ab7a2289e95c5997dd2d864ecea13d91a68", "checksums": { - "sha256": "79b02e05e909ea75ef2dd9cb3a76a5499bd6e22c88dff60af486c12f09a381e5" + "sha256": "773524889faa560b682a1d648fe76ab7a2289e95c5997dd2d864ecea13d91a68" } }, "plugin-pty": { @@ -3801,9 +3801,9 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.0.1", - "checksum": "f25dbb28223f439b4e5ad53b3540689f393cf4e23de57f8b31336fddf4df4ff1", + "checksum": "d0113187dd8ea1204c24f8370d86dfc6ca3092bc43c13f822200b15df0a77da2", "checksums": { - "sha256": "f25dbb28223f439b4e5ad53b3540689f393cf4e23de57f8b31336fddf4df4ff1" + "sha256": "d0113187dd8ea1204c24f8370d86dfc6ca3092bc43c13f822200b15df0a77da2" } }, "plugin-retrieval": { @@ -3824,9 +3824,9 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.0.1", - "checksum": "44f2739e254c1e7fc4eebaf147ed4143923e705f02403aae562cb6be2c1f3418", + "checksum": "a41a11ae99ed35b9542babc025b17650440c540fc7bba098a721dcf1c532af45", "checksums": { - "sha256": "44f2739e254c1e7fc4eebaf147ed4143923e705f02403aae562cb6be2c1f3418" + "sha256": "a41a11ae99ed35b9542babc025b17650440c540fc7bba098a721dcf1c532af45" } }, "post": { @@ -3857,9 +3857,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "7131e61958567798262219bd82b3ab5510777f859c999bb3b13c22dbecdec522", + "checksum": "0bfe68a2847edfbd12114b22eab5ec683f2415f019f1c0a75cc3a597e02aeb08", "checksums": { - "sha256": "7131e61958567798262219bd82b3ab5510777f859c999bb3b13c22dbecdec522" + "sha256": "0bfe68a2847edfbd12114b22eab5ec683f2415f019f1c0a75cc3a597e02aeb08" } }, "retro-gaming": { @@ -3889,9 +3889,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "3be264e6953c6ec7917bac24691b476770c4248e5c61f2ef76e8ccaf3dddbf42", + "checksum": "02c6d55ae0800323ff9a205c5917a6941223f54a04df9a4b039f99713483476a", "checksums": { - "sha256": "3be264e6953c6ec7917bac24691b476770c4248e5c61f2ef76e8ccaf3dddbf42" + "sha256": "02c6d55ae0800323ff9a205c5917a6941223f54a04df9a4b039f99713483476a" } }, "rom-discovery": { @@ -3921,9 +3921,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "4b8abc0c03b7a0304a72c40fc1daed9db01266c0c5eac7abcb4461c63831dcb8", + "checksum": "d648bdf3bf37aed7d08a3efb8ac73615e02a436fabbf690b6ff4c654cf575cdf", "checksums": { - "sha256": "4b8abc0c03b7a0304a72c40fc1daed9db01266c0c5eac7abcb4461c63831dcb8" + "sha256": "d648bdf3bf37aed7d08a3efb8ac73615e02a436fabbf690b6ff4c654cf575cdf" } }, "siem": { @@ -3954,9 +3954,9 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.0.1", - "checksum": "cd0ce7b4b47eab94e2d15eba337ef50453ee640e0d0caecfa207311ebad462d5", + "checksum": "57a2930c5f498777bcff01ceef148afd3efaec1013dcc1bb13813bc7ad200191", "checksums": { - "sha256": "cd0ce7b4b47eab94e2d15eba337ef50453ee640e0d0caecfa207311ebad462d5" + "sha256": "57a2930c5f498777bcff01ceef148afd3efaec1013dcc1bb13813bc7ad200191" } }, "sms": { @@ -3977,9 +3977,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "ce8253e6287bf697b957f8e8f9d56b3848eab9ca5d2b54a9fff3f674d1239bdf", + "checksum": "a2b4aa085299f1b4a2972009c1fed3ef0ffb965d6fe66a2be2aaa61b08ec7645", "checksums": { - "sha256": "ce8253e6287bf697b957f8e8f9d56b3848eab9ca5d2b54a9fff3f674d1239bdf" + "sha256": "a2b4aa085299f1b4a2972009c1fed3ef0ffb965d6fe66a2be2aaa61b08ec7645" } }, "storage": { @@ -4005,9 +4005,9 @@ "author": "nself", "minNselfVersion": "1.1.0", "tables": [], - "checksum": "8ae54cd144a1209ef9c3317b78e90c86c370064af90eb1cef8119cd24f73e34c", + "checksum": "cee934dc9e8a95f67950cf3bdf81f70e610ace5dedede89b82f7eedd346564c4", "checksums": { - "sha256": "8ae54cd144a1209ef9c3317b78e90c86c370064af90eb1cef8119cd24f73e34c" + "sha256": "cee934dc9e8a95f67950cf3bdf81f70e610ace5dedede89b82f7eedd346564c4" }, "releaseTag": "v1.0.1" }, @@ -4037,9 +4037,9 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.0.1", - "checksum": "8d1c6b5789466d28a2ebd7ec094076f9b7fb4121c638fb909feb247d0575ad77", + "checksum": "522a38ef35a689a40719af0c9d9cd56d929cf08ded564bd62843ff46e68fb403", "checksums": { - "sha256": "8d1c6b5789466d28a2ebd7ec094076f9b7fb4121c638fb909feb247d0575ad77" + "sha256": "522a38ef35a689a40719af0c9d9cd56d929cf08ded564bd62843ff46e68fb403" } }, "tenant-controller": { @@ -4067,9 +4067,9 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.0.1", - "checksum": "0c718c096dddad1941c26aaaed3a8f5548da42dc4a6baf84aff558dae0009ffa", + "checksum": "6ed7d89b72a4b11b1dce4a2e494aed69cfca0ec51294a1d8382280be3d46ea96", "checksums": { - "sha256": "0c718c096dddad1941c26aaaed3a8f5548da42dc4a6baf84aff558dae0009ffa" + "sha256": "6ed7d89b72a4b11b1dce4a2e494aed69cfca0ec51294a1d8382280be3d46ea96" } }, "transactional-email": { @@ -4098,9 +4098,9 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "cc9fc21e72e7c09cc18823b23c273b01d647a8ca539318206db31e99b588869d", + "checksum": "43a86b405669f09d47b05ee6700767f8f54af36315e09ab93d4184473d4cb299", "checksums": { - "sha256": "cc9fc21e72e7c09cc18823b23c273b01d647a8ca539318206db31e99b588869d" + "sha256": "43a86b405669f09d47b05ee6700767f8f54af36315e09ab93d4184473d4cb299" } }, "warehouse": { @@ -4127,9 +4127,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "29d7bd10cefffcf4c487e065639b31d0f1f5aad9834fa330f6da9271d0b4652c", + "checksum": "0ac4dbb1bd55c893140181a8a16419a6da96f1fb0754b3d1861576ed5c5717b3", "checksums": { - "sha256": "29d7bd10cefffcf4c487e065639b31d0f1f5aad9834fa330f6da9271d0b4652c" + "sha256": "0ac4dbb1bd55c893140181a8a16419a6da96f1fb0754b3d1861576ed5c5717b3" } }, "web3": { @@ -4159,9 +4159,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "63467f3f0d1dfe9c90cdbc1b0f65b5a2bfc21a05b3442a697d79b367259e7575", + "checksum": "77cf94dedf162dc7580e1cb695c4793525a5dea33993f280bd4de661ab1263df", "checksums": { - "sha256": "63467f3f0d1dfe9c90cdbc1b0f65b5a2bfc21a05b3442a697d79b367259e7575" + "sha256": "77cf94dedf162dc7580e1cb695c4793525a5dea33993f280bd4de661ab1263df" } }, "workflows": { @@ -4190,9 +4190,9 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.0.1", - "checksum": "4e51cd2f137606ef9ffa1893ffb46f6f56dabfb825fc6287f57b829ff8603360", + "checksum": "b287a558fbb4595c9e58611389d1e4048ea43aca7d8913910cd10056b5818063", "checksums": { - "sha256": "4e51cd2f137606ef9ffa1893ffb46f6f56dabfb825fc6287f57b829ff8603360" + "sha256": "b287a558fbb4595c9e58611389d1e4048ea43aca7d8913910cd10056b5818063" } }, "shared-utils": { @@ -4253,9 +4253,9 @@ "np_tmdb_webhook_events" ], "releaseTag": "v1.0.1", - "checksum": "321658a5f9b4675d3ef8057437a27b1cc86fe0f8f741b6a2c7def8b18b092fa8", + "checksum": "043bc8d4ced877a59e78ce67b8e6b25b489afd42d4e45ba8fdbe0fecb16318df", "checksums": { - "sha256": "321658a5f9b4675d3ef8057437a27b1cc86fe0f8f741b6a2c7def8b18b092fa8" + "sha256": "043bc8d4ced877a59e78ce67b8e6b25b489afd42d4e45ba8fdbe0fecb16318df" } }, "game-metadata": { @@ -4289,9 +4289,9 @@ "np_game_genres" ], "releaseTag": "v1.0.1", - "checksum": "56e10843c4621defb361b488bc5eaadb7042d4664fb9b8d2fd3bad12941dac1d", + "checksum": "81c220149c3b9555644c9891f29879bf416acab722c690aea4df016872bf0ffc", "checksums": { - "sha256": "56e10843c4621defb361b488bc5eaadb7042d4664fb9b8d2fd3bad12941dac1d" + "sha256": "81c220149c3b9555644c9891f29879bf416acab722c690aea4df016872bf0ffc" } }, "sports": { @@ -4336,9 +4336,9 @@ "np_sports_webhook_events" ], "releaseTag": "v1.0.1", - "checksum": "4b03bede383a8cafa9dd5def446354f05f13f0ed6c3efa0db2a30ea1fad188b4", + "checksum": "78a8d9026d5c367e678c2e2b74d13268b799ffa6ad956360a64200d089b4e626", "checksums": { - "sha256": "4b03bede383a8cafa9dd5def446354f05f13f0ed6c3efa0db2a30ea1fad188b4" + "sha256": "78a8d9026d5c367e678c2e2b74d13268b799ffa6ad956360a64200d089b4e626" } }, "podcast": { @@ -4372,9 +4372,9 @@ "np_podcast_categories" ], "releaseTag": "v1.0.1", - "checksum": "c52fe13426ff43596fd890f02a31a3420012d16307d0496677c001540030d138", + "checksum": "f4714ca8dbbcc668cf4936d152f4f2e68173af7dfea0a9cec18f71eac491f50f", "checksums": { - "sha256": "c52fe13426ff43596fd890f02a31a3420012d16307d0496677c001540030d138" + "sha256": "f4714ca8dbbcc668cf4936d152f4f2e68173af7dfea0a9cec18f71eac491f50f" } }, "file-processing": { @@ -4405,9 +4405,9 @@ "np_fileproc_metadata" ], "releaseTag": "v1.0.1", - "checksum": "1f6a3e10d0ad03305cf03fa31a23d116d521c7c9816e527d706c058668075476", + "checksum": "b8a9551f38586f2215b0a0e38a01d11b304d42e880c11d7b89843b72d3ba771e", "checksums": { - "sha256": "1f6a3e10d0ad03305cf03fa31a23d116d521c7c9816e527d706c058668075476" + "sha256": "b8a9551f38586f2215b0a0e38a01d11b304d42e880c11d7b89843b72d3ba771e" } }, "media-processing": { @@ -4448,9 +4448,9 @@ "np_mediap_uploads" ], "releaseTag": "v1.0.1", - "checksum": "09cd367c834a7a0fb056eb7b968b024698fd459da5970d0264d08ed1c9101077", + "checksum": "cda9c4d015cf49631f55105bb4dc99806775d585f3bcdd74851d49d0fcb02a78", "checksums": { - "sha256": "09cd367c834a7a0fb056eb7b968b024698fd459da5970d0264d08ed1c9101077" + "sha256": "cda9c4d015cf49631f55105bb4dc99806775d585f3bcdd74851d49d0fcb02a78" } }, "geocoding": { @@ -4482,9 +4482,9 @@ "np_geoc_places" ], "releaseTag": "v1.0.1", - "checksum": "d2da7cd5ac419533f49e069a160e89e9e90147999c2812a48884173a4fff9e98", + "checksum": "0641b2a79af09bccd0c7cfd75055609bf2bbcc0e9b5e3bffd03ecca2b37fff4e", "checksums": { - "sha256": "d2da7cd5ac419533f49e069a160e89e9e90147999c2812a48884173a4fff9e98" + "sha256": "0641b2a79af09bccd0c7cfd75055609bf2bbcc0e9b5e3bffd03ecca2b37fff4e" } } } From affe73b608ccb0dd21ab537259a1a0382b6f4135 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 10:18:20 -0400 Subject: [PATCH 07/18] feat(scripts): build-tarballs.sh also builds per-platform binary tarballs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every binaryName plugin ships a per-platform tarball alongside its source one, but this script only ever built the source tarball — there was no local way to reproduce the bytes the release pipeline's per-platform build step (release-tarballs.yml's build_plugin()) actually publishes, which is exactly what registry.json's checksums need to be verified against before a release ships. Ported build_platform_tarballs() from that workflow's proven, already-running Go-compile step, kept command/package resolution byte-for-byte equivalent (cliCommands vs. single binaryName, cmd// vs. cmd/) so a local build and a CI build can never disagree about what gets compiled. Uses the same scripts/deterministic-tar.sh recipe as the source tarball — one recipe for both, not two. The file is now sourceable as well as executable: main() only runs when invoked directly (./build-tarballs.sh), guarded so .github/workflows/tarball-checksum-gate.yml can `source` it and call build_platform_tarballs() per plugin without a second copy of this orchestration logic. NSELF_SKIP_PLATFORM_TARBALLS=1 skips the platform build for faster local iteration when only the source tarball is needed. Verified: two independent rebuilds of all 28 binaryName free plugins (all 5 platforms each) produced byte-identical sha256 for every one, including the existing source tarball checksums already in registry.json. --- scripts/build-tarballs.sh | 261 ++++++++++++++++++++++++++++---------- 1 file changed, 197 insertions(+), 64 deletions(-) diff --git a/scripts/build-tarballs.sh b/scripts/build-tarballs.sh index 12971dee..657ebf5d 100755 --- a/scripts/build-tarballs.sh +++ b/scripts/build-tarballs.sh @@ -1,39 +1,50 @@ #!/usr/bin/env bash # build-tarballs.sh -# Build tarballs for all 27 free plugins without uploading. -# Outputs to dist/ directory. Run build-and-upload-tarballs.sh to also upload. +# Build tarballs for all free plugins without uploading. Outputs to dist/. +# Run build-and-upload-tarballs.sh to also upload. # # Usage: ./scripts/build-tarballs.sh [VERSION] -# VERSION defaults to the registry.json version field (e.g. 1.0.0) +# VERSION defaults to the registry.json top-level version field (e.g. 1.0.0) # -# Requirements: jq, sha256sum (or shasum on macOS) -# Output: dist/-.tar.gz + dist/-.tar.gz.sha256 +# Every plugin gets its source tarball. A plugin that also declares a +# binaryName (it provides an `nself `) additionally gets five +# per-platform tarballs, built with the SAME Go cross-compile + tar recipe +# .github/workflows/release-tarballs.yml uses to build the real release +# assets — see build_platform_tarballs() below. Set +# NSELF_SKIP_PLATFORM_TARBALLS=1 to build source tarballs only (faster local +# iteration when you don't need the platform checksums); CI's +# tarball-checksum-gate.yml never sets it, since a platform tarball's +# checksum is exactly what it exists to verify. +# +# This file is also sourceable: tarball-checksum-gate.yml sources it and +# calls build_platform_tarballs() directly per plugin, so the Go-build +# orchestration (which command maps to which cmd/ subdirectory, which +# platforms exist) is defined in exactly one place, not copy-pasted into the +# workflow YAML a second time. +# +# Requirements: jq, sha256sum (or shasum on macOS), scripts/deterministic-tar.sh +# (GNU tar). Platform tarballs additionally require a Go toolchain matching +# go.mod's directive for each plugin (CGO_ENABLED=0 cross-compile). +# Output: dist/-.tar.gz(.sha256) +# dist/--.tar.gz(.sha256) [binaryName plugins] + +# NOTE: no `set -euo pipefail` at sourcing time — see the execution guard at +# the bottom of this file. Functions below assume it (via `main`'s own +# `set -euo pipefail`), consistent with how this script always ran standalone. -set -euo pipefail +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DETERMINISTIC_TAR="${SCRIPT_DIR}/deterministic-tar.sh" -PLUGINS_DIR="${PLUGINS_DIR:-free}" -DIST_DIR="${DIST_DIR:-dist}" -ERRORS=0 +# The five platform strings nself plugin install requests, exactly as +# internal/plugin/arch.go's PlatformArch() returns them. binaryPluginDownloadURL() +# builds the asset filename from the same strings — a mismatch here is an +# install failure there. +PLATFORMS="darwin-arm64 darwin-amd64 linux-amd64 linux-arm64 windows-amd64" log() { printf "[build-tarballs] %s\n" "$*"; } -err() { printf "[build-tarballs] ERROR: %s\n" "$*" >&2; ERRORS=$((ERRORS + 1)); } +err() { printf "[build-tarballs] ERROR: %s\n" "$*" >&2; } warn() { printf "[build-tarballs] WARN: %s\n" "$*" >&2; } -# Detect version from registry.json or first arg -if [ -n "${1:-}" ]; then - VERSION="$1" -else - if ! command -v jq >/dev/null 2>&1; then - err "jq not found; pass VERSION as first argument" - exit 1 - fi - VERSION="$(jq -r '.version' registry.json 2>/dev/null || printf '')" - if [ -z "$VERSION" ]; then - err "Cannot read version from registry.json; pass VERSION as first argument" - exit 1 - fi -fi - # sha256 helper — macOS uses shasum -a 256, Linux uses sha256sum sha256_file() { if command -v sha256sum >/dev/null 2>&1; then @@ -43,52 +54,174 @@ sha256_file() { fi } -mkdir -p "$DIST_DIR" +# build_platform_tarballs builds the five per-platform tarballs for one +# plugin, when it declares a binaryName, into dist_dir. No-op (returns 0) for +# a plugin with no binaryName — its package is source and works everywhere. +# +# Ported from .github/workflows/release-tarballs.yml's build_plugin() step, +# which is the proven, already-running-in-CI version of this logic; kept +# byte-for-byte equivalent in command/package resolution so a local build and +# a CI build can never disagree about which commands get compiled or from +# which cmd/ subdirectory. +# +# Args: plugin_dir plugin_name version dist_dir +build_platform_tarballs() { + local plugin_dir="$1" plugin_name="$2" version="$3" dist_dir="$4" -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -DETERMINISTIC_TAR="${SCRIPT_DIR}/deterministic-tar.sh" + local bin_name + bin_name="$(jq -r '.binaryName // .implementation.binaryName // ""' "${plugin_dir}/plugin.json")" + if [ -z "$bin_name" ]; then + return 0 + fi -# Walk free/ plugin directories in a fixed, filesystem-order-independent -# sequence (matches the traversal .github/workflows/release-tarballs.yml -# uses) — member order inside each individual tarball is already pinned by -# deterministic-tar.sh's --sort=name, this just makes the build log/exit -# order predictable too. -BUILT=0 -while IFS= read -r plugin_dir; do - plugin_name="$(basename "$plugin_dir")" - tarball_name="${plugin_name}-${VERSION}.tar.gz" - checksum_name="${tarball_name}.sha256" - tarball_path="${DIST_DIR}/${tarball_name}" - checksum_path="${DIST_DIR}/${checksum_name}" - - # Verify plugin.json exists (skip non-plugin dirs) - if [ ! -f "${plugin_dir}/plugin.json" ]; then - warn "Skipping $plugin_name (no plugin.json)" - continue + # A plugin may provide more than one command; cliCommands lists them and + # the CLI publishes one binary per entry, so every one has to be built or + # the command it names is dead on arrival. + local commands + commands="$(jq -r 'if (.cliCommands // []) | length > 0 then (.cliCommands[].name) else "" end' "${plugin_dir}/plugin.json")" + if [ -z "$commands" ]; then + commands="${bin_name#nself-}" fi - log "Building ${tarball_name} ..." - # No trailing slash on plugin_dir: deterministic-tar.sh's --sort=name - # already makes member order stable regardless, but a consistent - # no-trailing-slash argument keeps this script and the workflow's - # `find -type d` output (which never has one) textually identical inputs. - if ! "$DETERMINISTIC_TAR" "$tarball_path" "${plugin_dir%/}"; then - err "Failed to build tarball for $plugin_name" - continue + local dist_dir_abs + dist_dir_abs="$(cd "$dist_dir" && pwd)" + + local platform + for platform in $PLATFORMS; do + local goos="${platform%%-*}" + local goarch="${platform##*-}" + local stage="${dist_dir}/stage-${plugin_name}-${platform}" + local exe="" + [ "$goos" = "windows" ] && exe=".exe" + + rm -rf "$stage" + mkdir -p "${stage}/${plugin_name}" + cp -R "${plugin_dir}/." "${stage}/${plugin_name}/" + + local failed=0 + local command + for command in $commands; do + # A plugin providing several commands keeps each under cmd//; + # one providing a single command may put it at cmd/ directly. + local pkg="./cmd/${command}/" + [ -d "${plugin_dir}/cmd/${command}" ] || pkg="./cmd/" + + if ! (cd "${plugin_dir}" && CGO_ENABLED=0 GOOS="$goos" GOARCH="$goarch" \ + go build -trimpath -ldflags="-s -w" \ + -o "${dist_dir_abs}/$(basename "$stage")/${plugin_name}/nself-${command}${exe}" "$pkg"); then + err "$plugin_name failed to build nself-${command} for $platform" + failed=1 + break + fi + done + + if [ "$failed" -ne 0 ]; then + rm -rf "$stage" + return 1 + fi + + local ptar="${dist_dir}/${plugin_name}-${version}-${platform}.tar.gz" + # Same shared recipe as the source tarball — the per-platform binary + # archives had the identical mtime/ordering non-determinism (compiled + # binary mtimes, per-run staging-dir enumeration order) that the source + # tarball did before deterministic-tar.sh. + "$DETERMINISTIC_TAR" "$ptar" -C "$stage" "${plugin_name}" + local psha + psha="$(sha256_file "$ptar")" + printf "%s %s\n" "$psha" "$(basename "$ptar")" > "${ptar}.sha256" + rm -rf "$stage" + log " ${platform} sha256: ${psha}" + done +} + +# main runs the full build: every plugin's source tarball, plus (unless +# NSELF_SKIP_PLATFORM_TARBALLS=1) every binaryName plugin's five platform +# tarballs. Only invoked when this file is executed directly — see the guard +# below — so tarball-checksum-gate.yml can source it for build_platform_tarballs +# alone without also running this whole pass. +main() { + set -euo pipefail + + local plugins_dir="${PLUGINS_DIR:-free}" + local dist_dir="${DIST_DIR:-dist}" + local errors=0 + + local version + if [ -n "${1:-}" ]; then + version="$1" + else + if ! command -v jq >/dev/null 2>&1; then + err "jq not found; pass VERSION as first argument" + exit 1 + fi + version="$(jq -r '.version' registry.json 2>/dev/null || printf '')" + if [ -z "$version" ]; then + err "Cannot read version from registry.json; pass VERSION as first argument" + exit 1 + fi fi - sha256="$(sha256_file "$tarball_path")" - printf "%s %s\n" "$sha256" "$tarball_name" > "$checksum_path" + mkdir -p "$dist_dir" - log " sha256: ${sha256}" - BUILT=$((BUILT + 1)) -done < <(find "$PLUGINS_DIR" -maxdepth 1 -mindepth 1 -type d | sort) + local built=0 + # Walk free/ plugin directories in a fixed, filesystem-order-independent + # sequence (matches the traversal .github/workflows/release-tarballs.yml + # uses) — member order inside each individual tarball is already pinned by + # deterministic-tar.sh's --sort=name, this just makes the build log/exit + # order predictable too. + while IFS= read -r plugin_dir; do + local plugin_name tarball_name checksum_name tarball_path checksum_path + plugin_name="$(basename "$plugin_dir")" + tarball_name="${plugin_name}-${version}.tar.gz" + checksum_name="${tarball_name}.sha256" + tarball_path="${dist_dir}/${tarball_name}" + checksum_path="${dist_dir}/${checksum_name}" -log "Built ${BUILT} tarballs in ${DIST_DIR}/" + # Verify plugin.json exists (skip non-plugin dirs) + if [ ! -f "${plugin_dir}/plugin.json" ]; then + warn "Skipping $plugin_name (no plugin.json)" + continue + fi -if [ "$ERRORS" -gt 0 ]; then - log "Completed with $ERRORS error(s)." - exit 1 -fi + log "Building ${tarball_name} ..." + # No trailing slash on plugin_dir: deterministic-tar.sh's --sort=name + # already makes member order stable regardless, but a consistent + # no-trailing-slash argument keeps this script and the workflow's + # `find -type d` output (which never has one) textually identical inputs. + if ! "$DETERMINISTIC_TAR" "$tarball_path" "${plugin_dir%/}"; then + err "Failed to build tarball for $plugin_name" + errors=$((errors + 1)) + continue + fi -log "Done." + local sha256 + sha256="$(sha256_file "$tarball_path")" + printf "%s %s\n" "$sha256" "$tarball_name" > "$checksum_path" + log " sha256: ${sha256}" + built=$((built + 1)) + + if [ "${NSELF_SKIP_PLATFORM_TARBALLS:-}" != "1" ]; then + if ! build_platform_tarballs "$plugin_dir" "$plugin_name" "$version" "$dist_dir"; then + err "Failed to build one or more platform tarballs for $plugin_name" + errors=$((errors + 1)) + fi + fi + done < <(find "$plugins_dir" -maxdepth 1 -mindepth 1 -type d | sort) + + log "Built ${built} plugin(s) in ${dist_dir}/" + + if [ "$errors" -gt 0 ]; then + log "Completed with $errors error(s)." + exit 1 + fi + + log "Done." +} + +# Only run main when executed directly (./build-tarballs.sh or bash +# build-tarballs.sh), not when sourced — tarball-checksum-gate.yml sources +# this file to reuse build_platform_tarballs()/sha256_file() without +# triggering a full build of every plugin. +if [ "${BASH_SOURCE[0]}" = "${0}" ]; then + main "$@" +fi From 6cf4dd72b3329f76f2018a50ed550f0c3853d8a1 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 10:18:25 -0400 Subject: [PATCH 08/18] feat(registry): add checksums.platforms schema field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit registry.json carried exactly one checksum per plugin (the source tarball's, checksum / checksums.sha256), but a plugin with a binaryName ships five more release assets — one per platform — and nself plugin install downloads one of those instead of the source tarball whenever binaryName is set (internal/plugin/download.go). Every such install was hashing the downloaded platform tarball and comparing it against the source tarball's checksum, which can never match (plugins#83). checksums.platforms is a map keyed by exactly the platform strings internal/plugin/arch.go's PlatformArch() returns (darwin-arm64, darwin-amd64, linux-amd64, linux-arm64, windows-amd64) — a mismatch here is an install failure there, so the schema pins the key set with additionalProperties: false. Values are plain lowercase hex sha256, no "sha256:" prefix, unlike the sibling sha256 field (which some writers prefix) — the CLI's checksum comparison is a raw hex equality check. --- registry-schema.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/registry-schema.json b/registry-schema.json index 423153a5..71921392 100644 --- a/registry-schema.json +++ b/registry-schema.json @@ -250,7 +250,22 @@ "checksums": { "type": "object", "properties": { - "sha256": { "type": "string" } + "sha256": { + "type": "string", + "description": "SHA-256 of the source tarball -.tar.gz. Duplicates the top-level `checksum` field." + }, + "platforms": { + "type": "object", + "description": "SHA-256 checksums of the five per-platform binary tarballs (--.tar.gz), one per key. Present only for plugins with a binaryName (implementation.binaryName or the flat binaryName field) — internal/plugin/download.go tries this asset before the source tarball whenever binaryName is set, and internal/plugin/security.go refuses the install if the matching entry here is absent, so an entry is required for every platform that plugin actually ships. Keys MUST be exactly the platform strings internal/plugin/arch.go's PlatformArch() returns; values are plain lowercase hex sha256, no 'sha256:' prefix (unlike the sibling `sha256` field above, which some writers prefix — the CLI compares platform checksums with a raw hex equality check).", + "properties": { + "darwin-arm64": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, + "darwin-amd64": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, + "linux-amd64": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, + "linux-arm64": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, + "windows-amd64": { "type": "string", "pattern": "^[0-9a-f]{64}$" } + }, + "additionalProperties": false + } } }, "tarballUrl": { From 0eae66154ba6cccc8b6ca3be3e5cbe1d601c5d69 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 10:18:31 -0400 Subject: [PATCH 09/18] ci: verify checksums.platforms in the tarball checksum gate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extends the gate added in b9403fa with a second job, platform-checksum-gate: for every free plugin with a binaryName, it cross-compiles all 5 platform tarballs from the checked-out tree (sourcing scripts/build-tarballs.sh's build_platform_tarballs() rather than re-implementing the Go-build orchestration a third time) and fails the PR if the freshly built sha256 disagrees with registry.json's checksums.platforms. for that plugin. A MISSING checksums.platforms entry for a plugin that does ship a binary for that platform is refused exactly like a mismatch, not skipped — unlike the existing source-checksum job's leniency for a plugin with no checksum at all (shared-utils, etc.), install-time verification for a platform artifact (internal/plugin/installer_locked.go's resolveArtifactChecksum) refuses unconditionally on a missing entry, with no env var to bypass it, so this gate holds registry.json to the same standard before it ships. ollama is excluded for the same reason as the existing job (external pre-existing release, not built by this pipeline). Verified locally by extracting this job's script and running it against a scoped registry.json (ai-cli + sentry-cli, a single- and multi-command plugin): passes cleanly against the real, freshly-populated checksums; fails with MISMATCH when one platform checksum is deliberately corrupted; fails with MISSING (not silently skipped) when that same entry is removed outright; passes again once restored. --- .github/workflows/tarball-checksum-gate.yml | 156 +++++++++++++++++++- 1 file changed, 149 insertions(+), 7 deletions(-) diff --git a/.github/workflows/tarball-checksum-gate.yml b/.github/workflows/tarball-checksum-gate.yml index ac42f665..3d97886e 100644 --- a/.github/workflows/tarball-checksum-gate.yml +++ b/.github/workflows/tarball-checksum-gate.yml @@ -16,13 +16,18 @@ name: Tarball Checksum Gate # the real bytes and fails the PR the moment they disagree, rather than # discovering it after users start getting failed installs post-release. # -# This job does not build the per-platform binary tarballs (those need Go -# compilation for every plugin with a binaryName, which is what -# build-test.yml already exercises) — registry.json stores exactly one -# checksum per plugin, and that one checksum was always computed from the -# source tarball (scripts/build-tarballs.sh), never from a per-platform -# binary. Comparing the source tarball's bytes against it is the whole -# claim this field makes. +# A second job, per-platform-checksum-gate, does the same thing for the +# per-platform binary tarballs: for every plugin with a binaryName, it +# cross-compiles all 5 platform builds (the same Go build + deterministic-tar.sh +# recipe release-tarballs.yml uses — via scripts/build-tarballs.sh's +# build_platform_tarballs(), sourced rather than re-implemented, so there is +# exactly one recipe for this) and diffs the result against registry.json's +# checksums.platforms. for that plugin. internal/plugin/download.go +# tries this asset before the source tarball whenever binaryName is set, and +# internal/plugin/security.go's install-time verification refuses the install +# outright if the matching entry here is absent or wrong (plugins#83) — so a +# missing or stale platform checksum is exactly as much a shipped defect as a +# stale source checksum, and this gate makes it exactly as unmergeable. on: pull_request: @@ -148,3 +153,140 @@ jobs: fi echo "OK: every registry.json checksum matches a freshly rebuilt tarball" + + platform-checksum-gate: + name: Verify registry.json checksums.platforms match rebuilt binary tarballs + runs-on: ubuntu-latest + timeout-minutes: 30 + + steps: + - name: Checkout + uses: actions/checkout@v7 + + - name: Install jq + run: sudo apt-get install -y jq + + # Matches release-tarballs.yml's Go version — the per-platform binaries + # this job cross-compiles have to be built the same way the real + # release build compiles them, or a Go-version-specific bug could pass + # here and still ship broken. + - uses: actions/setup-go@v7 + with: + go-version: '1.26.4' + cache: false + + - name: Rebuild every binaryName plugin's platform tarballs and diff against registry.json + run: | + set -euo pipefail + + # Sourced, not re-implemented: build_platform_tarballs() and + # sha256_file() (and the PLATFORMS list) are defined once in + # scripts/build-tarballs.sh and used both by a contributor running + # it locally and by this gate — see that file's own doc comment for + # why it is written to be sourceable without running its main(). + # shellcheck source=scripts/build-tarballs.sh + source scripts/build-tarballs.sh + + WORK="$(mktemp -d)" + FAIL=0 + CHECKED=0 + SKIPPED_NO_BINARY=0 + + while IFS= read -r plugin_dir; do + name="$(basename "$plugin_dir")" + + # ollama has no binaryName (it is not a CLI-command plugin) and is + # excluded from the source-checksum gate above for the same + # external-release reason; it never reaches the binaryName check + # below anyway, but skip explicitly for the same documented + # reason as that job. + if [ "$name" = "ollama" ]; then + continue + fi + + bin_name="$(jq -r '.binaryName // .implementation.binaryName // ""' "${plugin_dir}/plugin.json" 2>/dev/null || printf '')" + if [ -z "$bin_name" ]; then + # No command binary to build or verify — this plugin's package + # is source and works everywhere; the source-checksum gate + # already covers it. + SKIPPED_NO_BINARY=$((SKIPPED_NO_BINARY + 1)) + continue + fi + + entry="$(jq -c --arg n "$name" '.plugins[$n] // empty' registry.json)" + if [ -z "$entry" ]; then + continue + fi + version="$(printf '%s' "$entry" | jq -r '.version // empty')" + if [ -z "$version" ]; then + echo "ERROR $name: registry entry has no version; cannot name or compare a platform tarball" + FAIL=1 + continue + fi + + if ! build_platform_tarballs "$plugin_dir" "$name" "$version" "$WORK"; then + echo "ERROR $name: failed to build one or more platform tarballs" + FAIL=1 + continue + fi + + for platform in $PLATFORMS; do + ptar="${WORK}/${name}-${version}-${platform}.tar.gz" + if [ ! -f "$ptar" ]; then + echo "ERROR $name/$platform: expected $ptar was not produced" + FAIL=1 + continue + fi + actual="$(sha256_file "$ptar")" + CHECKED=$((CHECKED + 1)) + + expected="$(printf '%s' "$entry" | jq -r --arg p "$platform" '.checksums.platforms[$p] // empty')" + + # A missing checksums.platforms entry for a plugin that DOES + # ship a binary for this platform is refused here, the same as + # a mismatch — not skipped the way an absent SOURCE checksum + # is (shared-utils, etc. above). internal/plugin's install-time + # policy (installer_locked.go's resolveArtifactChecksum) is + # equally unconditional: a downloaded platform binary with no + # matching registry checksum refuses the install outright, + # with no leniency and no env var to bypass it — so an entry + # missing here is not a softer finding than a wrong one, it is + # the exact defect that policy exists to catch before release. + if [ -z "$expected" ]; then + echo "MISSING $name/$platform: no registry checksums.platforms.$platform recorded (install-time verification refuses this unconditionally)" + FAIL=1 + rm -f "$ptar" "${ptar}.sha256" + continue + fi + + # Plain lowercase hex, matching how registry-schema.json + # documents this field and how the CLI's raw hex comparison + # reads it — no "sha256:" prefix stripping needed here (that + # convention is checksums.sha256's, the source-tarball + # sibling field, not this one's). + lhs="$(printf '%s' "$expected" | tr '[:upper:]' '[:lower:]')" + rhs="$(printf '%s' "$actual" | tr '[:upper:]' '[:lower:]')" + if [ "$lhs" != "$rhs" ]; then + echo "MISMATCH $name/$platform: registry .checksums.platforms.$platform=$expected rebuilt=$actual" + FAIL=1 + fi + rm -f "$ptar" "${ptar}.sha256" + done + done < <(find free -maxdepth 1 -mindepth 1 -type d | sort) + + echo "" + echo "Checked: $CHECKED platform tarball(s)" + echo "Skipped (no binaryName): $SKIPPED_NO_BINARY" + + rm -rf "$WORK" + + if [ "$FAIL" -ne 0 ]; then + echo "" + echo "ERROR: one or more registry.json checksums.platforms entries are missing or do not match a freshly rebuilt platform tarball" >&2 + echo "Rebuild with:" >&2 + echo " bash scripts/build-tarballs.sh " >&2 + echo "and update the mismatched/missing checksums.platforms. entries." >&2 + exit 1 + fi + + echo "OK: every binaryName plugin's checksums.platforms matches a freshly rebuilt tarball" From 063697ddee2989032ab4bbe3ec1cf5be18ef6da2 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 10:18:36 -0400 Subject: [PATCH 10/18] fix(registry): populate checksums.platforms for binaryName free plugins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backfills the new checksums.platforms field (previous commit) for every free plugin that has a binaryName — 28 of them as of this registry, not the 32 originally estimated when this defect was scoped; recount with: jq '[.plugins[] | select(.binaryName or .implementation.binaryName)] | length' registry.json Each entry's 5 platform checksums were computed by building that plugin's actual per-platform tarball with scripts/build-tarballs.sh (the same deterministic-tar.sh + Go cross-compile recipe release-tarballs.yml uses), confirmed byte-identical across two independent rebuilds, including the 28 pre-existing source checksums this run reproduced unchanged. ollama (checksum verified against its own external v1.1.1 release, no binaryName) and shared-utils (installable:false, no checksum at all) are untouched, per the existing exceptions this registry already carries. --- registry.json | 252 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 224 insertions(+), 28 deletions(-) diff --git a/registry.json b/registry.json index d856b723..911d39c6 100644 --- a/registry.json +++ b/registry.json @@ -41,7 +41,14 @@ "releaseTag": "v1.0.1", "checksum": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16", "checksums": { - "sha256": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16" + "sha256": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16", + "platforms": { + "darwin-arm64": "5bdf210dbeb16255c516e71c97b5ee599fbe9767c452f81babcd05534fc68513", + "darwin-amd64": "099c19bc11726483942e5bf140f230ae3ab9e26f8ae9e0e2695303fa0b8a7d08", + "linux-amd64": "a9787e8d159c32110299c885841c3dcc9b3ecc61a96e0399c90c9ba2397bb168", + "linux-arm64": "0dc16e82e45044f0766e4a68bf74619520e9ba28b11bf453ef16a0d750578a7a", + "windows-amd64": "b89598b6e46a2a3f00c25632e402878c0c1ab7f4f7be13ab494532f417fe1a7e" + } } }, "ai-studio": { @@ -76,7 +83,14 @@ "releaseTag": "v1.0.1", "checksum": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb", "checksums": { - "sha256": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb" + "sha256": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb", + "platforms": { + "darwin-arm64": "18c6510d0192be1e2eb1af413a5796b912e8ffc8d5e2823dd50c4cf57735399b", + "darwin-amd64": "c94d3380938b1059e13ed78ea5d69724243e09f25634fd1597144009a4822a4a", + "linux-amd64": "bc203b8f4839beb565b171c244aaaacb191714cb9e3ffe23141cb9ef324183a0", + "linux-arm64": "32ba15d6ad87126f282e0a4ddd2d8e079169c3e88d9b559326d127b69eacdb89", + "windows-amd64": "f6db648b3ac1dffcf12641fbf99f8845e18979db8535638b09d221bea515794a" + } } }, "alerts": { @@ -112,7 +126,14 @@ "releaseTag": "v1.0.1", "checksum": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd", "checksums": { - "sha256": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd" + "sha256": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd", + "platforms": { + "darwin-arm64": "c8404a68c43fff044ae2fcf51d8a92b3383ca1cecac15e22b643ba18fe58b999", + "darwin-amd64": "7c7935f5ad85c3d2d83f57e0dc61cdbc8cfb0982246365b234f65603a7a845c4", + "linux-amd64": "11cac40a8de1c5977c010bb62c10a1456e2b9bf3e389169218d1f29cf22242d8", + "linux-arm64": "2f621947d4e4d1d58fa6e8c615c02c1568a92b9dcfcdd53844c71bfd1d1d3202", + "windows-amd64": "2407c97c56d58fc466da6443f0dd2d8e9884b4d7f05c8d72aba5b73b75061a33" + } } }, "api": { @@ -147,7 +168,14 @@ "releaseTag": "v1.0.1", "checksum": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757", "checksums": { - "sha256": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757" + "sha256": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757", + "platforms": { + "darwin-arm64": "da2120963f1892bce743c6441aad974d953321b4c44d6a01e2a2fb6967cd260c", + "darwin-amd64": "b17ae30218bfb5149546674c265778954707b2eaad1e4f01f5a23e457f01e7f0", + "linux-amd64": "a23a17e0cb1c70b37157b35bc334c7b33ba1f96612473d657a7202aac47dc014", + "linux-arm64": "3cb6bd84c48b4f01d8d43b3904d7e36e216ee529720e83a2460a15ac9c7fc4ef", + "windows-amd64": "59eff7819129606c8798bc4ebfd840d1e843a54dd939ca71d32c07340102b487" + } } }, "audit": { @@ -182,7 +210,14 @@ "releaseTag": "v1.0.1", "checksum": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e", "checksums": { - "sha256": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e" + "sha256": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e", + "platforms": { + "darwin-arm64": "f23ebcfd12569190ff1aeb181a708e2fba35a36365ca37500b54e52bf20c0bcc", + "darwin-amd64": "afe57a4839b1415d0d9cb10d56df3a8e5e73b018e11493beba88e562435d8333", + "linux-amd64": "665e7feb09f72c231a128d4aa9e5beebcd23fad9b0640d9a184d5de70444b205", + "linux-arm64": "850da1083be62c74cbf0bc36213e881a9c55a90cd6c210ce73cec2e7b52178c0", + "windows-amd64": "1be13f1a13651c7d9d21374c8dddfdbe94a8980e0b2f4a03767645a60916c633" + } } }, "audit-log": { @@ -328,7 +363,14 @@ "releaseTag": "v1.0.1", "checksum": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589", "checksums": { - "sha256": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589" + "sha256": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589", + "platforms": { + "darwin-arm64": "cc59c8081b44b725e3a5540e0a531d73d6dba24f51cc8b68f5f63ded0a52e69b", + "darwin-amd64": "a1098b9abd36d59a3c8ed1aa4427eae794b2a8a0a8602731c52dd18591f41675", + "linux-amd64": "1dfafc56b99195a784ae3119a1e201de20e692001db93fb04beb0f27580086c7", + "linux-arm64": "bd429329132d3b9236579db37ca34f076f9303e042f200dd5d93346d59d3b487", + "windows-amd64": "ecb99abd0a6a2de6ba703c6249db489ba258a58d977ac360b7a41e5d1a4cdf3e" + } } }, "content-acquisition": { @@ -464,7 +506,14 @@ "releaseTag": "v1.0.1", "checksum": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31", "checksums": { - "sha256": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31" + "sha256": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31", + "platforms": { + "darwin-arm64": "7b40834bb5c9813e09a16cadfc81073a93bbee39506a418f7a08795233311885", + "darwin-amd64": "ee1bea1543f96a1321c6697c9438991b9d08bb982b095b585d37def59d5cc7fd", + "linux-amd64": "8687c821a736120b6a6d825410fc23d23b36947bf78c7841aeefdc81c35d91a4", + "linux-arm64": "b7e27340d4d62f7994e5c2706746a81067014009d2c860cde87abef483349e6a", + "windows-amd64": "1cd1782de547bad85a9fddd40f87b26842dfc424790691435db8b67c6129fcf9" + } } }, "cron": { @@ -538,7 +587,14 @@ "releaseTag": "v1.0.1", "checksum": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96", "checksums": { - "sha256": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96" + "sha256": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96", + "platforms": { + "darwin-arm64": "c8019b590f0b0dc3d1baf9e7cbf120b2f5fd1c561be780c29ddee0324f82ba80", + "darwin-amd64": "f03c70cf02325e420202e984a2b63a7d74b438c7e035e4167ff131743c231b77", + "linux-amd64": "4084d129ef54c960284b110b26b4a306ce35a9c3b9568c6a0a62cfb87c2c49f8", + "linux-arm64": "f1997872dc9f4fc26a390ede89167f040e4a7a79a2cf79fdb30b938c699f0384", + "windows-amd64": "091376523991093cb461e493dc179c1878def1cc0b91562fbd81de6988d03c6b" + } } }, "dogfood": { @@ -574,7 +630,14 @@ "releaseTag": "v1.0.1", "checksum": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498", "checksums": { - "sha256": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498" + "sha256": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498", + "platforms": { + "darwin-arm64": "af520c6bef1a3155d9e24eb60e9637145490479559932ecca8b160582aec4ba4", + "darwin-amd64": "2232275278bd76115590e69048f8ff32fec50c89667a40cb77a2f0eb921cf805", + "linux-amd64": "7a3b9b8cdc846655a9ec0799cb521aee5c280b168647ca4bfcab61dac88c5a70", + "linux-arm64": "20a86a538a2437c5dbb4b7b2d4fd51f6cb4ccaa6d1502f8725788ef58de423bd", + "windows-amd64": "fe903f7f017807dbbba8bcf64b1ef6f0b67825690b580d1fcc9150b611aa2c32" + } } }, "donorbox": { @@ -652,7 +715,14 @@ "releaseTag": "v1.0.1", "checksum": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3", "checksums": { - "sha256": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3" + "sha256": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3", + "platforms": { + "darwin-arm64": "3cbb0cf8c52ee159f35667e21c87284bd0a89e209322b6b697e972ab029efc2b", + "darwin-amd64": "1983e5022fcc66227d29dee16da007e9dc18b614f7e3efade9f7d75a5007d9f1", + "linux-amd64": "5d592b2e21285e726745a03c0ec0124f18876572a15b454b1b9197ba8a25b3a9", + "linux-arm64": "31f4a7d1164fef01c3d02b228431a2074838df5e61dc7876e0b358737f808f1c", + "windows-amd64": "4ea198d683dd8fd7a3e05a6694e0873cf663e32b692aa82b61eb69698dbb570b" + } } }, "e2ee": { @@ -811,7 +881,14 @@ "releaseTag": "v1.0.1", "checksum": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d", "checksums": { - "sha256": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d" + "sha256": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d", + "platforms": { + "darwin-arm64": "681b38261abf7e7b5a2cff2c45758b87d181777f142bf0090c2daf53cfeb5f22", + "darwin-amd64": "0a628a30d93a831cd5a874e6ffb9061b99d8ff78bb154bfab5b4817876f8e144", + "linux-amd64": "cb0fe237925c8e262f4ab4e24f327780f2076d839976bafc918f1df2b85f138e", + "linux-arm64": "c9c7c3b409873f7b73763be352c6c1d70f938abd34495aafb2ee57b23c9c132d", + "windows-amd64": "a82e0ab75e540be234a5036715248f66d09a9367a3b8b2908a2aec8ffbc21c9a" + } } }, "flags": { @@ -846,7 +923,14 @@ "releaseTag": "v1.0.1", "checksum": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b", "checksums": { - "sha256": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b" + "sha256": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b", + "platforms": { + "darwin-arm64": "0e9caa2b8aa53e8211481be1b40283d64adca120d66ceb7aa0236bd8a28893ce", + "darwin-amd64": "e2d9777318cbbf2fcb4e8819cbd15b0303549edb2a0963f4d79a90c3a1a27bb3", + "linux-amd64": "8b8cd713038044686af2f43644089e1d09b3c5650e715b5db4d15518b4328f77", + "linux-arm64": "dceae54c8cc57774b01921e0d98fc0957174cd686fec7f551b2391e319407f2f", + "windows-amd64": "e596b2a825f04194ade06f2efafaaaad9f87a79c027b3fbb10ef6e161336daa7" + } } }, "forgejo": { @@ -919,7 +1003,14 @@ "releaseTag": "v1.0.1", "checksum": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b", "checksums": { - "sha256": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b" + "sha256": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b", + "platforms": { + "darwin-arm64": "84fa603ca058d2f2e7e5c93c304dd1042d1124f7dc8d1c69321ec284bb87c93e", + "darwin-amd64": "6a873e9f30603ca13a295aed728434d454238fe055defc7bdd16644f34c1dcc0", + "linux-amd64": "f97dd7e15abc6e92138fe22d939746611202d98e3baa727c058d89e5bdaaf5b3", + "linux-arm64": "22a5c21ee20cda5e53e557840c9b2be8ac589ba7efc007b67a6c4899827e813a", + "windows-amd64": "96a1b84085f7b2d7555290ff32aa4475dd6be1e536cec420b20744e93d1f9519" + } } }, "gauth": { @@ -954,7 +1045,14 @@ "releaseTag": "v1.0.1", "checksum": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369", "checksums": { - "sha256": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369" + "sha256": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369", + "platforms": { + "darwin-arm64": "9a0d42af48c5fe66a1ba43ba923c9bc778e05989439e90ab398c15d7f34719f1", + "darwin-amd64": "c0e3466449685de83be121732bbb86a59226e3fb49c8a234ba0b49f0948995dc", + "linux-amd64": "329b8da1c53fec3a4f200b8823583f535361f943fe5682ad3932b0859ba701d1", + "linux-arm64": "29cb95ffabb36cb44f10b5b7b6f95c0b683ea26c1b61b81ac00caac9aa76a0a4", + "windows-amd64": "ea7bf96284020876b4877719f064901ac40cddb2e5e66e46ab7b95fd32698104" + } } }, "gdpr": { @@ -991,7 +1089,14 @@ "releaseTag": "v1.0.1", "checksum": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88", "checksums": { - "sha256": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88" + "sha256": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88", + "platforms": { + "darwin-arm64": "9a6d58d1f3cd4a9484ea7ad54710ec0242747f1cf88f18ace26811cce4c4c57b", + "darwin-amd64": "fdda06a3c20fb456f094e7b52cddaf5d8d6ea610203114d3c738ee79b7bfeb80", + "linux-amd64": "174999ec7419f5ba5823cf0f24fec77ce653864d16ecb3121848e8bdb7bc31ca", + "linux-arm64": "34b95e89f0e6857f9ee6843404e09d79062454cedbf1586d8321744577c1dd03", + "windows-amd64": "cf830252176244ffb248e5f0af2ded5269e5ccc5f658cd0b28e01bfd92e6f97a" + } } }, "github": { @@ -1125,7 +1230,14 @@ "releaseTag": "v1.0.1", "checksum": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20", "checksums": { - "sha256": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20" + "sha256": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20", + "platforms": { + "darwin-arm64": "b668494f59e8eff7201a5e3644039208a577613fd81703298abcb5f82931b737", + "darwin-amd64": "9a187941e9a45eb55920f8a6f31a221bb9323c10fdbf8d72f23d48f3ff71dbf8", + "linux-amd64": "7289f2bfcae4da763a48923164e1c72edaa51cdf8f676dafd622ee872e624bbf", + "linux-arm64": "469d9104e2261c06bed947f9d4e52eb19344a1bd8810baeaef3c78ee3b701ed3", + "windows-amd64": "3ab512917906f707334a4ae395d2b7fd223bc45a4cab0fb74c74476c8aaa9470" + } } }, "invitations": { @@ -1236,7 +1348,14 @@ "releaseTag": "v1.0.1", "checksum": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed", "checksums": { - "sha256": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed" + "sha256": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed", + "platforms": { + "darwin-arm64": "64585db0263234f49fa9dc63aa87f73f715c8301e716bfff7e71777ef88fb0aa", + "darwin-amd64": "cbbfc223ee715e2d90f81863fbbcf840139aacaac11b2b8ba62b0427fa6c89cc", + "linux-amd64": "a43d91bd63ab180b08e2db1ba33a34f50617a76985a51262260ca789a112c4e1", + "linux-arm64": "9a55b485d44d59edc4a5ea2e786e85b673e65bcfa768a004a6a4b76921379203", + "windows-amd64": "cde4f8ecff6f0a2785a59825304c5090612982b27608848eb31fe428ae3188d2" + } } }, "link-preview": { @@ -1307,7 +1426,14 @@ }, "checksum": "81eeefba47402707b2ed8c19c01195a2c2059303c0ca6030af8b8f88a73b8845", "checksums": { - "sha256": "81eeefba47402707b2ed8c19c01195a2c2059303c0ca6030af8b8f88a73b8845" + "sha256": "81eeefba47402707b2ed8c19c01195a2c2059303c0ca6030af8b8f88a73b8845", + "platforms": { + "darwin-arm64": "ef7eb2afc8348fee829ab91e8bdaaa697c08c9d379b0126c10927bd9070a57ea", + "darwin-amd64": "6b3b5403db6b02431829092efe32a8b6d8072af2198fe8dc1a502793ceb042a3", + "linux-amd64": "3ba05bc51297061fca1a62006871662974fe25c15018daac5a7114ded5ce57ce", + "linux-arm64": "681d10b3d996a69eebc26abdb327debbe689fe2d8002a72a1edbdf4f1a4ec22d", + "windows-amd64": "12982d3775323f4af2d8d10755f86d71d244cc8179eca6eec70196b2514fe5d0" + } }, "releaseTag": "v1.0.1" }, @@ -1415,7 +1541,14 @@ "releaseTag": "v1.0.1", "checksum": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794", "checksums": { - "sha256": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794" + "sha256": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794", + "platforms": { + "darwin-arm64": "1e0efe1f961a31ef7c30f6e29d990dd38ab177797c400cd65c6b3409f3dc2a2f", + "darwin-amd64": "a90c13a84dfe6ccd0d981c575ae827028d4118c2d26d377a2cf610963a86a1e9", + "linux-amd64": "e51e531ee6fb9c1a7742e95dce3bb43efa6b042bbe2b76f3d17ba5bbfd59ec0b", + "linux-arm64": "7bf83615ea5db70410ac97689a582d925847fe2e91af6536a2f8dfff24cf868a", + "windows-amd64": "e20a3b81ededebaa86e5eb8d75b9e0a58ce014f8494686fae4dcacaf54099dd5" + } } }, "monitor": { @@ -1451,7 +1584,14 @@ "releaseTag": "v1.0.1", "checksum": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a", "checksums": { - "sha256": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a" + "sha256": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a", + "platforms": { + "darwin-arm64": "f39462147e39c65868b6a7f15c2dce159d0ad031373b43fc660c4be0be6ed665", + "darwin-amd64": "9ee97e770018b2ec2afc370caac95ccc0546d5ddc86189db401ebb1d603eaccf", + "linux-amd64": "963e1208d53a4bcf21b041be44e8175bebd6362acc8d65aa2f289cc0e9f32966", + "linux-arm64": "52e2f3294ada39266b1d8640778867af694d8a1c4a1dfdcea2cfac7531bb321a", + "windows-amd64": "7fe8c3dd079ed208aa2042683c3e9628ce692d758fe296a39dc9b080b020861d" + } } }, "monitoring": { @@ -1720,7 +1860,14 @@ "releaseTag": "v1.0.1", "checksum": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626", "checksums": { - "sha256": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626" + "sha256": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626", + "platforms": { + "darwin-arm64": "7b6ed611ffc64c78aef4b79b9627da08434d40b4554498d5f4346d53a43bd1b4", + "darwin-amd64": "b18cf8b9548510905d9362fb1e78e546353389c0b19cf06125e5e31d275b0cf5", + "linux-amd64": "c939e68012ef4f07f5dd5c4b5ff6cf7b4ec78ee4195413429a946573455211ee", + "linux-arm64": "84208085a8c6e943f8621419c0f91d3a31347fd4a8dac485559a44598c9c46dd", + "windows-amd64": "8ccc15d1a9aa94ae27c94af6fe12a96bc76908f6206cd7f14c8cd3fa9eb83595" + } } }, "region": { @@ -1756,7 +1903,14 @@ "releaseTag": "v1.0.1", "checksum": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc", "checksums": { - "sha256": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc" + "sha256": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc", + "platforms": { + "darwin-arm64": "5cd31df61b3a22e130b3efed777ab812467a92d27486008d378ba9d5f24af8d8", + "darwin-amd64": "ec6c2426ae0ae9c243a72d148462e310a2be53560d9b53861f68db4d83f91e4d", + "linux-amd64": "2f34d3abb1122e91198a3c76a9e379638016ee2be70e92a46a57e848f25f1328", + "linux-arm64": "d0194abec4b33c07cd138a7ddf45f90eea80e946fe24690cc6f4c23a39149d6d", + "windows-amd64": "57f15cc1bf85f9e29cb5974532e574e13abde0db272c19960192a904faceeabb" + } } }, "release": { @@ -1792,7 +1946,14 @@ "releaseTag": "v1.0.1", "checksum": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8", "checksums": { - "sha256": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8" + "sha256": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8", + "platforms": { + "darwin-arm64": "824061303fa0922c4fd38d96ed8c2d1cf04ae38dd2753fb16a648b340b8cfe0e", + "darwin-amd64": "783cd3b7e724209ce7cbc6dd1b05560f8b66fa897c0baf076629947c1b56eb44", + "linux-amd64": "6fc5329a39f977dad3195174cf7bfb0bf66012730a9d8ef88c226b985a25eab8", + "linux-arm64": "e45f8e3824baff993adf8ec31fca337c73cc08db2fca812b7a2922b840ab912a", + "windows-amd64": "0b818576aa24bd89af364f099d3b4637eb28a1d0059c50fcee58d259b6637a08" + } } }, "search": { @@ -1883,7 +2044,14 @@ "releaseTag": "v1.0.1", "checksum": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f", "checksums": { - "sha256": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f" + "sha256": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f", + "platforms": { + "darwin-arm64": "36871d2c965e144cb112d76877dc4e144785f2939f5d40850de4343bab9fa577", + "darwin-amd64": "a136d357f3fd70103467528f3e30bfb8fbfceccfb41df18b16c5f936d16b78eb", + "linux-amd64": "159acbe36d8da4724329e5964d6bcb01de1011526d87ca1bc31c2f41dd73b94b", + "linux-arm64": "cf81ff1f89d426a8d74956fe90483b2304d8ef2e6282ea01cd10d62063772dd3", + "windows-amd64": "cacec8bca6140b6ce23afbe330a8914d57fb6b9cb549950fab99c016771b38e9" + } } }, "shopify": { @@ -1962,7 +2130,14 @@ "releaseTag": "v1.0.1", "checksum": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee", "checksums": { - "sha256": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee" + "sha256": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee", + "platforms": { + "darwin-arm64": "d3fc6b07c2d56a17a119b29c335a695bf83a0b284811c7bf2f51ece575b74b8a", + "darwin-amd64": "cd75d8c347702b13c15d99866ffb72a193c3112d21c1d7de56ebe3666ec1c08e", + "linux-amd64": "f593d00f397a2c94a5f0631cc9ee0402ee083939230f28ecb71b6ba669b733b1", + "linux-arm64": "121809645664ceeedae5fab3a0cd34ac5993cb0bf2bf39dbf9737247bf3ced1e", + "windows-amd64": "fb86d50ae269fd966e94560f293ee3e4fd4f746e5523dc1ff2dbabe0f83b9cee" + } } }, "stripe": { @@ -2118,7 +2293,14 @@ "releaseTag": "v1.0.1", "checksum": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae", "checksums": { - "sha256": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae" + "sha256": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae", + "platforms": { + "darwin-arm64": "d53369c3ca6155f606fa9daa1cdcf617afea35beebd76404f4c0f0c50f4d863a", + "darwin-amd64": "20a691916fc8bab09ac7fac86a7c0b65c7065845b9d3463317436e6cc7c40026", + "linux-amd64": "b17b17548d7da7084ad6eecb82b2086c9119fb7675f4a70c45a6667a6bbe5983", + "linux-arm64": "2c9080bf9427d20d03cc0bf7742b2ef2f3f4db9a4bcaf2cbf65c20f71dedc6a5", + "windows-amd64": "5699c34a1a40164ed3a6adcb3fb39a056b413efc9464923696a638e3c1fe8c07" + } } }, "tokens": { @@ -2302,7 +2484,14 @@ "releaseTag": "v1.0.1", "checksum": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542", "checksums": { - "sha256": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542" + "sha256": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542", + "platforms": { + "darwin-arm64": "8aa8d8c4c14a94a66421f3b497f7dfceb5fcf0f86f2d95514918f530216b6d11", + "darwin-amd64": "fb909c4fec21e18bfb8b7c14ab2ef4ae882cea669da07310f00cd78497146ee1", + "linux-amd64": "dc453d0f9b666997a7640e5a8467742f366447066258a842b258014a01d5f795", + "linux-arm64": "1860f6d0303ad5289b762c8fda44539c9200e7819413587c7540912c4b4d800e", + "windows-amd64": "c45da6e10a66874054135bb13447bd426b63872f07931761310200653f99106c" + } } }, "watchdog": { @@ -2338,7 +2527,14 @@ "releaseTag": "v1.0.1", "checksum": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f", "checksums": { - "sha256": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f" + "sha256": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f", + "platforms": { + "darwin-arm64": "65bf8e627eaef4ebde7eead0cc04d4d7dff9010b2040eeb2dbf680689f50c657", + "darwin-amd64": "b738d7cc9af170fb11c93cd6cfc70a7676bfe6c18f747c4349dc4c94bc41fab6", + "linux-amd64": "0d8070578bc571f0a23f5e4e358a6deab3d00ddb8bd9b382b2ca85dc91296163", + "linux-arm64": "6db2a6ff8e740dc327b18537ad46afbc828c078384cdaed22d4dc9d7f2326d38", + "windows-amd64": "89b253b21863cca09e224e5246eaaef2b9b439bc2973619b2f4c12e25eeaf786" + } } }, "webhooks": { From cc1a461b7122cab5cfa2c0c8f355d0cdf2239ec2 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 10:36:58 -0400 Subject: [PATCH 11/18] fix(registry): re-cut version to 1.2.1 for all 129 free plugins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #81 set every entry to 1.0.1, which downgrades 45 entries measured against main (41 at 1.1.2, 2 at 1.1.0, 1 at 1.2.0, 1 at 1.1.1 for ollama). A downgrade breaks inter-plugin requires semver ranges (internal/plugin/compat.go) and installed-version comparisons, and the release tag must equal the registry version since the Worker resolves releases/download/v/-.tar.gz directly from it. 1.2.1 is strictly greater than every version any entry held on main, so none of the 129 entries goes backward. ollama moves to 1.2.1 with everyone else (the earlier plan to leave it at 1.1.1 is void, per the builder brief); shared-utils gets only its version field bumped (installable:false, no tarball, no releaseTag, no checksum). Also refreshes the stale tarball URL field (baked-in old version/tag) for every entry that has one, and renames the release notes doc from RELEASE-v1.0.1.md to RELEASE-v1.2.1.md with the re-cut explained. Checksums are NOT recomputed here — this is a version-only re-cut. The checksum/checksums.sha256/checksums.platforms values already in registry.json are carried over unchanged and are provisional until scripts/verify-published-checksums.sh runs against the v1.2.1 draft release's published bytes. --- .github/RELEASE-v1.0.1.md | 152 ------ .github/RELEASE-v1.2.1.md | 172 ++++++ free/access-controls/plugin.json | 2 +- free/admin-api/plugin.json | 2 +- free/ai-cli/plugin.json | 2 +- free/ai-studio/plugin.json | 2 +- free/alerts/plugin.json | 2 +- free/analytics/plugin.json | 2 +- free/api/plugin.json | 2 +- free/audit-analytics/plugin.json | 2 +- free/audit-log/plugin.json | 2 +- free/audit/plugin.json | 2 +- free/auth-enterprise/plugin.json | 2 +- free/backup/plugin.json | 2 +- free/byok/plugin.json | 2 +- free/cdc/plugin.json | 2 +- free/cdn/plugin.json | 2 +- free/ci/plugin.json | 2 +- free/claw-cli/plugin.json | 2 +- free/cloudflare/plugin.json | 2 +- free/compliance/plugin.json | 2 +- free/content-acquisition/plugin.json | 2 +- free/content-progress/plugin.json | 2 +- free/content-safety/plugin.json | 2 +- free/costs/plugin.json | 2 +- free/crdt/plugin.json | 2 +- free/cron/plugin.json | 2 +- free/ddns/plugin.json | 2 +- free/devices/plugin.json | 2 +- free/dlq/plugin.json | 2 +- free/documents/plugin.json | 2 +- free/dogfood/plugin.json | 2 +- free/donorbox/plugin.json | 2 +- free/dr/plugin.json | 2 +- free/e2ee/plugin.json | 2 +- free/email/plugin.json | 2 +- free/encryption/plugin.json | 2 +- free/entitlements/plugin.json | 2 +- free/event-bus/plugin.json | 2 +- free/family-ancestry/plugin.json | 2 +- free/family-familysearch/plugin.json | 2 +- free/family-gedcom/plugin.json | 2 +- free/family-myheritage/plugin.json | 2 +- free/family-wikitree/plugin.json | 2 +- free/feature-flags/plugin.json | 2 +- free/federation/plugin.json | 2 +- free/file-processing/plugin.json | 2 +- free/flags/plugin.json | 2 +- free/forgejo/plugin.json | 2 +- free/functions-v8/plugin.json | 2 +- free/game-metadata/plugin.json | 2 +- free/gateway/plugin.json | 2 +- free/gauth/plugin.json | 2 +- free/gdpr/plugin.json | 2 +- free/geocoding/plugin.json | 2 +- free/github-runner/plugin.json | 2 +- free/github/plugin.json | 2 +- free/hipaa/plugin.json | 2 +- free/home/plugin.json | 2 +- free/idme/plugin.json | 2 +- free/infra/plugin.json | 2 +- free/invitations/plugin.json | 2 +- free/job-queue/plugin.json | 2 +- free/jobs/plugin.json | 2 +- free/k8s/plugin.json | 2 +- free/link-preview/plugin.json | 2 +- free/linkedin/plugin.json | 2 +- free/mail/plugin.json | 2 +- free/maintenance/plugin.json | 2 +- free/mdns/plugin.json | 2 +- free/media-processing/plugin.json | 2 +- free/meetings/plugin.json | 2 +- free/mlflow/plugin.json | 2 +- free/model/plugin.json | 2 +- free/monitor/plugin.json | 2 +- free/monitoring/plugin.json | 2 +- free/notifications/plugin.json | 2 +- free/notify/plugin.json | 2 +- free/nself-cloud/plugin.json | 2 +- free/nself-eval-gate/plugin.json | 2 +- free/nself-geo/plugin.json | 2 +- free/nself-image/plugin.json | 2 +- free/nself-pdf/plugin.json | 2 +- free/nself-scan/plugin.json | 2 +- free/nself-sync/plugin.json | 2 +- free/nself-vault/plugin.json | 2 +- free/object-storage/plugin.json | 2 +- free/observability/plugin.json | 2 +- free/ollama/plugin.json | 2 +- free/payments/plugin.json | 2 +- free/paypal/plugin.json | 2 +- free/pentest-kit/plugin.json | 2 +- free/pentest/plugin.json | 2 +- free/plugin-clawde/plugin.json | 2 +- free/plugin-gauth/plugin.json | 2 +- free/plugin-llm-gateway/plugin.json | 2 +- free/plugin-pty/plugin.json | 2 +- free/plugin-retrieval/plugin.json | 2 +- free/podcast/plugin.json | 2 +- free/post/plugin.json | 2 +- free/push/plugin.json | 2 +- free/queue/plugin.json | 2 +- free/region/plugin.json | 2 +- free/release/plugin.json | 2 +- free/retro-gaming/plugin.json | 2 +- free/rom-discovery/plugin.json | 2 +- free/search/plugin.json | 2 +- free/sentry-cli/plugin.json | 2 +- free/shared-utils/plugin.json | 2 +- free/shopify/plugin.json | 2 +- free/siem/plugin.json | 2 +- free/sms/plugin.json | 2 +- free/soak/plugin.json | 2 +- free/sports/plugin.json | 2 +- free/storage-transform/plugin.json | 2 +- free/storage/plugin.json | 2 +- free/stripe/plugin.json | 2 +- free/subtitle-manager/plugin.json | 2 +- free/tenant-controller/plugin.json | 2 +- free/tenant/plugin.json | 2 +- free/tmdb/plugin.json | 2 +- free/tokens/plugin.json | 2 +- free/torrent-manager/plugin.json | 2 +- free/transactional-email/plugin.json | 2 +- free/vpn/plugin.json | 2 +- free/waf/plugin.json | 2 +- free/warehouse/plugin.json | 2 +- free/watchdog/plugin.json | 2 +- free/web3/plugin.json | 2 +- free/webhooks/plugin.json | 2 +- free/workflows/plugin.json | 2 +- registry.json | 770 +++++++++++++-------------- 132 files changed, 686 insertions(+), 666 deletions(-) delete mode 100644 .github/RELEASE-v1.0.1.md create mode 100644 .github/RELEASE-v1.2.1.md diff --git a/.github/RELEASE-v1.0.1.md b/.github/RELEASE-v1.0.1.md deleted file mode 100644 index 1d71a6e6..00000000 --- a/.github/RELEASE-v1.0.1.md +++ /dev/null @@ -1,152 +0,0 @@ -# v1.0.1 — all 129 free plugins - -## Scope change from the original plan - -This PR originally bumped 8 repackaged plugins (content-progress, cron, -donorbox, maintenance, notifications, notify, search, storage — PRs -#78/#79/#80) to `1.0.1`. **It now covers all 129 free-registry entries.** - -The reason: plugins#84 (data audit, still open) found that **70 of the 129 -free plugins have no published tarball for the version `registry.json` -currently states** — 11 have no release tag at all for that version, and 59 -have the tag but no matching `-.tar.gz` asset in it (every -`*@1.1.2` entry in particular — that release is a partial re-release of a -different, mostly-1.0.0 plugin set, not a superset). `nself plugin install` -404s for all 70 of these today, independent of anything this PR changes. -Bumping only the 8 already-repackaged plugins would have shipped a v1.0.1 -release that still left the other 121 registry entries pointing at broken -or unverified download links. Full defect list: plugins#84. - -**v1.0.1 fixes this by aligning every registry entry's version to `1.0.1` -and having the build pipeline produce a real, matching tarball for all of -them**, so `download_url` → `tarball` → the release asset is a working -chain for the whole free catalog, not just 8 plugins. - -## What changed - -- `registry.json` — `version` set to `1.0.1` for 128 of 129 entries (see - exceptions below), `tarball` URL rewritten to - `.../releases/download/v1.0.1/-1.0.1.tar.gz`, `releaseTag` set to - `v1.0.1`. -- Each plugin's own `free//plugin.json` — `version` bumped to `1.0.1` - to match (CI's version-consistency gate requires the two to agree; see - `.github/workflows/registry-check.yml` "Registry version consistency - check"). -- `scripts/build-tarballs.sh 1.0.1` built a tarball for all 129 plugins - under `free/`. All 129 tarballs + `.sha256` files are kept for the - release upload (`dist/` stays gitignored — not committed to git). -- `checksum` (flat field — what `internal/plugin/registry_parse.go` - actually deserializes and `installer_locked.go`'s `verifyChecksum` - checks) and `checksums.sha256` (nested — what `registry-schema.json` - documents and `build-and-upload-tarballs.sh` writes) written for every - entry from the tarball this pipeline actually built this session — not - trust-on-first-use against an already-published asset. **Checksum - coverage: 128/129**, up from 1/129 before this PR. - -## Two exceptions (not bumped to 1.0.1) — and why - -- **`ollama`** stays at `1.1.1`. It already has a real, working, - currently-served release (`v1.1.1`, verified: `ollama-1.1.1.tar.gz` is a - genuine asset on that tag) — forcing it back to `1.0.1` would have been a - regression, shipping older code under a newer-looking version number. - Its `checksum`/`checksums.sha256`/`releaseTag` were still written this - session: the real `v1.1.1` asset was downloaded from the GitHub release - and hashed (`affe917f...9d52f`), matching the already-published - `.sha256` sidecar file byte-for-byte. This replaces the previous empty - `""` placeholder with a verified value, without touching its version. -- **`shared-utils`** has no `checksum` (129th entry, the only one without - one). It's `installable: false` in its own `plugin.json` — an internal Go - library (request-ID tracing middleware, HTTP client propagation) other - free plugins import at build time, not something a user ever - `nself plugin install`s directly. It has no `tarball`/`download_url` - field in `registry.json` at all (not added here, to avoid implying it's - independently distributable) — there is nothing for a checksum to - attest to. Its `version` was still bumped to `1.0.1` for consistency - with its own `plugin.json`, and `scripts/build-tarballs.sh` (which walks - every `free/*/plugin.json` unconditionally) still built a - `shared-utils-1.0.1.tar.gz` — kept in the upload set for completeness, - simply not referenced by any registry field. - -## plugins#84 TOFU baselines — superseded - -plugins#84 populated the flat `checksum` field for 51 previously-empty -entries (plus fixing the pre-existing `ollama` `""` placeholder) as -trust-on-first-use baselines against each entry's **then-current** -published version. Every one of those 51 entries' `version` has now moved -to `1.0.1` in this PR, so plugins#84's baseline checksums — computed -against the old version's asset — no longer match the `version` field they -would be checked against and are superseded by the pipeline-generated -values here. plugins#84 itself is unaffected/still valid as a historical -record of the TOFU methodology; its checksums for the moved entries should -not be merged over this PR's. - -## Known gap (pre-existing, not introduced by this PR) - -`registry-schema.json` and `build-and-upload-tarballs.sh` write checksums -to the nested `checksums.sha256` field. The CLI's registry parser -(`internal/plugin/registry_parse.go`) only ever reads the flat `checksum` -field — `checksums.sha256` is never consulted. Both are populated here for -schema/tooling parity, but only the flat field is load-bearing for install -verification today. - -## `maintenance` has no `/health` route - -`maintenance` is a Cobra CLI tool (`cmd/main.go`, disk-cleanup/scheduler -subcommands) with no HTTP server anywhere in its source — it never had a -`/health` route and #78/#79 didn't add one, correctly, since there is no -HTTP surface to health-check. Not a gap in this release. - -## Local gate (self-hosted CI backlog — per P6 crunch brief §8, not watched) - -- `python3 -c "import json; json.load(open('registry.json'))"` — valid. -- Version-consistency check (mirrors `.github/workflows/registry-check.yml` - "Registry version consistency check", reproduced by hand across all 129 - `free/*/plugin.json` files): 0 mismatches. -- `bash shared/validate-registry.sh` — 0 errors, 1 pre-existing unrelated - warning (alphabetical sort order — same before and after this change). -- `bash shared/validate-registry.sh --strict` — 0 errors, 1 additional - informational warning (strict legacy schema mode not re-enabled in v2 — - script-level notice, not a registry defect). -- 5 randomly sampled built tarballs (`job-queue`, `nself-eval-gate`, - `devices`, `release`, `vpn`) extracted cleanly to `free//` with a - `plugin.json` at `version: 1.0.1` inside. -- `pnpm run ci:local` — passes (no tsconfig in this repo, gate no-ops by - design, same as before). - -This is a PUBLIC repo (`nself-org/plugins`) — this account cannot -self-approve, so this PR stays open per the P6 crunch brief. GitHub-hosted -Actions will run automatically; not watched here per brief §8. - -## This PR does NOT merge, tag, or release anything - -Per the P6 crunch brief this session may not create tags, run -`gh release create`, or merge. The owner's remaining action, once this PR -is approved, is exactly these three commands: - -```bash -# 1. Merge this PR (owner reviews + merges), then tag the merge commit: -git -C fetch origin main -git -C tag v1.0.1 -git -C push origin v1.0.1 - -# 2. Create the release and attach all 129 tarballs + their .sha256 files -# (built locally in this session, NOT committed to git — dist/ stays -# gitignored). ollama is intentionally NOT among these 129 — it ships -# under its own existing v1.1.1 release, untouched by this PR: -gh release create v1.0.1 -R nself-org/plugins \ - /private/tmp/claude-501/-Volumes-UG-Sites-nself/fc66fc90-9fbd-441a-8372-5626c5d07a60/scratchpad/plugins-v1.0.1-dist/upload-all/*.tar.gz \ - /private/tmp/claude-501/-Volumes-UG-Sites-nself/fc66fc90-9fbd-441a-8372-5626c5d07a60/scratchpad/plugins-v1.0.1-dist/upload-all/*.tar.gz.sha256 \ - -F .github/RELEASE-v1.0.1.md - -# 3. Verify (tarball redirect + a previously-404ing plugin + a fresh install): -curl -sI https://plugins.nself.org/plugins/storage/tarball -# expect: HTTP/2 302, location: .../releases/download/v1.0.1/storage-1.0.1.tar.gz - -curl -sI https://plugins.nself.org/plugins/access-controls/tarball -# expect: HTTP/2 302 (was 404 before this release — one of plugins#84's 70) - -nself plugin install notifications -curl -sf http://localhost:/health -``` - -**Do not merge until the owner has reviewed this PR and given the go-ahead.** diff --git a/.github/RELEASE-v1.2.1.md b/.github/RELEASE-v1.2.1.md new file mode 100644 index 00000000..d1bc9fe5 --- /dev/null +++ b/.github/RELEASE-v1.2.1.md @@ -0,0 +1,172 @@ +# v1.2.1 — all 129 free plugins + +## Re-cut — why the version changed again + +This PR originally targeted the next patch above `main`'s pre-PR baseline +(one patch past `1.0.0`) for all 129 free-registry entries (see history +below). That target was wrong: measured against `main`, `registry.json` had +41 entries at `1.1.2`, 2 at `1.1.0`, 1 at `1.2.0`, and 1 at `1.1.1` +(`ollama`) — the originally-targeted version would have **downgraded** all +45 of them. A +downgrade breaks inter-plugin `requires` semver ranges +(`internal/plugin/compat.go`) and any installed-version comparison, and the +release tag must equal the registry version because the Cloudflare Worker +resolves `releases/download/v/-.tar.gz` directly +from the `version` field — there is no separate "real" version underneath. + +**Every one of the 129 entries now moves to `1.2.1` instead, so no entry +goes backward: `1.2.1` is strictly greater than the highest version anyone +held on `main`** (41 were at `1.1.2`, one — `entitlements` — was at `1.2.0`, +the highest of the lot). `ollama` moves to `1.2.1` with everyone else; the +earlier plan to leave it at `1.1.1` is void — there must be no unreferenced +tarball left dangling on the release. + +## Scope change from the original plan (still applies) + +This PR originally bumped 8 repackaged plugins (content-progress, cron, +donorbox, maintenance, notifications, notify, search, storage — PRs +#78/#79/#80). **It now covers all 129 free-registry entries.** + +The reason: plugins#84 (data audit) found that **70 of the 129 free plugins +had no published tarball for the version `registry.json` stated on `main`** +— 11 had no release tag at all for that version, and 59 had the tag but no +matching `-.tar.gz` asset in it (every `*@1.1.2` entry in +particular — that release is a partial re-release of a different, mostly +`1.0.0`, plugin set, not a superset). `nself plugin install` 404s for all 70 +of these today, independent of anything in this PR. Full defect list: +plugins#84. + +## What changed in this re-cut + +- `registry.json` — `version` set to `1.2.1` for all 129 entries, including + `ollama`. `releaseTag` set to `v1.2.1` for every entry that carries a + `releaseTag` field (`shared-utils` does not, and does not gain one — + `installable:false`, no tarball, no checksum, per below). +- Each plugin's own `free//plugin.json` — `version` bumped to `1.2.1` + to match (CI's version-consistency gate requires the two to agree; see + `.github/workflows/registry-check.yml` "Registry version consistency + check"). +- `scripts/deterministic-tar.sh` now also pins file **modes** + (`--mode='go-w,a+rX'`), not just mtime/uid/gid/member-order. Measured + today: identical git content on two machines produced tar streams that + hashed differently by mode bits alone (`644` on one, `664` on the other — + the checkout environment's umask was leaking into the artifact). With the + mode flag added, both machines now produce the identical tar stream. +- `.github/workflows/tarball-checksum-gate.yml` (both the source-tarball + job and the `checksums.platforms` job added in `0eae661`) no longer + rebuilds tarballs in CI and diffs them against `registry.json`. That + comparison can never hold: with byte-identical tar streams as input, + `gzip -n -9` produces **different output** depending on the gzip/zlib + build doing the compressing (measured today: Apple gzip 479 vs GNU gzip + 1.12 diverged on real plugin data, 6e9d3966 vs 0283c3b3, for the same + tar bytes). DEFLATE output is implementation- and version-dependent by + design — this isn't a bug in the tar recipe, no tar flag fixes it. The + gate now verifies `registry.json`'s checksums against the **published + release assets** for the registry's version instead (`gh release + download`). With no release for that version yet — the normal state of + this PR right now — it skips with a `::notice::` explaining why and + passes; once a release exists, a mismatch fails it. The deterministic-tar + recipe and the mode fix above are unaffected and still required — they + make a *local* rebuild reproducible across machines, which is what lets a + contributor sanity-check a tarball before it's uploaded; they were never + going to make two different gzip implementations agree byte-for-byte. +- `scripts/verify-published-checksums.sh` — rewritten to match the release + flow this PR depends on: given a tag, it downloads every plugin's + published release asset (source tarball + any per-platform binaries), + computes sha256, and either reports mismatches against `registry.json` + (default) or, with `--write`, writes the published hashes into + `registry.json`'s flat `checksum`, nested `checksums.sha256`, and + `checksums.platforms.` fields. **Not run against a real + release in this PR** — no `v1.2.1` release exists yet. + +## Checksums in this PR are provisional — not rebuilt, not final + +**This re-cut did not rebuild any tarball or recompute any checksum.** The +`checksum` / `checksums.sha256` / `checksums.platforms` values currently in +`registry.json` are carried over unchanged from the previous version's +content — they are stale by definition the moment the `version` field next +to them changes, and they must not be read as validated for `1.2.1`. Per +the release flow above, the correct order is: the owner creates a **draft** +`v1.2.1` release with the built tarballs attached, `verify-published- +checksums.sh v1.2.1 --write` then reads the checksums from those published +bytes and writes them into `registry.json`, and only that state gets +merged. Do not treat this PR's current checksum fields as ground truth for +`1.2.1` assets. + +## One exception (not touched beyond its version) — `shared-utils` + +`shared-utils` has no `checksum` and gains none here. It's +`installable: false` in its own `plugin.json` — an internal Go library +(request-ID tracing middleware, HTTP client propagation) other free +plugins import at build time, not something a user ever +`nself plugin install`s directly. It has no `tarball`/`download_url`/ +`releaseTag` field in `registry.json` (not added here, to avoid implying +it's independently distributable) — there is nothing for a checksum to +attest to. Its `version` field is bumped to `1.2.1` for consistency with +its own `plugin.json`, and nothing else. + +`ollama` is **no longer** an exception (see re-cut rationale above) — it +takes `1.2.1` and a `releaseTag` of `v1.2.1` like every other entry. + +## event-bus asset naming + +A previous release misnamed the `event-bus` asset `event-bus-v1.0.0.tar.gz` +(stray `v` inside the filename). Confirmed today: `scripts/build-and- +upload-tarballs.sh` names tarballs `"${plugin_name}-${TAG#v}.tar.gz"` +(strips the `v` from the tag before building the filename), and +`scripts/build-tarballs.sh` uses the same `${version}` (already +`v`-stripped) convention — so a `1.2.1` build of `event-bus` names its +asset `event-bus-1.2.1.tar.gz`, no stray `v`. No occurrence of the slip +remains in either script. + +## Local gate + +- `git grep -n "1\.0\.1" -- registry.json .github/RELEASE-v1.2.1.md` — empty. +- `jq -r '.plugins[].version' registry.json | sort -u` — exactly `1.2.1`. +- Version-vs-`main` downgrade check across all 129 entries — zero entries + where the `main` version is greater than `1.2.1`. +- `bash shared/validate-registry.sh` — see PR body for the current error + count. +- No tarballs were built and no checksums were recomputed this session (see + "Checksums in this PR are provisional" above) — this is a version-only + re-cut, not a rebuild. + +This is a PUBLIC repo (`nself-org/plugins`) — this account cannot +self-approve, so this PR stays open pending owner review. + +## This PR does NOT merge, tag, or release anything + +The owner's sequence, once this PR is approved (unchanged in substance from +the release-mechanics note in the builder brief, only the version changes): + +```bash +# (a) Owner creates a DRAFT release with the built 1.2.1 tarballs attached, +# targeting this PR's head commit: +gh release create v1.2.1 -R nself-org/plugins --draft \ + --target <#81-head-sha> \ + -F .github/RELEASE-v1.2.1.md \ + upload-all/*.tar.gz upload-all/*.sha256 + +# (b) Run verify-published-checksums.sh against the draft's published +# bytes and push the resulting registry.json to this PR branch: +./scripts/verify-published-checksums.sh v1.2.1 --write +git add registry.json && git commit -m "chore(registry): checksums from published v1.2.1 draft assets" +git push + +# (c) Owner merges this PR (this is the version bump landing on main). + +# (d) Publish the draft (tag is created on publish, pointing at the merge +# commit — re-target with --target if the merge produced a different +# commit than the draft was built against): +gh release edit v1.2.1 -R nself-org/plugins --draft=false + +# (e) Purge the Worker's KV cache and spot-verify: +curl -X POST https://plugins.nself.org/api/sync +curl -sI https://plugins.nself.org/plugins/storage/tarball +# expect: HTTP/2 302, location: .../releases/download/v1.2.1/storage-1.2.1.tar.gz +curl -sI https://plugins.nself.org/plugins/access-controls/tarball +# expect: HTTP/2 302 +nself plugin install notifications +``` + +**Do not merge until the owner has reviewed this PR and given the go-ahead.** diff --git a/free/access-controls/plugin.json b/free/access-controls/plugin.json index 0c94c10d..8387cccc 100644 --- a/free/access-controls/plugin.json +++ b/free/access-controls/plugin.json @@ -1,6 +1,6 @@ { "name": "access-controls", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Role-based and attribute-based access control (RBAC + ABAC) with policy engine", "author": "nself", diff --git a/free/admin-api/plugin.json b/free/admin-api/plugin.json index 400fac3d..6f19385c 100644 --- a/free/admin-api/plugin.json +++ b/free/admin-api/plugin.json @@ -1,6 +1,6 @@ { "name": "admin-api", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Admin API service providing aggregated metrics, system health, session counts, storage breakdown, and real-time dashboard endpoints", "author": "nself", diff --git a/free/ai-cli/plugin.json b/free/ai-cli/plugin.json index 9dd816d5..d9df3855 100644 --- a/free/ai-cli/plugin.json +++ b/free/ai-cli/plugin.json @@ -1,6 +1,6 @@ { "name": "ai-cli", - "version": "1.0.1", + "version": "1.2.1", "description": "AI operations for nSelf: chat, local Ollama model management, and Gemini API key pool provisioning and rotation.", "author": "nself", "license": "MIT", diff --git a/free/ai-studio/plugin.json b/free/ai-studio/plugin.json index d06b5580..f3cec435 100644 --- a/free/ai-studio/plugin.json +++ b/free/ai-studio/plugin.json @@ -1,6 +1,6 @@ { "name": "ai-studio", - "version": "1.0.1", + "version": "1.2.1", "description": "Google AI Studio integration for local nSelf instances: secure Cloudflare Tunnel bridge with schema-context injection and read-only enforcement.", "author": "nself", "license": "MIT", diff --git a/free/alerts/plugin.json b/free/alerts/plugin.json index 20f870af..d86ce0ad 100644 --- a/free/alerts/plugin.json +++ b/free/alerts/plugin.json @@ -1,6 +1,6 @@ { "name": "alerts", - "version": "1.0.1", + "version": "1.2.1", "description": "Manage Prometheus alert rules and Alertmanager silences: list, silence, and send synthetic test alerts.", "author": "nself", "license": "MIT", diff --git a/free/analytics/plugin.json b/free/analytics/plugin.json index b622e3f0..2969713f 100644 --- a/free/analytics/plugin.json +++ b/free/analytics/plugin.json @@ -1,6 +1,6 @@ { "name": "analytics", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Event tracking, counters, funnels, and quota management analytics engine", "author": "nself", diff --git a/free/api/plugin.json b/free/api/plugin.json index 66426208..2f7bab73 100644 --- a/free/api/plugin.json +++ b/free/api/plugin.json @@ -1,6 +1,6 @@ { "name": "api", - "version": "1.0.1", + "version": "1.2.1", "description": "Inspect the nSelf plugin API surface: endpoint probes, deprecation calendar, and the API changelog.", "author": "nself", "license": "MIT", diff --git a/free/audit-analytics/plugin.json b/free/audit-analytics/plugin.json index c9534f4c..cd4470e6 100644 --- a/free/audit-analytics/plugin.json +++ b/free/audit-analytics/plugin.json @@ -1,6 +1,6 @@ { "name": "audit-analytics", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Advanced audit analytics over np_audit_log: anomaly detection (z-score baseline), user behaviour heatmaps, privileged-action review queue, and webhook/email alerts.", "author": "nself", diff --git a/free/audit-log/plugin.json b/free/audit-log/plugin.json index a4fc8f32..eee87088 100644 --- a/free/audit-log/plugin.json +++ b/free/audit-log/plugin.json @@ -1,6 +1,6 @@ { "name": "audit-log", - "version": "1.0.1", + "version": "1.2.1", "description": "Append-only audit log for security-relevant events: auth, privilege change, secret access, plugin install/uninstall. Queryable from Admin with filters by event type, actor, severity, and time range.", "author": "nself", "license": "MIT", diff --git a/free/audit/plugin.json b/free/audit/plugin.json index 987635d1..9df36590 100644 --- a/free/audit/plugin.json +++ b/free/audit/plugin.json @@ -1,6 +1,6 @@ { "name": "audit", - "version": "1.0.1", + "version": "1.2.1", "description": "Ecosystem documentation audit: banned words, dead links, and missing anchors across READMEs, wiki, docs, SPORT, PPI, and PRI.", "author": "nself", "license": "MIT", diff --git a/free/auth-enterprise/plugin.json b/free/auth-enterprise/plugin.json index 08b7f3c3..84e8415c 100644 --- a/free/auth-enterprise/plugin.json +++ b/free/auth-enterprise/plugin.json @@ -1,6 +1,6 @@ { "name": "auth-enterprise", - "version": "1.0.1", + "version": "1.2.1", "description": "MFA enforcement (TOTP + WebAuthn policy) and SSO via SAML 2.0 and OIDC for Google Workspace, Okta, and Microsoft Entra ID.", "category": "authentication", "isCommercial": false, diff --git a/free/backup/plugin.json b/free/backup/plugin.json index 56a5d51f..b4e612f2 100644 --- a/free/backup/plugin.json +++ b/free/backup/plugin.json @@ -1,6 +1,6 @@ { "name": "backup", - "version": "1.0.1", + "version": "1.2.1", "description": "PostgreSQL backup and restore automation with scheduling", "author": "nself", "license": "MIT", diff --git a/free/byok/plugin.json b/free/byok/plugin.json index 2904f979..82a33646 100644 --- a/free/byok/plugin.json +++ b/free/byok/plugin.json @@ -1,6 +1,6 @@ { "name": "byok", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Bring Your Own Key (BYOK) per-tenant encryption. Envelope encryption with customer-managed keys (CMK) via AWS KMS, GCP Cloud KMS, or HashiCorp Vault Transit. DEK wrapped by CMK. Satisfies HIPAA, FedRAMP High, FFIEC, and DORA key-control requirements. Enterprise-only.", "author": "nself", diff --git a/free/cdc/plugin.json b/free/cdc/plugin.json index 0097356f..6c4ac855 100644 --- a/free/cdc/plugin.json +++ b/free/cdc/plugin.json @@ -1,6 +1,6 @@ { "name": "cdc", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Change Data Capture — streams Postgres WAL events to downstream consumers via webhooks or message queues.", "author": "nself", diff --git a/free/cdn/plugin.json b/free/cdn/plugin.json index dce48ac3..5bcdcc6c 100644 --- a/free/cdn/plugin.json +++ b/free/cdn/plugin.json @@ -1,6 +1,6 @@ { "name": "cdn", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "CDN management and integration plugin - cache purging, signed URLs. Planned: analytics sync from Cloudflare/BunnyCDN", "author": "nself", diff --git a/free/ci/plugin.json b/free/ci/plugin.json index 9bd4a113..8004a672 100644 --- a/free/ci/plugin.json +++ b/free/ci/plugin.json @@ -1,6 +1,6 @@ { "name": "ci", - "version": "1.0.1", + "version": "1.2.1", "description": "Local CI gate runner: detects repo stack (Go/Node/Flutter/Dart), runs lint+test+build, scans secrets with gitleaks, then posts a GitHub commit status (nself-ci) via gh OAuth. Replaces billing-blocked GitHub Actions as the merge gate.", "author": "nself", "license": "MIT", diff --git a/free/claw-cli/plugin.json b/free/claw-cli/plugin.json index 6835d168..12fe5d16 100644 --- a/free/claw-cli/plugin.json +++ b/free/claw-cli/plugin.json @@ -1,6 +1,6 @@ { "name": "claw-cli", - "version": "1.0.1", + "version": "1.2.1", "description": "CLI client for the nClaw AI assistant: prompt, chat, pairing, keys, memories, topics, sessions, MCP server, OpenAI-compatible proxy, and schema migrations.", "author": "nself", "license": "MIT", diff --git a/free/cloudflare/plugin.json b/free/cloudflare/plugin.json index 8354ec40..5d6ce58e 100644 --- a/free/cloudflare/plugin.json +++ b/free/cloudflare/plugin.json @@ -1,6 +1,6 @@ { "name": "cloudflare", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Cloudflare zone, DNS, R2, cache, and analytics management", "author": "nself", diff --git a/free/compliance/plugin.json b/free/compliance/plugin.json index 79ed7bcf..38c8b663 100644 --- a/free/compliance/plugin.json +++ b/free/compliance/plugin.json @@ -1,6 +1,6 @@ { "name": "compliance", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Comprehensive compliance and audit platform with GDPR/CCPA/HIPAA/SOC2/PCI management, DSARs, consent tracking, data retention, breach notification, immutable audit logging, SIEM integration, and compliance reporting", "author": "nself", diff --git a/free/content-acquisition/plugin.json b/free/content-acquisition/plugin.json index db3fe76b..c74e4de4 100644 --- a/free/content-acquisition/plugin.json +++ b/free/content-acquisition/plugin.json @@ -1,6 +1,6 @@ { "name": "content-acquisition", - "version": "1.0.1", + "version": "1.2.1", "description": "Content acquisition with download rules engine. Planned: RSS feed monitoring, release calendar integration, automated download orchestration", "author": "nself", "license": "MIT", diff --git a/free/content-progress/plugin.json b/free/content-progress/plugin.json index 4eeb3dd2..49119959 100644 --- a/free/content-progress/plugin.json +++ b/free/content-progress/plugin.json @@ -1,6 +1,6 @@ { "name": "content-progress", - "version": "1.0.1", + "version": "1.2.1", "description": "Track video, audio, and content playback progress with continue watching, watchlists, and favorites", "author": "nself", "license": "MIT", diff --git a/free/content-safety/plugin.json b/free/content-safety/plugin.json index f96d6979..7d89a3f9 100644 --- a/free/content-safety/plugin.json +++ b/free/content-safety/plugin.json @@ -1,7 +1,7 @@ { "name": "content-safety", "displayName": "ɳSelf Content Safety", - "version": "1.0.1", + "version": "1.2.1", "description": "Trust-safety evidence, legal holds, spam detection, raid protection, and abuse scoring", "author": "nSelf", "license": "MIT", diff --git a/free/costs/plugin.json b/free/costs/plugin.json index 604edf10..dc395c42 100644 --- a/free/costs/plugin.json +++ b/free/costs/plugin.json @@ -1,6 +1,6 @@ { "name": "costs", - "version": "1.0.1", + "version": "1.2.1", "description": "Show estimated per-install operational costs: Hetzner VPS, Cloudflare, Vercel, Stripe fees, and installed paid plugin licenses.", "author": "nself", "license": "MIT", diff --git a/free/crdt/plugin.json b/free/crdt/plugin.json index 626ea5fd..1a9d86c6 100644 --- a/free/crdt/plugin.json +++ b/free/crdt/plugin.json @@ -1,6 +1,6 @@ { "name": "crdt", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.3.0", "description": "CRDT offline-first primitives. Self-hosted Yjs (y-websocket protocol) and automerge sync server with Postgres persistence. Drop-in replacement for Liveblocks/PartyKit with zero extra infra.", "author": "nself", diff --git a/free/cron/plugin.json b/free/cron/plugin.json index 4c6c9436..8bc6ac5f 100644 --- a/free/cron/plugin.json +++ b/free/cron/plugin.json @@ -1,6 +1,6 @@ { "name": "cron", - "version": "1.0.1", + "version": "1.2.1", "description": "Cron job scheduler. Register jobs with standard cron syntax, execute via HTTP callbacks, track run history.", "author": "nself", "license": "MIT", diff --git a/free/ddns/plugin.json b/free/ddns/plugin.json index 640c5da2..4fc48e7f 100644 --- a/free/ddns/plugin.json +++ b/free/ddns/plugin.json @@ -1,6 +1,6 @@ { "name": "ddns", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Dynamic DNS plugin with external IP monitoring. Planned: DNS provider API integration (Cloudflare, Route53) for automated record updates", "author": "nself", diff --git a/free/devices/plugin.json b/free/devices/plugin.json index ca36f932..a6d8492f 100644 --- a/free/devices/plugin.json +++ b/free/devices/plugin.json @@ -1,6 +1,6 @@ { "name": "devices", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "IoT device enrollment, trust management, and command dispatch service.", "author": "nself", diff --git a/free/dlq/plugin.json b/free/dlq/plugin.json index c8fc5a4e..086a9b5f 100644 --- a/free/dlq/plugin.json +++ b/free/dlq/plugin.json @@ -1,6 +1,6 @@ { "name": "dlq", - "version": "1.0.1", + "version": "1.2.1", "description": "Manage dead-letter queues for nSelf plugins: re-enqueue rows that failed processing back to the work queue, with safe row limits and dry-run preview.", "author": "nself", "license": "MIT", diff --git a/free/documents/plugin.json b/free/documents/plugin.json index b7800956..c143763d 100644 --- a/free/documents/plugin.json +++ b/free/documents/plugin.json @@ -1,6 +1,6 @@ { "name": "documents", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Document management and generation service with templates, versioning, and sharing", "author": "nself", diff --git a/free/dogfood/plugin.json b/free/dogfood/plugin.json index cdd32823..4463d58e 100644 --- a/free/dogfood/plugin.json +++ b/free/dogfood/plugin.json @@ -1,6 +1,6 @@ { "name": "dogfood", - "version": "1.0.1", + "version": "1.2.1", "description": "Production dogfood audit and reporting: 21 read-only checks covering backups, DR, tenancy, licensing, secrets, migrations, monitoring, security, watchdog, and queue health.", "author": "nself", "license": "MIT", diff --git a/free/donorbox/plugin.json b/free/donorbox/plugin.json index 88787eab..935e11e2 100644 --- a/free/donorbox/plugin.json +++ b/free/donorbox/plugin.json @@ -1,6 +1,6 @@ { "name": "donorbox", - "version": "1.0.1", + "version": "1.2.1", "description": "Donorbox donation data sync with webhook handling", "author": "nself", "license": "MIT", diff --git a/free/dr/plugin.json b/free/dr/plugin.json index 4d2c0798..189ac13e 100644 --- a/free/dr/plugin.json +++ b/free/dr/plugin.json @@ -1,6 +1,6 @@ { "name": "dr", - "version": "1.0.1", + "version": "1.2.1", "description": "Disaster recovery: promote a standby, fence the old primary, run drills, and install the systemd units DR needs.", "author": "nself", "license": "MIT", diff --git a/free/e2ee/plugin.json b/free/e2ee/plugin.json index 9b302085..8ecc7ae0 100644 --- a/free/e2ee/plugin.json +++ b/free/e2ee/plugin.json @@ -1,6 +1,6 @@ { "name": "e2ee", - "version": "1.0.1", + "version": "1.2.1", "description": "End-to-end encryption key directory: X3DH prekey distribution + Kyber-1024 (ML-KEM-1024) post-quantum prekeys for nchat. Server stores PUBLIC keys only; private keys never leave the client.", "author": "nself", "license": "MIT", diff --git a/free/email/plugin.json b/free/email/plugin.json index 7ebce9d7..a80efce1 100644 --- a/free/email/plugin.json +++ b/free/email/plugin.json @@ -1,6 +1,6 @@ { "name": "email", - "version": "1.0.1", + "version": "1.2.1", "displayName": "plugin-email", "description": "Transactional email via Elastic Email. Send, template, and track emails.", "port": 9008, diff --git a/free/encryption/plugin.json b/free/encryption/plugin.json index 2f337083..eb16383c 100644 --- a/free/encryption/plugin.json +++ b/free/encryption/plugin.json @@ -1,6 +1,6 @@ { "name": "encryption", - "version": "1.0.1", + "version": "1.2.1", "description": "Bring Your Own Key (BYOK) per-tenant envelope encryption for nSelf Cloud: AWS KMS, GCP Cloud KMS, and HashiCorp Vault Transit, with key rotation and an audit trail.", "author": "nself", "license": "MIT", diff --git a/free/entitlements/plugin.json b/free/entitlements/plugin.json index 16e4cd89..bb0e141c 100644 --- a/free/entitlements/plugin.json +++ b/free/entitlements/plugin.json @@ -1,6 +1,6 @@ { "name": "entitlements", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Feature gating, subscription plan management, usage quota tracking, and metered billing", "author": "nself", diff --git a/free/event-bus/plugin.json b/free/event-bus/plugin.json index db08b921..bedfa0ae 100644 --- a/free/event-bus/plugin.json +++ b/free/event-bus/plugin.json @@ -1,6 +1,6 @@ { "name": "event-bus", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Internal event bus with pub/sub, fan-out delivery, dead-letter queue, and replay for inter-plugin messaging.", "author": "nself", diff --git a/free/family-ancestry/plugin.json b/free/family-ancestry/plugin.json index c22702c5..0b79b672 100644 --- a/free/family-ancestry/plugin.json +++ b/free/family-ancestry/plugin.json @@ -1,6 +1,6 @@ { "name": "family-ancestry", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Ancestry.com → nFamily migration helper (PLANNED). Imports profiles, photos, documents, sources into the family plugin. Pattern mirrors family-geni.", "author": "nself", diff --git a/free/family-familysearch/plugin.json b/free/family-familysearch/plugin.json index 91f5e629..e3b29c22 100644 --- a/free/family-familysearch/plugin.json +++ b/free/family-familysearch/plugin.json @@ -1,6 +1,6 @@ { "name": "family-familysearch", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "FamilySearch → nFamily migration helper (PLANNED). Free public API from FamilySearch (LDS). Lowest-friction next-step importer after family-geni.", "author": "nself", diff --git a/free/family-gedcom/plugin.json b/free/family-gedcom/plugin.json index 8bb47934..39690e3b 100644 --- a/free/family-gedcom/plugin.json +++ b/free/family-gedcom/plugin.json @@ -1,6 +1,6 @@ { "name": "family-gedcom", - "version": "1.0.1", + "version": "1.2.1", "description": "Generic GEDCOM file importer for the family plugin. Accepts any GEDCOM 5.5.1 / 7.0 file from any provider with optional photo-folder upload. PLANNED: requires the 'family' plugin (ɳFamily bundle, planned v1.1.0) and 'object-storage' + 'photos' plugins. Not installable until the family plugin ships.", "author": "nself", "license": "MIT", diff --git a/free/family-myheritage/plugin.json b/free/family-myheritage/plugin.json index 0cfdf834..b325e5b8 100644 --- a/free/family-myheritage/plugin.json +++ b/free/family-myheritage/plugin.json @@ -1,6 +1,6 @@ { "name": "family-myheritage", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "MyHeritage → nFamily migration helper (PLANNED). MyHeritage is Geni.com's parent company — lowest legal risk, potential partnership path.", "author": "nself", diff --git a/free/family-wikitree/plugin.json b/free/family-wikitree/plugin.json index ba5a2885..b1a3d3ad 100644 --- a/free/family-wikitree/plugin.json +++ b/free/family-wikitree/plugin.json @@ -1,6 +1,6 @@ { "name": "family-wikitree", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "WikiTree → nFamily migration helper (PLANNED). WikiTree is a free public genealogy wiki with a REST API (Apps API).", "author": "nself", diff --git a/free/feature-flags/plugin.json b/free/feature-flags/plugin.json index 47c22f12..eba54065 100644 --- a/free/feature-flags/plugin.json +++ b/free/feature-flags/plugin.json @@ -1,6 +1,6 @@ { "name": "feature-flags", - "version": "1.0.1", + "version": "1.2.1", "description": "Feature flags service with targeting rules, segments, and evaluation engine", "author": "nself", "license": "MIT", diff --git a/free/federation/plugin.json b/free/federation/plugin.json index 227881a8..53c9f7b2 100644 --- a/free/federation/plugin.json +++ b/free/federation/plugin.json @@ -1,6 +1,6 @@ { "name": "federation", - "version": "1.0.1", + "version": "1.2.1", "description": "Manage GraphQL Federation: compose an Apollo Router supergraph from installed plugin subgraphs, check subgraph health, and introspect the composed schema.", "author": "nself", "license": "MIT", diff --git a/free/file-processing/plugin.json b/free/file-processing/plugin.json index 042e4c25..a151a3dc 100644 --- a/free/file-processing/plugin.json +++ b/free/file-processing/plugin.json @@ -1,6 +1,6 @@ { "name": "file-processing", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "File processing with thumbnails and optimization for MinIO/S3/GCS/R2/B2/Azure. Planned: Inbound webhook support for storage provider notifications", "author": "nself", diff --git a/free/flags/plugin.json b/free/flags/plugin.json index 9f41a8fa..787140b5 100644 --- a/free/flags/plugin.json +++ b/free/flags/plugin.json @@ -1,6 +1,6 @@ { "name": "flags", - "version": "1.0.1", + "version": "1.2.1", "description": "Manage feature flags served by the feature-flags plugin: list, get, set, history, canary rollouts and kill switches.", "author": "nself", "license": "MIT", diff --git a/free/forgejo/plugin.json b/free/forgejo/plugin.json index 22ba2d4b..56f473ac 100644 --- a/free/forgejo/plugin.json +++ b/free/forgejo/plugin.json @@ -1,6 +1,6 @@ { "name": "forgejo", - "version": "1.0.1", + "version": "1.2.1", "description": "Self-hosted Forgejo git forge + Forgejo Actions runner. Provides offline CI that executes .github/workflows/*.yml YAML on self-hosted compute — zero GitHub Actions quota consumed. Designed for the ops profile (ops server on staging/prod).", "author": "nself", "license": "MIT", diff --git a/free/functions-v8/plugin.json b/free/functions-v8/plugin.json index 594470df..38bb063b 100644 --- a/free/functions-v8/plugin.json +++ b/free/functions-v8/plugin.json @@ -1,6 +1,6 @@ { "name": "functions-edge", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Edge Functions V8 Runtime. Deploy short-lived TypeScript functions with a Deno V8 isolate pool. HTTP-trigger, <50ms cold-start, allowlist-only env injection, Prometheus metrics, SSE log streaming.", "author": "nself", diff --git a/free/game-metadata/plugin.json b/free/game-metadata/plugin.json index 329bf90d..3f69744c 100644 --- a/free/game-metadata/plugin.json +++ b/free/game-metadata/plugin.json @@ -1,6 +1,6 @@ { "name": "game-metadata", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Game metadata service with IGDB integration, ROM hash matching, tier requirements, and artwork management", "author": "nself", diff --git a/free/gateway/plugin.json b/free/gateway/plugin.json index e083a26d..d8b8a3f7 100644 --- a/free/gateway/plugin.json +++ b/free/gateway/plugin.json @@ -1,6 +1,6 @@ { "name": "gateway", - "version": "1.0.1", + "version": "1.2.1", "description": "Manage the nSelf AI gateway (nself-ai-gateway, port 3761): service health, provider key vault, quota usage, and routing rules.", "author": "nself", "license": "MIT", diff --git a/free/gauth/plugin.json b/free/gauth/plugin.json index a5a54618..ad53869d 100644 --- a/free/gauth/plugin.json +++ b/free/gauth/plugin.json @@ -1,6 +1,6 @@ { "name": "gauth", - "version": "1.0.1", + "version": "1.2.1", "description": "Manage Google OAuth tokens for nSelf AI services: status, refresh, and revoke against plugin-gauth.", "author": "nself", "license": "MIT", diff --git a/free/gdpr/plugin.json b/free/gdpr/plugin.json index 23069c2a..6800f82a 100644 --- a/free/gdpr/plugin.json +++ b/free/gdpr/plugin.json @@ -1,6 +1,6 @@ { "name": "gdpr", - "version": "1.0.1", + "version": "1.2.1", "description": "GDPR data portability (Art. 20) and right-to-erasure (Art. 17) tools for self-hosted nSelf instances.", "author": "nself", "license": "MIT", diff --git a/free/geocoding/plugin.json b/free/geocoding/plugin.json index 9d6164f9..bb4d36b1 100644 --- a/free/geocoding/plugin.json +++ b/free/geocoding/plugin.json @@ -1,6 +1,6 @@ { "name": "geocoding", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Geocoding plugin with geofence storage. Planned: Google Maps API integration for forward/reverse geocoding and place search", "author": "nself", diff --git a/free/github-runner/plugin.json b/free/github-runner/plugin.json index 99c73689..49128337 100644 --- a/free/github-runner/plugin.json +++ b/free/github-runner/plugin.json @@ -1,6 +1,6 @@ { "name": "github-runner", - "version": "1.0.1", + "version": "1.2.1", "description": "GitHub Actions self-hosted runner. Registers with your GitHub org and picks up CI jobs tagged `runs-on: ubuntu-latest` — enabling private repos to run CI without GitHub-hosted runners.", "author": "nself", "license": "MIT", diff --git a/free/github/plugin.json b/free/github/plugin.json index a588d00e..81132f77 100644 --- a/free/github/plugin.json +++ b/free/github/plugin.json @@ -1,6 +1,6 @@ { "name": "github", - "version": "1.0.1", + "version": "1.2.1", "description": "GitHub repository, issue, and workflow integration", "author": "nself", "license": "MIT", diff --git a/free/hipaa/plugin.json b/free/hipaa/plugin.json index 3c8a365f..8f0fe9f1 100644 --- a/free/hipaa/plugin.json +++ b/free/hipaa/plugin.json @@ -1,6 +1,6 @@ { "name": "hipaa", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "HIPAA compliance add-on: PHI column registry, PHI access logging with 6-year retention, de-identification helpers (masking + tokenization), encryption-at-rest audit, and BAA workflow.", "author": "nself", diff --git a/free/home/plugin.json b/free/home/plugin.json index 5e91261b..173d15fb 100644 --- a/free/home/plugin.json +++ b/free/home/plugin.json @@ -1,6 +1,6 @@ { "name": "home", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Home automation bridge. Connects Home Assistant and MQTT to ɳSelf, enabling smart device control, state monitoring, scene activation, and command logging.", "author": "nself", diff --git a/free/idme/plugin.json b/free/idme/plugin.json index 58ac3139..99eb2fca 100644 --- a/free/idme/plugin.json +++ b/free/idme/plugin.json @@ -1,6 +1,6 @@ { "name": "idme", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "ID.me OAuth authentication with government-grade identity verification for 7 groups", "author": "nself", diff --git a/free/infra/plugin.json b/free/infra/plugin.json index 657e1dab..5bdb915d 100644 --- a/free/infra/plugin.json +++ b/free/infra/plugin.json @@ -1,6 +1,6 @@ { "name": "infra", - "version": "1.0.1", + "version": "1.2.1", "description": "Provision nSelf infrastructure with Terraform: plan, apply and destroy modules for aws, gcp, azure, hetzner, do and linode.", "author": "nself", "license": "MIT", diff --git a/free/invitations/plugin.json b/free/invitations/plugin.json index d96276e1..578500ff 100644 --- a/free/invitations/plugin.json +++ b/free/invitations/plugin.json @@ -1,6 +1,6 @@ { "name": "invitations", - "version": "1.0.1", + "version": "1.2.1", "description": "Invitation management system with email/SMS delivery and tracking", "author": "nself", "license": "MIT", diff --git a/free/job-queue/plugin.json b/free/job-queue/plugin.json index 3df3bc58..7ba09e15 100644 --- a/free/job-queue/plugin.json +++ b/free/job-queue/plugin.json @@ -1,6 +1,6 @@ { "name": "job-queue", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Durable background job queue with priorities, retries, scheduled execution, and per-job progress tracking.", "author": "nself", diff --git a/free/jobs/plugin.json b/free/jobs/plugin.json index 6e9ce0e4..591a3d8c 100644 --- a/free/jobs/plugin.json +++ b/free/jobs/plugin.json @@ -1,6 +1,6 @@ { "name": "jobs", - "version": "1.0.1", + "version": "1.2.1", "description": "PostgreSQL-backed background job queue with priorities, scheduling, retries, and REST API. Simplified Go implementation using database polling instead of Redis/BullMQ.", "author": "nself", "license": "MIT", diff --git a/free/k8s/plugin.json b/free/k8s/plugin.json index d94b7ec5..411b5051 100644 --- a/free/k8s/plugin.json +++ b/free/k8s/plugin.json @@ -1,6 +1,6 @@ { "name": "k8s", - "version": "1.0.1", + "version": "1.2.1", "description": "Deploy and manage nSelf on any Kubernetes cluster via the official Helm chart: install, upgrade, and status commands wrapping helm.", "author": "nself", "license": "MIT", diff --git a/free/link-preview/plugin.json b/free/link-preview/plugin.json index d447d650..a14eac85 100644 --- a/free/link-preview/plugin.json +++ b/free/link-preview/plugin.json @@ -1,6 +1,6 @@ { "name": "link-preview", - "version": "1.0.1", + "version": "1.2.1", "description": "URL metadata extraction with Open Graph, Twitter Cards, and caching", "author": "nself", "license": "MIT", diff --git a/free/linkedin/plugin.json b/free/linkedin/plugin.json index 0d79c467..5413da30 100644 --- a/free/linkedin/plugin.json +++ b/free/linkedin/plugin.json @@ -1,6 +1,6 @@ { "name": "linkedin", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "LinkedIn publishing integration. OAuth 2.0 connection, post to LinkedIn feed with optional image attachments, post history, and Claw tool descriptor.", "author": "nself", diff --git a/free/mail/plugin.json b/free/mail/plugin.json index 3c60c716..59188f1d 100644 --- a/free/mail/plugin.json +++ b/free/mail/plugin.json @@ -1,6 +1,6 @@ { "name": "mail", - "version": "1.0.1", + "version": "1.2.1", "description": "Send transactional and broadcast email through the nSelf stack: mux + Postmark pipeline via ping_api, template management, and DKIM verification.", "author": "nself", "license": "MIT", diff --git a/free/maintenance/plugin.json b/free/maintenance/plugin.json index e7f889cd..511b166c 100644 --- a/free/maintenance/plugin.json +++ b/free/maintenance/plugin.json @@ -1,6 +1,6 @@ { "name": "maintenance", - "version": "1.0.1", + "version": "1.2.1", "description": "Maintenance utilities: disk cleanup, log rotation and the maintenance scheduler.", "author": "nself", "license": "MIT", diff --git a/free/mdns/plugin.json b/free/mdns/plugin.json index 9f202855..b8b23518 100644 --- a/free/mdns/plugin.json +++ b/free/mdns/plugin.json @@ -1,6 +1,6 @@ { "name": "mdns", - "version": "1.0.1", + "version": "1.2.1", "description": "mDNS/Bonjour service discovery for zero-config LAN advertising", "author": "nself", "language": "go", diff --git a/free/media-processing/plugin.json b/free/media-processing/plugin.json index b4e94cdc..10a0bf58 100644 --- a/free/media-processing/plugin.json +++ b/free/media-processing/plugin.json @@ -1,6 +1,6 @@ { "name": "media-processing", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "FFmpeg-based media encoding and processing with HLS streaming support", "author": "nself", diff --git a/free/meetings/plugin.json b/free/meetings/plugin.json index e5779eb7..0801b4c0 100644 --- a/free/meetings/plugin.json +++ b/free/meetings/plugin.json @@ -1,6 +1,6 @@ { "name": "meetings", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Calendar integration and meeting management with room booking, recurring meetings, and availability tracking. External calendar sync (Google/Outlook) planned for future release.", "author": "nself", diff --git a/free/mlflow/plugin.json b/free/mlflow/plugin.json index c126a5d6..a7ea75a5 100644 --- a/free/mlflow/plugin.json +++ b/free/mlflow/plugin.json @@ -1,6 +1,6 @@ { "name": "mlflow", - "version": "1.0.1", + "version": "1.2.1", "description": "MLflow experiment tracking and model registry", "author": "nself", "license": "MIT", diff --git a/free/model/plugin.json b/free/model/plugin.json index 0d7dd48c..fac7ad44 100644 --- a/free/model/plugin.json +++ b/free/model/plugin.json @@ -1,6 +1,6 @@ { "name": "model", - "version": "1.0.1", + "version": "1.2.1", "description": "Manage local AI models via Ollama: list, pull, remove, update, benchmark, plus the legacy `ollama` command tree.", "author": "nself", "license": "MIT", diff --git a/free/monitor/plugin.json b/free/monitor/plugin.json index 8a63e8c4..6120ac4d 100644 --- a/free/monitor/plugin.json +++ b/free/monitor/plugin.json @@ -1,6 +1,6 @@ { "name": "monitor", - "version": "1.0.1", + "version": "1.2.1", "description": "Monitoring stack management: upgrade the bundled Grafana dashboards.", "author": "nself", "license": "MIT", diff --git a/free/monitoring/plugin.json b/free/monitoring/plugin.json index dfcacde5..19bdc460 100644 --- a/free/monitoring/plugin.json +++ b/free/monitoring/plugin.json @@ -1,6 +1,6 @@ { "name": "monitoring", - "version": "1.0.1", + "version": "1.2.1", "description": "Full monitoring stack: Prometheus, Grafana, Loki, Promtail, Tempo, Alertmanager, and exporters", "author": "nself", "license": "MIT", diff --git a/free/notifications/plugin.json b/free/notifications/plugin.json index 1de962d8..b7bd85e0 100644 --- a/free/notifications/plugin.json +++ b/free/notifications/plugin.json @@ -1,6 +1,6 @@ { "name": "notifications", - "version": "1.0.1", + "version": "1.2.1", "description": "Email notification service (SMTP). Push and SMS channels are always-error placeholders — they accept requests but return 501 Not Implemented. Use the 'notify' plugin for real push notifications. Deprecated since v1.1.0; replacement: notify.", "author": "nself", "license": "MIT", diff --git a/free/notify/plugin.json b/free/notify/plugin.json index 4bfc878b..04bddbf7 100644 --- a/free/notify/plugin.json +++ b/free/notify/plugin.json @@ -1,6 +1,6 @@ { "name": "notify", - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-channel notification service. Channels: Email (SMTP), Webhook (HMAC-signed). HTTP endpoints for sending notifications, managing templates, and viewing delivery history.", "author": "nself", "license": "MIT", diff --git a/free/nself-cloud/plugin.json b/free/nself-cloud/plugin.json index 110df6f3..79858e48 100644 --- a/free/nself-cloud/plugin.json +++ b/free/nself-cloud/plugin.json @@ -1,6 +1,6 @@ { "name": "nself-cloud", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "ɳCloud managed hosting infrastructure: tenant lifecycle, server provisioning saga, Stripe metered billing, custom domain management, and team memberships for cloud.nself.org.", "author": "nSelf Team", diff --git a/free/nself-eval-gate/plugin.json b/free/nself-eval-gate/plugin.json index 76916ae7..b55c2941 100644 --- a/free/nself-eval-gate/plugin.json +++ b/free/nself-eval-gate/plugin.json @@ -1,6 +1,6 @@ { "name": "nself-eval-gate", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Eval harness and autonomy-tier gate for nSelf. Three-mode scoring (exact, semantic via BGE-M3, rubric via LLM-as-judge), recall-quality precision/recall/fact_f1 metrics, CI integration via nself ci eval, and autonomy-tier threshold enforcement.", "author": "nself", diff --git a/free/nself-geo/plugin.json b/free/nself-geo/plugin.json index 82ceeaa7..4a544956 100644 --- a/free/nself-geo/plugin.json +++ b/free/nself-geo/plugin.json @@ -1,6 +1,6 @@ { "name": "nself-geo", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Forward and reverse geocoding with provider-agnostic caching layer. Nominatim (free, OSM) is the default; Google Places and Mapbox are premium fallbacks. Exposes geocodeAddress, reverseGeocode, geocodeBatch, clearGeoCache via Hasura Remote Schema.", "author": "nself", diff --git a/free/nself-image/plugin.json b/free/nself-image/plugin.json index 70c4127f..db894dec 100644 --- a/free/nself-image/plugin.json +++ b/free/nself-image/plugin.json @@ -1,6 +1,6 @@ { "name": "nself-image", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.1.0", "description": "Server-side image processing plugin for nSelf: resize, crop, format conversion (WebP/AVIF/JPEG/PNG), EXIF strip, and MinIO-integrated upload pipeline. Replaces per-app Sharp/Node.js usage across nFamily, nChat, and any consumer app needing image normalization.", "author": "nSelf Team", diff --git a/free/nself-pdf/plugin.json b/free/nself-pdf/plugin.json index 989bcbf0..532b88a6 100644 --- a/free/nself-pdf/plugin.json +++ b/free/nself-pdf/plugin.json @@ -3,7 +3,7 @@ "author": "nSelf Team", "minNselfVersion": "1.0.0", "display_name": "PDF Generation", - "version": "1.0.1", + "version": "1.2.1", "language": "go", "bundle": "shared", "visibility": "public", diff --git a/free/nself-scan/plugin.json b/free/nself-scan/plugin.json index e1e0fff6..140ca0ba 100644 --- a/free/nself-scan/plugin.json +++ b/free/nself-scan/plugin.json @@ -3,7 +3,7 @@ "author": "nSelf Team", "minNselfVersion": "1.0.0", "display_name": "File Virus & Content Scanning", - "version": "1.0.1", + "version": "1.2.1", "language": "go", "bundle": [ "nFamily", diff --git a/free/nself-sync/plugin.json b/free/nself-sync/plugin.json index d0d66e1c..cc4b43ad 100644 --- a/free/nself-sync/plugin.json +++ b/free/nself-sync/plugin.json @@ -2,7 +2,7 @@ "name": "nself-sync", "author": "nSelf Team", "displayName": "Event-Log Sync Engine for ɳClaw", - "version": "1.0.1", + "version": "1.2.1", "tier": "free", "category": "infrastructure", "minNselfVersion": "1.1.1", diff --git a/free/nself-vault/plugin.json b/free/nself-vault/plugin.json index 8341db69..3e94a476 100644 --- a/free/nself-vault/plugin.json +++ b/free/nself-vault/plugin.json @@ -2,7 +2,7 @@ "name": "nself-vault", "author": "nSelf Team", "displayName": "Per-Row Encryption (Vault)", - "version": "1.0.1", + "version": "1.2.1", "tier": "free", "category": "security", "minNselfVersion": "1.0.0", diff --git a/free/object-storage/plugin.json b/free/object-storage/plugin.json index a7e6066f..6febd665 100644 --- a/free/object-storage/plugin.json +++ b/free/object-storage/plugin.json @@ -1,6 +1,6 @@ { "name": "object-storage", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Multi-provider object storage with S3-compatible API, local storage, presigned URLs, and multipart uploads", "author": "nself", diff --git a/free/observability/plugin.json b/free/observability/plugin.json index d65b4c9f..7ce33705 100644 --- a/free/observability/plugin.json +++ b/free/observability/plugin.json @@ -1,6 +1,6 @@ { "name": "observability", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Unified observability service with health probes, watchdog timers, service auto-discovery, and systemd integration", "author": "nself", diff --git a/free/ollama/plugin.json b/free/ollama/plugin.json index 552ca3b3..db31ac31 100644 --- a/free/ollama/plugin.json +++ b/free/ollama/plugin.json @@ -1,6 +1,6 @@ { "name": "ollama", - "version": "1.1.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "One-click offline LLM stack. Stands up an Ollama Docker container, auto-pulls gemma-3-4b on first start, and registers as a provider in plugin-ai. All nSelf AI features route through Ollama when NSELF_AI_PROVIDER=ollama. Zero cloud dependency, zero API key, zero usage cost after install. GPU passthrough is optional and localhost-only (port 11434 binds to 127.0.0.1 — never exposed externally).", "author": "nself", diff --git a/free/payments/plugin.json b/free/payments/plugin.json index 25a9a8ab..0eb534a3 100644 --- a/free/payments/plugin.json +++ b/free/payments/plugin.json @@ -1,6 +1,6 @@ { "name": "payments", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Unified payments abstraction supporting Stripe, PayPal, and Apple/Google Pay with webhook normalization.", "author": "nself", diff --git a/free/paypal/plugin.json b/free/paypal/plugin.json index af0f4012..8acd9ff3 100644 --- a/free/paypal/plugin.json +++ b/free/paypal/plugin.json @@ -1,6 +1,6 @@ { "name": "paypal", - "version": "1.0.1", + "version": "1.2.1", "description": "PayPal payment data sync with webhook handling", "author": "nself", "license": "MIT", diff --git a/free/pentest-kit/plugin.json b/free/pentest-kit/plugin.json index a8fb85e0..6fc81327 100644 --- a/free/pentest-kit/plugin.json +++ b/free/pentest-kit/plugin.json @@ -1,6 +1,6 @@ { "name": "pentest-kit", - "version": "1.0.1", + "version": "1.2.1", "description": "CLI front end for the pentest plugin: generate scope documents, provision test credentials, import findings, and check remediation status. Business+ tier.", "author": "nself", "license": "MIT", diff --git a/free/pentest/plugin.json b/free/pentest/plugin.json index 5e2c0c47..1aa2656e 100644 --- a/free/pentest/plugin.json +++ b/free/pentest/plugin.json @@ -1,6 +1,6 @@ { "name": "pentest", - "version": "1.0.1", + "version": "1.2.1", "description": "Penetration-test readiness kit. Generates structured scope documents, provisions pentest credentials, tracks findings, and manages remediation. FREE — Security-Always-Free Doctrine.", "author": "nself", "license": "MIT", diff --git a/free/plugin-clawde/plugin.json b/free/plugin-clawde/plugin.json index 6fb72f44..305da4a5 100644 --- a/free/plugin-clawde/plugin.json +++ b/free/plugin-clawde/plugin.json @@ -1,6 +1,6 @@ { "name": "plugin-clawde", - "version": "1.0.1", + "version": "1.2.1", "description": "ClawDE daemon integration backend. Manages session lifecycle, tracks daemon health, and streams events via SSE for the ClawDE AI development environment.", "author": "nSelf", "license": "MIT", diff --git a/free/plugin-gauth/plugin.json b/free/plugin-gauth/plugin.json index fdfc1904..870ba2b2 100644 --- a/free/plugin-gauth/plugin.json +++ b/free/plugin-gauth/plugin.json @@ -1,6 +1,6 @@ { "name": "plugin-gauth", - "version": "1.0.1", + "version": "1.2.1", "description": "Headless server-side Google OAuth token refresh for nSelf AI services", "author": "nSelf", "license": "MIT", diff --git a/free/plugin-llm-gateway/plugin.json b/free/plugin-llm-gateway/plugin.json index 450934f1..a4247cde 100644 --- a/free/plugin-llm-gateway/plugin.json +++ b/free/plugin-llm-gateway/plugin.json @@ -1,6 +1,6 @@ { "name": "plugin-llm-gateway", - "version": "1.0.1", + "version": "1.2.1", "description": "ClawDE-facing LLM gateway: per-tenant token quota, Redis response caching, session context injection, and SSRF guard over nself-ai-gateway (port 3761). Simplifies ClawDE client LLM calls.", "author": "nSelf", "license": "MIT", diff --git a/free/plugin-pty/plugin.json b/free/plugin-pty/plugin.json index f8fd33f3..93a45987 100644 --- a/free/plugin-pty/plugin.json +++ b/free/plugin-pty/plugin.json @@ -1,7 +1,7 @@ { "name": "plugin-pty", "display_name": "ɳSelf PTY Bridge", - "version": "1.0.1", + "version": "1.2.1", "description": "Pseudo-terminal bridge for ClawDE AI sessions. Spawns, manages, and relays PTY processes with per-tenant resource limits and WebSocket I/O.", "author": "nself-org", "license": "MIT", diff --git a/free/plugin-retrieval/plugin.json b/free/plugin-retrieval/plugin.json index d7455550..251b8d5b 100644 --- a/free/plugin-retrieval/plugin.json +++ b/free/plugin-retrieval/plugin.json @@ -1,6 +1,6 @@ { "name": "plugin-retrieval", - "version": "1.0.1", + "version": "1.2.1", "description": "Hybrid retrieval plugin: pgvector ANN + tsvector BM25 merged with Reciprocal Rank Fusion (RRF). Provides the search backend for ɳClaw memory and nself-ai-mcp search/recall tools.", "author": "nSelf", "license": "MIT", diff --git a/free/podcast/plugin.json b/free/podcast/plugin.json index eb8fc7c7..58f6b1a3 100644 --- a/free/podcast/plugin.json +++ b/free/podcast/plugin.json @@ -1,6 +1,6 @@ { "name": "podcast", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Podcast service with RSS feed parsing, episode management, playback position sync, and subscription management", "author": "nself", diff --git a/free/post/plugin.json b/free/post/plugin.json index a169f9fe..ef97dd7c 100644 --- a/free/post/plugin.json +++ b/free/post/plugin.json @@ -1,6 +1,6 @@ { "name": "post", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Multi-platform content publishing. Publish to WordPress, Ghost, Twitter/X, LinkedIn, Telegram channels, Dev.to, and Hashnode with optional scheduling.", "author": "nself", diff --git a/free/push/plugin.json b/free/push/plugin.json index e98bcce8..5723ec70 100644 --- a/free/push/plugin.json +++ b/free/push/plugin.json @@ -1,6 +1,6 @@ { "name": "push", - "version": "1.0.1", + "version": "1.2.1", "description": "APNs + FCM push notification relay. Hasura event-trigger fan-out, delivery state tracking, exponential backoff retry. Handles iOS (Apple Push Notification service) and Android (Firebase Cloud Messaging v1 API).", "author": "nself", "license": "MIT", diff --git a/free/queue/plugin.json b/free/queue/plugin.json index b3620b34..e15dea61 100644 --- a/free/queue/plugin.json +++ b/free/queue/plugin.json @@ -1,6 +1,6 @@ { "name": "queue", - "version": "1.0.1", + "version": "1.2.1", "description": "Inspect and manage nSelf background job queues: depth, stuck jobs, retries and purges.", "author": "nself", "license": "MIT", diff --git a/free/region/plugin.json b/free/region/plugin.json index b65f5591..b5e3ef6e 100644 --- a/free/region/plugin.json +++ b/free/region/plugin.json @@ -1,6 +1,6 @@ { "name": "region", - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-region management: add replica regions, list and inspect their status, and promote a region to primary.", "author": "nself", "license": "MIT", diff --git a/free/release/plugin.json b/free/release/plugin.json index dfab6bdf..dac08a1a 100644 --- a/free/release/plugin.json +++ b/free/release/plugin.json @@ -1,6 +1,6 @@ { "name": "release", - "version": "1.0.1", + "version": "1.2.1", "description": "Orchestrate the nSelf project's own 12-step release cascade: tag and release cli and plugins-pro, build and push the admin image, and open the Homebrew formula PR.", "author": "nself", "license": "MIT", diff --git a/free/retro-gaming/plugin.json b/free/retro-gaming/plugin.json index ec230d31..1c86e10a 100644 --- a/free/retro-gaming/plugin.json +++ b/free/retro-gaming/plugin.json @@ -1,6 +1,6 @@ { "name": "retro-gaming", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Retro gaming ROM library management, emulator core serving, save state synchronization, play sessions, and controller configuration for nself-tv", "author": "nself", diff --git a/free/rom-discovery/plugin.json b/free/rom-discovery/plugin.json index 39084f3b..1e5af264 100644 --- a/free/rom-discovery/plugin.json +++ b/free/rom-discovery/plugin.json @@ -1,6 +1,6 @@ { "name": "rom-discovery", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "ROM metadata database, search, discovery, automated download orchestration, and multi-source scraping for nself-tv", "author": "nself", diff --git a/free/search/plugin.json b/free/search/plugin.json index 6767dfc8..c25ecff0 100644 --- a/free/search/plugin.json +++ b/free/search/plugin.json @@ -1,6 +1,6 @@ { "name": "search", - "version": "1.0.1", + "version": "1.2.1", "description": "Full-text search engine with PostgreSQL FTS and MeiliSearch support", "author": "nself", "license": "MIT", diff --git a/free/sentry-cli/plugin.json b/free/sentry-cli/plugin.json index 46b4e420..ed7765f0 100644 --- a/free/sentry-cli/plugin.json +++ b/free/sentry-cli/plugin.json @@ -1,6 +1,6 @@ { "name": "sentry-cli", - "version": "1.0.1", + "version": "1.2.1", "description": "ɳSentry operations: monitors, incidents, status pages, alerts, cloud login, and provisioning a self-hosted sentry server.", "author": "nself", "license": "MIT", diff --git a/free/shared-utils/plugin.json b/free/shared-utils/plugin.json index 9dbdd7e8..b5edc296 100644 --- a/free/shared-utils/plugin.json +++ b/free/shared-utils/plugin.json @@ -1,6 +1,6 @@ { "name": "shared-utils", - "version": "1.0.1", + "version": "1.2.1", "description": "Shared Go utilities (request-ID tracing middleware, HTTP client propagation, server lifecycle helpers) used internally by multiple free nself plugins. Not installable directly.", "author": "nself", "license": "MIT", diff --git a/free/shopify/plugin.json b/free/shopify/plugin.json index fe74be31..db7f8052 100644 --- a/free/shopify/plugin.json +++ b/free/shopify/plugin.json @@ -1,6 +1,6 @@ { "name": "shopify", - "version": "1.0.1", + "version": "1.2.1", "description": "Shopify store, orders, and product synchronization", "author": "nself", "language": "go", diff --git a/free/siem/plugin.json b/free/siem/plugin.json index a590e8dd..3521517f 100644 --- a/free/siem/plugin.json +++ b/free/siem/plugin.json @@ -1,6 +1,6 @@ { "name": "siem", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.3.0", "description": "Forward nSelf audit logs and security events to external SIEM platforms: Datadog, Splunk HEC, Elastic, Loki, and custom webhooks. OCSF/ECS schema normalization.", "author": "nself", diff --git a/free/sms/plugin.json b/free/sms/plugin.json index f3471a73..5f799b35 100644 --- a/free/sms/plugin.json +++ b/free/sms/plugin.json @@ -1,6 +1,6 @@ { "name": "sms", - "version": "1.0.1", + "version": "1.2.1", "displayName": "plugin-sms", "description": "SMS messaging via Twilio. Send, track, and manage opt-outs.", "port": 9009, diff --git a/free/soak/plugin.json b/free/soak/plugin.json index 2e413100..50a34928 100644 --- a/free/soak/plugin.json +++ b/free/soak/plugin.json @@ -1,6 +1,6 @@ { "name": "soak", - "version": "1.0.1", + "version": "1.2.1", "description": "Manage soak testing lifecycle: abort an active soak and roll back to a prior version.", "author": "nself", "license": "MIT", diff --git a/free/sports/plugin.json b/free/sports/plugin.json index 7ccb49aa..a8f50748 100644 --- a/free/sports/plugin.json +++ b/free/sports/plugin.json @@ -1,6 +1,6 @@ { "name": "sports", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Sports data plugin with storage for scores, schedules, and standings. Planned: Live data provider integration (ESPN, The Sports DB) for real-time scores and stats", "author": "nself", diff --git a/free/storage-transform/plugin.json b/free/storage-transform/plugin.json index 2fb8f334..26fd0bc9 100644 --- a/free/storage-transform/plugin.json +++ b/free/storage-transform/plugin.json @@ -1,6 +1,6 @@ { "name": "storage-transform", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "On-the-fly image transformation CDN: resize, crop, format convert (WebP/AVIF/JPEG/PNG), quality, and device-pixel-ratio support. URL-param driven, Redis LRU cache, Nginx cache headers, rate limiting.", "author": "nself", diff --git a/free/storage/plugin.json b/free/storage/plugin.json index 57126279..cd838b58 100644 --- a/free/storage/plugin.json +++ b/free/storage/plugin.json @@ -1,6 +1,6 @@ { "name": "storage", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0", "description": "S3-compatible file storage: bucket management, object PUT/GET/DELETE/LIST, presigned URLs, per-tenant isolation.", "author": "nself", diff --git a/free/stripe/plugin.json b/free/stripe/plugin.json index 2a4bce91..101a3837 100644 --- a/free/stripe/plugin.json +++ b/free/stripe/plugin.json @@ -1,6 +1,6 @@ { "name": "stripe", - "version": "1.0.1", + "version": "1.2.1", "description": "Stripe billing data sync with webhook handling", "author": "nself", "license": "MIT", diff --git a/free/subtitle-manager/plugin.json b/free/subtitle-manager/plugin.json index d073116e..44a4f7f2 100644 --- a/free/subtitle-manager/plugin.json +++ b/free/subtitle-manager/plugin.json @@ -1,6 +1,6 @@ { "name": "subtitle-manager", - "version": "1.0.1", + "version": "1.2.1", "description": "Subtitle search, download, and sync verification via OpenSubtitles", "author": "nself", "license": "MIT", diff --git a/free/tenant-controller/plugin.json b/free/tenant-controller/plugin.json index 75b9295c..5b46d0aa 100644 --- a/free/tenant-controller/plugin.json +++ b/free/tenant-controller/plugin.json @@ -1,6 +1,6 @@ { "name": "tenant-controller", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.3.0", "description": "Multi-tenant master controller for nCloud. Manages N isolated nSelf project instances behind a single deploy: per-project Postgres schema, Hasura metadata namespace, Nginx vhost, JWT secret, Redis key prefix, and MinIO bucket. Enables 50 projects on one Hetzner CX21.", "author": "nself", diff --git a/free/tenant/plugin.json b/free/tenant/plugin.json index 70e7aebc..5b1f16f1 100644 --- a/free/tenant/plugin.json +++ b/free/tenant/plugin.json @@ -1,6 +1,6 @@ { "name": "tenant", - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-tenant operations: create, suspend, upgrade and destroy tenants, plus per-tenant usage metering and billing reports.", "author": "nself", "license": "MIT", diff --git a/free/tmdb/plugin.json b/free/tmdb/plugin.json index 28fc2749..008d0b25 100644 --- a/free/tmdb/plugin.json +++ b/free/tmdb/plugin.json @@ -1,6 +1,6 @@ { "name": "tmdb", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Comprehensive media metadata enrichment from TMDB/IMDb/TVDB/MusicBrainz with auto-matching, manual review queue, and multi-provider support", "author": "nself", diff --git a/free/tokens/plugin.json b/free/tokens/plugin.json index abd69c9d..d0016366 100644 --- a/free/tokens/plugin.json +++ b/free/tokens/plugin.json @@ -1,6 +1,6 @@ { "name": "tokens", - "version": "1.0.1", + "version": "1.2.1", "description": "Secure content delivery tokens, HLS encryption key management, and entitlement checks", "author": "nself", "license": "MIT", diff --git a/free/torrent-manager/plugin.json b/free/torrent-manager/plugin.json index 481396f7..ccaf8ec1 100644 --- a/free/torrent-manager/plugin.json +++ b/free/torrent-manager/plugin.json @@ -1,6 +1,6 @@ { "name": "torrent-manager", - "version": "1.0.1", + "version": "1.2.1", "description": "Torrent downloading with Transmission/qBittorrent integration, multi-source search, seeding policies, and VPN enforcement", "author": "nself", "license": "MIT", diff --git a/free/transactional-email/plugin.json b/free/transactional-email/plugin.json index 06f33084..a36660f6 100644 --- a/free/transactional-email/plugin.json +++ b/free/transactional-email/plugin.json @@ -1,6 +1,6 @@ { "name": "transactional-email", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0", "description": "Provider-agnostic transactional email: template rendering, per-tenant domain management, SPF/DKIM reporting, delivery webhook relay.", "author": "nself", diff --git a/free/vpn/plugin.json b/free/vpn/plugin.json index 79bfbd4e..cd25fe9c 100644 --- a/free/vpn/plugin.json +++ b/free/vpn/plugin.json @@ -1,6 +1,6 @@ { "name": "vpn", - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-provider VPN management (NordVPN, PIA, Mullvad) with P2P optimization, server carousel, kill switch, and leak protection. Torrent download forwarding requires the torrent-manager plugin.", "author": "nself", "license": "MIT", diff --git a/free/waf/plugin.json b/free/waf/plugin.json index de6cef47..56b436fd 100644 --- a/free/waf/plugin.json +++ b/free/waf/plugin.json @@ -1,6 +1,6 @@ { "name": "waf", - "version": "1.0.1", + "version": "1.2.1", "description": "Web Application Firewall management: enable Coraza with the OWASP Core Rule Set, switch between detection and blocking mode, and review recent WAF events.", "author": "nself", "license": "MIT", diff --git a/free/warehouse/plugin.json b/free/warehouse/plugin.json index addb2c48..0c354540 100644 --- a/free/warehouse/plugin.json +++ b/free/warehouse/plugin.json @@ -1,6 +1,6 @@ { "name": "warehouse", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Data warehouse sync — exports nself table data to BigQuery, Snowflake, or Redshift on a configurable schedule.", "author": "nself", diff --git a/free/watchdog/plugin.json b/free/watchdog/plugin.json index c24b1ca4..9ae1b362 100644 --- a/free/watchdog/plugin.json +++ b/free/watchdog/plugin.json @@ -1,6 +1,6 @@ { "name": "watchdog", - "version": "1.0.1", + "version": "1.2.1", "description": "Self-healing container watchdog with circuit breaker: status, resets, event history, and TG/email escalation alerts.", "author": "nself", "license": "MIT", diff --git a/free/web3/plugin.json b/free/web3/plugin.json index 2b4a1fc8..35afe062 100644 --- a/free/web3/plugin.json +++ b/free/web3/plugin.json @@ -1,6 +1,6 @@ { "name": "web3", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Blockchain integration, NFT support, token-gated access, DAO governance, and decentralized identity", "author": "nself", diff --git a/free/webhooks/plugin.json b/free/webhooks/plugin.json index e6d47d16..835d2710 100644 --- a/free/webhooks/plugin.json +++ b/free/webhooks/plugin.json @@ -1,6 +1,6 @@ { "name": "webhooks", - "version": "1.0.1", + "version": "1.2.1", "description": "Outbound webhook delivery service with retry logic, HMAC signing, and dead-letter queue", "author": "nself", "license": "MIT", diff --git a/free/workflows/plugin.json b/free/workflows/plugin.json index c2294a07..b3fdf466 100644 --- a/free/workflows/plugin.json +++ b/free/workflows/plugin.json @@ -1,6 +1,6 @@ { "name": "workflows", - "version": "1.0.1", + "version": "1.2.1", "api_version": "1.0.0", "description": "Automation engine providing trigger-action workflow chains, conditional logic, scheduled tasks, webhook integrations, and cross-plugin orchestration", "author": "nself", diff --git a/registry.json b/registry.json index 911d39c6..1181c283 100644 --- a/registry.json +++ b/registry.json @@ -8,13 +8,13 @@ "note": "nSelf Free Plugin Registry — 60 MIT-licensed plugins.", "plugins": { "ai-cli": { - "version": "1.0.1", + "version": "1.2.1", "description": "AI operations for nSelf: chat, local Ollama model management, and Gemini API key pool provisioning and rotation.", "category": "automation", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/ai-cli-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/ai-cli/tarball", "requires_license": false, "language": "go", @@ -38,7 +38,7 @@ "pluginType": "cli", "binaryName": "nself-ai" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16", "checksums": { "sha256": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16", @@ -52,13 +52,13 @@ } }, "ai-studio": { - "version": "1.0.1", + "version": "1.2.1", "description": "Google AI Studio integration for local nSelf instances via a secure Cloudflare Tunnel.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/ai-studio-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/ai-studio/tarball", "requires_license": false, "language": "go", @@ -80,7 +80,7 @@ "pluginType": "cli", "binaryName": "nself-ai-studio" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb", "checksums": { "sha256": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb", @@ -94,13 +94,13 @@ } }, "alerts": { - "version": "1.0.1", + "version": "1.2.1", "description": "Manage Prometheus alert rules and Alertmanager silences: list, silence, and send synthetic test alerts.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/alerts-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/alerts/tarball", "requires_license": false, "language": "go", @@ -123,7 +123,7 @@ "pluginType": "cli", "binaryName": "nself-alerts" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd", "checksums": { "sha256": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd", @@ -137,13 +137,13 @@ } }, "api": { - "version": "1.0.1", + "version": "1.2.1", "description": "Inspect the nSelf plugin API surface: endpoint probes, deprecation calendar, and the API changelog.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/api-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/api/tarball", "requires_license": false, "language": "go", @@ -165,7 +165,7 @@ "pluginType": "cli", "binaryName": "nself-api" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757", "checksums": { "sha256": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757", @@ -179,13 +179,13 @@ } }, "audit": { - "version": "1.0.1", + "version": "1.2.1", "description": "Ecosystem documentation audit: banned words, dead links, and missing anchors across READMEs, wiki, docs, SPORT, PPI, and PRI.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/audit-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/audit/tarball", "requires_license": false, "language": "go", @@ -207,7 +207,7 @@ "pluginType": "cli", "binaryName": "nself-audit" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e", "checksums": { "sha256": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e", @@ -221,13 +221,13 @@ } }, "audit-log": { - "version": "1.0.1", + "version": "1.2.1", "description": "Append-only audit log for security-relevant events: auth, privilege change, secret access, plugin install/uninstall. Queryable from Admin with filters by event type, actor, severity, and time range.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/audit-log-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-log-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/audit-log/tarball", "requires_license": false, "language": "go", @@ -250,20 +250,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "215bfb2e2764ba2626a297a78adab845a7815ee17957c377f38ca7848ccea55f", "checksums": { "sha256": "215bfb2e2764ba2626a297a78adab845a7815ee17957c377f38ca7848ccea55f" } }, "backup": { - "version": "1.0.1", + "version": "1.2.1", "description": "PostgreSQL backup and restore automation with scheduling", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/backup-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/backup-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/backup/tarball", "requires_license": false, "language": "go", @@ -287,20 +287,20 @@ "runtime": "go", "entryPoint": "cmd/main" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "458e3b22b604a0d76e2993e5e7843182281ad1e84214afc31dc6364e3cc7d35a", "checksums": { "sha256": "458e3b22b604a0d76e2993e5e7843182281ad1e84214afc31dc6364e3cc7d35a" } }, "ci": { - "version": "1.0.1", + "version": "1.2.1", "description": "Local CI gate runner: detects repo stack (Go/Node/Flutter/Dart), runs lint+test+build, scans secrets with gitleaks, then posts a GitHub commit status (nself-ci) via gh OAuth. Replaces billing-blocked GitHub Actions as the merge gate.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/ci-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ci-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/ci/tarball", "requires_license": false, "language": "go", @@ -324,20 +324,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "118c7967172a7cedd1426cd180c95d0a76778d2cdee8fce5411511e3aaea752d", "checksums": { "sha256": "118c7967172a7cedd1426cd180c95d0a76778d2cdee8fce5411511e3aaea752d" } }, "claw-cli": { - "version": "1.0.1", + "version": "1.2.1", "description": "CLI client for the nClaw AI assistant: prompt, chat, pairing, keys, memories, topics, sessions, MCP server, OpenAI-compatible proxy, and schema migrations.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/claw-cli-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/claw-cli/tarball", "requires_license": false, "language": "go", @@ -360,7 +360,7 @@ "pluginType": "cli", "binaryName": "nself-claw" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589", "checksums": { "sha256": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589", @@ -374,13 +374,13 @@ } }, "content-acquisition": { - "version": "1.0.1", + "version": "1.2.1", "description": "Content acquisition with download rules engine. Planned: RSS feed monitoring, release calendar integration, automated download orchestration", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/content-acquisition-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/content-acquisition-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/content-acquisition/tarball", "requires_license": false, "language": "go", @@ -428,20 +428,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "095fa07082add3e68fb4706d031300ace955256b47a2d737b8724369698a78e3", "checksums": { "sha256": "095fa07082add3e68fb4706d031300ace955256b47a2d737b8724369698a78e3" } }, "content-progress": { - "version": "1.0.1", + "version": "1.2.1", "description": "Track video, audio, and content playback progress with continue watching, watchlists, and favorites", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/content-progress-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/content-progress-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/content-progress/tarball", "requires_license": false, "language": "go", @@ -473,16 +473,16 @@ "checksums": { "sha256": "5bc44b327755732a219ecdaec757126e6550616cf4fcaa6ac8869c4a32b9e286" }, - "releaseTag": "v1.0.1" + "releaseTag": "v1.2.1" }, "costs": { - "version": "1.0.1", + "version": "1.2.1", "description": "Show estimated per-install operational costs: Hetzner VPS, Cloudflare, Vercel, Stripe fees, and installed paid plugin licenses.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/costs-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/costs/tarball", "requires_license": false, "language": "go", @@ -503,7 +503,7 @@ "pluginType": "cli", "binaryName": "nself-costs" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31", "checksums": { "sha256": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31", @@ -517,13 +517,13 @@ } }, "cron": { - "version": "1.0.1", + "version": "1.2.1", "description": "Cron job scheduler. Register jobs with standard cron syntax, execute via HTTP callbacks, track run history.", "category": "automation", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/cron-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cron-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/cron/tarball", "requires_license": false, "tier_pair": true, @@ -552,16 +552,16 @@ "checksums": { "sha256": "2cb08a2843c49c027504499c643b44d6156224d0275e6422e3488705801a665a" }, - "releaseTag": "v1.0.1" + "releaseTag": "v1.2.1" }, "dlq": { - "version": "1.0.1", + "version": "1.2.1", "description": "Manage dead-letter queues for nSelf plugins: re-enqueue rows that failed processing back to the work queue, with safe row limits and dry-run preview.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/dlq-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/dlq/tarball", "requires_license": false, "language": "go", @@ -584,7 +584,7 @@ "pluginType": "cli", "binaryName": "nself-dlq" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96", "checksums": { "sha256": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96", @@ -598,13 +598,13 @@ } }, "dogfood": { - "version": "1.0.1", + "version": "1.2.1", "description": "Production dogfood audit and reporting: 21 read-only checks covering backups, DR, tenancy, licensing, secrets, migrations, monitoring, security, watchdog, and queue health.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/dogfood-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/dogfood/tarball", "requires_license": false, "language": "go", @@ -627,7 +627,7 @@ "pluginType": "cli", "binaryName": "nself-dogfood" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498", "checksums": { "sha256": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498", @@ -641,13 +641,13 @@ } }, "donorbox": { - "version": "1.0.1", + "version": "1.2.1", "description": "Donorbox donation data sync with webhook handling", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/donorbox-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/donorbox-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/donorbox/tarball", "requires_license": false, "language": "go", @@ -680,16 +680,16 @@ "checksums": { "sha256": "b25c64cb98710de42be81aaf257f9db75e153e81f7878ed6c768451e04c192a2" }, - "releaseTag": "v1.0.1" + "releaseTag": "v1.2.1" }, "dr": { - "version": "1.0.1", + "version": "1.2.1", "description": "Disaster recovery: promote a standby, fence the old primary, run drills, and install the systemd units DR needs.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/dr-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/dr/tarball", "requires_license": false, "language": "go", @@ -712,7 +712,7 @@ "pluginType": "cli", "binaryName": "nself-dr" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3", "checksums": { "sha256": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3", @@ -726,13 +726,13 @@ } }, "e2ee": { - "version": "1.0.1", + "version": "1.2.1", "description": "End-to-end encryption key directory: X3DH prekey distribution + Kyber-1024 (ML-KEM-1024) post-quantum prekeys for nchat. Server stores PUBLIC keys only; private keys never leave the client.", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/e2ee-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/e2ee-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/e2ee/tarball", "requires_license": false, "language": "go", @@ -767,20 +767,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "5d995fcd2a876d2ce69e45922c2b0a6cbd99d7edb11a4185ffab8ff2652d2d2e", "checksums": { "sha256": "5d995fcd2a876d2ce69e45922c2b0a6cbd99d7edb11a4185ffab8ff2652d2d2e" } }, "family-gedcom": { - "version": "1.0.1", + "version": "1.2.1", "description": "Generic GEDCOM file importer for the family plugin (PLANNED). Accepts any GEDCOM 5.5.1 / 7.0 file from any provider, with optional photo-folder upload. Free MIT plugin — showcases the core + helper-importer pattern.", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-gedcom-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-gedcom-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-gedcom/tarball", "requires_license": false, "language": "go", @@ -805,20 +805,20 @@ "runtime": "go", "entryPoint": "binary" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "cbf04fc56d0b8121d84da19e9e5e6715fa3f9394e2bda3d02966898199817d81", "checksums": { "sha256": "cbf04fc56d0b8121d84da19e9e5e6715fa3f9394e2bda3d02966898199817d81" } }, "feature-flags": { - "version": "1.0.1", + "version": "1.2.1", "description": "Feature flags service with targeting rules, segments, and evaluation engine", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/feature-flags-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/feature-flags-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/feature-flags/tarball", "requires_license": false, "language": "go", @@ -842,20 +842,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "837ca39444c01f878d42538503afc36f375d80882db08bffde2030e251398531", "checksums": { "sha256": "837ca39444c01f878d42538503afc36f375d80882db08bffde2030e251398531" } }, "federation": { - "version": "1.0.1", + "version": "1.2.1", "description": "Manage GraphQL Federation: compose an Apollo Router supergraph from installed plugin subgraphs, check subgraph health, and introspect the composed schema.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/federation-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/federation/tarball", "requires_license": false, "language": "go", @@ -878,7 +878,7 @@ "pluginType": "cli", "binaryName": "nself-federation" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d", "checksums": { "sha256": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d", @@ -892,13 +892,13 @@ } }, "flags": { - "version": "1.0.1", + "version": "1.2.1", "description": "Manage feature flags served by the feature-flags plugin: list, get, set, history, canary rollouts and kill switches.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/flags-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/flags/tarball", "requires_license": false, "language": "go", @@ -920,7 +920,7 @@ "pluginType": "cli", "binaryName": "nself-flags" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b", "checksums": { "sha256": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b", @@ -934,13 +934,13 @@ } }, "forgejo": { - "version": "1.0.1", + "version": "1.2.1", "description": "Self-hosted Forgejo git forge + Forgejo Actions runner. Provides offline CI that executes .github/workflows/*.yml YAML on self-hosted compute — zero GitHub Actions quota consumed. Designed for the ops profile (ops server on staging/prod).", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/forgejo-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/forgejo-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/forgejo/tarball", "requires_license": false, "language": "config", @@ -965,20 +965,20 @@ "runtime": "docker", "entryPoint": "docker-compose.plugin.yml" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "f818e08355c4eaec6fd0add1f46674e6fdd455fa2c2d0f3855f044e871f859e8", "checksums": { "sha256": "f818e08355c4eaec6fd0add1f46674e6fdd455fa2c2d0f3855f044e871f859e8" } }, "gateway": { - "version": "1.0.1", + "version": "1.2.1", "description": "Manage the nSelf AI gateway (nself-ai-gateway, port 3761): service health, provider key vault, quota usage, and routing rules.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/gateway-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/gateway/tarball", "requires_license": false, "language": "go", @@ -1000,7 +1000,7 @@ "pluginType": "cli", "binaryName": "nself-gateway" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b", "checksums": { "sha256": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b", @@ -1014,13 +1014,13 @@ } }, "gauth": { - "version": "1.0.1", + "version": "1.2.1", "description": "Manage Google OAuth tokens for nSelf AI services: status, refresh, and revoke against plugin-gauth.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/gauth-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/gauth/tarball", "requires_license": false, "language": "go", @@ -1042,7 +1042,7 @@ "pluginType": "cli", "binaryName": "nself-gauth" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369", "checksums": { "sha256": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369", @@ -1056,13 +1056,13 @@ } }, "gdpr": { - "version": "1.0.1", + "version": "1.2.1", "description": "GDPR data portability (Art. 20) and right-to-erasure (Art. 17) tools for self-hosted nSelf instances.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/gdpr-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/gdpr/tarball", "requires_license": false, "language": "go", @@ -1086,7 +1086,7 @@ "pluginType": "cli", "binaryName": "nself-gdpr" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88", "checksums": { "sha256": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88", @@ -1100,13 +1100,13 @@ } }, "github": { - "version": "1.0.1", + "version": "1.2.1", "description": "GitHub repository, issue, and workflow integration", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/github-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/github-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/github/tarball", "requires_license": false, "language": "go", @@ -1152,20 +1152,20 @@ "runtime": "go", "entryPoint": "nself-github" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "2249b35287164a57769bf437951f8e5720e76adbc5060c7ab30d76b8e5396554", "checksums": { "sha256": "2249b35287164a57769bf437951f8e5720e76adbc5060c7ab30d76b8e5396554" } }, "github-runner": { - "version": "1.0.1", + "version": "1.2.1", "description": "GitHub Actions self-hosted runner. Registers with your GitHub org and picks up CI jobs tagged `runs-on: ubuntu-latest` — enabling private repos to run CI without GitHub-hosted runners.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/github-runner-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/github-runner-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/github-runner/tarball", "requires_license": false, "language": "go", @@ -1188,20 +1188,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "812ed28c5375ec45057462a582a086228754fc90579bc26307a3ae99adb2dead", "checksums": { "sha256": "812ed28c5375ec45057462a582a086228754fc90579bc26307a3ae99adb2dead" } }, "infra": { - "version": "1.0.1", + "version": "1.2.1", "description": "Provision nSelf infrastructure with Terraform: plan, apply and destroy modules for aws, gcp, azure, hetzner, do and linode.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/infra-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/infra/tarball", "requires_license": false, "language": "go", @@ -1227,7 +1227,7 @@ "pluginType": "cli", "binaryName": "nself-infra" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20", "checksums": { "sha256": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20", @@ -1241,13 +1241,13 @@ } }, "invitations": { - "version": "1.0.1", + "version": "1.2.1", "description": "Invitation management system with email/SMS delivery and tracking", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/invitations-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/invitations-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/invitations/tarball", "requires_license": false, "language": "go", @@ -1271,20 +1271,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "4789b2293589617ccadb3bf0cff64c816eb40c16ac88a6e971f60bbbaf13b36d", "checksums": { "sha256": "4789b2293589617ccadb3bf0cff64c816eb40c16ac88a6e971f60bbbaf13b36d" } }, "jobs": { - "version": "1.0.1", + "version": "1.2.1", "description": "PostgreSQL-backed background job queue with priorities, scheduling, retries, and REST API. Simplified Go implementation using database polling instead of Redis/BullMQ.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/jobs-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/jobs-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/jobs/tarball", "requires_license": false, "language": "go", @@ -1309,20 +1309,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "36e9a5ae3626ae392a93054ce59be209c5e0aed18bec33559fd781a632f88f96", "checksums": { "sha256": "36e9a5ae3626ae392a93054ce59be209c5e0aed18bec33559fd781a632f88f96" } }, "k8s": { - "version": "1.0.1", + "version": "1.2.1", "description": "Deploy and manage nSelf on any Kubernetes cluster via the official Helm chart: install, upgrade, and status commands wrapping helm.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/k8s-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/k8s/tarball", "requires_license": false, "language": "go", @@ -1345,7 +1345,7 @@ "pluginType": "cli", "binaryName": "nself-k8s" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed", "checksums": { "sha256": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed", @@ -1359,13 +1359,13 @@ } }, "link-preview": { - "version": "1.0.1", + "version": "1.2.1", "description": "URL metadata extraction with Open Graph, Twitter Cards, and caching", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/link-preview-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/link-preview-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/link-preview/tarball", "requires_license": false, "language": "go", @@ -1389,20 +1389,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "18396b5a1b3f6a914557f96a03994d0bb889647a64feb17688ff8445efea8e4b", "checksums": { "sha256": "18396b5a1b3f6a914557f96a03994d0bb889647a64feb17688ff8445efea8e4b" } }, "maintenance": { - "version": "1.0.1", + "version": "1.2.1", "description": "Maintenance utilities: disk cleanup, log rotation and the maintenance scheduler.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/maintenance-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/maintenance/tarball", "requires_license": false, "language": "go", @@ -1435,16 +1435,16 @@ "windows-amd64": "12982d3775323f4af2d8d10755f86d71d244cc8179eca6eec70196b2514fe5d0" } }, - "releaseTag": "v1.0.1" + "releaseTag": "v1.2.1" }, "mdns": { - "version": "1.0.1", + "version": "1.2.1", "description": "mDNS/Bonjour service discovery for zero-config LAN advertising", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/mdns-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mdns-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/mdns/tarball", "requires_license": false, "language": "go", @@ -1468,20 +1468,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "427df3ebb91a2162599add09b8fde145901b781da11fbe3d7ed6746ce1dfa995", "checksums": { "sha256": "427df3ebb91a2162599add09b8fde145901b781da11fbe3d7ed6746ce1dfa995" } }, "mlflow": { - "version": "1.0.1", + "version": "1.2.1", "description": "MLflow experiment tracking and model registry", "category": "data", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/mlflow-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mlflow-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/mlflow/tarball", "requires_license": false, "language": "go", @@ -1503,20 +1503,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "cddc0c0c7005b2b35160f01e23c9c12d78fbb457730a362c08f0f3ea29456194", "checksums": { "sha256": "cddc0c0c7005b2b35160f01e23c9c12d78fbb457730a362c08f0f3ea29456194" } }, "model": { - "version": "1.0.1", + "version": "1.2.1", "description": "Manage local AI models via Ollama: list, pull, remove, update, benchmark, plus the legacy ollama command tree.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/model-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/model/tarball", "requires_license": false, "language": "go", @@ -1538,7 +1538,7 @@ "pluginType": "cli", "binaryName": "nself-model" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794", "checksums": { "sha256": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794", @@ -1552,13 +1552,13 @@ } }, "monitor": { - "version": "1.0.1", + "version": "1.2.1", "description": "Monitoring stack management: upgrade the bundled Grafana dashboards.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/monitor-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/monitor/tarball", "requires_license": false, "language": "go", @@ -1581,7 +1581,7 @@ "pluginType": "cli", "binaryName": "nself-monitor" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a", "checksums": { "sha256": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a", @@ -1595,13 +1595,13 @@ } }, "monitoring": { - "version": "1.0.1", + "version": "1.2.1", "description": "Full monitoring stack: Prometheus, Grafana, Loki, Promtail, Tempo, Alertmanager, and exporters", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/monitoring-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitoring-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/monitoring/tarball", "requires_license": false, "language": "config", @@ -1628,20 +1628,20 @@ "runtime": "compose", "entryPoint": "docker-compose.plugin.yml" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "6d9fbb34cea12b625955a49c2474450cb8704119249d57d95ff4bf1a183df88d", "checksums": { "sha256": "6d9fbb34cea12b625955a49c2474450cb8704119249d57d95ff4bf1a183df88d" } }, "notifications": { - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-channel notification service. Channels: Email (SMTP), Push (placeholder), SMS (placeholder). HTTP endpoints for sending notifications, managing templates, and user notification preferences.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/notifications-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/notifications-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/notifications/tarball", "requires_license": false, "language": "go", @@ -1671,16 +1671,16 @@ "checksums": { "sha256": "dfcb4b63140ba3b92903c3b61467c1c22b6fcf175fd255d81ab41dc20c8687dd" }, - "releaseTag": "v1.0.1" + "releaseTag": "v1.2.1" }, "notify": { - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-channel notification service. Channels: Email (SMTP), Webhook (HMAC-signed). HTTP endpoints for sending notifications, managing templates, and viewing delivery history.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/notify-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/notify-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/notify/tarball", "requires_license": false, "tier_pair": true, @@ -1708,16 +1708,16 @@ "checksums": { "sha256": "ed66f58a66cb2c7a715eb534a2bd6b6a1bcbec6d3a4b118b8f53513a894a1c34" }, - "releaseTag": "v1.0.1" + "releaseTag": "v1.2.1" }, "ollama": { - "version": "1.1.1", + "version": "1.2.1", "description": "One-click offline LLM stack. Stands up an Ollama container, auto-pulls gemma-3-4b on first start, and registers as a provider in plugin-ai. All nSelf AI features route through Ollama when NSELF_AI_PROVIDER=ollama. Zero cloud dependency, zero API key, zero usage cost after install.", "category": "integrations", "tier": "free", "license": "Source-Available", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.1.1/ollama-1.1.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ollama-1.2.1.tar.gz", "download_url": "https://ping.nself.org/plugins/ollama/download", "requires_license": false, "language": "go", @@ -1736,16 +1736,16 @@ "checksums": { "sha256": "affe917f8d212725db3ed2852ef0cc6b4513fac701406e4bf2774dbcb869d52f" }, - "releaseTag": "v1.1.1" + "releaseTag": "v1.2.1" }, "paypal": { - "version": "1.0.1", + "version": "1.2.1", "description": "PayPal payment data sync with webhook handling", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/paypal-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/paypal-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/paypal/tarball", "requires_license": false, "language": "go", @@ -1781,20 +1781,20 @@ "runtime": "go", "entryPoint": "nself-paypal" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "e51790ab52ccf1515d1cd8e266d393517de564f31480cd9245243cd6340e2be8", "checksums": { "sha256": "e51790ab52ccf1515d1cd8e266d393517de564f31480cd9245243cd6340e2be8" } }, "push": { - "version": "1.0.1", + "version": "1.2.1", "description": "APNs + FCM push notification relay. Hasura event-trigger fan-out, delivery state tracking, exponential backoff retry. Handles iOS (Apple Push Notification service) and Android (Firebase Cloud Messaging v1 API).", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/push-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/push-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/push/tarball", "requires_license": false, "language": "go", @@ -1822,20 +1822,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "9fe3a18eda502ac0a6752e4bf1c49fc656b680ca1fd9035a22cdba5a5b24d58a", "checksums": { "sha256": "9fe3a18eda502ac0a6752e4bf1c49fc656b680ca1fd9035a22cdba5a5b24d58a" } }, "queue": { - "version": "1.0.1", + "version": "1.2.1", "description": "Inspect and manage nSelf background job queues: depth, stuck jobs, retries and purges.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/queue-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/queue/tarball", "requires_license": false, "language": "go", @@ -1857,7 +1857,7 @@ "pluginType": "cli", "binaryName": "nself-queue" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626", "checksums": { "sha256": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626", @@ -1871,13 +1871,13 @@ } }, "region": { - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-region management: add replica regions, list and inspect their status, and promote a region to primary.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/region-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/region/tarball", "requires_license": false, "language": "go", @@ -1900,7 +1900,7 @@ "pluginType": "cli", "binaryName": "nself-region" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc", "checksums": { "sha256": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc", @@ -1914,13 +1914,13 @@ } }, "release": { - "version": "1.0.1", + "version": "1.2.1", "description": "Orchestrate the nSelf project's own 12-step release cascade: tag and release cli and plugins-pro, build and push the admin image, and open the Homebrew formula PR.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/release-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/release/tarball", "requires_license": false, "language": "go", @@ -1943,7 +1943,7 @@ "pluginType": "cli", "binaryName": "nself-release" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8", "checksums": { "sha256": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8", @@ -1957,13 +1957,13 @@ } }, "search": { - "version": "1.0.1", + "version": "1.2.1", "description": "Full-text search engine with PostgreSQL FTS and MeiliSearch support", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/search-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/search-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/search/tarball", "requires_license": false, "language": "go", @@ -1998,16 +1998,16 @@ "checksums": { "sha256": "f5ad32a815f4edc9d4f350314f51e6b1a35e424d0a2259181f52a30c7e907c41" }, - "releaseTag": "v1.0.1" + "releaseTag": "v1.2.1" }, "sentry-cli": { - "version": "1.0.1", + "version": "1.2.1", "description": "ɳSentry operations: monitors, incidents, status pages, alerts, cloud login, and provisioning a self-hosted sentry server.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/sentry-cli-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/sentry-cli/tarball", "requires_license": false, "language": "go", @@ -2041,7 +2041,7 @@ "description": "Provision and manage a self-hosted ɳSentry server" } ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f", "checksums": { "sha256": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f", @@ -2055,13 +2055,13 @@ } }, "shopify": { - "version": "1.0.1", + "version": "1.2.1", "description": "Shopify store, orders, and product synchronization", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/shopify-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/shopify-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/shopify/tarball", "requires_license": false, "language": "go", @@ -2092,20 +2092,20 @@ "runtime": "go", "entryPoint": "nself-shopify" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "ccee3978999fea81981d8ca6c83c4a6bc52ebd61557efe1ff6016f0ffbfce56f", "checksums": { "sha256": "ccee3978999fea81981d8ca6c83c4a6bc52ebd61557efe1ff6016f0ffbfce56f" } }, "soak": { - "version": "1.0.1", + "version": "1.2.1", "description": "Manage soak testing lifecycle: abort an active soak and roll back to a prior version.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/soak-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/soak/tarball", "requires_license": false, "language": "go", @@ -2127,7 +2127,7 @@ "pluginType": "cli", "binaryName": "nself-soak" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee", "checksums": { "sha256": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee", @@ -2141,13 +2141,13 @@ } }, "stripe": { - "version": "1.0.1", + "version": "1.2.1", "description": "Stripe billing data sync with webhook handling", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/stripe-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/stripe-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/stripe/tarball", "requires_license": false, "language": "go", @@ -2193,20 +2193,20 @@ "runtime": "go", "entryPoint": "nself-stripe" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "1333b4119fe65b099d7cc614577c4171848f86b1c83f10b456fac08faf263100", "checksums": { "sha256": "1333b4119fe65b099d7cc614577c4171848f86b1c83f10b456fac08faf263100" } }, "subtitle-manager": { - "version": "1.0.1", + "version": "1.2.1", "description": "Subtitle search, download, and sync verification via OpenSubtitles", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/subtitle-manager-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/subtitle-manager-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/subtitle-manager/tarball", "requires_license": false, "language": "go", @@ -2244,20 +2244,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "bef3fdb2502141e0c25219ded69d704e923759b268b88b58514a8ae19a1a6e80", "checksums": { "sha256": "bef3fdb2502141e0c25219ded69d704e923759b268b88b58514a8ae19a1a6e80" } }, "tenant": { - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-tenant operations: create, suspend, upgrade and destroy tenants, plus per-tenant usage metering and billing reports.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/tenant-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/tenant/tarball", "requires_license": false, "language": "go", @@ -2290,7 +2290,7 @@ "description": "Per-tenant usage metering, invoices and billing reports" } ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae", "checksums": { "sha256": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae", @@ -2304,13 +2304,13 @@ } }, "tokens": { - "version": "1.0.1", + "version": "1.2.1", "description": "Secure content delivery tokens, HLS encryption key management, and entitlement checks", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/tokens-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tokens-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/tokens/tarball", "requires_license": false, "language": "go", @@ -2339,20 +2339,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "2e5cd40780b4ad27479ffd59e56e839b40f5cac119eebe6456a0501bc426562f", "checksums": { "sha256": "2e5cd40780b4ad27479ffd59e56e839b40f5cac119eebe6456a0501bc426562f" } }, "torrent-manager": { - "version": "1.0.1", + "version": "1.2.1", "description": "Torrent downloading with Transmission/qBittorrent integration, multi-source search, seeding policies, and VPN enforcement", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/torrent-manager-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/torrent-manager-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/torrent-manager/tarball", "requires_license": false, "language": "go", @@ -2402,20 +2402,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "792ec903947aa318983772cb61058a02eefce68f6321fad5ae2f7ae772a0eeae", "checksums": { "sha256": "792ec903947aa318983772cb61058a02eefce68f6321fad5ae2f7ae772a0eeae" } }, "vpn": { - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-provider VPN management (NordVPN, PIA, Mullvad) with P2P optimization, server carousel, kill switch, and leak protection. Torrent download forwarding requires the torrent-manager plugin.", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/vpn-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/vpn-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/vpn/tarball", "requires_license": false, "language": "go", @@ -2445,20 +2445,20 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "ae0484724af35ce5a2405b9b4310f5ebe697c4383dced62286f30b2308227886", "checksums": { "sha256": "ae0484724af35ce5a2405b9b4310f5ebe697c4383dced62286f30b2308227886" } }, "waf": { - "version": "1.0.1", + "version": "1.2.1", "description": "Web Application Firewall management: enable Coraza with the OWASP Core Rule Set, switch between detection and blocking mode, and review recent WAF events.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/waf-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/waf/tarball", "requires_license": false, "language": "go", @@ -2481,7 +2481,7 @@ "pluginType": "cli", "binaryName": "nself-waf" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542", "checksums": { "sha256": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542", @@ -2495,13 +2495,13 @@ } }, "watchdog": { - "version": "1.0.1", + "version": "1.2.1", "description": "Self-healing container watchdog with circuit breaker: status, resets, event history, and TG/email escalation alerts.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/watchdog-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/watchdog/tarball", "requires_license": false, "language": "go", @@ -2524,7 +2524,7 @@ "pluginType": "cli", "binaryName": "nself-watchdog" }, - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f", "checksums": { "sha256": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f", @@ -2538,13 +2538,13 @@ } }, "webhooks": { - "version": "1.0.1", + "version": "1.2.1", "description": "Outbound webhook delivery service with retry logic, HMAC signing, and dead-letter queue", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "0.9.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/webhooks-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/webhooks/tarball", "requires_license": false, "language": "go", @@ -2571,20 +2571,20 @@ "bundles": [ "task" ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "0ee5c202f4456c3aca514ab79b706aef36d0032a4a56595e925c0f51c2a93223", "checksums": { "sha256": "0ee5c202f4456c3aca514ab79b706aef36d0032a4a56595e925c0f51c2a93223" } }, "access-controls": { - "version": "1.0.1", + "version": "1.2.1", "description": "Role-based and attribute-based access control (RBAC + ABAC) with policy engine", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/access-controls-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/access-controls-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/access-controls/tarball", "requires_license": false, "language": "go", @@ -2601,20 +2601,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "6e9d3966a4588ce1c2d7a10c0f5c48f64015c68fc80a648ad7392c81223e8530", "checksums": { "sha256": "6e9d3966a4588ce1c2d7a10c0f5c48f64015c68fc80a648ad7392c81223e8530" } }, "admin-api": { - "version": "1.0.1", + "version": "1.2.1", "description": "Admin API service providing aggregated metrics, system health, session counts, storage breakdown, and real-time dashboard endpoints", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/admin-api-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/admin-api-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/admin-api/tarball", "requires_license": false, "language": "go", @@ -2630,20 +2630,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "3c9ba5681c326ed0d3d3cfc1d4d64b1e215ad69e8202bbc1d5221e1ee1a45be5", "checksums": { "sha256": "3c9ba5681c326ed0d3d3cfc1d4d64b1e215ad69e8202bbc1d5221e1ee1a45be5" } }, "analytics": { - "version": "1.0.1", + "version": "1.2.1", "description": "Event tracking, counters, funnels, and quota management analytics engine", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/analytics-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/analytics-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/analytics/tarball", "requires_license": false, "language": "go", @@ -2659,20 +2659,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "24731bcf900ecb1e0c4910f29559f7f0b34e94e9775f2aafe7c8841f00761b74", "checksums": { "sha256": "24731bcf900ecb1e0c4910f29559f7f0b34e94e9775f2aafe7c8841f00761b74" } }, "audit-analytics": { - "version": "1.0.1", + "version": "1.2.1", "description": "Advanced audit analytics over np_audit_log: anomaly detection (z-score baseline), user behaviour heatmaps, privileged-action review queue, and webhook/email alerts.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/audit-analytics-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-analytics-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/audit-analytics/tarball", "requires_license": false, "language": "go", @@ -2692,20 +2692,20 @@ "author": "nself", "minNselfVersion": "1.0.9", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "5b04e63cbf0fc749e821c746b4e6324b77af6dab33142a874bbd05ba243319da", "checksums": { "sha256": "5b04e63cbf0fc749e821c746b4e6324b77af6dab33142a874bbd05ba243319da" } }, "auth-enterprise": { - "version": "1.0.1", + "version": "1.2.1", "description": "MFA enforcement (TOTP + WebAuthn policy) and SSO via SAML 2.0 and OIDC for Google Workspace, Okta, and Microsoft Entra ID.", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/auth-enterprise-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/auth-enterprise-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/auth-enterprise/tarball", "requires_license": false, "language": "go", @@ -2715,20 +2715,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "30489ebbaf7b4ef63c7ec0e073ca5f228f5e8ee91f91bd16b434f305e9ecbedd", "checksums": { "sha256": "30489ebbaf7b4ef63c7ec0e073ca5f228f5e8ee91f91bd16b434f305e9ecbedd" } }, "byok": { - "version": "1.0.1", + "version": "1.2.1", "description": "Bring Your Own Key (BYOK) per-tenant encryption. Envelope encryption with customer-managed keys (CMK) via AWS KMS, GCP Cloud KMS, or HashiCorp Vault Transit. DEK wrapped by CMK. Satisfies HIPAA, FedRAMP High, FFIEC, and DORA key-control requirements. Enterprise-only.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/byok-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/byok-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/byok/tarball", "requires_license": false, "language": "go", @@ -2749,20 +2749,20 @@ "author": "nself", "minNselfVersion": "1.0.9", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "3069a7d9a2797069881476d8fdc7ee51de79c761acc1249ad9070b851ff6b191", "checksums": { "sha256": "3069a7d9a2797069881476d8fdc7ee51de79c761acc1249ad9070b851ff6b191" } }, "cdc": { - "version": "1.0.1", + "version": "1.2.1", "description": "Change Data Capture — streams Postgres WAL events to downstream consumers via webhooks or message queues.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/cdc-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cdc-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/cdc/tarball", "requires_license": false, "language": "go", @@ -2778,20 +2778,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "b81f8530b1b42d81a2ecb5064581ac4f84cef01c5b6616b5b86489b28e5eabbe", "checksums": { "sha256": "b81f8530b1b42d81a2ecb5064581ac4f84cef01c5b6616b5b86489b28e5eabbe" } }, "cdn": { - "version": "1.0.1", + "version": "1.2.1", "description": "CDN management and integration plugin - cache purging, signed URLs. Planned: analytics sync from Cloudflare/BunnyCDN", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/cdn-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cdn-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/cdn/tarball", "requires_license": false, "language": "go", @@ -2807,20 +2807,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "09d3af8e778af8d12017c8780305036648fe26bc2ea71d9108e67a1d39383a04", "checksums": { "sha256": "09d3af8e778af8d12017c8780305036648fe26bc2ea71d9108e67a1d39383a04" } }, "cloudflare": { - "version": "1.0.1", + "version": "1.2.1", "description": "Cloudflare zone, DNS, R2, cache, and analytics management", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/cloudflare-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cloudflare-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/cloudflare/tarball", "requires_license": false, "language": "go", @@ -2837,20 +2837,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "a5af1c0d901bfa883b56f69f20ad523014746916da144e5ffb50f59ea795c8cd", "checksums": { "sha256": "a5af1c0d901bfa883b56f69f20ad523014746916da144e5ffb50f59ea795c8cd" } }, "compliance": { - "version": "1.0.1", + "version": "1.2.1", "description": "Comprehensive compliance and audit platform with GDPR/CCPA/HIPAA/SOC2/PCI management, DSARs, consent tracking, data retention, breach notification, immutable audit logging, SIEM integration, and compliance reporting", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/compliance-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/compliance-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/compliance/tarball", "requires_license": false, "language": "go", @@ -2876,20 +2876,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "90c1a11d71c0d7cb2fbc66da981c4a6cef1971268998d0deb726d7f697a7ae97", "checksums": { "sha256": "90c1a11d71c0d7cb2fbc66da981c4a6cef1971268998d0deb726d7f697a7ae97" } }, "content-safety": { - "version": "1.0.1", + "version": "1.2.1", "description": "Trust-safety evidence, legal holds, spam detection, raid protection, and abuse scoring", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/content-safety-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/content-safety-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/content-safety/tarball", "requires_license": false, "language": "go", @@ -2906,20 +2906,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "0bd848955d59d7472a826e65a8d7e5b0778d78c482cda5574576c2484d91081e", "checksums": { "sha256": "0bd848955d59d7472a826e65a8d7e5b0778d78c482cda5574576c2484d91081e" } }, "crdt": { - "version": "1.0.1", + "version": "1.2.1", "description": "CRDT offline-first primitives. Self-hosted Yjs (y-websocket protocol) and automerge sync server with Postgres persistence. Drop-in replacement for Liveblocks/PartyKit with zero extra infra.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/crdt-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/crdt-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/crdt/tarball", "requires_license": false, "language": "go", @@ -2938,20 +2938,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "592b535e6331bd1d8241cbf138cefaae8de5e1b1683b6bb86fb77fbc685db402", "checksums": { "sha256": "592b535e6331bd1d8241cbf138cefaae8de5e1b1683b6bb86fb77fbc685db402" } }, "ddns": { - "version": "1.0.1", + "version": "1.2.1", "description": "Dynamic DNS plugin with external IP monitoring. Planned: DNS provider API integration (Cloudflare, Route53) for automated record updates", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/ddns-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ddns-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/ddns/tarball", "requires_license": false, "language": "go", @@ -2968,20 +2968,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "df8d74fbcf27336bdcfc25371865c905e1b972cec93ef7ce339bce3801d7be7c", "checksums": { "sha256": "df8d74fbcf27336bdcfc25371865c905e1b972cec93ef7ce339bce3801d7be7c" } }, "devices": { - "version": "1.0.1", + "version": "1.2.1", "description": "IoT device enrollment, trust management, and command dispatch service.", "category": "streaming", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/devices-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/devices-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/devices/tarball", "requires_license": false, "language": "go", @@ -2998,20 +2998,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "d63bbb38f214d7a126dbe6251088511f396288c042bf0e6d4ef1c2ff21b69d01", "checksums": { "sha256": "d63bbb38f214d7a126dbe6251088511f396288c042bf0e6d4ef1c2ff21b69d01" } }, "documents": { - "version": "1.0.1", + "version": "1.2.1", "description": "Document management and generation service with templates, versioning, and sharing", "category": "data", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/documents-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/documents-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/documents/tarball", "requires_license": false, "language": "go", @@ -3028,20 +3028,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "4316ffc6541cf1c7a8c0d4b968eaadf03b990580019a8bf3232da4f38dfc60d3", "checksums": { "sha256": "4316ffc6541cf1c7a8c0d4b968eaadf03b990580019a8bf3232da4f38dfc60d3" } }, "email": { - "version": "1.0.1", + "version": "1.2.1", "description": "Transactional email via Elastic Email. Send, template, and track emails.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/email-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/email-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/email/tarball", "requires_license": false, "language": "go", @@ -3051,20 +3051,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "9330c3b0e9ace6613e6ed5edf88c99b03bcbcd1bfb22dec32ddeb403917d41bb", "checksums": { "sha256": "9330c3b0e9ace6613e6ed5edf88c99b03bcbcd1bfb22dec32ddeb403917d41bb" } }, "encryption": { - "version": "1.0.1", + "version": "1.2.1", "description": "Bring Your Own Key (BYOK) per-tenant envelope encryption for nSelf Cloud: AWS KMS, GCP Cloud KMS, and HashiCorp Vault Transit, with key rotation and an audit trail.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/encryption-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/encryption/tarball", "requires_license": false, "language": "go", @@ -3080,20 +3080,20 @@ "author": "nself", "minNselfVersion": "1.2.8", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "83c67d0ced4bae71407601524bcf163d6cd721b04ae3c505e63526928110a03b", "checksums": { "sha256": "83c67d0ced4bae71407601524bcf163d6cd721b04ae3c505e63526928110a03b" } }, "entitlements": { - "version": "1.0.1", + "version": "1.2.1", "description": "Feature gating, subscription plan management, usage quota tracking, and metered billing", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/entitlements-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/entitlements-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/entitlements/tarball", "requires_license": false, "language": "go", @@ -3110,20 +3110,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "5e9445780e78bfb0f04d15f20ffbdbfcf7ae69feca427c46a7b3865b4c197b80", "checksums": { "sha256": "5e9445780e78bfb0f04d15f20ffbdbfcf7ae69feca427c46a7b3865b4c197b80" } }, "event-bus": { - "version": "1.0.1", + "version": "1.2.1", "description": "Internal event bus with pub/sub, fan-out delivery, dead-letter queue, and replay for inter-plugin messaging.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/event-bus-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/event-bus-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/event-bus/tarball", "requires_license": false, "language": "go", @@ -3138,20 +3138,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "818b61f997ef6052f915e96fc59ab288006455f8523c13dc6f5b087481cfeb98", "checksums": { "sha256": "818b61f997ef6052f915e96fc59ab288006455f8523c13dc6f5b087481cfeb98" } }, "family-ancestry": { - "version": "1.0.1", + "version": "1.2.1", "description": "Ancestry.com → nFamily migration helper (PLANNED). Imports profiles, photos, documents, sources into the family plugin. Pattern mirrors family-geni.", "category": "social", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-ancestry-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-ancestry-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-ancestry/tarball", "requires_license": false, "language": "go", @@ -3168,20 +3168,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "ef05c58b911c37f00d1c1f1feaa84bf4ed0a6742cfe388297e35110a157b72a4", "checksums": { "sha256": "ef05c58b911c37f00d1c1f1feaa84bf4ed0a6742cfe388297e35110a157b72a4" } }, "family-familysearch": { - "version": "1.0.1", + "version": "1.2.1", "description": "FamilySearch → nFamily migration helper (PLANNED). Free public API from FamilySearch (LDS). Lowest-friction next-step importer after family-geni.", "category": "social", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-familysearch-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-familysearch-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-familysearch/tarball", "requires_license": false, "language": "go", @@ -3199,20 +3199,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "31fe27efc8875036dbdc17e43ac36906fc27de38706086954fb6af7cf9d8a751", "checksums": { "sha256": "31fe27efc8875036dbdc17e43ac36906fc27de38706086954fb6af7cf9d8a751" } }, "family-myheritage": { - "version": "1.0.1", + "version": "1.2.1", "description": "MyHeritage → nFamily migration helper (PLANNED). MyHeritage is Geni.com's parent company — lowest legal risk, potential partnership path.", "category": "social", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-myheritage-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-myheritage-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-myheritage/tarball", "requires_license": false, "language": "go", @@ -3229,20 +3229,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "e88fca02f8ed544aab0695e2e462cc7a5ea552f07a639461c07981758187790e", "checksums": { "sha256": "e88fca02f8ed544aab0695e2e462cc7a5ea552f07a639461c07981758187790e" } }, "family-wikitree": { - "version": "1.0.1", + "version": "1.2.1", "description": "WikiTree → nFamily migration helper (PLANNED). WikiTree is a free public genealogy wiki with a REST API (Apps API).", "category": "social", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/family-wikitree-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-wikitree-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/family-wikitree/tarball", "requires_license": false, "language": "go", @@ -3259,20 +3259,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "a7c494f0fc166a880d17efdade77a56500428c29ff142cd96239e1782ba83a25", "checksums": { "sha256": "a7c494f0fc166a880d17efdade77a56500428c29ff142cd96239e1782ba83a25" } }, "functions-v8": { - "version": "1.0.1", + "version": "1.2.1", "description": "Edge Functions V8 Runtime. Deploy short-lived TypeScript functions with a Deno V8 isolate pool. HTTP-trigger, <50ms cold-start, allowlist-only env injection, Prometheus metrics, SSE log streaming.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/functions-v8-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/functions-v8-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/functions-v8/tarball", "requires_license": false, "language": "go", @@ -3290,20 +3290,20 @@ "author": "nself", "minNselfVersion": "1.0.9", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "f5ca59c1f8b9b484537d58904633250de6505ed13c4a58b67eb1481c68333508", "checksums": { "sha256": "f5ca59c1f8b9b484537d58904633250de6505ed13c4a58b67eb1481c68333508" } }, "hipaa": { - "version": "1.0.1", + "version": "1.2.1", "description": "HIPAA compliance add-on: PHI column registry, PHI access logging with 6-year retention, de-identification helpers (masking + tokenization), encryption-at-rest audit, and BAA workflow.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/hipaa-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/hipaa-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/hipaa/tarball", "requires_license": false, "language": "go", @@ -3322,20 +3322,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "a822f40d2f55e0fa2f327ed8e1abb8b8d06f7060e3b9b37be15ae7c73b4d6fb5", "checksums": { "sha256": "a822f40d2f55e0fa2f327ed8e1abb8b8d06f7060e3b9b37be15ae7c73b4d6fb5" } }, "home": { - "version": "1.0.1", + "version": "1.2.1", "description": "Home automation bridge. Connects Home Assistant and MQTT to ɳSelf, enabling smart device control, state monitoring, scene activation, and command logging.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/home-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/home-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/home/tarball", "requires_license": false, "language": "go", @@ -3351,20 +3351,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "b516901b055cbf661cb93d8067d049ed09f2db42f142958235ae489ff8531be1", "checksums": { "sha256": "b516901b055cbf661cb93d8067d049ed09f2db42f142958235ae489ff8531be1" } }, "idme": { - "version": "1.0.1", + "version": "1.2.1", "description": "ID.me OAuth authentication with government-grade identity verification for 7 groups", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/idme-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/idme-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/idme/tarball", "requires_license": false, "language": "go", @@ -3382,20 +3382,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "c830f4c19b0e4e44353b54dabfff1e3185d615577fd21f21590465eea9ff28ba", "checksums": { "sha256": "c830f4c19b0e4e44353b54dabfff1e3185d615577fd21f21590465eea9ff28ba" } }, "job-queue": { - "version": "1.0.1", + "version": "1.2.1", "description": "Durable background job queue with priorities, retries, scheduled execution, and per-job progress tracking.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/job-queue-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/job-queue-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/job-queue/tarball", "requires_license": false, "language": "go", @@ -3410,20 +3410,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "e2831cd3c06444ce9f0976ab965b066d3cee91d5608d9c3fe0b15421f45fdae2", "checksums": { "sha256": "e2831cd3c06444ce9f0976ab965b066d3cee91d5608d9c3fe0b15421f45fdae2" } }, "linkedin": { - "version": "1.0.1", + "version": "1.2.1", "description": "LinkedIn publishing integration. OAuth 2.0 connection, post to LinkedIn feed with optional image attachments, post history, and Claw tool descriptor.", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/linkedin-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/linkedin-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/linkedin/tarball", "requires_license": false, "language": "go", @@ -3439,20 +3439,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "761d4027be619d52f72925b5f260dde6eb8d8bcc28b32ef7d67ea2afe644fb15", "checksums": { "sha256": "761d4027be619d52f72925b5f260dde6eb8d8bcc28b32ef7d67ea2afe644fb15" } }, "mail": { - "version": "1.0.1", + "version": "1.2.1", "description": "Send transactional and broadcast email through the nSelf stack: mux + Postmark pipeline via ping_api, template management, and DKIM verification.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/mail-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/mail/tarball", "requires_license": false, "language": "go", @@ -3468,20 +3468,20 @@ "author": "nself", "minNselfVersion": "1.2.8", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "a547a631637d4d1c2cad1cc960ec1796e14b59178973b7c54e7dd9c34265f0d8", "checksums": { "sha256": "a547a631637d4d1c2cad1cc960ec1796e14b59178973b7c54e7dd9c34265f0d8" } }, "meetings": { - "version": "1.0.1", + "version": "1.2.1", "description": "Calendar integration and meeting management with room booking, recurring meetings, and availability tracking. External calendar sync (Google/Outlook) planned for future release.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/meetings-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/meetings-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/meetings/tarball", "requires_license": false, "language": "go", @@ -3499,20 +3499,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "6f49a02a07ada9bb72daffdf70e06da92caf71a95b2ec05d413fa60b2f4c99a0", "checksums": { "sha256": "6f49a02a07ada9bb72daffdf70e06da92caf71a95b2ec05d413fa60b2f4c99a0" } }, "nself-cloud": { - "version": "1.0.1", + "version": "1.2.1", "description": "Internal ɳCloud managed hosting infrastructure plugin — provisions isolated nSelf instances for Cloud customers", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-cloud-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-cloud-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-cloud/tarball", "requires_license": false, "language": "go", @@ -3527,20 +3527,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "81d6ad39e3ef18c2812f1a664d1c13ceb6940159b556f56f63d60af227f624ea", "checksums": { "sha256": "81d6ad39e3ef18c2812f1a664d1c13ceb6940159b556f56f63d60af227f624ea" } }, "nself-eval-gate": { - "version": "1.0.1", + "version": "1.2.1", "description": "Eval harness and autonomy-tier gate for nSelf. Three-mode scoring (exact, semantic via BGE-M3, rubric via LLM-as-judge), recall-quality precision/recall/fact_f1 metrics, CI integration via nself ci eval, and autonomy-tier threshold enforcement.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-eval-gate-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-eval-gate-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-eval-gate/tarball", "requires_license": false, "language": "go", @@ -3556,20 +3556,20 @@ "author": "nself", "minNselfVersion": "1.1.1", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "fd1287c644e3c60d29038c68c62e7e20bc15d5f407fe59cc10c9b1862514dba1", "checksums": { "sha256": "fd1287c644e3c60d29038c68c62e7e20bc15d5f407fe59cc10c9b1862514dba1" } }, "nself-geo": { - "version": "1.0.1", + "version": "1.2.1", "description": "Forward and reverse geocoding with provider-agnostic caching layer. Nominatim (free, OSM) is the default; Google Places and Mapbox are premium fallbacks. Exposes geocodeAddress, reverseGeocode, geocodeBatch, clearGeoCache via Hasura Remote Schema.", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-geo-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-geo-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-geo/tarball", "requires_license": false, "language": "go", @@ -3586,20 +3586,20 @@ "author": "nself", "minNselfVersion": "1.1.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "48367db3d350895d27fe742237d89ebd1c0210ecca1e2285c78e237cc1d507e5", "checksums": { "sha256": "48367db3d350895d27fe742237d89ebd1c0210ecca1e2285c78e237cc1d507e5" } }, "nself-image": { - "version": "1.0.1", + "version": "1.2.1", "description": "Server-side image processing plugin for nSelf: resize, crop, format conversion (WebP/AVIF/JPEG/PNG), EXIF strip, and MinIO-integrated upload pipeline. Replaces per-app Sharp/Node.js usage across nFamily, nChat, and any consumer app needing image normalization.", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.2.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-image-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-image-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-image/tarball", "requires_license": false, "language": "rust", @@ -3621,20 +3621,20 @@ "author": "nself", "minNselfVersion": "1.2.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "a664b5853c5df24ceaa0fea75a59da1aac25e7c07a596fa2d69f2ca4b873f1d0", "checksums": { "sha256": "a664b5853c5df24ceaa0fea75a59da1aac25e7c07a596fa2d69f2ca4b873f1d0" } }, "nself-pdf": { - "version": "1.0.1", + "version": "1.2.1", "description": "Server-side PDF generation from HTML templates (Handlebars/Nunjucks) with MinIO output and Hasura Action trigger", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-pdf-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-pdf-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-pdf/tarball", "requires_license": false, "language": "go", @@ -3653,20 +3653,20 @@ "author": "nself", "minNselfVersion": "1.1.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "3ddade984c51555b8ee81aa83c1b5e2fcf9f7c9f3d09562e102f573e9de597df", "checksums": { "sha256": "3ddade984c51555b8ee81aa83c1b5e2fcf9f7c9f3d09562e102f573e9de597df" } }, "nself-scan": { - "version": "1.0.1", + "version": "1.2.1", "description": "Server-side file scanning for MinIO uploads: magic-byte MIME validation, ClamAV virus/malware scanning (always free, Security-Always-Free Doctrine), and optional CSAM hash detection (deferred — requires partner agreement)", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-scan-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-scan-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-scan/tarball", "requires_license": false, "language": "go", @@ -3687,20 +3687,20 @@ "author": "nself", "minNselfVersion": "1.1.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "85db1a432059ce4588ac0f36dcfc62270c11b473c267db8acc0567e3dfeadbc5", "checksums": { "sha256": "85db1a432059ce4588ac0f36dcfc62270c11b473c267db8acc0567e3dfeadbc5" } }, "nself-sync": { - "version": "1.0.1", + "version": "1.2.1", "description": "Event-log sync engine for nClaw. Multi-device state synchronization via hybrid logical clocks (HLC) and last-write-wins (LWW) conflict resolution. JWT-authenticated push/pull/snapshot/subscribe with Ed25519-signed events.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-sync-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-sync-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-sync/tarball", "requires_license": false, "language": "go", @@ -3724,20 +3724,20 @@ "np_devices", "np_sync_cursors" ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "e78deb7b78f361deac0c1529f92a9ca40edfbedfbf9e9e437eda2cbd5837aa6c", "checksums": { "sha256": "e78deb7b78f361deac0c1529f92a9ca40edfbedfbf9e9e437eda2cbd5837aa6c" } }, "nself-vault": { - "version": "1.0.1", + "version": "1.2.1", "description": "nSelf-managed envelope encryption KMS. Provides per-row/column selective encryption with key rotation, audit logging, and Hasura Action surface. Eliminates ad-hoc per-team AES wrappers.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/nself-vault-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-vault-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/nself-vault/tarball", "requires_license": false, "language": "go", @@ -3756,20 +3756,20 @@ "author": "nself", "minNselfVersion": "1.1.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "af60a93d84444127ea7e22a826c951b2a31a2a4a71a8a7bb37a0b1205e1937a2", "checksums": { "sha256": "af60a93d84444127ea7e22a826c951b2a31a2a4a71a8a7bb37a0b1205e1937a2" } }, "object-storage": { - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-provider object storage with S3-compatible API, local storage, presigned URLs, and multipart uploads", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/object-storage-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/object-storage-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/object-storage/tarball", "requires_license": false, "language": "go", @@ -3789,20 +3789,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "5b7bf3e129efdde764528d9cd4fb96a4f790067778eaf5aa7a709f4147b8c7df", "checksums": { "sha256": "5b7bf3e129efdde764528d9cd4fb96a4f790067778eaf5aa7a709f4147b8c7df" } }, "observability": { - "version": "1.0.1", + "version": "1.2.1", "description": "Unified observability service with health probes, watchdog timers, service auto-discovery, and systemd integration", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/observability-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/observability-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/observability/tarball", "requires_license": false, "language": "go", @@ -3818,20 +3818,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "c5c66501998cc7aa423a18ac8f0ba9509dfc15c440b641856028087679c50ef7", "checksums": { "sha256": "c5c66501998cc7aa423a18ac8f0ba9509dfc15c440b641856028087679c50ef7" } }, "payments": { - "version": "1.0.1", + "version": "1.2.1", "description": "Unified payments abstraction supporting Stripe, PayPal, and Apple/Google Pay with webhook normalization.", "category": "commerce", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/payments-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/payments-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/payments/tarball", "requires_license": false, "language": "go", @@ -3847,20 +3847,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "7e25ca3e13a458eddbfa97e73e5a11dd1534cf7da917f768ac9dddfa387810fd", "checksums": { "sha256": "7e25ca3e13a458eddbfa97e73e5a11dd1534cf7da917f768ac9dddfa387810fd" } }, "pentest": { - "version": "1.0.1", + "version": "1.2.1", "description": "Penetration-test readiness kit. Generates structured scope documents, provisions pentest credentials, tracks findings, and manages remediation. ɳSelf+ tier.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/pentest-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/pentest/tarball", "requires_license": false, "language": "go", @@ -3876,20 +3876,20 @@ "author": "nself", "minNselfVersion": "1.0.9", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "039d896548cc7c64c3033712906baacb0aa21ddd3c7629451c140133bc2d32fc", "checksums": { "sha256": "039d896548cc7c64c3033712906baacb0aa21ddd3c7629451c140133bc2d32fc" } }, "pentest-kit": { - "version": "1.0.1", + "version": "1.2.1", "description": "CLI front end for the pentest plugin: generate scope documents, provision test credentials, import findings, and check remediation status from `nself pentest-kit`. Business+ tier.", "category": "compliance", "tier": "free", "license": "MIT", "min_nself_version": "1.2.8", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/pentest-kit-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/pentest-kit/tarball", "requires_license": false, "language": "go", @@ -3904,20 +3904,20 @@ "author": "nself", "minNselfVersion": "1.2.8", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "4495d4ad638f6b791ac5f01ba4fc9493cee0fa26122b7391542bd9fd514d3c5a", "checksums": { "sha256": "4495d4ad638f6b791ac5f01ba4fc9493cee0fa26122b7391542bd9fd514d3c5a" } }, "plugin-clawde": { - "version": "1.0.1", + "version": "1.2.1", "description": "ClawDE daemon integration backend. Manages session lifecycle, tracks daemon health, and streams events via SSE for the ClawDE AI development environment.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-clawde-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-clawde-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-clawde/tarball", "requires_license": false, "language": "go", @@ -3927,20 +3927,20 @@ "author": "nself", "minNselfVersion": "1.1.1", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "32e27e2fb3036a89aae6c69617ef25cb7cff8fcf13992583e4e68d9251f13abc", "checksums": { "sha256": "32e27e2fb3036a89aae6c69617ef25cb7cff8fcf13992583e4e68d9251f13abc" } }, "plugin-gauth": { - "version": "1.0.1", + "version": "1.2.1", "description": "Headless server-side Google OAuth token refresh for nSelf AI services", "category": "authentication", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-gauth-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-gauth-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-gauth/tarball", "requires_license": false, "language": "rust", @@ -3950,20 +3950,20 @@ "author": "nself", "minNselfVersion": "1.1.1", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "f5d3ae0adbdfb86c3cdb18f0c41975645d85a723616f73d40d431bbaba751abf", "checksums": { "sha256": "f5d3ae0adbdfb86c3cdb18f0c41975645d85a723616f73d40d431bbaba751abf" } }, "plugin-llm-gateway": { - "version": "1.0.1", + "version": "1.2.1", "description": "ClawDE-facing LLM gateway: per-tenant token quota, Redis response caching, session context injection, and SSRF guard over nself-ai-gateway (port 3761). Simplifies ClawDE client LLM calls.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-llm-gateway-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-llm-gateway-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-llm-gateway/tarball", "requires_license": false, "language": "go", @@ -3973,20 +3973,20 @@ "author": "nself", "minNselfVersion": "1.1.1", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "773524889faa560b682a1d648fe76ab7a2289e95c5997dd2d864ecea13d91a68", "checksums": { "sha256": "773524889faa560b682a1d648fe76ab7a2289e95c5997dd2d864ecea13d91a68" } }, "plugin-pty": { - "version": "1.0.1", + "version": "1.2.1", "description": "Pseudo-terminal bridge for ClawDE AI sessions. Spawns, manages, and relays PTY processes with per-tenant resource limits and WebSocket I/O.", "category": "development", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-pty-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-pty-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-pty/tarball", "requires_license": false, "language": "go", @@ -3996,20 +3996,20 @@ "author": "nself", "minNselfVersion": "1.1.1", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "d0113187dd8ea1204c24f8370d86dfc6ca3092bc43c13f822200b15df0a77da2", "checksums": { "sha256": "d0113187dd8ea1204c24f8370d86dfc6ca3092bc43c13f822200b15df0a77da2" } }, "plugin-retrieval": { - "version": "1.0.1", + "version": "1.2.1", "description": "Hybrid retrieval plugin: pgvector ANN + tsvector BM25 merged with Reciprocal Rank Fusion (RRF). Provides the search backend for ɳClaw memory and nself-ai-mcp search/recall tools.", "category": "data", "tier": "free", "license": "MIT", "min_nself_version": "1.1.1", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/plugin-retrieval-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-retrieval-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/plugin-retrieval/tarball", "requires_license": false, "language": "go", @@ -4019,20 +4019,20 @@ "author": "nself", "minNselfVersion": "1.1.1", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "a41a11ae99ed35b9542babc025b17650440c540fc7bba098a721dcf1c532af45", "checksums": { "sha256": "a41a11ae99ed35b9542babc025b17650440c540fc7bba098a721dcf1c532af45" } }, "post": { - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-platform content publishing. Publish to WordPress, Ghost, Twitter/X, LinkedIn, Telegram channels, Dev.to, and Hashnode with optional scheduling.", "category": "content", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/post-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/post-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/post/tarball", "requires_license": false, "language": "go", @@ -4052,20 +4052,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "0bfe68a2847edfbd12114b22eab5ec683f2415f019f1c0a75cc3a597e02aeb08", "checksums": { "sha256": "0bfe68a2847edfbd12114b22eab5ec683f2415f019f1c0a75cc3a597e02aeb08" } }, "retro-gaming": { - "version": "1.0.1", + "version": "1.2.1", "description": "Retro gaming ROM library management, emulator core serving, save state synchronization, play sessions, and controller configuration for nself-tv", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/retro-gaming-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/retro-gaming-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/retro-gaming/tarball", "requires_license": false, "language": "go", @@ -4084,20 +4084,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "02c6d55ae0800323ff9a205c5917a6941223f54a04df9a4b039f99713483476a", "checksums": { "sha256": "02c6d55ae0800323ff9a205c5917a6941223f54a04df9a4b039f99713483476a" } }, "rom-discovery": { - "version": "1.0.1", + "version": "1.2.1", "description": "ROM metadata database, search, discovery, automated download orchestration, and multi-source scraping for nself-tv", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/rom-discovery-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/rom-discovery-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/rom-discovery/tarball", "requires_license": false, "language": "go", @@ -4116,20 +4116,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "d648bdf3bf37aed7d08a3efb8ac73615e02a436fabbf690b6ff4c654cf575cdf", "checksums": { "sha256": "d648bdf3bf37aed7d08a3efb8ac73615e02a436fabbf690b6ff4c654cf575cdf" } }, "siem": { - "version": "1.0.1", + "version": "1.2.1", "description": "Forward nSelf audit logs and security events to external SIEM platforms: Datadog, Splunk HEC, Elastic, Loki, and custom webhooks. OCSF/ECS schema normalization.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/siem-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/siem-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/siem/tarball", "requires_license": false, "language": "go", @@ -4149,20 +4149,20 @@ "author": "nself", "minNselfVersion": "1.0.9", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "57a2930c5f498777bcff01ceef148afd3efaec1013dcc1bb13813bc7ad200191", "checksums": { "sha256": "57a2930c5f498777bcff01ceef148afd3efaec1013dcc1bb13813bc7ad200191" } }, "sms": { - "version": "1.0.1", + "version": "1.2.1", "description": "SMS messaging via Twilio. Send, track, and manage opt-outs.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/sms-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sms-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/sms/tarball", "requires_license": false, "language": "go", @@ -4172,20 +4172,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "a2b4aa085299f1b4a2972009c1fed3ef0ffb965d6fe66a2be2aaa61b08ec7645", "checksums": { "sha256": "a2b4aa085299f1b4a2972009c1fed3ef0ffb965d6fe66a2be2aaa61b08ec7645" } }, "storage": { - "version": "1.0.1", + "version": "1.2.1", "description": "S3-compatible file storage: bucket management, object PUT/GET/DELETE/LIST, presigned URLs, per-tenant isolation.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/storage-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/storage-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/storage/tarball", "requires_license": false, "language": "go", @@ -4205,16 +4205,16 @@ "checksums": { "sha256": "cee934dc9e8a95f67950cf3bdf81f70e610ace5dedede89b82f7eedd346564c4" }, - "releaseTag": "v1.0.1" + "releaseTag": "v1.2.1" }, "storage-transform": { - "version": "1.0.1", + "version": "1.2.1", "description": "On-the-fly image transformation CDN: resize, crop, format convert (WebP/AVIF/JPEG/PNG), quality, and device-pixel-ratio support. URL-param driven, Redis LRU cache, Nginx cache headers, rate limiting.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/storage-transform-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/storage-transform-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/storage-transform/tarball", "requires_license": false, "language": "go", @@ -4232,20 +4232,20 @@ "author": "nself", "minNselfVersion": "1.0.9", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "522a38ef35a689a40719af0c9d9cd56d929cf08ded564bd62843ff46e68fb403", "checksums": { "sha256": "522a38ef35a689a40719af0c9d9cd56d929cf08ded564bd62843ff46e68fb403" } }, "tenant-controller": { - "version": "1.0.1", + "version": "1.2.1", "description": "Multi-tenant master controller for nCloud. Manages N isolated nSelf project instances behind a single deploy: per-project Postgres schema, Hasura metadata namespace, Nginx vhost, JWT secret, Redis key prefix, and MinIO bucket. Enables 50 projects on one Hetzner CX21.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.9", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/tenant-controller-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-controller-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/tenant-controller/tarball", "requires_license": false, "language": "go", @@ -4262,20 +4262,20 @@ "author": "nself", "minNselfVersion": "1.0.9", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "6ed7d89b72a4b11b1dce4a2e494aed69cfca0ec51294a1d8382280be3d46ea96", "checksums": { "sha256": "6ed7d89b72a4b11b1dce4a2e494aed69cfca0ec51294a1d8382280be3d46ea96" } }, "transactional-email": { - "version": "1.0.1", + "version": "1.2.1", "description": "Provider-agnostic transactional email: template rendering, per-tenant domain management, SPF/DKIM reporting, delivery webhook relay.", "category": "communication", "tier": "free", "license": "MIT", "min_nself_version": "1.1.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/transactional-email-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/transactional-email-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/transactional-email/tarball", "requires_license": false, "language": "go", @@ -4293,20 +4293,20 @@ "author": "nself", "minNselfVersion": "1.1.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "43a86b405669f09d47b05ee6700767f8f54af36315e09ab93d4184473d4cb299", "checksums": { "sha256": "43a86b405669f09d47b05ee6700767f8f54af36315e09ab93d4184473d4cb299" } }, "warehouse": { - "version": "1.0.1", + "version": "1.2.1", "description": "Data warehouse sync — exports nself table data to BigQuery, Snowflake, or Redshift on a configurable schedule.", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/warehouse-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/warehouse-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/warehouse/tarball", "requires_license": false, "language": "go", @@ -4322,20 +4322,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "0ac4dbb1bd55c893140181a8a16419a6da96f1fb0754b3d1861576ed5c5717b3", "checksums": { "sha256": "0ac4dbb1bd55c893140181a8a16419a6da96f1fb0754b3d1861576ed5c5717b3" } }, "web3": { - "version": "1.0.1", + "version": "1.2.1", "description": "Blockchain integration, NFT support, token-gated access, DAO governance, and decentralized identity", "category": "integrations", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/web3-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/web3-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/web3/tarball", "requires_license": false, "language": "go", @@ -4354,20 +4354,20 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "77cf94dedf162dc7580e1cb695c4793525a5dea33993f280bd4de661ab1263df", "checksums": { "sha256": "77cf94dedf162dc7580e1cb695c4793525a5dea33993f280bd4de661ab1263df" } }, "workflows": { - "version": "1.0.1", + "version": "1.2.1", "description": "Automation engine providing trigger-action workflow chains, conditional logic, scheduled tasks, webhook integrations, and cross-plugin orchestration", "category": "automation", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/workflows-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/workflows-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/workflows/tarball", "requires_license": false, "language": "go", @@ -4385,14 +4385,14 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "b287a558fbb4595c9e58611389d1e4048ea43aca7d8913910cd10056b5818063", "checksums": { "sha256": "b287a558fbb4595c9e58611389d1e4048ea43aca7d8913910cd10056b5818063" } }, "shared-utils": { - "version": "1.0.1", + "version": "1.2.1", "description": "Shared Go utilities (request-ID tracing middleware, HTTP client propagation, server lifecycle helpers) used internally by multiple free nself plugins. Not installable directly.", "category": "infrastructure", "tier": "free", @@ -4413,13 +4413,13 @@ "installable": false }, "tmdb": { - "version": "1.0.1", + "version": "1.2.1", "description": "Comprehensive media metadata enrichment from TMDB/IMDb/TVDB/MusicBrainz with auto-matching, manual review queue, and multi-provider support", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/tmdb-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tmdb-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/tmdb/tarball", "requires_license": false, "language": "go", @@ -4448,20 +4448,20 @@ "np_tmdb_match_queue", "np_tmdb_webhook_events" ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "043bc8d4ced877a59e78ce67b8e6b25b489afd42d4e45ba8fdbe0fecb16318df", "checksums": { "sha256": "043bc8d4ced877a59e78ce67b8e6b25b489afd42d4e45ba8fdbe0fecb16318df" } }, "game-metadata": { - "version": "1.0.1", + "version": "1.2.1", "description": "Game metadata service with IGDB integration, ROM hash matching, tier requirements, and artwork management", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/game-metadata-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/game-metadata-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/game-metadata/tarball", "requires_license": false, "language": "go", @@ -4484,20 +4484,20 @@ "np_game_platforms", "np_game_genres" ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "81c220149c3b9555644c9891f29879bf416acab722c690aea4df016872bf0ffc", "checksums": { "sha256": "81c220149c3b9555644c9891f29879bf416acab722c690aea4df016872bf0ffc" } }, "sports": { - "version": "1.0.1", + "version": "1.2.1", "description": "Sports data plugin with storage for scores, schedules, and standings. Planned: Live data provider integration (ESPN, The Sports DB) for real-time scores and stats", "category": "sports", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/sports-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sports-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/sports/tarball", "requires_license": false, "language": "go", @@ -4531,20 +4531,20 @@ "np_sports_sync_state", "np_sports_webhook_events" ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "78a8d9026d5c367e678c2e2b74d13268b799ffa6ad956360a64200d089b4e626", "checksums": { "sha256": "78a8d9026d5c367e678c2e2b74d13268b799ffa6ad956360a64200d089b4e626" } }, "podcast": { - "version": "1.0.1", + "version": "1.2.1", "description": "Podcast service with RSS feed parsing, episode management, playback position sync, and subscription management", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/podcast-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/podcast-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/podcast/tarball", "requires_license": false, "language": "go", @@ -4567,20 +4567,20 @@ "np_podcast_playback_positions", "np_podcast_categories" ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "f4714ca8dbbcc668cf4936d152f4f2e68173af7dfea0a9cec18f71eac491f50f", "checksums": { "sha256": "f4714ca8dbbcc668cf4936d152f4f2e68173af7dfea0a9cec18f71eac491f50f" } }, "file-processing": { - "version": "1.0.1", + "version": "1.2.1", "description": "File processing with thumbnails and optimization for MinIO/S3/GCS/R2/B2/Azure. Planned: Inbound webhook support for storage provider notifications", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/file-processing-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/file-processing-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/file-processing/tarball", "requires_license": false, "language": "rust", @@ -4600,20 +4600,20 @@ "np_fileproc_thumbnails", "np_fileproc_metadata" ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "b8a9551f38586f2215b0a0e38a01d11b304d42e880c11d7b89843b72d3ba771e", "checksums": { "sha256": "b8a9551f38586f2215b0a0e38a01d11b304d42e880c11d7b89843b72d3ba771e" } }, "media-processing": { - "version": "1.0.1", + "version": "1.2.1", "description": "FFmpeg-based media encoding and processing with HLS streaming support", "category": "media", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/media-processing-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/media-processing-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/media-processing/tarball", "requires_license": false, "language": "rust", @@ -4643,20 +4643,20 @@ "np_mediap_watcher_events", "np_mediap_uploads" ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "cda9c4d015cf49631f55105bb4dc99806775d585f3bcdd74851d49d0fcb02a78", "checksums": { "sha256": "cda9c4d015cf49631f55105bb4dc99806775d585f3bcdd74851d49d0fcb02a78" } }, "geocoding": { - "version": "1.0.1", + "version": "1.2.1", "description": "Geocoding plugin with geofence storage. Planned: Google Maps API integration for forward/reverse geocoding and place search", "category": "infrastructure", "tier": "free", "license": "MIT", "min_nself_version": "1.0.0", - "tarball": "https://github.com/nself-org/plugins/releases/download/v1.0.1/geocoding-1.0.1.tar.gz", + "tarball": "https://github.com/nself-org/plugins/releases/download/v1.2.1/geocoding-1.2.1.tar.gz", "download_url": "https://plugins.nself.org/plugins/geocoding/tarball", "requires_license": false, "language": "go", @@ -4677,7 +4677,7 @@ "np_geoc_geofence_events", "np_geoc_places" ], - "releaseTag": "v1.0.1", + "releaseTag": "v1.2.1", "checksum": "0641b2a79af09bccd0c7cfd75055609bf2bbcc0e9b5e3bffd03ecca2b37fff4e", "checksums": { "sha256": "0641b2a79af09bccd0c7cfd75055609bf2bbcc0e9b5e3bffd03ecca2b37fff4e" From 732ab87e64c611c388e595432262eeb375eb984a Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 10:37:14 -0400 Subject: [PATCH 12/18] fix(scripts): pin file mode bits in the deterministic tar recipe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deterministic-tar.sh already pinned mtime, uid/gid and member order but not file modes, and tar records mode bits per member. Measured today (P6 re-cut): identical git content checked out on two machines produced tar streams that hashed differently by mode alone (644 vs 664) — the checkout environment's umask was leaking into the artifact the same way mtime/uid/gid did before those were pinned. Adding --mode='go-w,a+rX' makes both machines produce the identical tar stream (verified locally: same content at 644 and 664 now hashes identically). --- scripts/deterministic-tar.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/scripts/deterministic-tar.sh b/scripts/deterministic-tar.sh index 1e233c92..6349591f 100755 --- a/scripts/deterministic-tar.sh +++ b/scripts/deterministic-tar.sh @@ -76,8 +76,21 @@ mkdir -p "$(dirname "$OUT")" # themselves wall-clock noise. --sort=name makes the member order a pure # function of the file tree, independent of the underlying filesystem's # directory-entry order or which shell mechanism (glob vs find) enumerated it. +# +# --mode='go-w,a+rX' normalizes file MODE bits too — measured directly (P6 +# re-cut, 2026-09-11): with everything else above already pinned, identical +# git content checked out on two different machines still produced tar +# streams that hashed differently (b8f9afaf vs db4dc18d) because one +# checkout had files at 644 and the other at 664. tar records each member's +# mode byte-for-byte, so the building machine's umask was leaking into the +# archive exactly like mtime/uid/gid did before those were pinned above. +# go-w clears group/other write regardless of umask; a+rX makes files +# world-readable and directories/already-executable files world-executable, +# without flipping a non-executable file executable. Adding this flag made +# both machines produce the byte-identical tar stream for the same content. "$TAR_BIN" --sort=name \ --mtime='UTC 1970-01-01' \ --owner=0 --group=0 --numeric-owner \ + --mode='go-w,a+rX' \ --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \ -cf - "$@" | gzip -n -9 > "$OUT" From a420cdc8bc01c3842b1a3ab21ea11521a3c32ab5 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 10:37:14 -0400 Subject: [PATCH 13/18] fix(ci): compare registry checksums to published release assets, not a CI rebuild MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The checksum gate rebuilt every tarball in CI and diffed the fresh sha256 against registry.json — a comparison that can never reliably hold. Measured today: with byte-identical tar streams as input, gzip -n -9 produces different output depending on the gzip/zlib build doing the compressing (Apple gzip 479 vs GNU gzip 1.12: 6e9d3966 vs 0283c3b3 for the same real plugin data; macOS zlib 1.2.12 vs Linux 1.3 diverges the same way). DEFLATE output is implementation- and version-dependent by design — no tar flag fixes this, because the divergence happens downstream of tar entirely. Both jobs (the source-tarball gate and the checksums.platforms gate added in 0eae661) now download the real release asset for each plugin's registry.json releaseTag and diff that instead — the exact bytes nself plugin install downloads and internal/plugin/security.go's verifyChecksum checks. When no release exists yet for a tag (the normal state of an open version-bump PR, including this one right now), the gate skips the compare for that plugin with an explicit ::notice:: and passes — it never fails merely because the release hasn't been cut, and it never silently passes without saying which branch it took. Verified locally end-to-end using the literal script this file runs: a registry checksum matching a real rebuilt asset passes, a corrupted asset fails (exit 1), restoring it passes again; separately, running the no-release path against the actual 129-entry registry.json skips all 128 checksummed entries with a notice and exits 0. scripts/deterministic-tar.sh and scripts/build-tarballs.sh are unchanged in spirit — they still make a local rebuild reproducible across machines, which is what they were for. They were never going to make two different gzip implementations agree byte-for-byte, and this gate no longer asks them to. --- .github/workflows/tarball-checksum-gate.yml | 297 +++++++++++--------- 1 file changed, 157 insertions(+), 140 deletions(-) diff --git a/.github/workflows/tarball-checksum-gate.yml b/.github/workflows/tarball-checksum-gate.yml index 3d97886e..17a6ad17 100644 --- a/.github/workflows/tarball-checksum-gate.yml +++ b/.github/workflows/tarball-checksum-gate.yml @@ -1,33 +1,54 @@ name: Tarball Checksum Gate -# Rebuilds every free plugin's source tarball from the checked-out tree -# using the SAME recipe (scripts/deterministic-tar.sh) that -# release-tarballs.yml uses to build the assets a tag push actually -# publishes, then asserts the freshly built sha256 matches registry.json's -# `checksum` (and, when present, `checksums.sha256`) for that plugin. +# Verifies registry.json's checksums against the PUBLISHED RELEASE ASSETS +# for each plugin's registry.json `releaseTag`, not against a fresh CI +# rebuild. # -# Why this exists: registry.json can carry a checksum that was computed by -# ANY build (a contributor's laptop, an earlier CI run, hand-editing) at ANY -# point, with no guarantee it still matches what the release pipeline would -# produce today. `nself plugin install` hard-fails on a checksum mismatch -# (internal/plugin/security.go verifyChecksum) — so a stale or -# wrongly-computed checksum in registry.json is a shipped defect, not a -# cosmetic one. This gate makes that defect impossible to merge: it rebuilds -# the real bytes and fails the PR the moment they disagree, rather than -# discovering it after users start getting failed installs post-release. +# Why not rebuild-and-compare (what this gate did before the P6 re-cut): +# scripts/deterministic-tar.sh pins mtime, uid/gid, member order and (as of +# this same re-cut) file mode — but it still shells out to `gzip -n -9`, +# and DEFLATE output is implementation- and version-dependent by design. +# Measured directly (2026-09-11): with byte-identical tar streams as input, +# Apple gzip 479 (macOS) and GNU gzip 1.12 (Linux/ubuntu-latest) produced +# DIFFERENT compressed bytes for the same real plugin content — 6e9d3966 vs +# 0283c3b3. Python's zlib diverges the same way across zlib 1.2.12 (macOS) +# vs 1.3 (Linux). A trivially compressible probe (all-zeros, short text) +# can make two gzip builds agree by accident, which is how this hid before +# — real plugin data exposes it every time. So a CI rebuild-and-diff gate +# can NEVER reliably pass: even a byte-perfect deterministic-tar.sh recipe +# hits a gzip build difference the tar flags cannot fix, because the +# divergence is downstream of tar entirely. # -# A second job, per-platform-checksum-gate, does the same thing for the -# per-platform binary tarballs: for every plugin with a binaryName, it -# cross-compiles all 5 platform builds (the same Go build + deterministic-tar.sh -# recipe release-tarballs.yml uses — via scripts/build-tarballs.sh's -# build_platform_tarballs(), sourced rather than re-implemented, so there is -# exactly one recipe for this) and diffs the result against registry.json's -# checksums.platforms. for that plugin. internal/plugin/download.go -# tries this asset before the source tarball whenever binaryName is set, and -# internal/plugin/security.go's install-time verification refuses the install -# outright if the matching entry here is absent or wrong (plugins#83) — so a -# missing or stale platform checksum is exactly as much a shipped defect as a -# stale source checksum, and this gate makes it exactly as unmergeable. +# The release model this repo actually ships under settles this: the +# artifact of record is whatever bytes get UPLOADED to the GitHub release, +# and registry.json's checksums are meant to be written FROM those +# published bytes (scripts/verify-published-checksums.sh --write), not +# computed independently and hoped to match. So this gate downloads the +# real release asset for each plugin's registry.json releaseTag and diffs +# THAT — the exact thing `nself plugin install` downloads and +# internal/plugin/security.go's verifyChecksum checks against. +# +# No release exists yet for a given tag == the normal state of an open +# version-bump PR (this one, right now: v1.2.1 has no release). The gate +# SKIPS the compare for any plugin whose tag has no published release, +# says so via ::notice::, and PASSES — it must never fail merely because +# the owner hasn't cut the release yet, and it must never silently pass +# without saying which branch it took. Once a release DOES exist for a +# tag, a checksum mismatch against its real asset FAILS the gate — proven +# locally before this file was written: same registry checksum against a +# byte-identical rebuilt asset passes, a corrupted asset fails, restoring +# it passes again (see PR body / commit message for the transcript). +# +# scripts/deterministic-tar.sh and scripts/build-tarballs.sh are unchanged +# in spirit and still required: they are what makes a LOCAL rebuild +# reproducible across contributors' machines and CI, which is what lets +# someone sanity-check a tarball before it's uploaded. They were never +# going to make two different gzip implementations byte-agree, and this +# gate no longer asks them to. +# +# A second job, platform-checksum-gate, applies the identical published- +# asset treatment to the per-platform binary tarballs added in plugins#83 +# (registry.json's checksums.platforms. fields, commit 0eae661). on: pull_request: @@ -37,6 +58,7 @@ on: - 'registry.json' - 'scripts/deterministic-tar.sh' - 'scripts/build-tarballs.sh' + - 'scripts/verify-published-checksums.sh' - '.github/workflows/tarball-checksum-gate.yml' workflow_dispatch: @@ -44,11 +66,16 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +permissions: + contents: read + jobs: checksum-gate: - name: Verify registry.json checksums match rebuilt tarballs + name: Verify registry.json checksums against published release assets runs-on: ubuntu-latest timeout-minutes: 15 + env: + GH_TOKEN: ${{ github.token }} steps: - name: Checkout @@ -57,42 +84,24 @@ jobs: - name: Install jq run: sudo apt-get install -y jq - - name: Rebuild every free plugin's source tarball and diff against registry.json + - name: Diff registry.json checksums against each plugin's published release asset run: | set -euo pipefail + REPO="nself-org/plugins" WORK="$(mktemp -d)" FAIL=0 CHECKED=0 + SKIPPED_NO_RELEASE=0 SKIPPED_NO_CHECKSUM=0 + declare -A RELEASE_EXISTS - # tar's own --sort=name inside deterministic-tar.sh makes each - # individual archive's member order stable; sort here too so the - # gate's own iteration order (and therefore its log/output) is - # deterministic across runs. while IFS= read -r plugin_dir; do name="$(basename "$plugin_dir")" - # ollama is the one deliberate, permanent exception (see - # .github/RELEASE-v1.0.1.md "Two exceptions"): it ships under its - # own pre-existing v1.1.1 GitHub release, built independently of - # this repo's tarball pipeline, and its registry.json checksum was - # verified by downloading and hashing that real live asset - # directly — not by this pipeline rebuilding free/ollama from the - # checked-out tree. Rebuilding it here would compare against a - # tarball this gate has no way of reproducing (a different - # release, built on a different date, by a different process) and - # would fail forever regardless of whether free/ollama/ is fine. - if [ "$name" = "ollama" ]; then - echo "SKIP ollama — checksum verified against its own external v1.1.1 release, not this pipeline's build" - continue - fi - entry="$(jq -c --arg n "$name" '.plugins[$n] // empty' registry.json)" if [ -z "$entry" ]; then - # A free/* directory with no registry.json entry at all is - # registry-check.yml's concern (presence parity), not this - # gate's (checksum correctness) — skip rather than duplicate it. + # registry-check.yml's concern (presence parity), not this gate's. continue fi @@ -101,15 +110,45 @@ jobs: if [ -z "$expected_checksum" ] && [ -z "$expected_nested" ]; then # e.g. shared-utils: installable:false, no tarball/download_url, - # no checksum to attest to — deliberately not distributed. + # nothing for a checksum to attest to. SKIPPED_NO_CHECKSUM=$((SKIPPED_NO_CHECKSUM + 1)) continue fi - out="${WORK}/${name}.tar.gz" - bash scripts/deterministic-tar.sh "$out" "$plugin_dir" - actual="$(sha256sum "$out" | cut -d' ' -f1)" + tag="$(printf '%s' "$entry" | jq -r '.releaseTag // empty')" + version="$(printf '%s' "$entry" | jq -r '.version // empty')" + + if [ -z "$tag" ] || [ -z "$version" ]; then + echo "::warning::$name has a checksum recorded but no releaseTag/version — cannot resolve a published asset to verify against" + SKIPPED_NO_RELEASE=$((SKIPPED_NO_RELEASE + 1)) + continue + fi + + if [ -z "${RELEASE_EXISTS[$tag]+x}" ]; then + if gh release view "$tag" --repo "$REPO" >/dev/null 2>&1; then + RELEASE_EXISTS["$tag"]=1 + else + RELEASE_EXISTS["$tag"]=0 + fi + fi + + if [ "${RELEASE_EXISTS[$tag]}" = "0" ]; then + echo "::notice::No published release $tag yet — skipping the published-bytes checksum compare for $name (registry version=$version). This is the normal state before the owner cuts the release; it is NOT a pass on the checksum itself." + SKIPPED_NO_RELEASE=$((SKIPPED_NO_RELEASE + 1)) + continue + fi + + tarball_name="${name}-${version}.tar.gz" + if ! gh release download "$tag" --repo "$REPO" --pattern "$tarball_name" --dir "$WORK" --clobber >/dev/null 2>&1; then + echo "MISSING $name: release $tag exists but has no asset named $tarball_name" + FAIL=1 + continue + fi + + asset_path="${WORK}/${tarball_name}" + actual="$(sha256sum "$asset_path" | cut -d' ' -f1)" CHECKED=$((CHECKED + 1)) + rm -f "$asset_path" # Case-insensitive compare, matching internal/plugin/security.go's # verifyChecksum (strings.EqualFold) — the actual install-time check. @@ -117,47 +156,51 @@ jobs: lhs="$(printf '%s' "$expected_checksum" | tr '[:upper:]' '[:lower:]')" rhs="$(printf '%s' "$actual" | tr '[:upper:]' '[:lower:]')" if [ "$lhs" != "$rhs" ]; then - echo "MISMATCH $name: registry .checksum=$expected_checksum rebuilt=$actual" + echo "MISMATCH $name: registry .checksum=$expected_checksum published=$actual" FAIL=1 fi fi - # checksums.sha256 may carry a "sha256:" prefix (the release - # workflow's backfill step writes it that way); strip it before - # comparing so both conventions are handled. + # checksums.sha256 may carry a "sha256:" prefix; strip before comparing. if [ -n "$expected_nested" ]; then nested_hex="${expected_nested#sha256:}" lhs="$(printf '%s' "$nested_hex" | tr '[:upper:]' '[:lower:]')" rhs="$(printf '%s' "$actual" | tr '[:upper:]' '[:lower:]')" if [ "$lhs" != "$rhs" ]; then - echo "MISMATCH $name: registry .checksums.sha256=$expected_nested rebuilt=$actual" + echo "MISMATCH $name: registry .checksums.sha256=$expected_nested published=$actual" FAIL=1 fi fi done < <(find free -maxdepth 1 -mindepth 1 -type d | sort) echo "" - echo "Checked: $CHECKED plugin(s) with a registry checksum" + echo "Checked against a published release asset: $CHECKED" + echo "Skipped (no release published yet for that tag): $SKIPPED_NO_RELEASE" echo "Skipped (no checksum recorded): $SKIPPED_NO_CHECKSUM" rm -rf "$WORK" if [ "$FAIL" -ne 0 ]; then echo "" - echo "ERROR: one or more registry.json checksums do not match the tarball" >&2 - echo "scripts/deterministic-tar.sh builds from the checked-out free/" >&2 - echo "tree right now. Rebuild with:" >&2 - echo " bash scripts/build-tarballs.sh " >&2 - echo "and update the mismatched entries' checksum / checksums.sha256." >&2 + echo "::error::one or more registry.json checksums do not match the corresponding published release asset" + echo "Rebuild locally with scripts/build-tarballs.sh , upload it to the" >&2 + echo "release, then re-run scripts/verify-published-checksums.sh --write" >&2 + echo "to bring registry.json back in sync with what is actually published." >&2 exit 1 fi - echo "OK: every registry.json checksum matches a freshly rebuilt tarball" + if [ "$CHECKED" -eq 0 ]; then + echo "::notice::No plugin's releaseTag currently has a published GitHub release — this gate had nothing to compare against and is passing vacuously, not because any checksum was verified. It will start actually checking bytes once a release exists for these tags." + fi + + echo "OK: every checksum that could be checked against a published release asset matches" platform-checksum-gate: - name: Verify registry.json checksums.platforms match rebuilt binary tarballs + name: Verify registry.json checksums.platforms against published release assets runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 15 + env: + GH_TOKEN: ${{ github.token }} steps: - name: Checkout @@ -166,127 +209,101 @@ jobs: - name: Install jq run: sudo apt-get install -y jq - # Matches release-tarballs.yml's Go version — the per-platform binaries - # this job cross-compiles have to be built the same way the real - # release build compiles them, or a Go-version-specific bug could pass - # here and still ship broken. - - uses: actions/setup-go@v7 - with: - go-version: '1.26.4' - cache: false - - - name: Rebuild every binaryName plugin's platform tarballs and diff against registry.json + - name: Diff registry.json checksums.platforms against each plugin's published per-platform assets run: | set -euo pipefail - # Sourced, not re-implemented: build_platform_tarballs() and - # sha256_file() (and the PLATFORMS list) are defined once in - # scripts/build-tarballs.sh and used both by a contributor running - # it locally and by this gate — see that file's own doc comment for - # why it is written to be sourceable without running its main(). - # shellcheck source=scripts/build-tarballs.sh - source scripts/build-tarballs.sh - + REPO="nself-org/plugins" WORK="$(mktemp -d)" FAIL=0 CHECKED=0 + SKIPPED_NO_RELEASE=0 SKIPPED_NO_BINARY=0 + declare -A RELEASE_EXISTS + + # Matches internal/plugin/arch.go's PlatformArch() — the same list + # scripts/build-tarballs.sh cross-compiles for a binaryName plugin. + PLATFORMS="darwin-arm64 darwin-amd64 linux-amd64 linux-arm64 windows-amd64" while IFS= read -r plugin_dir; do name="$(basename "$plugin_dir")" - # ollama has no binaryName (it is not a CLI-command plugin) and is - # excluded from the source-checksum gate above for the same - # external-release reason; it never reaches the binaryName check - # below anyway, but skip explicitly for the same documented - # reason as that job. - if [ "$name" = "ollama" ]; then - continue - fi - bin_name="$(jq -r '.binaryName // .implementation.binaryName // ""' "${plugin_dir}/plugin.json" 2>/dev/null || printf '')" if [ -z "$bin_name" ]; then - # No command binary to build or verify — this plugin's package - # is source and works everywhere; the source-checksum gate - # already covers it. SKIPPED_NO_BINARY=$((SKIPPED_NO_BINARY + 1)) continue fi entry="$(jq -c --arg n "$name" '.plugins[$n] // empty' registry.json)" - if [ -z "$entry" ]; then - continue - fi + [ -z "$entry" ] && continue + + tag="$(printf '%s' "$entry" | jq -r '.releaseTag // empty')" version="$(printf '%s' "$entry" | jq -r '.version // empty')" - if [ -z "$version" ]; then - echo "ERROR $name: registry entry has no version; cannot name or compare a platform tarball" - FAIL=1 + if [ -z "$tag" ] || [ -z "$version" ]; then + echo "::warning::$name declares binaryName but registry entry has no releaseTag/version — cannot resolve platform assets" + SKIPPED_NO_RELEASE=$((SKIPPED_NO_RELEASE + 1)) continue fi - if ! build_platform_tarballs "$plugin_dir" "$name" "$version" "$WORK"; then - echo "ERROR $name: failed to build one or more platform tarballs" - FAIL=1 + if [ -z "${RELEASE_EXISTS[$tag]+x}" ]; then + if gh release view "$tag" --repo "$REPO" >/dev/null 2>&1; then + RELEASE_EXISTS["$tag"]=1 + else + RELEASE_EXISTS["$tag"]=0 + fi + fi + + if [ "${RELEASE_EXISTS[$tag]}" = "0" ]; then + echo "::notice::No published release $tag yet — skipping the published-bytes platform-checksum compare for $name. This is the normal state before the owner cuts the release." + SKIPPED_NO_RELEASE=$((SKIPPED_NO_RELEASE + 1)) continue fi for platform in $PLATFORMS; do - ptar="${WORK}/${name}-${version}-${platform}.tar.gz" - if [ ! -f "$ptar" ]; then - echo "ERROR $name/$platform: expected $ptar was not produced" - FAIL=1 - continue - fi - actual="$(sha256_file "$ptar")" - CHECKED=$((CHECKED + 1)) - + ptar_name="${name}-${version}-${platform}.tar.gz" expected="$(printf '%s' "$entry" | jq -r --arg p "$platform" '.checksums.platforms[$p] // empty')" - # A missing checksums.platforms entry for a plugin that DOES - # ship a binary for this platform is refused here, the same as - # a mismatch — not skipped the way an absent SOURCE checksum - # is (shared-utils, etc. above). internal/plugin's install-time - # policy (installer_locked.go's resolveArtifactChecksum) is - # equally unconditional: a downloaded platform binary with no - # matching registry checksum refuses the install outright, - # with no leniency and no env var to bypass it — so an entry - # missing here is not a softer finding than a wrong one, it is - # the exact defect that policy exists to catch before release. if [ -z "$expected" ]; then echo "MISSING $name/$platform: no registry checksums.platforms.$platform recorded (install-time verification refuses this unconditionally)" FAIL=1 - rm -f "$ptar" "${ptar}.sha256" continue fi - # Plain lowercase hex, matching how registry-schema.json - # documents this field and how the CLI's raw hex comparison - # reads it — no "sha256:" prefix stripping needed here (that - # convention is checksums.sha256's, the source-tarball - # sibling field, not this one's). + if ! gh release download "$tag" --repo "$REPO" --pattern "$ptar_name" --dir "$WORK" --clobber >/dev/null 2>&1; then + echo "MISSING-ASSET $name/$platform: release $tag exists but has no asset named $ptar_name" + FAIL=1 + continue + fi + + ptar="${WORK}/${ptar_name}" + actual="$(sha256sum "$ptar" | cut -d' ' -f1)" + CHECKED=$((CHECKED + 1)) + rm -f "$ptar" + lhs="$(printf '%s' "$expected" | tr '[:upper:]' '[:lower:]')" rhs="$(printf '%s' "$actual" | tr '[:upper:]' '[:lower:]')" if [ "$lhs" != "$rhs" ]; then - echo "MISMATCH $name/$platform: registry .checksums.platforms.$platform=$expected rebuilt=$actual" + echo "MISMATCH $name/$platform: registry .checksums.platforms.$platform=$expected published=$actual" FAIL=1 fi - rm -f "$ptar" "${ptar}.sha256" done done < <(find free -maxdepth 1 -mindepth 1 -type d | sort) echo "" - echo "Checked: $CHECKED platform tarball(s)" + echo "Checked against a published platform asset: $CHECKED" + echo "Skipped (no release published yet for that tag): $SKIPPED_NO_RELEASE" echo "Skipped (no binaryName): $SKIPPED_NO_BINARY" rm -rf "$WORK" if [ "$FAIL" -ne 0 ]; then echo "" - echo "ERROR: one or more registry.json checksums.platforms entries are missing or do not match a freshly rebuilt platform tarball" >&2 - echo "Rebuild with:" >&2 - echo " bash scripts/build-tarballs.sh " >&2 - echo "and update the mismatched/missing checksums.platforms. entries." >&2 + echo "::error::one or more registry.json checksums.platforms entries are missing, or do not match a published per-platform release asset" exit 1 fi - echo "OK: every binaryName plugin's checksums.platforms matches a freshly rebuilt tarball" + if [ "$CHECKED" -eq 0 ]; then + echo "::notice::No binaryName plugin's releaseTag currently has a published GitHub release — this gate had nothing to compare against and is passing vacuously, not because any platform checksum was verified." + fi + + echo "OK: every checksums.platforms entry that could be checked against a published asset matches" From 13ef8940e10089b33936a4d4b5aff57d46ac1b2b Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 10:37:14 -0400 Subject: [PATCH 14/18] feat(scripts): rewrite verify-published-checksums.sh to enumerate registry.json and support --write MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The version merged in from main required an explicit list of plugin names and never wrote registry.json — informational only. The release flow this repo depends on (tarball-checksum-gate.yml, RELEASE-v1.2.1.md) needs a script that: takes a tag, enumerates every registry.json entry on that releaseTag itself (source tarball plus, for binaryName plugins, the five per-platform assets), computes sha256 against the real published release asset, and either reports mismatches (default, exit non-zero if any) or writes the published hashes into registry.json's flat checksum, nested checksums.sha256, and checksums.platforms. fields (--write). Verified locally against a scratch registry.json + a mocked gh CLI serving real built tarballs: report mode flags a deliberately wrong checksum and exits 1; --write mode overwrites it with the correct published hash and a follow-up report run then passes; a partial per-platform asset set writes the platforms that exist and still exits 1 for the ones missing from the release, rather than silently leaving stale/absent entries unflagged. Not run against a real release in this PR — no v1.2.1 release exists yet; registry.json's checksums remain provisional until the owner cuts the draft release and this script runs against it for real. --- scripts/verify-published-checksums.sh | 227 +++++++++++++++++++------- 1 file changed, 165 insertions(+), 62 deletions(-) diff --git a/scripts/verify-published-checksums.sh b/scripts/verify-published-checksums.sh index b81b9627..ab06e094 100755 --- a/scripts/verify-published-checksums.sh +++ b/scripts/verify-published-checksums.sh @@ -1,58 +1,86 @@ #!/usr/bin/env bash # verify-published-checksums.sh # -# Purpose: spot-check that the checksum registry.json WOULD carry for a -# release tag matches the SHA-256 of the tarball actually served for that -# tag on the GitHub release. This never writes registry.json — it downloads -# each plugin's real tarball asset for TAG and diffs the computed SHA-256 -# against the registry's checksum/checksums.sha256 (if either is already -# populated for that tag) and prints the computed value regardless, so it -# can seed a future registry update by hand or via build-and-upload-tarballs.sh. +# Purpose: the release model this repo ships under (see .github/RELEASE- +# v1.2.1.md and tarball-checksum-gate.yml) treats the PUBLISHED release +# asset as the artifact of record — registry.json's checksums are supposed +# to be written FROM those published bytes, not from an independent local +# rebuild that merely hopes to match (gzip's DEFLATE output is +# implementation/version-dependent; two byte-identical tar streams can +# still produce different .tar.gz bytes on different machines — see +# tarball-checksum-gate.yml's header comment for the measured proof). This +# script is the one place that reads real published bytes and either +# reports how registry.json disagrees with them, or writes them in. # -# Why this exists (P6, registry-flat-checksum-field fix): most of this -# registry's 129 plugins have never had ANY checksum field computed against -# their real published v1.0.0 asset — recomputing all of them from the repo -# source tree would NOT verify what a user's `nself plugin install` actually -# downloads, since the published tarball's bytes depend on the exact `tar` -# invocation/timestamps used at release time, not just file contents. This -# script downloads the real released asset and hashes THAT. +# Inputs: TAG (e.g. v1.2.1) — a release that must already exist (the owner +# creates it as a draft first; `gh release download` works against a draft +# with repo access). registry.json in the current directory is read (and, +# with --write, rewritten). # -# Inputs: TAG (e.g. v1.0.0), PLUGIN_NAMES (space-separated plugin slugs). -# Outputs: a table of plugin / computed sha256 / registry checksum / -# registry checksums.sha256 / match — to stdout. Exit 0 always -# (informational spot-check, not a CI gate); pass --strict to -# exit 1 on any mismatch against a NON-EMPTY registry value. -# Constraints: read-only against registry.json and GitHub; requires gh CLI -# authenticated + jq + sha256sum/shasum. Never edits registry.json. +# For every registry.json entry whose releaseTag equals TAG and which +# carries a checksum-eligible tarball (i.e. NOT shared-utils-style +# installable:false entries with no tarball/checksum fields at all), this +# downloads: +# - the source tarball -.tar.gz +# - if the plugin's free//plugin.json declares a binaryName (or the +# registry entry already has checksums.platforms), the five per-platform +# binary tarballs --.tar.gz +# and computes sha256 for each. +# +# Outputs: +# Default (report mode): prints ONLY the mismatches found (registry value +# vs. the freshly computed published-asset hash) and a final summary +# line; registry.json is NOT modified. Exit 0 if no mismatches, exit 1 +# if any (whether a value disagreed or an expected asset was simply +# missing from the release). +# --write: writes the computed hashes into registry.json — the flat +# `checksum` field, the nested `checksums.sha256` field (both from the +# source tarball), and `checksums.platforms.` for each +# downloaded platform asset — then reports what changed. Exit 0 on +# success, exit 1 if any expected asset could not be downloaded (in +# which case registry.json is left with whatever it already had for +# that specific field; nothing partial is written for a missing asset). +# +# Constraints: requires `gh` (authenticated, repo access — including to a +# draft release), `jq`, and `sha256sum`/`shasum`. Never touches anything +# but registry.json. Never creates or publishes a release, never tags. # # Usage: -# ./scripts/verify-published-checksums.sh v1.0.0 storage cron notify search maintenance -# ./scripts/verify-published-checksums.sh --strict v1.0.0 ollama +# ./scripts/verify-published-checksums.sh v1.2.1 +# ./scripts/verify-published-checksums.sh --write v1.2.1 set -euo pipefail REPO="nself-org/plugins" -STRICT=false +WRITE=false -if [ "${1:-}" = "--strict" ]; then - STRICT=true +if [ "${1:-}" = "--write" ]; then + WRITE=true shift fi TAG="${1:-}" -shift || true -PLUGIN_NAMES=("$@") -if [ -z "$TAG" ] || [ "${#PLUGIN_NAMES[@]}" -eq 0 ]; then - printf "Usage: %s [--strict] TAG PLUGIN_NAME [PLUGIN_NAME ...]\n" "$0" >&2 +if [ -z "$TAG" ]; then + printf "Usage: %s [--write] TAG\n" "$0" >&2 + printf " e.g. %s v1.2.1\n" "$0" >&2 + printf " %s --write v1.2.1\n" "$0" >&2 exit 1 fi +VERSION="${TAG#v}" + SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REGISTRY_FILE="$(cd "${SCRIPT_DIR}/.." && pwd)/registry.json" +REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" +REGISTRY_FILE="${REPO_ROOT}/registry.json" +PLUGINS_DIR="${REPO_ROOT}/free" WORK_DIR="$(mktemp -d)" trap 'rm -rf "$WORK_DIR"' EXIT +# Matches internal/plugin/arch.go's PlatformArch() — the same list +# scripts/build-tarballs.sh cross-compiles for a binaryName plugin. +PLATFORMS="darwin-arm64 darwin-amd64 linux-amd64 linux-arm64 windows-amd64" + log() { printf "[verify-published-checksums] %s\n" "$*"; } err() { printf "[verify-published-checksums] ERROR: %s\n" "$*" >&2; } @@ -73,55 +101,130 @@ sha256_file() { fi } +if [ ! -f "$REGISTRY_FILE" ]; then + err "registry.json not found at ${REGISTRY_FILE}" + exit 1 +fi + if ! gh release view "$TAG" --repo "$REPO" >/dev/null 2>&1; then - err "Release $TAG not found in $REPO." + err "Release $TAG not found in $REPO (draft releases work fine with repo access — create it first)." exit 1 fi +REGISTRY_JSON="$(cat "$REGISTRY_FILE")" MISMATCHES=0 +MISSING_ASSETS=0 +CHECKED=0 +WRITTEN=0 + +# Iterate plugin names in a stable, deterministic order rather than +# registry.json's own (already-alphabetical) key order directly, so this +# script's log output is predictable even if that ever changes. +while IFS= read -r name; do + entry="$(printf '%s' "$REGISTRY_JSON" | jq -c --arg n "$name" '.plugins[$n]')" + + entry_tag="$(printf '%s' "$entry" | jq -r '.releaseTag // empty')" + if [ "$entry_tag" != "$TAG" ]; then + # Not on this release — nothing published under TAG to check it against. + continue + fi -printf "%-20s %-10s %-64s %-10s %-10s\n" "plugin" "version" "computed_sha256" "reg.flat" "reg.nested" -printf "%-20s %-10s %-64s %-10s %-10s\n" "------" "-------" "---------------" "--------" "----------" + has_checksum_field="$(printf '%s' "$entry" | jq -r 'has("checksum") or (has("checksums") and (.checksums | has("sha256")))')" + if [ "$has_checksum_field" != "true" ]; then + # e.g. shared-utils: installable:false, no tarball, nothing to verify. + continue + fi -for plugin_name in "${PLUGIN_NAMES[@]}"; do - version="${TAG#v}" - tarball_name="${plugin_name}-${version}.tar.gz" + tarball_name="${name}-${VERSION}.tar.gz" asset_path="${WORK_DIR}/${tarball_name}" if ! gh release download "$TAG" --repo "$REPO" --pattern "$tarball_name" --dir "$WORK_DIR" --clobber >/dev/null 2>&1; then - printf "%-20s %-10s %-64s %-10s %-10s\n" "$plugin_name" "$version" "(asset not found on $TAG)" "-" "-" + printf "MISSING %s: no asset named %s on release %s\n" "$name" "$tarball_name" "$TAG" + MISSING_ASSETS=$((MISSING_ASSETS + 1)) continue fi computed_sha="$(sha256_file "$asset_path")" + rm -f "$asset_path" + CHECKED=$((CHECKED + 1)) + + reg_flat="$(printf '%s' "$entry" | jq -r '.checksum // ""')" + reg_nested="$(printf '%s' "$entry" | jq -r '.checksums.sha256 // ""' )" + reg_nested_hex="${reg_nested#sha256:}" + + if [ "$WRITE" = "true" ]; then + REGISTRY_JSON="$(printf '%s' "$REGISTRY_JSON" | jq \ + --arg name "$name" --arg sha "$computed_sha" \ + '(.plugins[$name].checksum) = $sha | (.plugins[$name].checksums.sha256) = $sha')" + WRITTEN=$((WRITTEN + 1)) + else + if [ -n "$reg_flat" ] && [ "$reg_flat" != "$computed_sha" ]; then + printf "MISMATCH %s: .checksum=%s published=%s\n" "$name" "$reg_flat" "$computed_sha" + MISMATCHES=$((MISMATCHES + 1)) + fi + if [ -n "$reg_nested_hex" ] && [ "$reg_nested_hex" != "$computed_sha" ]; then + printf "MISMATCH %s: .checksums.sha256=%s published=%s\n" "$name" "$reg_nested" "$computed_sha" + MISMATCHES=$((MISMATCHES + 1)) + fi + fi - reg_flat="$(jq -r --arg n "$plugin_name" '.plugins[$n].checksum // ""' "$REGISTRY_FILE")" - reg_nested="$(jq -r --arg n "$plugin_name" '.plugins[$n].checksums.sha256 // ""' "$REGISTRY_FILE")" - reg_nested_norm="${reg_nested#sha256:}" - - match_flag="" - if [ -n "$reg_flat" ] && [ "$reg_flat" != "$computed_sha" ]; then - match_flag="${match_flag} FLAT-MISMATCH" - MISMATCHES=$((MISMATCHES + 1)) + # Per-platform assets: only for plugins that actually ship a binary — + # either the registry entry already carries checksums.platforms, or the + # plugin's own manifest declares a binaryName (covers the "not yet + # populated" case, e.g. a brand-new binaryName plugin with nothing under + # checksums.platforms yet — --write should still be able to seed it). + plugin_json="${PLUGINS_DIR}/${name}/plugin.json" + bin_name="" + if [ -f "$plugin_json" ]; then + bin_name="$(jq -r '.binaryName // .implementation.binaryName // ""' "$plugin_json" 2>/dev/null || printf '')" fi - if [ -n "$reg_nested_norm" ] && [ "$reg_nested_norm" != "$computed_sha" ]; then - match_flag="${match_flag} NESTED-MISMATCH" - MISMATCHES=$((MISMATCHES + 1)) + has_platforms_field="$(printf '%s' "$entry" | jq -r '(.checksums.platforms // {}) | length > 0')" + + if [ -n "$bin_name" ] || [ "$has_platforms_field" = "true" ]; then + for platform in $PLATFORMS; do + ptar_name="${name}-${VERSION}-${platform}.tar.gz" + ptar_path="${WORK_DIR}/${ptar_name}" + + if ! gh release download "$TAG" --repo "$REPO" --pattern "$ptar_name" --dir "$WORK_DIR" --clobber >/dev/null 2>&1; then + printf "MISSING %s/%s: no asset named %s on release %s\n" "$name" "$platform" "$ptar_name" "$TAG" + MISSING_ASSETS=$((MISSING_ASSETS + 1)) + continue + fi + + p_computed="$(sha256_file "$ptar_path")" + rm -f "$ptar_path" + CHECKED=$((CHECKED + 1)) + + if [ "$WRITE" = "true" ]; then + REGISTRY_JSON="$(printf '%s' "$REGISTRY_JSON" | jq \ + --arg name "$name" --arg p "$platform" --arg sha "$p_computed" \ + '(.plugins[$name].checksums.platforms[$p]) = $sha')" + WRITTEN=$((WRITTEN + 1)) + else + reg_platform="$(printf '%s' "$entry" | jq -r --arg p "$platform" '.checksums.platforms[$p] // ""')" + if [ -n "$reg_platform" ] && [ "$reg_platform" != "$p_computed" ]; then + printf "MISMATCH %s/%s: .checksums.platforms.%s=%s published=%s\n" \ + "$name" "$platform" "$platform" "$reg_platform" "$p_computed" + MISMATCHES=$((MISMATCHES + 1)) + fi + fi + done fi - [ -z "$match_flag" ] && match_flag="ok-or-unset" +done < <(printf '%s' "$REGISTRY_JSON" | jq -r '.plugins | keys[]') - printf "%-20s %-10s %-64s %-10s %-10s\n" \ - "$plugin_name" "$version" "$computed_sha" "${reg_flat:--}" "${reg_nested:--}" - log " ${plugin_name}: ${match_flag}" -done - -if [ "$MISMATCHES" -gt 0 ]; then - err "$MISMATCHES mismatch(es) between a computed checksum and a NON-EMPTY registry value." - if [ "$STRICT" = "true" ]; then - exit 1 - fi +if [ "$WRITE" = "true" ]; then + printf '%s\n' "$REGISTRY_JSON" > "$REGISTRY_FILE" + log "Wrote ${WRITTEN} checksum field(s) into registry.json from ${TAG}'s published assets (checked ${CHECKED} asset(s))." else - log "No mismatches against any non-empty registry checksum field." + log "Checked ${CHECKED} published asset(s) against registry.json for ${TAG}. Mismatches: ${MISMATCHES}." +fi + +if [ "$MISSING_ASSETS" -gt 0 ]; then + err "${MISSING_ASSETS} expected asset(s) were not found on release ${TAG}." +fi + +if [ "$MISMATCHES" -gt 0 ] || [ "$MISSING_ASSETS" -gt 0 ]; then + exit 1 fi -log "Done. Registry.json was NOT modified by this script." +log "Done." From 0a9168bcd88d3c99b941f3d674febb61624cc248 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 10:49:55 -0400 Subject: [PATCH 15/18] fix(release): never clobber an asset already on the release The upload step used --clobber and called it idempotent. Clobber is the opposite: it overwrites, and overwriting is destructive here. registry.json's checksums are written from the bytes published on the release (scripts/verify-published-checksums.sh --write). The release flow uploads tarballs to a DRAFT first, writes their hashes into registry.json, merges, then publishes. Publishing creates the tag, and the tag triggers this workflow. With --clobber it would rebuild all 129 tarballs in CI and overwrite the published ones, so the bytes on the release would no longer be the bytes those checksums attest to. Every free plugin would fail checksum verification at the exact moment of release. CI cannot reproduce the uploaded bytes. Identical tar streams still gzip differently across machines: Apple gzip 479 vs GNU gzip 1.12, and across zlib versions, measured 2026-09-11 on free/access-controls (6e9d3966 vs 0283c3b3). Reproducibility flags on tar do not help, because the divergence is in DEFLATE. Upload is now additive: assets already present are left untouched and only missing ones are uploaded, with both counts logged. That is what the file header has claimed since it was written. --- .github/workflows/release-tarballs.yml | 44 ++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-tarballs.yml b/.github/workflows/release-tarballs.yml index c649be49..a7ca0693 100644 --- a/.github/workflows/release-tarballs.yml +++ b/.github/workflows/release-tarballs.yml @@ -273,12 +273,44 @@ jobs: --prerelease=false fi - # Upload all tarballs and checksums (clobber = idempotent) - gh release upload "$TAG" \ - dist/*.tar.gz \ - dist/*.sha256 \ - --repo "${{ github.repository }}" \ - --clobber + # NEVER --clobber. An asset already on the release is the artifact + # of record: registry.json's checksums are written from those exact + # published bytes (scripts/verify-published-checksums.sh --write). + # + # The release flow uploads the tarballs to a DRAFT release first, then + # writes their hashes into registry.json, then merges, then publishes. + # Publishing creates the tag, which triggers THIS workflow. If it then + # rebuilt and clobbered, the bytes on the release would no longer be + # the bytes those checksums attest to, and all 129 free plugins would + # fail verification at the exact moment of release. CI cannot + # reproduce the uploaded bytes: identical tar streams still gzip + # differently across machines (Apple gzip vs GNU gzip, and across zlib + # versions), measured 2026-09-11. + # + # So: upload only what is missing. That is what "idempotent" in this + # file's header always meant, and what --clobber never did. + existing="$(gh release view "$TAG" --repo "${{ github.repository }}" \ + --json assets --jq '.assets[].name' 2>/dev/null || true)" + + to_upload=() + skipped=0 + for f in dist/*.tar.gz dist/*.sha256; do + [ -e "$f" ] || continue + if printf '%s\n' "$existing" | grep -qxF "$(basename "$f")"; then + skipped=$((skipped + 1)) + continue + fi + to_upload+=("$f") + done + + echo "Assets already on $TAG (left untouched): ${skipped}" + if [ "${#to_upload[@]}" -eq 0 ]; then + echo "Nothing new to upload — every built asset is already published." + else + echo "Uploading ${#to_upload[@]} missing asset(s)." + gh release upload "$TAG" "${to_upload[@]}" \ + --repo "${{ github.repository }}" + fi echo "Upload complete" From bc27c341020a7642f12f0f5f7fef64e30b509fe2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 11 Sep 2026 17:04:29 +0000 Subject: [PATCH 16/18] chore: backfill tarball checksums in registry.json for v1.2.1 --- registry.json | 1767 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 1510 insertions(+), 257 deletions(-) diff --git a/registry.json b/registry.json index 1181c283..4e94d9fd 100644 --- a/registry.json +++ b/registry.json @@ -41,7 +41,7 @@ "releaseTag": "v1.2.1", "checksum": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16", "checksums": { - "sha256": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16", + "sha256": "sha256:5d8bce9d80fac57c2912ce2f61dcb461b79659708ce3080f72f59ee0419e5e8b", "platforms": { "darwin-arm64": "5bdf210dbeb16255c516e71c97b5ee599fbe9767c452f81babcd05534fc68513", "darwin-amd64": "099c19bc11726483942e5bf140f230ae3ab9e26f8ae9e0e2695303fa0b8a7d08", @@ -49,7 +49,8 @@ "linux-arm64": "0dc16e82e45044f0766e4a68bf74619520e9ba28b11bf453ef16a0d750578a7a", "windows-amd64": "b89598b6e46a2a3f00c25632e402878c0c1ab7f4f7be13ab494532f417fe1a7e" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1.tar.gz" }, "ai-studio": { "version": "1.2.1", @@ -83,7 +84,7 @@ "releaseTag": "v1.2.1", "checksum": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb", "checksums": { - "sha256": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb", + "sha256": "sha256:322bbccd08a298202f4032102654e6d8511df87a69d97d6af2be75ce2ee0b198", "platforms": { "darwin-arm64": "18c6510d0192be1e2eb1af413a5796b912e8ffc8d5e2823dd50c4cf57735399b", "darwin-amd64": "c94d3380938b1059e13ed78ea5d69724243e09f25634fd1597144009a4822a4a", @@ -91,7 +92,8 @@ "linux-arm64": "32ba15d6ad87126f282e0a4ddd2d8e079169c3e88d9b559326d127b69eacdb89", "windows-amd64": "f6db648b3ac1dffcf12641fbf99f8845e18979db8535638b09d221bea515794a" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1.tar.gz" }, "alerts": { "version": "1.2.1", @@ -126,7 +128,7 @@ "releaseTag": "v1.2.1", "checksum": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd", "checksums": { - "sha256": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd", + "sha256": "sha256:9ec0a307eda1b50f741bf748fa8dce695f0dda302271710f621ae010faea7184", "platforms": { "darwin-arm64": "c8404a68c43fff044ae2fcf51d8a92b3383ca1cecac15e22b643ba18fe58b999", "darwin-amd64": "7c7935f5ad85c3d2d83f57e0dc61cdbc8cfb0982246365b234f65603a7a845c4", @@ -134,7 +136,8 @@ "linux-arm64": "2f621947d4e4d1d58fa6e8c615c02c1568a92b9dcfcdd53844c71bfd1d1d3202", "windows-amd64": "2407c97c56d58fc466da6443f0dd2d8e9884b4d7f05c8d72aba5b73b75061a33" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1.tar.gz" }, "api": { "version": "1.2.1", @@ -168,7 +171,7 @@ "releaseTag": "v1.2.1", "checksum": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757", "checksums": { - "sha256": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757", + "sha256": "sha256:2ac834a3264a1c877b525f07eea4c9777c566be9915745432207c02cf7090cff", "platforms": { "darwin-arm64": "da2120963f1892bce743c6441aad974d953321b4c44d6a01e2a2fb6967cd260c", "darwin-amd64": "b17ae30218bfb5149546674c265778954707b2eaad1e4f01f5a23e457f01e7f0", @@ -176,7 +179,8 @@ "linux-arm64": "3cb6bd84c48b4f01d8d43b3904d7e36e216ee529720e83a2460a15ac9c7fc4ef", "windows-amd64": "59eff7819129606c8798bc4ebfd840d1e843a54dd939ca71d32c07340102b487" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1.tar.gz" }, "audit": { "version": "1.2.1", @@ -210,7 +214,7 @@ "releaseTag": "v1.2.1", "checksum": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e", "checksums": { - "sha256": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e", + "sha256": "sha256:450fc7fb249560e46d3b83873ce97dd2046f521515e323e881b7a82a081c4f9a", "platforms": { "darwin-arm64": "f23ebcfd12569190ff1aeb181a708e2fba35a36365ca37500b54e52bf20c0bcc", "darwin-amd64": "afe57a4839b1415d0d9cb10d56df3a8e5e73b018e11493beba88e562435d8333", @@ -218,7 +222,8 @@ "linux-arm64": "850da1083be62c74cbf0bc36213e881a9c55a90cd6c210ce73cec2e7b52178c0", "windows-amd64": "1be13f1a13651c7d9d21374c8dddfdbe94a8980e0b2f4a03767645a60916c633" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1.tar.gz" }, "audit-log": { "version": "1.2.1", @@ -253,8 +258,9 @@ "releaseTag": "v1.2.1", "checksum": "215bfb2e2764ba2626a297a78adab845a7815ee17957c377f38ca7848ccea55f", "checksums": { - "sha256": "215bfb2e2764ba2626a297a78adab845a7815ee17957c377f38ca7848ccea55f" - } + "sha256": "sha256:29c963c02da01691c8fab7793289df9f3587e3bef4a580ae1eac52fef9cdf5b2" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-log-1.2.1.tar.gz" }, "backup": { "version": "1.2.1", @@ -290,8 +296,9 @@ "releaseTag": "v1.2.1", "checksum": "458e3b22b604a0d76e2993e5e7843182281ad1e84214afc31dc6364e3cc7d35a", "checksums": { - "sha256": "458e3b22b604a0d76e2993e5e7843182281ad1e84214afc31dc6364e3cc7d35a" - } + "sha256": "sha256:4f63a2c5a203c6024ee1fd4b742b78e158f60af9d67a17a65cab1b1bc2ea00d7" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/backup-1.2.1.tar.gz" }, "ci": { "version": "1.2.1", @@ -327,8 +334,9 @@ "releaseTag": "v1.2.1", "checksum": "118c7967172a7cedd1426cd180c95d0a76778d2cdee8fce5411511e3aaea752d", "checksums": { - "sha256": "118c7967172a7cedd1426cd180c95d0a76778d2cdee8fce5411511e3aaea752d" - } + "sha256": "sha256:14e42744db3afa80b0693371f46ce02c3dea91683eaf735839bcae7760f23aa2" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ci-1.2.1.tar.gz" }, "claw-cli": { "version": "1.2.1", @@ -363,7 +371,7 @@ "releaseTag": "v1.2.1", "checksum": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589", "checksums": { - "sha256": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589", + "sha256": "sha256:fda0dbe768b3317d5692d007f7f1e2853668ab1a7f25bb7e33fa7c7c9f8a418d", "platforms": { "darwin-arm64": "cc59c8081b44b725e3a5540e0a531d73d6dba24f51cc8b68f5f63ded0a52e69b", "darwin-amd64": "a1098b9abd36d59a3c8ed1aa4427eae794b2a8a0a8602731c52dd18591f41675", @@ -371,7 +379,8 @@ "linux-arm64": "bd429329132d3b9236579db37ca34f076f9303e042f200dd5d93346d59d3b487", "windows-amd64": "ecb99abd0a6a2de6ba703c6249db489ba258a58d977ac360b7a41e5d1a4cdf3e" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1.tar.gz" }, "content-acquisition": { "version": "1.2.1", @@ -431,8 +440,9 @@ "releaseTag": "v1.2.1", "checksum": "095fa07082add3e68fb4706d031300ace955256b47a2d737b8724369698a78e3", "checksums": { - "sha256": "095fa07082add3e68fb4706d031300ace955256b47a2d737b8724369698a78e3" - } + "sha256": "sha256:2cf3425a4788534364067fc00465d1e35f932088d0ecf8d81c81b0b1da82ca31" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/content-acquisition-1.2.1.tar.gz" }, "content-progress": { "version": "1.2.1", @@ -471,9 +481,10 @@ }, "checksum": "5bc44b327755732a219ecdaec757126e6550616cf4fcaa6ac8869c4a32b9e286", "checksums": { - "sha256": "5bc44b327755732a219ecdaec757126e6550616cf4fcaa6ac8869c4a32b9e286" + "sha256": "sha256:d74f9d89b48ceaed53f73ec5e201041a239482ac69d29cc02ec7c5a5e6127501" }, - "releaseTag": "v1.2.1" + "releaseTag": "v1.2.1", + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/content-progress-1.2.1.tar.gz" }, "costs": { "version": "1.2.1", @@ -506,7 +517,7 @@ "releaseTag": "v1.2.1", "checksum": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31", "checksums": { - "sha256": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31", + "sha256": "sha256:7a763a4205afd8315061fb8b8a723c34f38f90fe66cacd4e2065b4fd3c233b89", "platforms": { "darwin-arm64": "7b40834bb5c9813e09a16cadfc81073a93bbee39506a418f7a08795233311885", "darwin-amd64": "ee1bea1543f96a1321c6697c9438991b9d08bb982b095b585d37def59d5cc7fd", @@ -514,7 +525,8 @@ "linux-arm64": "b7e27340d4d62f7994e5c2706746a81067014009d2c860cde87abef483349e6a", "windows-amd64": "1cd1782de547bad85a9fddd40f87b26842dfc424790691435db8b67c6129fcf9" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1.tar.gz" }, "cron": { "version": "1.2.1", @@ -550,9 +562,10 @@ }, "checksum": "2cb08a2843c49c027504499c643b44d6156224d0275e6422e3488705801a665a", "checksums": { - "sha256": "2cb08a2843c49c027504499c643b44d6156224d0275e6422e3488705801a665a" + "sha256": "sha256:fd1d114767aedede617ece8ae72b8237177dad38d6121384b94b7bc881cf8420" }, - "releaseTag": "v1.2.1" + "releaseTag": "v1.2.1", + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cron-1.2.1.tar.gz" }, "dlq": { "version": "1.2.1", @@ -587,7 +600,7 @@ "releaseTag": "v1.2.1", "checksum": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96", "checksums": { - "sha256": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96", + "sha256": "sha256:ec1310beb970106b0902134441b6910c2217e3816e801584eb6aca11bfe7cb5c", "platforms": { "darwin-arm64": "c8019b590f0b0dc3d1baf9e7cbf120b2f5fd1c561be780c29ddee0324f82ba80", "darwin-amd64": "f03c70cf02325e420202e984a2b63a7d74b438c7e035e4167ff131743c231b77", @@ -595,7 +608,8 @@ "linux-arm64": "f1997872dc9f4fc26a390ede89167f040e4a7a79a2cf79fdb30b938c699f0384", "windows-amd64": "091376523991093cb461e493dc179c1878def1cc0b91562fbd81de6988d03c6b" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1.tar.gz" }, "dogfood": { "version": "1.2.1", @@ -630,7 +644,7 @@ "releaseTag": "v1.2.1", "checksum": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498", "checksums": { - "sha256": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498", + "sha256": "sha256:2db55540508ec2e372f3637746b592992949474a2b4c3ebec9a38c6a5fd7c4fc", "platforms": { "darwin-arm64": "af520c6bef1a3155d9e24eb60e9637145490479559932ecca8b160582aec4ba4", "darwin-amd64": "2232275278bd76115590e69048f8ff32fec50c89667a40cb77a2f0eb921cf805", @@ -638,7 +652,8 @@ "linux-arm64": "20a86a538a2437c5dbb4b7b2d4fd51f6cb4ccaa6d1502f8725788ef58de423bd", "windows-amd64": "fe903f7f017807dbbba8bcf64b1ef6f0b67825690b580d1fcc9150b611aa2c32" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1.tar.gz" }, "donorbox": { "version": "1.2.1", @@ -678,9 +693,10 @@ }, "checksum": "b25c64cb98710de42be81aaf257f9db75e153e81f7878ed6c768451e04c192a2", "checksums": { - "sha256": "b25c64cb98710de42be81aaf257f9db75e153e81f7878ed6c768451e04c192a2" + "sha256": "sha256:7b6b2a862085cfe34591d19f1fc8bfd8b8c586fb554c328e8e9d03032efa7a5d" }, - "releaseTag": "v1.2.1" + "releaseTag": "v1.2.1", + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/donorbox-1.2.1.tar.gz" }, "dr": { "version": "1.2.1", @@ -715,7 +731,7 @@ "releaseTag": "v1.2.1", "checksum": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3", "checksums": { - "sha256": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3", + "sha256": "sha256:50fc6cc42d137615071ef00ceaf8c8a4ccc5bf5ec7be09aa531575815a800c02", "platforms": { "darwin-arm64": "3cbb0cf8c52ee159f35667e21c87284bd0a89e209322b6b697e972ab029efc2b", "darwin-amd64": "1983e5022fcc66227d29dee16da007e9dc18b614f7e3efade9f7d75a5007d9f1", @@ -723,7 +739,8 @@ "linux-arm64": "31f4a7d1164fef01c3d02b228431a2074838df5e61dc7876e0b358737f808f1c", "windows-amd64": "4ea198d683dd8fd7a3e05a6694e0873cf663e32b692aa82b61eb69698dbb570b" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1.tar.gz" }, "e2ee": { "version": "1.2.1", @@ -770,8 +787,9 @@ "releaseTag": "v1.2.1", "checksum": "5d995fcd2a876d2ce69e45922c2b0a6cbd99d7edb11a4185ffab8ff2652d2d2e", "checksums": { - "sha256": "5d995fcd2a876d2ce69e45922c2b0a6cbd99d7edb11a4185ffab8ff2652d2d2e" - } + "sha256": "sha256:7bd6f7db7718cd769f2e185c1ee59326f3f70229d4e7c75a144effc80870302d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/e2ee-1.2.1.tar.gz" }, "family-gedcom": { "version": "1.2.1", @@ -808,8 +826,9 @@ "releaseTag": "v1.2.1", "checksum": "cbf04fc56d0b8121d84da19e9e5e6715fa3f9394e2bda3d02966898199817d81", "checksums": { - "sha256": "cbf04fc56d0b8121d84da19e9e5e6715fa3f9394e2bda3d02966898199817d81" - } + "sha256": "sha256:00fd7d24c6459bcfb757cc9d51d5f07b0a190ddd74823d29292d1766ddcf3297" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-gedcom-1.2.1.tar.gz" }, "feature-flags": { "version": "1.2.1", @@ -845,8 +864,9 @@ "releaseTag": "v1.2.1", "checksum": "837ca39444c01f878d42538503afc36f375d80882db08bffde2030e251398531", "checksums": { - "sha256": "837ca39444c01f878d42538503afc36f375d80882db08bffde2030e251398531" - } + "sha256": "sha256:a0e76608fd08d1b3b1a12c4e990ad6b8dee61c26bfc34a40a5b622eee4ee23b9" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/feature-flags-1.2.1.tar.gz" }, "federation": { "version": "1.2.1", @@ -881,7 +901,7 @@ "releaseTag": "v1.2.1", "checksum": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d", "checksums": { - "sha256": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d", + "sha256": "sha256:49b20ce3e8b1610177037c3203a13e67ce74937a9cb93c8215c6ca5df3cf6e37", "platforms": { "darwin-arm64": "681b38261abf7e7b5a2cff2c45758b87d181777f142bf0090c2daf53cfeb5f22", "darwin-amd64": "0a628a30d93a831cd5a874e6ffb9061b99d8ff78bb154bfab5b4817876f8e144", @@ -889,7 +909,8 @@ "linux-arm64": "c9c7c3b409873f7b73763be352c6c1d70f938abd34495aafb2ee57b23c9c132d", "windows-amd64": "a82e0ab75e540be234a5036715248f66d09a9367a3b8b2908a2aec8ffbc21c9a" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1.tar.gz" }, "flags": { "version": "1.2.1", @@ -923,7 +944,7 @@ "releaseTag": "v1.2.1", "checksum": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b", "checksums": { - "sha256": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b", + "sha256": "sha256:cc83fd76d0bcf9ba2ef981b5f86d7e61e32a4c2014e82080267bc13433b4dd56", "platforms": { "darwin-arm64": "0e9caa2b8aa53e8211481be1b40283d64adca120d66ceb7aa0236bd8a28893ce", "darwin-amd64": "e2d9777318cbbf2fcb4e8819cbd15b0303549edb2a0963f4d79a90c3a1a27bb3", @@ -931,7 +952,8 @@ "linux-arm64": "dceae54c8cc57774b01921e0d98fc0957174cd686fec7f551b2391e319407f2f", "windows-amd64": "e596b2a825f04194ade06f2efafaaaad9f87a79c027b3fbb10ef6e161336daa7" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1.tar.gz" }, "forgejo": { "version": "1.2.1", @@ -968,8 +990,9 @@ "releaseTag": "v1.2.1", "checksum": "f818e08355c4eaec6fd0add1f46674e6fdd455fa2c2d0f3855f044e871f859e8", "checksums": { - "sha256": "f818e08355c4eaec6fd0add1f46674e6fdd455fa2c2d0f3855f044e871f859e8" - } + "sha256": "sha256:0eb602a748df90687a9b949db12cbe5a6b39c84d4598274779c1b8a5b827b21f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/forgejo-1.2.1.tar.gz" }, "gateway": { "version": "1.2.1", @@ -1003,7 +1026,7 @@ "releaseTag": "v1.2.1", "checksum": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b", "checksums": { - "sha256": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b", + "sha256": "sha256:84716057a7122967772f48889ed722974efe51715999e325e38a12766175556c", "platforms": { "darwin-arm64": "84fa603ca058d2f2e7e5c93c304dd1042d1124f7dc8d1c69321ec284bb87c93e", "darwin-amd64": "6a873e9f30603ca13a295aed728434d454238fe055defc7bdd16644f34c1dcc0", @@ -1011,7 +1034,8 @@ "linux-arm64": "22a5c21ee20cda5e53e557840c9b2be8ac589ba7efc007b67a6c4899827e813a", "windows-amd64": "96a1b84085f7b2d7555290ff32aa4475dd6be1e536cec420b20744e93d1f9519" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1.tar.gz" }, "gauth": { "version": "1.2.1", @@ -1045,7 +1069,7 @@ "releaseTag": "v1.2.1", "checksum": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369", "checksums": { - "sha256": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369", + "sha256": "sha256:aab9055409bb391fd76704a251d33665caab9f2a0623581604278b9c492a161e", "platforms": { "darwin-arm64": "9a0d42af48c5fe66a1ba43ba923c9bc778e05989439e90ab398c15d7f34719f1", "darwin-amd64": "c0e3466449685de83be121732bbb86a59226e3fb49c8a234ba0b49f0948995dc", @@ -1053,7 +1077,8 @@ "linux-arm64": "29cb95ffabb36cb44f10b5b7b6f95c0b683ea26c1b61b81ac00caac9aa76a0a4", "windows-amd64": "ea7bf96284020876b4877719f064901ac40cddb2e5e66e46ab7b95fd32698104" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1.tar.gz" }, "gdpr": { "version": "1.2.1", @@ -1089,7 +1114,7 @@ "releaseTag": "v1.2.1", "checksum": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88", "checksums": { - "sha256": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88", + "sha256": "sha256:84e43aee22db62992a983059cedf531e5ab10b07bfd71af55ac62c6a14f470c4", "platforms": { "darwin-arm64": "9a6d58d1f3cd4a9484ea7ad54710ec0242747f1cf88f18ace26811cce4c4c57b", "darwin-amd64": "fdda06a3c20fb456f094e7b52cddaf5d8d6ea610203114d3c738ee79b7bfeb80", @@ -1097,7 +1122,8 @@ "linux-arm64": "34b95e89f0e6857f9ee6843404e09d79062454cedbf1586d8321744577c1dd03", "windows-amd64": "cf830252176244ffb248e5f0af2ded5269e5ccc5f658cd0b28e01bfd92e6f97a" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1.tar.gz" }, "github": { "version": "1.2.1", @@ -1155,8 +1181,9 @@ "releaseTag": "v1.2.1", "checksum": "2249b35287164a57769bf437951f8e5720e76adbc5060c7ab30d76b8e5396554", "checksums": { - "sha256": "2249b35287164a57769bf437951f8e5720e76adbc5060c7ab30d76b8e5396554" - } + "sha256": "sha256:a16375697c2971fbb72f7619696f8682348c0eead09fe33827e816d1831e0ca9" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/github-1.2.1.tar.gz" }, "github-runner": { "version": "1.2.1", @@ -1191,8 +1218,9 @@ "releaseTag": "v1.2.1", "checksum": "812ed28c5375ec45057462a582a086228754fc90579bc26307a3ae99adb2dead", "checksums": { - "sha256": "812ed28c5375ec45057462a582a086228754fc90579bc26307a3ae99adb2dead" - } + "sha256": "sha256:db307e5fd0857c2d16af9002b7f740a2f8348f55fed3e6893d9fce68fd908bd4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/github-runner-1.2.1.tar.gz" }, "infra": { "version": "1.2.1", @@ -1230,7 +1258,7 @@ "releaseTag": "v1.2.1", "checksum": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20", "checksums": { - "sha256": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20", + "sha256": "sha256:4994b5799c9ae9e6cd89d59f9921cd552cd5270d8fd52102a8cab26672db6879", "platforms": { "darwin-arm64": "b668494f59e8eff7201a5e3644039208a577613fd81703298abcb5f82931b737", "darwin-amd64": "9a187941e9a45eb55920f8a6f31a221bb9323c10fdbf8d72f23d48f3ff71dbf8", @@ -1238,7 +1266,8 @@ "linux-arm64": "469d9104e2261c06bed947f9d4e52eb19344a1bd8810baeaef3c78ee3b701ed3", "windows-amd64": "3ab512917906f707334a4ae395d2b7fd223bc45a4cab0fb74c74476c8aaa9470" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1.tar.gz" }, "invitations": { "version": "1.2.1", @@ -1274,8 +1303,9 @@ "releaseTag": "v1.2.1", "checksum": "4789b2293589617ccadb3bf0cff64c816eb40c16ac88a6e971f60bbbaf13b36d", "checksums": { - "sha256": "4789b2293589617ccadb3bf0cff64c816eb40c16ac88a6e971f60bbbaf13b36d" - } + "sha256": "sha256:0007c353120e003b5a10c564be065f3e3ede58c211cf80be4bb7f0cb0f23f0a9" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/invitations-1.2.1.tar.gz" }, "jobs": { "version": "1.2.1", @@ -1312,8 +1342,9 @@ "releaseTag": "v1.2.1", "checksum": "36e9a5ae3626ae392a93054ce59be209c5e0aed18bec33559fd781a632f88f96", "checksums": { - "sha256": "36e9a5ae3626ae392a93054ce59be209c5e0aed18bec33559fd781a632f88f96" - } + "sha256": "sha256:5149e099cb9746235176853ebb08952b3cdee6394f5b434b21612b1c7752c75b" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/jobs-1.2.1.tar.gz" }, "k8s": { "version": "1.2.1", @@ -1348,7 +1379,7 @@ "releaseTag": "v1.2.1", "checksum": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed", "checksums": { - "sha256": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed", + "sha256": "sha256:3458454eb5d6f3f918fea51b4f0676994d860dd79da8769fae99f73be78492b2", "platforms": { "darwin-arm64": "64585db0263234f49fa9dc63aa87f73f715c8301e716bfff7e71777ef88fb0aa", "darwin-amd64": "cbbfc223ee715e2d90f81863fbbcf840139aacaac11b2b8ba62b0427fa6c89cc", @@ -1356,7 +1387,8 @@ "linux-arm64": "9a55b485d44d59edc4a5ea2e786e85b673e65bcfa768a004a6a4b76921379203", "windows-amd64": "cde4f8ecff6f0a2785a59825304c5090612982b27608848eb31fe428ae3188d2" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1.tar.gz" }, "link-preview": { "version": "1.2.1", @@ -1392,8 +1424,9 @@ "releaseTag": "v1.2.1", "checksum": "18396b5a1b3f6a914557f96a03994d0bb889647a64feb17688ff8445efea8e4b", "checksums": { - "sha256": "18396b5a1b3f6a914557f96a03994d0bb889647a64feb17688ff8445efea8e4b" - } + "sha256": "sha256:8939955cafdfef1743985078a3a193854f93da47b203ce38e041bbb83a50c92d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/link-preview-1.2.1.tar.gz" }, "maintenance": { "version": "1.2.1", @@ -1426,7 +1459,7 @@ }, "checksum": "81eeefba47402707b2ed8c19c01195a2c2059303c0ca6030af8b8f88a73b8845", "checksums": { - "sha256": "81eeefba47402707b2ed8c19c01195a2c2059303c0ca6030af8b8f88a73b8845", + "sha256": "sha256:d468014ea12b88bc1e2065d0d4879d1fe7cdd356e8f0bf74e9ab8b115c91ae87", "platforms": { "darwin-arm64": "ef7eb2afc8348fee829ab91e8bdaaa697c08c9d379b0126c10927bd9070a57ea", "darwin-amd64": "6b3b5403db6b02431829092efe32a8b6d8072af2198fe8dc1a502793ceb042a3", @@ -1435,7 +1468,8 @@ "windows-amd64": "12982d3775323f4af2d8d10755f86d71d244cc8179eca6eec70196b2514fe5d0" } }, - "releaseTag": "v1.2.1" + "releaseTag": "v1.2.1", + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1.tar.gz" }, "mdns": { "version": "1.2.1", @@ -1471,8 +1505,9 @@ "releaseTag": "v1.2.1", "checksum": "427df3ebb91a2162599add09b8fde145901b781da11fbe3d7ed6746ce1dfa995", "checksums": { - "sha256": "427df3ebb91a2162599add09b8fde145901b781da11fbe3d7ed6746ce1dfa995" - } + "sha256": "sha256:69809c4431c073ba9e9227dea71d1f87fe29cdcf6368774fe6b993dc74fea106" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mdns-1.2.1.tar.gz" }, "mlflow": { "version": "1.2.1", @@ -1506,8 +1541,9 @@ "releaseTag": "v1.2.1", "checksum": "cddc0c0c7005b2b35160f01e23c9c12d78fbb457730a362c08f0f3ea29456194", "checksums": { - "sha256": "cddc0c0c7005b2b35160f01e23c9c12d78fbb457730a362c08f0f3ea29456194" - } + "sha256": "sha256:29ec27322ac8e24b3761422b2f3970e3ae50fdfe248157a41b68e34a2036c209" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mlflow-1.2.1.tar.gz" }, "model": { "version": "1.2.1", @@ -1541,7 +1577,7 @@ "releaseTag": "v1.2.1", "checksum": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794", "checksums": { - "sha256": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794", + "sha256": "sha256:a618f1dd152cb7b81ed7b76b1036eb3f4837970e1e8d1b0dace62fffb3671a77", "platforms": { "darwin-arm64": "1e0efe1f961a31ef7c30f6e29d990dd38ab177797c400cd65c6b3409f3dc2a2f", "darwin-amd64": "a90c13a84dfe6ccd0d981c575ae827028d4118c2d26d377a2cf610963a86a1e9", @@ -1549,7 +1585,8 @@ "linux-arm64": "7bf83615ea5db70410ac97689a582d925847fe2e91af6536a2f8dfff24cf868a", "windows-amd64": "e20a3b81ededebaa86e5eb8d75b9e0a58ce014f8494686fae4dcacaf54099dd5" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1.tar.gz" }, "monitor": { "version": "1.2.1", @@ -1584,7 +1621,7 @@ "releaseTag": "v1.2.1", "checksum": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a", "checksums": { - "sha256": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a", + "sha256": "sha256:9478bdb762a48af0edf4812833f38cfd83e18c688d22ca2e5f84a1e0ddfcd0e0", "platforms": { "darwin-arm64": "f39462147e39c65868b6a7f15c2dce159d0ad031373b43fc660c4be0be6ed665", "darwin-amd64": "9ee97e770018b2ec2afc370caac95ccc0546d5ddc86189db401ebb1d603eaccf", @@ -1592,7 +1629,8 @@ "linux-arm64": "52e2f3294ada39266b1d8640778867af694d8a1c4a1dfdcea2cfac7531bb321a", "windows-amd64": "7fe8c3dd079ed208aa2042683c3e9628ce692d758fe296a39dc9b080b020861d" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1.tar.gz" }, "monitoring": { "version": "1.2.1", @@ -1631,8 +1669,9 @@ "releaseTag": "v1.2.1", "checksum": "6d9fbb34cea12b625955a49c2474450cb8704119249d57d95ff4bf1a183df88d", "checksums": { - "sha256": "6d9fbb34cea12b625955a49c2474450cb8704119249d57d95ff4bf1a183df88d" - } + "sha256": "sha256:7b5b0f49a758515f1da7ac11ea9250d58ad8f4f0f780279d5e20ca0fcc21bb1e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitoring-1.2.1.tar.gz" }, "notifications": { "version": "1.2.1", @@ -1669,9 +1708,10 @@ }, "checksum": "dfcb4b63140ba3b92903c3b61467c1c22b6fcf175fd255d81ab41dc20c8687dd", "checksums": { - "sha256": "dfcb4b63140ba3b92903c3b61467c1c22b6fcf175fd255d81ab41dc20c8687dd" + "sha256": "sha256:3bd65950cfc0e4a03362d3d4aa8b0c04086ed0650181462092a14921c387a399" }, - "releaseTag": "v1.2.1" + "releaseTag": "v1.2.1", + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/notifications-1.2.1.tar.gz" }, "notify": { "version": "1.2.1", @@ -1706,9 +1746,10 @@ }, "checksum": "ed66f58a66cb2c7a715eb534a2bd6b6a1bcbec6d3a4b118b8f53513a894a1c34", "checksums": { - "sha256": "ed66f58a66cb2c7a715eb534a2bd6b6a1bcbec6d3a4b118b8f53513a894a1c34" + "sha256": "sha256:ce8fefb861ef43622fd8833417de29feeeaa536e9d8dd0de7a02e2829fa0d94f" }, - "releaseTag": "v1.2.1" + "releaseTag": "v1.2.1", + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/notify-1.2.1.tar.gz" }, "ollama": { "version": "1.2.1", @@ -1734,9 +1775,10 @@ "name": "ollama", "checksum": "affe917f8d212725db3ed2852ef0cc6b4513fac701406e4bf2774dbcb869d52f", "checksums": { - "sha256": "affe917f8d212725db3ed2852ef0cc6b4513fac701406e4bf2774dbcb869d52f" + "sha256": "sha256:3369853a2b55ea87782d1144986ebabbbfbbf5b9757758d54eb9a9ef5591f08b" }, - "releaseTag": "v1.2.1" + "releaseTag": "v1.2.1", + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ollama-1.2.1.tar.gz" }, "paypal": { "version": "1.2.1", @@ -1784,8 +1826,9 @@ "releaseTag": "v1.2.1", "checksum": "e51790ab52ccf1515d1cd8e266d393517de564f31480cd9245243cd6340e2be8", "checksums": { - "sha256": "e51790ab52ccf1515d1cd8e266d393517de564f31480cd9245243cd6340e2be8" - } + "sha256": "sha256:110e8472893855c8f6c4d6ef77c82fc8cd5e849a9d58b79cf16f6d7fd5126863" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/paypal-1.2.1.tar.gz" }, "push": { "version": "1.2.1", @@ -1825,8 +1868,9 @@ "releaseTag": "v1.2.1", "checksum": "9fe3a18eda502ac0a6752e4bf1c49fc656b680ca1fd9035a22cdba5a5b24d58a", "checksums": { - "sha256": "9fe3a18eda502ac0a6752e4bf1c49fc656b680ca1fd9035a22cdba5a5b24d58a" - } + "sha256": "sha256:e4b23cef0fb3887d51938ab21aa6100456d812d2635d4c59af0b4363c926a401" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/push-1.2.1.tar.gz" }, "queue": { "version": "1.2.1", @@ -1860,7 +1904,7 @@ "releaseTag": "v1.2.1", "checksum": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626", "checksums": { - "sha256": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626", + "sha256": "sha256:6bf30d6e0f8a7debe96d3c0d8f8b6ee7375d52ac4572b6f32780b91e0273326c", "platforms": { "darwin-arm64": "7b6ed611ffc64c78aef4b79b9627da08434d40b4554498d5f4346d53a43bd1b4", "darwin-amd64": "b18cf8b9548510905d9362fb1e78e546353389c0b19cf06125e5e31d275b0cf5", @@ -1868,7 +1912,8 @@ "linux-arm64": "84208085a8c6e943f8621419c0f91d3a31347fd4a8dac485559a44598c9c46dd", "windows-amd64": "8ccc15d1a9aa94ae27c94af6fe12a96bc76908f6206cd7f14c8cd3fa9eb83595" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1.tar.gz" }, "region": { "version": "1.2.1", @@ -1903,7 +1948,7 @@ "releaseTag": "v1.2.1", "checksum": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc", "checksums": { - "sha256": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc", + "sha256": "sha256:b199110ab9cb94c74a9f6e62c0722f7e58ad12844e1baad30bde213fbdc2dae3", "platforms": { "darwin-arm64": "5cd31df61b3a22e130b3efed777ab812467a92d27486008d378ba9d5f24af8d8", "darwin-amd64": "ec6c2426ae0ae9c243a72d148462e310a2be53560d9b53861f68db4d83f91e4d", @@ -1911,7 +1956,8 @@ "linux-arm64": "d0194abec4b33c07cd138a7ddf45f90eea80e946fe24690cc6f4c23a39149d6d", "windows-amd64": "57f15cc1bf85f9e29cb5974532e574e13abde0db272c19960192a904faceeabb" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1.tar.gz" }, "release": { "version": "1.2.1", @@ -1946,7 +1992,7 @@ "releaseTag": "v1.2.1", "checksum": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8", "checksums": { - "sha256": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8", + "sha256": "sha256:1bf4027c65d095a726570b335cbd84a40a4f4dd4938e4897bb23f76b52f57d26", "platforms": { "darwin-arm64": "824061303fa0922c4fd38d96ed8c2d1cf04ae38dd2753fb16a648b340b8cfe0e", "darwin-amd64": "783cd3b7e724209ce7cbc6dd1b05560f8b66fa897c0baf076629947c1b56eb44", @@ -1954,7 +2000,8 @@ "linux-arm64": "e45f8e3824baff993adf8ec31fca337c73cc08db2fca812b7a2922b840ab912a", "windows-amd64": "0b818576aa24bd89af364f099d3b4637eb28a1d0059c50fcee58d259b6637a08" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1.tar.gz" }, "search": { "version": "1.2.1", @@ -1996,9 +2043,10 @@ ], "checksum": "f5ad32a815f4edc9d4f350314f51e6b1a35e424d0a2259181f52a30c7e907c41", "checksums": { - "sha256": "f5ad32a815f4edc9d4f350314f51e6b1a35e424d0a2259181f52a30c7e907c41" + "sha256": "sha256:022db9d01e5d3965b8621395748fa576f320cd09198f5f3f62f31258cf89bc41" }, - "releaseTag": "v1.2.1" + "releaseTag": "v1.2.1", + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/search-1.2.1.tar.gz" }, "sentry-cli": { "version": "1.2.1", @@ -2044,7 +2092,7 @@ "releaseTag": "v1.2.1", "checksum": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f", "checksums": { - "sha256": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f", + "sha256": "sha256:c40c0bc559a13df25b46ce6396c555a7f2edef7ed8943d5390ff3f85357e64df", "platforms": { "darwin-arm64": "36871d2c965e144cb112d76877dc4e144785f2939f5d40850de4343bab9fa577", "darwin-amd64": "a136d357f3fd70103467528f3e30bfb8fbfceccfb41df18b16c5f936d16b78eb", @@ -2052,7 +2100,8 @@ "linux-arm64": "cf81ff1f89d426a8d74956fe90483b2304d8ef2e6282ea01cd10d62063772dd3", "windows-amd64": "cacec8bca6140b6ce23afbe330a8914d57fb6b9cb549950fab99c016771b38e9" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1.tar.gz" }, "shopify": { "version": "1.2.1", @@ -2095,8 +2144,9 @@ "releaseTag": "v1.2.1", "checksum": "ccee3978999fea81981d8ca6c83c4a6bc52ebd61557efe1ff6016f0ffbfce56f", "checksums": { - "sha256": "ccee3978999fea81981d8ca6c83c4a6bc52ebd61557efe1ff6016f0ffbfce56f" - } + "sha256": "sha256:c5da83c169e8672330b9377fd654b41ab7e60e802b6f1fc4ce98c4f299a3de07" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/shopify-1.2.1.tar.gz" }, "soak": { "version": "1.2.1", @@ -2130,7 +2180,7 @@ "releaseTag": "v1.2.1", "checksum": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee", "checksums": { - "sha256": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee", + "sha256": "sha256:3958da4da9b2929e1c3e2f5fe0aaa0f705cc2b0c1dad15f79b5adc7bd866e96b", "platforms": { "darwin-arm64": "d3fc6b07c2d56a17a119b29c335a695bf83a0b284811c7bf2f51ece575b74b8a", "darwin-amd64": "cd75d8c347702b13c15d99866ffb72a193c3112d21c1d7de56ebe3666ec1c08e", @@ -2138,7 +2188,8 @@ "linux-arm64": "121809645664ceeedae5fab3a0cd34ac5993cb0bf2bf39dbf9737247bf3ced1e", "windows-amd64": "fb86d50ae269fd966e94560f293ee3e4fd4f746e5523dc1ff2dbabe0f83b9cee" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1.tar.gz" }, "stripe": { "version": "1.2.1", @@ -2196,8 +2247,9 @@ "releaseTag": "v1.2.1", "checksum": "1333b4119fe65b099d7cc614577c4171848f86b1c83f10b456fac08faf263100", "checksums": { - "sha256": "1333b4119fe65b099d7cc614577c4171848f86b1c83f10b456fac08faf263100" - } + "sha256": "sha256:f766461fef712b04878d2019d3a6eebd2eb9be8c8d1c6541c3d3c6bd213a8ce1" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/stripe-1.2.1.tar.gz" }, "subtitle-manager": { "version": "1.2.1", @@ -2247,8 +2299,9 @@ "releaseTag": "v1.2.1", "checksum": "bef3fdb2502141e0c25219ded69d704e923759b268b88b58514a8ae19a1a6e80", "checksums": { - "sha256": "bef3fdb2502141e0c25219ded69d704e923759b268b88b58514a8ae19a1a6e80" - } + "sha256": "sha256:9bcddc4a5ad34e6caaa468d82b337b62d8b46dcb9d74f9ee226c2595e887b37a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/subtitle-manager-1.2.1.tar.gz" }, "tenant": { "version": "1.2.1", @@ -2293,7 +2346,7 @@ "releaseTag": "v1.2.1", "checksum": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae", "checksums": { - "sha256": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae", + "sha256": "sha256:81a3019c764c19947aa20b1810062d9694acafe5579fd107e88f9a37194c84da", "platforms": { "darwin-arm64": "d53369c3ca6155f606fa9daa1cdcf617afea35beebd76404f4c0f0c50f4d863a", "darwin-amd64": "20a691916fc8bab09ac7fac86a7c0b65c7065845b9d3463317436e6cc7c40026", @@ -2301,7 +2354,8 @@ "linux-arm64": "2c9080bf9427d20d03cc0bf7742b2ef2f3f4db9a4bcaf2cbf65c20f71dedc6a5", "windows-amd64": "5699c34a1a40164ed3a6adcb3fb39a056b413efc9464923696a638e3c1fe8c07" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1.tar.gz" }, "tokens": { "version": "1.2.1", @@ -2342,8 +2396,9 @@ "releaseTag": "v1.2.1", "checksum": "2e5cd40780b4ad27479ffd59e56e839b40f5cac119eebe6456a0501bc426562f", "checksums": { - "sha256": "2e5cd40780b4ad27479ffd59e56e839b40f5cac119eebe6456a0501bc426562f" - } + "sha256": "sha256:6e612a79e4decd181554b2b1d51873253c50b8232cbc916113fb8907d9c0133b" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tokens-1.2.1.tar.gz" }, "torrent-manager": { "version": "1.2.1", @@ -2405,8 +2460,9 @@ "releaseTag": "v1.2.1", "checksum": "792ec903947aa318983772cb61058a02eefce68f6321fad5ae2f7ae772a0eeae", "checksums": { - "sha256": "792ec903947aa318983772cb61058a02eefce68f6321fad5ae2f7ae772a0eeae" - } + "sha256": "sha256:f00d5213c05c2d4c35427437e1ee998107fb352b4c75386912e9e0fc9dc4cbd1" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/torrent-manager-1.2.1.tar.gz" }, "vpn": { "version": "1.2.1", @@ -2448,8 +2504,9 @@ "releaseTag": "v1.2.1", "checksum": "ae0484724af35ce5a2405b9b4310f5ebe697c4383dced62286f30b2308227886", "checksums": { - "sha256": "ae0484724af35ce5a2405b9b4310f5ebe697c4383dced62286f30b2308227886" - } + "sha256": "sha256:8eb838953889a7f3a3b5002b7f1ee2af22ea16a888a7e5171e1c1cc861b75346" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/vpn-1.2.1.tar.gz" }, "waf": { "version": "1.2.1", @@ -2484,7 +2541,7 @@ "releaseTag": "v1.2.1", "checksum": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542", "checksums": { - "sha256": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542", + "sha256": "sha256:195ffabffc7529a0fb587fdd945907a398775a9e5befeb6eb9ff3b976234a764", "platforms": { "darwin-arm64": "8aa8d8c4c14a94a66421f3b497f7dfceb5fcf0f86f2d95514918f530216b6d11", "darwin-amd64": "fb909c4fec21e18bfb8b7c14ab2ef4ae882cea669da07310f00cd78497146ee1", @@ -2492,7 +2549,8 @@ "linux-arm64": "1860f6d0303ad5289b762c8fda44539c9200e7819413587c7540912c4b4d800e", "windows-amd64": "c45da6e10a66874054135bb13447bd426b63872f07931761310200653f99106c" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1.tar.gz" }, "watchdog": { "version": "1.2.1", @@ -2527,7 +2585,7 @@ "releaseTag": "v1.2.1", "checksum": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f", "checksums": { - "sha256": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f", + "sha256": "sha256:689f3a9dbb44c9092ca10b90a20e98e7964128daa5aaea57993842b79cc5b5c0", "platforms": { "darwin-arm64": "65bf8e627eaef4ebde7eead0cc04d4d7dff9010b2040eeb2dbf680689f50c657", "darwin-amd64": "b738d7cc9af170fb11c93cd6cfc70a7676bfe6c18f747c4349dc4c94bc41fab6", @@ -2535,7 +2593,8 @@ "linux-arm64": "6db2a6ff8e740dc327b18537ad46afbc828c078384cdaed22d4dc9d7f2326d38", "windows-amd64": "89b253b21863cca09e224e5246eaaef2b9b439bc2973619b2f4c12e25eeaf786" } - } + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1.tar.gz" }, "webhooks": { "version": "1.2.1", @@ -2574,8 +2633,9 @@ "releaseTag": "v1.2.1", "checksum": "0ee5c202f4456c3aca514ab79b706aef36d0032a4a56595e925c0f51c2a93223", "checksums": { - "sha256": "0ee5c202f4456c3aca514ab79b706aef36d0032a4a56595e925c0f51c2a93223" - } + "sha256": "sha256:cc1d3f53a5bc48c19403a5eba9ea8fd9be09a9445c112920cc37285d8ec43a79" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1.tar.gz" }, "access-controls": { "version": "1.2.1", @@ -2604,8 +2664,9 @@ "releaseTag": "v1.2.1", "checksum": "6e9d3966a4588ce1c2d7a10c0f5c48f64015c68fc80a648ad7392c81223e8530", "checksums": { - "sha256": "6e9d3966a4588ce1c2d7a10c0f5c48f64015c68fc80a648ad7392c81223e8530" - } + "sha256": "sha256:1b002b683499d312bc2819870252f18e8a82fd34f2792c408e04ab9798bcf865" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/access-controls-1.2.1.tar.gz" }, "admin-api": { "version": "1.2.1", @@ -2633,8 +2694,9 @@ "releaseTag": "v1.2.1", "checksum": "3c9ba5681c326ed0d3d3cfc1d4d64b1e215ad69e8202bbc1d5221e1ee1a45be5", "checksums": { - "sha256": "3c9ba5681c326ed0d3d3cfc1d4d64b1e215ad69e8202bbc1d5221e1ee1a45be5" - } + "sha256": "sha256:b713febd954e8b1d4c42cb4d33ede85d29ce044e8d1449e49c7b2a425bbb14bb" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/admin-api-1.2.1.tar.gz" }, "analytics": { "version": "1.2.1", @@ -2662,8 +2724,9 @@ "releaseTag": "v1.2.1", "checksum": "24731bcf900ecb1e0c4910f29559f7f0b34e94e9775f2aafe7c8841f00761b74", "checksums": { - "sha256": "24731bcf900ecb1e0c4910f29559f7f0b34e94e9775f2aafe7c8841f00761b74" - } + "sha256": "sha256:6155012ec0a9bdbfcc3461a8f33acd3482331d606829d7ac005eb8035f386c74" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/analytics-1.2.1.tar.gz" }, "audit-analytics": { "version": "1.2.1", @@ -2695,8 +2758,9 @@ "releaseTag": "v1.2.1", "checksum": "5b04e63cbf0fc749e821c746b4e6324b77af6dab33142a874bbd05ba243319da", "checksums": { - "sha256": "5b04e63cbf0fc749e821c746b4e6324b77af6dab33142a874bbd05ba243319da" - } + "sha256": "sha256:e9d657cd268ac136d75b631cbf2d6342382e38d7afb7b11739410338a883c8ed" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-analytics-1.2.1.tar.gz" }, "auth-enterprise": { "version": "1.2.1", @@ -2718,8 +2782,9 @@ "releaseTag": "v1.2.1", "checksum": "30489ebbaf7b4ef63c7ec0e073ca5f228f5e8ee91f91bd16b434f305e9ecbedd", "checksums": { - "sha256": "30489ebbaf7b4ef63c7ec0e073ca5f228f5e8ee91f91bd16b434f305e9ecbedd" - } + "sha256": "sha256:1a3b1c30aa0453d3b484fa13a9e7f41a47a8861c9e80b3a34f9030f267309394" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/auth-enterprise-1.2.1.tar.gz" }, "byok": { "version": "1.2.1", @@ -2752,8 +2817,9 @@ "releaseTag": "v1.2.1", "checksum": "3069a7d9a2797069881476d8fdc7ee51de79c761acc1249ad9070b851ff6b191", "checksums": { - "sha256": "3069a7d9a2797069881476d8fdc7ee51de79c761acc1249ad9070b851ff6b191" - } + "sha256": "sha256:60f45d3d2d6ea9bed83f41bec5048606eb6c7030f81710cb231e74d904cffe3c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/byok-1.2.1.tar.gz" }, "cdc": { "version": "1.2.1", @@ -2781,8 +2847,9 @@ "releaseTag": "v1.2.1", "checksum": "b81f8530b1b42d81a2ecb5064581ac4f84cef01c5b6616b5b86489b28e5eabbe", "checksums": { - "sha256": "b81f8530b1b42d81a2ecb5064581ac4f84cef01c5b6616b5b86489b28e5eabbe" - } + "sha256": "sha256:aff247dee48fffc154bd44599ffe066e8555f81f0227c94f0a1b255d374ffe09" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cdc-1.2.1.tar.gz" }, "cdn": { "version": "1.2.1", @@ -2810,8 +2877,9 @@ "releaseTag": "v1.2.1", "checksum": "09d3af8e778af8d12017c8780305036648fe26bc2ea71d9108e67a1d39383a04", "checksums": { - "sha256": "09d3af8e778af8d12017c8780305036648fe26bc2ea71d9108e67a1d39383a04" - } + "sha256": "sha256:be3187f70eea6b7633215c4d4ef554ac8b260896c9f3d334141d48eeab6d79d4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cdn-1.2.1.tar.gz" }, "cloudflare": { "version": "1.2.1", @@ -2840,8 +2908,9 @@ "releaseTag": "v1.2.1", "checksum": "a5af1c0d901bfa883b56f69f20ad523014746916da144e5ffb50f59ea795c8cd", "checksums": { - "sha256": "a5af1c0d901bfa883b56f69f20ad523014746916da144e5ffb50f59ea795c8cd" - } + "sha256": "sha256:d1462d23b1b7091e216a130f84d7129a3851fdf1746e2e909b2c820c86a3aa48" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cloudflare-1.2.1.tar.gz" }, "compliance": { "version": "1.2.1", @@ -2879,8 +2948,9 @@ "releaseTag": "v1.2.1", "checksum": "90c1a11d71c0d7cb2fbc66da981c4a6cef1971268998d0deb726d7f697a7ae97", "checksums": { - "sha256": "90c1a11d71c0d7cb2fbc66da981c4a6cef1971268998d0deb726d7f697a7ae97" - } + "sha256": "sha256:aacd8c24bcb48c4d704601ffaa4cda8959abf9f0677e67c0115d33816c7c5e66" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/compliance-1.2.1.tar.gz" }, "content-safety": { "version": "1.2.1", @@ -2909,8 +2979,9 @@ "releaseTag": "v1.2.1", "checksum": "0bd848955d59d7472a826e65a8d7e5b0778d78c482cda5574576c2484d91081e", "checksums": { - "sha256": "0bd848955d59d7472a826e65a8d7e5b0778d78c482cda5574576c2484d91081e" - } + "sha256": "sha256:005a70b25d9830136ad8749461a4528cdfc72b538b60943a5558b8f4958e5d0c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/content-safety-1.2.1.tar.gz" }, "crdt": { "version": "1.2.1", @@ -2941,8 +3012,9 @@ "releaseTag": "v1.2.1", "checksum": "592b535e6331bd1d8241cbf138cefaae8de5e1b1683b6bb86fb77fbc685db402", "checksums": { - "sha256": "592b535e6331bd1d8241cbf138cefaae8de5e1b1683b6bb86fb77fbc685db402" - } + "sha256": "sha256:e586d0f7ef211633dd8f39a634a909e9f5cc50f32c1a9b8cb09dff848f59c9b2" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/crdt-1.2.1.tar.gz" }, "ddns": { "version": "1.2.1", @@ -2971,8 +3043,9 @@ "releaseTag": "v1.2.1", "checksum": "df8d74fbcf27336bdcfc25371865c905e1b972cec93ef7ce339bce3801d7be7c", "checksums": { - "sha256": "df8d74fbcf27336bdcfc25371865c905e1b972cec93ef7ce339bce3801d7be7c" - } + "sha256": "sha256:e9c005f824810e59a74e67eca02a19a5c4504a50a656ed14b9454276bfc0796e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ddns-1.2.1.tar.gz" }, "devices": { "version": "1.2.1", @@ -3001,8 +3074,9 @@ "releaseTag": "v1.2.1", "checksum": "d63bbb38f214d7a126dbe6251088511f396288c042bf0e6d4ef1c2ff21b69d01", "checksums": { - "sha256": "d63bbb38f214d7a126dbe6251088511f396288c042bf0e6d4ef1c2ff21b69d01" - } + "sha256": "sha256:58fdcd29b130f84d4fe276f85f01dce8f79ff19045be9d473b5f9527037c142c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/devices-1.2.1.tar.gz" }, "documents": { "version": "1.2.1", @@ -3031,8 +3105,9 @@ "releaseTag": "v1.2.1", "checksum": "4316ffc6541cf1c7a8c0d4b968eaadf03b990580019a8bf3232da4f38dfc60d3", "checksums": { - "sha256": "4316ffc6541cf1c7a8c0d4b968eaadf03b990580019a8bf3232da4f38dfc60d3" - } + "sha256": "sha256:cd6925df104e0cd87aa26050aa1d1ad1fb8b22d81921e516ef231a858aecd926" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/documents-1.2.1.tar.gz" }, "email": { "version": "1.2.1", @@ -3054,8 +3129,9 @@ "releaseTag": "v1.2.1", "checksum": "9330c3b0e9ace6613e6ed5edf88c99b03bcbcd1bfb22dec32ddeb403917d41bb", "checksums": { - "sha256": "9330c3b0e9ace6613e6ed5edf88c99b03bcbcd1bfb22dec32ddeb403917d41bb" - } + "sha256": "sha256:bdac751f0b65adfe53af60e3c20886d06cc9307878251abe78d54d3bc6cf19b3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/email-1.2.1.tar.gz" }, "encryption": { "version": "1.2.1", @@ -3083,8 +3159,9 @@ "releaseTag": "v1.2.1", "checksum": "83c67d0ced4bae71407601524bcf163d6cd721b04ae3c505e63526928110a03b", "checksums": { - "sha256": "83c67d0ced4bae71407601524bcf163d6cd721b04ae3c505e63526928110a03b" - } + "sha256": "sha256:afa7c72de503da649a481c9cd8b7d136e393061a6f058b295b8ad0cac4340dd7" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1.tar.gz" }, "entitlements": { "version": "1.2.1", @@ -3113,8 +3190,9 @@ "releaseTag": "v1.2.1", "checksum": "5e9445780e78bfb0f04d15f20ffbdbfcf7ae69feca427c46a7b3865b4c197b80", "checksums": { - "sha256": "5e9445780e78bfb0f04d15f20ffbdbfcf7ae69feca427c46a7b3865b4c197b80" - } + "sha256": "sha256:702d26062701654494ab2da0957b4e56337627da4e1b30debe1cfedd873e4976" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/entitlements-1.2.1.tar.gz" }, "event-bus": { "version": "1.2.1", @@ -3141,8 +3219,9 @@ "releaseTag": "v1.2.1", "checksum": "818b61f997ef6052f915e96fc59ab288006455f8523c13dc6f5b087481cfeb98", "checksums": { - "sha256": "818b61f997ef6052f915e96fc59ab288006455f8523c13dc6f5b087481cfeb98" - } + "sha256": "sha256:a62bd1756f48c3b4e98d202f8ca01bcc9867d90111129b89819d97511a025243" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/event-bus-1.2.1.tar.gz" }, "family-ancestry": { "version": "1.2.1", @@ -3171,8 +3250,9 @@ "releaseTag": "v1.2.1", "checksum": "ef05c58b911c37f00d1c1f1feaa84bf4ed0a6742cfe388297e35110a157b72a4", "checksums": { - "sha256": "ef05c58b911c37f00d1c1f1feaa84bf4ed0a6742cfe388297e35110a157b72a4" - } + "sha256": "sha256:1b055a79f44307a9e9a6c151a4a45c7287c6715782fe61a8f379ec656671de5e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-ancestry-1.2.1.tar.gz" }, "family-familysearch": { "version": "1.2.1", @@ -3202,8 +3282,9 @@ "releaseTag": "v1.2.1", "checksum": "31fe27efc8875036dbdc17e43ac36906fc27de38706086954fb6af7cf9d8a751", "checksums": { - "sha256": "31fe27efc8875036dbdc17e43ac36906fc27de38706086954fb6af7cf9d8a751" - } + "sha256": "sha256:52dfd9e628a486ab229f17dfd25d2ddb295bbda479fa382137111832642883c3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-familysearch-1.2.1.tar.gz" }, "family-myheritage": { "version": "1.2.1", @@ -3232,8 +3313,9 @@ "releaseTag": "v1.2.1", "checksum": "e88fca02f8ed544aab0695e2e462cc7a5ea552f07a639461c07981758187790e", "checksums": { - "sha256": "e88fca02f8ed544aab0695e2e462cc7a5ea552f07a639461c07981758187790e" - } + "sha256": "sha256:552f748893dcb6f24642b0d2d17082cce4a64cda640be5925844f2b3d19356bd" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-myheritage-1.2.1.tar.gz" }, "family-wikitree": { "version": "1.2.1", @@ -3262,8 +3344,9 @@ "releaseTag": "v1.2.1", "checksum": "a7c494f0fc166a880d17efdade77a56500428c29ff142cd96239e1782ba83a25", "checksums": { - "sha256": "a7c494f0fc166a880d17efdade77a56500428c29ff142cd96239e1782ba83a25" - } + "sha256": "sha256:a277e7b207b35e4b3add5ded5e29a665e3753138b17de4ea002dfb3e08572cf9" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-wikitree-1.2.1.tar.gz" }, "functions-v8": { "version": "1.2.1", @@ -3293,8 +3376,9 @@ "releaseTag": "v1.2.1", "checksum": "f5ca59c1f8b9b484537d58904633250de6505ed13c4a58b67eb1481c68333508", "checksums": { - "sha256": "f5ca59c1f8b9b484537d58904633250de6505ed13c4a58b67eb1481c68333508" - } + "sha256": "sha256:d84410738f366aa99c0ebf87969aee21cd8d42346720d7a00a4ccaead9d5afd6" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/functions-v8-1.2.1.tar.gz" }, "hipaa": { "version": "1.2.1", @@ -3325,8 +3409,9 @@ "releaseTag": "v1.2.1", "checksum": "a822f40d2f55e0fa2f327ed8e1abb8b8d06f7060e3b9b37be15ae7c73b4d6fb5", "checksums": { - "sha256": "a822f40d2f55e0fa2f327ed8e1abb8b8d06f7060e3b9b37be15ae7c73b4d6fb5" - } + "sha256": "sha256:36eff51c37ed25fbda80e6392f6f58bb6a10d9771a3eb8b403693190e834df25" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/hipaa-1.2.1.tar.gz" }, "home": { "version": "1.2.1", @@ -3354,8 +3439,9 @@ "releaseTag": "v1.2.1", "checksum": "b516901b055cbf661cb93d8067d049ed09f2db42f142958235ae489ff8531be1", "checksums": { - "sha256": "b516901b055cbf661cb93d8067d049ed09f2db42f142958235ae489ff8531be1" - } + "sha256": "sha256:a004bd9d330d13e9dc82c7fc40eaf6f5b3515ce184f05f9991215db079b9fb06" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/home-1.2.1.tar.gz" }, "idme": { "version": "1.2.1", @@ -3385,8 +3471,9 @@ "releaseTag": "v1.2.1", "checksum": "c830f4c19b0e4e44353b54dabfff1e3185d615577fd21f21590465eea9ff28ba", "checksums": { - "sha256": "c830f4c19b0e4e44353b54dabfff1e3185d615577fd21f21590465eea9ff28ba" - } + "sha256": "sha256:c89719026ab07ff02c33ab7695145db850cf0a7308448c4c66c4dc98f7fb115d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/idme-1.2.1.tar.gz" }, "job-queue": { "version": "1.2.1", @@ -3413,8 +3500,9 @@ "releaseTag": "v1.2.1", "checksum": "e2831cd3c06444ce9f0976ab965b066d3cee91d5608d9c3fe0b15421f45fdae2", "checksums": { - "sha256": "e2831cd3c06444ce9f0976ab965b066d3cee91d5608d9c3fe0b15421f45fdae2" - } + "sha256": "sha256:b64d5b3ccc3bb80f03f95cdf042e21c0725fba821bf3a2d09ce1a466c74b24b5" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/job-queue-1.2.1.tar.gz" }, "linkedin": { "version": "1.2.1", @@ -3442,8 +3530,9 @@ "releaseTag": "v1.2.1", "checksum": "761d4027be619d52f72925b5f260dde6eb8d8bcc28b32ef7d67ea2afe644fb15", "checksums": { - "sha256": "761d4027be619d52f72925b5f260dde6eb8d8bcc28b32ef7d67ea2afe644fb15" - } + "sha256": "sha256:4c62bc22c5a93891fea1ab21e9a8a3ec478b99feee4e5b20d4877116ca13a849" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/linkedin-1.2.1.tar.gz" }, "mail": { "version": "1.2.1", @@ -3471,8 +3560,9 @@ "releaseTag": "v1.2.1", "checksum": "a547a631637d4d1c2cad1cc960ec1796e14b59178973b7c54e7dd9c34265f0d8", "checksums": { - "sha256": "a547a631637d4d1c2cad1cc960ec1796e14b59178973b7c54e7dd9c34265f0d8" - } + "sha256": "sha256:2eb0dc05fbd51961882b344568c0eacff0da8fcfdcf31ad37f2d0a0de0c0c873" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1.tar.gz" }, "meetings": { "version": "1.2.1", @@ -3502,8 +3592,9 @@ "releaseTag": "v1.2.1", "checksum": "6f49a02a07ada9bb72daffdf70e06da92caf71a95b2ec05d413fa60b2f4c99a0", "checksums": { - "sha256": "6f49a02a07ada9bb72daffdf70e06da92caf71a95b2ec05d413fa60b2f4c99a0" - } + "sha256": "sha256:fa4333958f1a9b487bccdecf446b2f5a31131706d6bffa0ecd4ec05f93f00a2a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/meetings-1.2.1.tar.gz" }, "nself-cloud": { "version": "1.2.1", @@ -3530,8 +3621,9 @@ "releaseTag": "v1.2.1", "checksum": "81d6ad39e3ef18c2812f1a664d1c13ceb6940159b556f56f63d60af227f624ea", "checksums": { - "sha256": "81d6ad39e3ef18c2812f1a664d1c13ceb6940159b556f56f63d60af227f624ea" - } + "sha256": "sha256:7c541caf3443a5bf5e5dba278cbb7648230026ca4da4b514e8d3689c91e051f7" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-cloud-1.2.1.tar.gz" }, "nself-eval-gate": { "version": "1.2.1", @@ -3559,8 +3651,9 @@ "releaseTag": "v1.2.1", "checksum": "fd1287c644e3c60d29038c68c62e7e20bc15d5f407fe59cc10c9b1862514dba1", "checksums": { - "sha256": "fd1287c644e3c60d29038c68c62e7e20bc15d5f407fe59cc10c9b1862514dba1" - } + "sha256": "sha256:346a3d6db2316b598f755bb4b1314953cb95f1dd46a8997d25ae07ac59dc484d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-eval-gate-1.2.1.tar.gz" }, "nself-geo": { "version": "1.2.1", @@ -3589,8 +3682,9 @@ "releaseTag": "v1.2.1", "checksum": "48367db3d350895d27fe742237d89ebd1c0210ecca1e2285c78e237cc1d507e5", "checksums": { - "sha256": "48367db3d350895d27fe742237d89ebd1c0210ecca1e2285c78e237cc1d507e5" - } + "sha256": "sha256:98351e8a37ce7f34367e22df6536081ee2a66cda981570b2912c4d5c892a268a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-geo-1.2.1.tar.gz" }, "nself-image": { "version": "1.2.1", @@ -3624,8 +3718,9 @@ "releaseTag": "v1.2.1", "checksum": "a664b5853c5df24ceaa0fea75a59da1aac25e7c07a596fa2d69f2ca4b873f1d0", "checksums": { - "sha256": "a664b5853c5df24ceaa0fea75a59da1aac25e7c07a596fa2d69f2ca4b873f1d0" - } + "sha256": "sha256:07363f7181a5d1d3b8702bb72939b02479046a2360aa5b8de6afc9ff651f5f06" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-image-1.2.1.tar.gz" }, "nself-pdf": { "version": "1.2.1", @@ -3656,8 +3751,9 @@ "releaseTag": "v1.2.1", "checksum": "3ddade984c51555b8ee81aa83c1b5e2fcf9f7c9f3d09562e102f573e9de597df", "checksums": { - "sha256": "3ddade984c51555b8ee81aa83c1b5e2fcf9f7c9f3d09562e102f573e9de597df" - } + "sha256": "sha256:3f2a19ac47dfc5a32a8d496b3945ad41230d18866e0619ef456fc4b220e77bf3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-pdf-1.2.1.tar.gz" }, "nself-scan": { "version": "1.2.1", @@ -3690,8 +3786,9 @@ "releaseTag": "v1.2.1", "checksum": "85db1a432059ce4588ac0f36dcfc62270c11b473c267db8acc0567e3dfeadbc5", "checksums": { - "sha256": "85db1a432059ce4588ac0f36dcfc62270c11b473c267db8acc0567e3dfeadbc5" - } + "sha256": "sha256:7cb80dd9f78f1572d7ce23adf1d84c7eb9a6ef90441b8d08e803d7b40b0d6743" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-scan-1.2.1.tar.gz" }, "nself-sync": { "version": "1.2.1", @@ -3727,8 +3824,9 @@ "releaseTag": "v1.2.1", "checksum": "e78deb7b78f361deac0c1529f92a9ca40edfbedfbf9e9e437eda2cbd5837aa6c", "checksums": { - "sha256": "e78deb7b78f361deac0c1529f92a9ca40edfbedfbf9e9e437eda2cbd5837aa6c" - } + "sha256": "sha256:65cb9d210f62a25130624bbcb0340add8c7a1e970fbfc7137d6470834421870d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-sync-1.2.1.tar.gz" }, "nself-vault": { "version": "1.2.1", @@ -3759,8 +3857,9 @@ "releaseTag": "v1.2.1", "checksum": "af60a93d84444127ea7e22a826c951b2a31a2a4a71a8a7bb37a0b1205e1937a2", "checksums": { - "sha256": "af60a93d84444127ea7e22a826c951b2a31a2a4a71a8a7bb37a0b1205e1937a2" - } + "sha256": "sha256:3b6d18a67a8e8abbedddecab93e5a95051f6d1cc7ad08440f1cca6fa410baadd" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-vault-1.2.1.tar.gz" }, "object-storage": { "version": "1.2.1", @@ -3792,8 +3891,9 @@ "releaseTag": "v1.2.1", "checksum": "5b7bf3e129efdde764528d9cd4fb96a4f790067778eaf5aa7a709f4147b8c7df", "checksums": { - "sha256": "5b7bf3e129efdde764528d9cd4fb96a4f790067778eaf5aa7a709f4147b8c7df" - } + "sha256": "sha256:e00366c466ec95d3049053a94e81ea65e3d351b8a16f528e41bdf3c662ae4b5b" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/object-storage-1.2.1.tar.gz" }, "observability": { "version": "1.2.1", @@ -3821,8 +3921,9 @@ "releaseTag": "v1.2.1", "checksum": "c5c66501998cc7aa423a18ac8f0ba9509dfc15c440b641856028087679c50ef7", "checksums": { - "sha256": "c5c66501998cc7aa423a18ac8f0ba9509dfc15c440b641856028087679c50ef7" - } + "sha256": "sha256:67de59538cc3cb9cce8b724c044105e2fd616c5d336056394150010c18b99d04" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/observability-1.2.1.tar.gz" }, "payments": { "version": "1.2.1", @@ -3850,8 +3951,9 @@ "releaseTag": "v1.2.1", "checksum": "7e25ca3e13a458eddbfa97e73e5a11dd1534cf7da917f768ac9dddfa387810fd", "checksums": { - "sha256": "7e25ca3e13a458eddbfa97e73e5a11dd1534cf7da917f768ac9dddfa387810fd" - } + "sha256": "sha256:992a6466f6674e2d18abd19056bdc9169df95abb4999213c3480280bdf0a2cd8" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/payments-1.2.1.tar.gz" }, "pentest": { "version": "1.2.1", @@ -3879,8 +3981,9 @@ "releaseTag": "v1.2.1", "checksum": "039d896548cc7c64c3033712906baacb0aa21ddd3c7629451c140133bc2d32fc", "checksums": { - "sha256": "039d896548cc7c64c3033712906baacb0aa21ddd3c7629451c140133bc2d32fc" - } + "sha256": "sha256:544e8279821b3f9ce8329829246fdb3c38bd8980bb620e6a0c0fccbc098a43a0" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-1.2.1.tar.gz" }, "pentest-kit": { "version": "1.2.1", @@ -3907,8 +4010,9 @@ "releaseTag": "v1.2.1", "checksum": "4495d4ad638f6b791ac5f01ba4fc9493cee0fa26122b7391542bd9fd514d3c5a", "checksums": { - "sha256": "4495d4ad638f6b791ac5f01ba4fc9493cee0fa26122b7391542bd9fd514d3c5a" - } + "sha256": "sha256:2f65723883754824a551e3b223cc607c3622fec937e9bb593620b35fdf4bc3b8" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1.tar.gz" }, "plugin-clawde": { "version": "1.2.1", @@ -3930,8 +4034,9 @@ "releaseTag": "v1.2.1", "checksum": "32e27e2fb3036a89aae6c69617ef25cb7cff8fcf13992583e4e68d9251f13abc", "checksums": { - "sha256": "32e27e2fb3036a89aae6c69617ef25cb7cff8fcf13992583e4e68d9251f13abc" - } + "sha256": "sha256:dfec158c22aefbdd972f8857f6ef0646c3f5410ce9509a4c3c4b631e6a3ae925" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-clawde-1.2.1.tar.gz" }, "plugin-gauth": { "version": "1.2.1", @@ -3953,8 +4058,9 @@ "releaseTag": "v1.2.1", "checksum": "f5d3ae0adbdfb86c3cdb18f0c41975645d85a723616f73d40d431bbaba751abf", "checksums": { - "sha256": "f5d3ae0adbdfb86c3cdb18f0c41975645d85a723616f73d40d431bbaba751abf" - } + "sha256": "sha256:0c1cf7be503faa53076ac022fa9e9cf2b08ee46d5e4b49e0ca3ddced580c2265" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-gauth-1.2.1.tar.gz" }, "plugin-llm-gateway": { "version": "1.2.1", @@ -3976,8 +4082,9 @@ "releaseTag": "v1.2.1", "checksum": "773524889faa560b682a1d648fe76ab7a2289e95c5997dd2d864ecea13d91a68", "checksums": { - "sha256": "773524889faa560b682a1d648fe76ab7a2289e95c5997dd2d864ecea13d91a68" - } + "sha256": "sha256:a2e52a8ea3592797ede141a7ed3efeaf87471b4787b5c31934b37db6ce9db2c0" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-llm-gateway-1.2.1.tar.gz" }, "plugin-pty": { "version": "1.2.1", @@ -3999,8 +4106,9 @@ "releaseTag": "v1.2.1", "checksum": "d0113187dd8ea1204c24f8370d86dfc6ca3092bc43c13f822200b15df0a77da2", "checksums": { - "sha256": "d0113187dd8ea1204c24f8370d86dfc6ca3092bc43c13f822200b15df0a77da2" - } + "sha256": "sha256:cd4ec1a8fd29553a11f76891ed1ca06f0ce04ad489fa66616e900ca4c488ccdf" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-pty-1.2.1.tar.gz" }, "plugin-retrieval": { "version": "1.2.1", @@ -4022,8 +4130,9 @@ "releaseTag": "v1.2.1", "checksum": "a41a11ae99ed35b9542babc025b17650440c540fc7bba098a721dcf1c532af45", "checksums": { - "sha256": "a41a11ae99ed35b9542babc025b17650440c540fc7bba098a721dcf1c532af45" - } + "sha256": "sha256:83861eb3d036276680c7c58bd14df6a1bdfa1528572564f9750f35f86f3bcae4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-retrieval-1.2.1.tar.gz" }, "post": { "version": "1.2.1", @@ -4055,8 +4164,9 @@ "releaseTag": "v1.2.1", "checksum": "0bfe68a2847edfbd12114b22eab5ec683f2415f019f1c0a75cc3a597e02aeb08", "checksums": { - "sha256": "0bfe68a2847edfbd12114b22eab5ec683f2415f019f1c0a75cc3a597e02aeb08" - } + "sha256": "sha256:4730166dfacc1de7f7763c6f9fa2b6c12a5d6bc691544a41a82fd70e2df3c172" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/post-1.2.1.tar.gz" }, "retro-gaming": { "version": "1.2.1", @@ -4087,8 +4197,9 @@ "releaseTag": "v1.2.1", "checksum": "02c6d55ae0800323ff9a205c5917a6941223f54a04df9a4b039f99713483476a", "checksums": { - "sha256": "02c6d55ae0800323ff9a205c5917a6941223f54a04df9a4b039f99713483476a" - } + "sha256": "sha256:978b18176f279ec352c0a55c969eda39311545b00f4065c2ec19c1472ccd8d4c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/retro-gaming-1.2.1.tar.gz" }, "rom-discovery": { "version": "1.2.1", @@ -4119,8 +4230,9 @@ "releaseTag": "v1.2.1", "checksum": "d648bdf3bf37aed7d08a3efb8ac73615e02a436fabbf690b6ff4c654cf575cdf", "checksums": { - "sha256": "d648bdf3bf37aed7d08a3efb8ac73615e02a436fabbf690b6ff4c654cf575cdf" - } + "sha256": "sha256:9e11ad43026ea1ec79c2914894b3ec9db1321f07c58972df0eb3f8355d349f0f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/rom-discovery-1.2.1.tar.gz" }, "siem": { "version": "1.2.1", @@ -4152,8 +4264,9 @@ "releaseTag": "v1.2.1", "checksum": "57a2930c5f498777bcff01ceef148afd3efaec1013dcc1bb13813bc7ad200191", "checksums": { - "sha256": "57a2930c5f498777bcff01ceef148afd3efaec1013dcc1bb13813bc7ad200191" - } + "sha256": "sha256:b447d05872c51fbbe35169ee850b60751e2909ec0926a578e5b02167672d98d5" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/siem-1.2.1.tar.gz" }, "sms": { "version": "1.2.1", @@ -4175,8 +4288,9 @@ "releaseTag": "v1.2.1", "checksum": "a2b4aa085299f1b4a2972009c1fed3ef0ffb965d6fe66a2be2aaa61b08ec7645", "checksums": { - "sha256": "a2b4aa085299f1b4a2972009c1fed3ef0ffb965d6fe66a2be2aaa61b08ec7645" - } + "sha256": "sha256:bad33c5141cb77acbadcc75746e9080154d04979c6c67f66bf420876d9bf1e3e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sms-1.2.1.tar.gz" }, "storage": { "version": "1.2.1", @@ -4203,9 +4317,10 @@ "tables": [], "checksum": "cee934dc9e8a95f67950cf3bdf81f70e610ace5dedede89b82f7eedd346564c4", "checksums": { - "sha256": "cee934dc9e8a95f67950cf3bdf81f70e610ace5dedede89b82f7eedd346564c4" + "sha256": "sha256:4ffc35d775a0c99771faf3b9b10075d66c5ba32344e72a7e839a07eb4b5bb632" }, - "releaseTag": "v1.2.1" + "releaseTag": "v1.2.1", + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/storage-1.2.1.tar.gz" }, "storage-transform": { "version": "1.2.1", @@ -4235,8 +4350,9 @@ "releaseTag": "v1.2.1", "checksum": "522a38ef35a689a40719af0c9d9cd56d929cf08ded564bd62843ff46e68fb403", "checksums": { - "sha256": "522a38ef35a689a40719af0c9d9cd56d929cf08ded564bd62843ff46e68fb403" - } + "sha256": "sha256:8b9031d5a7b41fd0f270270e1d743f905c983e8a58f659b2358c38a2f874bbe8" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/storage-transform-1.2.1.tar.gz" }, "tenant-controller": { "version": "1.2.1", @@ -4265,8 +4381,9 @@ "releaseTag": "v1.2.1", "checksum": "6ed7d89b72a4b11b1dce4a2e494aed69cfca0ec51294a1d8382280be3d46ea96", "checksums": { - "sha256": "6ed7d89b72a4b11b1dce4a2e494aed69cfca0ec51294a1d8382280be3d46ea96" - } + "sha256": "sha256:09b0b44869209ab6637995fc095365530c1fc44e9367a03f9ec58a95cb6c5a61" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-controller-1.2.1.tar.gz" }, "transactional-email": { "version": "1.2.1", @@ -4296,8 +4413,9 @@ "releaseTag": "v1.2.1", "checksum": "43a86b405669f09d47b05ee6700767f8f54af36315e09ab93d4184473d4cb299", "checksums": { - "sha256": "43a86b405669f09d47b05ee6700767f8f54af36315e09ab93d4184473d4cb299" - } + "sha256": "sha256:fd08f54f6f79a3ffc2fc4e6c22ed3ce64a5131ff318e6441f7fcf8aa3bc7b0fd" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/transactional-email-1.2.1.tar.gz" }, "warehouse": { "version": "1.2.1", @@ -4325,8 +4443,9 @@ "releaseTag": "v1.2.1", "checksum": "0ac4dbb1bd55c893140181a8a16419a6da96f1fb0754b3d1861576ed5c5717b3", "checksums": { - "sha256": "0ac4dbb1bd55c893140181a8a16419a6da96f1fb0754b3d1861576ed5c5717b3" - } + "sha256": "sha256:91384c9f196fb368a27eb825cb2ce5d6a14fdf29b0837d9e92b6da47b7b68d13" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/warehouse-1.2.1.tar.gz" }, "web3": { "version": "1.2.1", @@ -4357,8 +4476,9 @@ "releaseTag": "v1.2.1", "checksum": "77cf94dedf162dc7580e1cb695c4793525a5dea33993f280bd4de661ab1263df", "checksums": { - "sha256": "77cf94dedf162dc7580e1cb695c4793525a5dea33993f280bd4de661ab1263df" - } + "sha256": "sha256:9426659414d8b164940b03f9023ddf4a0866e8b84cabb247d93b7ab93bf9e33f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/web3-1.2.1.tar.gz" }, "workflows": { "version": "1.2.1", @@ -4388,8 +4508,9 @@ "releaseTag": "v1.2.1", "checksum": "b287a558fbb4595c9e58611389d1e4048ea43aca7d8913910cd10056b5818063", "checksums": { - "sha256": "b287a558fbb4595c9e58611389d1e4048ea43aca7d8913910cd10056b5818063" - } + "sha256": "sha256:6f457b9c1b7a03236bcef82a81fcb72220181c01d7c6579330a0b64bfc4dbef8" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/workflows-1.2.1.tar.gz" }, "shared-utils": { "version": "1.2.1", @@ -4410,7 +4531,12 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "installable": false + "installable": false, + "checksums": { + "sha256": "sha256:b3ba3dbaa743d1cefcebeda21fe24348a4b549edd2e0732efb9b2d5b586683a0" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/shared-utils-1.2.1.tar.gz", + "releaseTag": "v1.2.1" }, "tmdb": { "version": "1.2.1", @@ -4451,8 +4577,9 @@ "releaseTag": "v1.2.1", "checksum": "043bc8d4ced877a59e78ce67b8e6b25b489afd42d4e45ba8fdbe0fecb16318df", "checksums": { - "sha256": "043bc8d4ced877a59e78ce67b8e6b25b489afd42d4e45ba8fdbe0fecb16318df" - } + "sha256": "sha256:771d00e5a7d63ecd0dd311fdc10ca9a212ba74473e5a842a13de7e9c3c3784e4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tmdb-1.2.1.tar.gz" }, "game-metadata": { "version": "1.2.1", @@ -4487,8 +4614,9 @@ "releaseTag": "v1.2.1", "checksum": "81c220149c3b9555644c9891f29879bf416acab722c690aea4df016872bf0ffc", "checksums": { - "sha256": "81c220149c3b9555644c9891f29879bf416acab722c690aea4df016872bf0ffc" - } + "sha256": "sha256:482125be2dce22ac5eb5ac5bcbba6c0471dc420f0ae44dfcfa2eb3cb179882a0" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/game-metadata-1.2.1.tar.gz" }, "sports": { "version": "1.2.1", @@ -4534,8 +4662,9 @@ "releaseTag": "v1.2.1", "checksum": "78a8d9026d5c367e678c2e2b74d13268b799ffa6ad956360a64200d089b4e626", "checksums": { - "sha256": "78a8d9026d5c367e678c2e2b74d13268b799ffa6ad956360a64200d089b4e626" - } + "sha256": "sha256:7365f5081d1543a7fb03c73b0ba71ded8cd9cf8004b7f7f339f65ed553ab859d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sports-1.2.1.tar.gz" }, "podcast": { "version": "1.2.1", @@ -4570,8 +4699,9 @@ "releaseTag": "v1.2.1", "checksum": "f4714ca8dbbcc668cf4936d152f4f2e68173af7dfea0a9cec18f71eac491f50f", "checksums": { - "sha256": "f4714ca8dbbcc668cf4936d152f4f2e68173af7dfea0a9cec18f71eac491f50f" - } + "sha256": "sha256:5e421670608d252f56bd64eba16b1a4917dd20ff631cadb5686eeaf7f8ce588a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/podcast-1.2.1.tar.gz" }, "file-processing": { "version": "1.2.1", @@ -4603,8 +4733,9 @@ "releaseTag": "v1.2.1", "checksum": "b8a9551f38586f2215b0a0e38a01d11b304d42e880c11d7b89843b72d3ba771e", "checksums": { - "sha256": "b8a9551f38586f2215b0a0e38a01d11b304d42e880c11d7b89843b72d3ba771e" - } + "sha256": "sha256:6695dc38cd01823e944373e8ebfb893003ec804afae312970ea1babc592cd362" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/file-processing-1.2.1.tar.gz" }, "media-processing": { "version": "1.2.1", @@ -4646,8 +4777,9 @@ "releaseTag": "v1.2.1", "checksum": "cda9c4d015cf49631f55105bb4dc99806775d585f3bcdd74851d49d0fcb02a78", "checksums": { - "sha256": "cda9c4d015cf49631f55105bb4dc99806775d585f3bcdd74851d49d0fcb02a78" - } + "sha256": "sha256:fb908d7bab56eddeb75649f2fd4e32d568ea2bc4c47eca49df89ec0c2ae81d93" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/media-processing-1.2.1.tar.gz" }, "geocoding": { "version": "1.2.1", @@ -4680,8 +4812,1129 @@ "releaseTag": "v1.2.1", "checksum": "0641b2a79af09bccd0c7cfd75055609bf2bbcc0e9b5e3bffd03ecca2b37fff4e", "checksums": { - "sha256": "0641b2a79af09bccd0c7cfd75055609bf2bbcc0e9b5e3bffd03ecca2b37fff4e" - } + "sha256": "sha256:fd243377a98045b3df88eed92d9bf414eca5bb8e75cbbc7a6906a82b084d9d9d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/geocoding-1.2.1.tar.gz" + }, + "ai-cli-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:f09699e679ec95a1dd4b0e43ca7300d2ef380cdc3146e41f3251d574a38b73df" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "ai-cli-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:3c5687010cecb95fac74cc099dfa40e861bec9bc6db296df2136dd286102405c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "ai-cli-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:ad2c47cb0763c493959ea42094d3a74152bbec5f1800d3b11e47dd406a3da9ff" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "ai-cli-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:eacdabe4bb7d6c5c098f39256037fc9cfba7e64d49ae719daadd6f12b973ce54" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "ai-cli-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:eebc395738b5b2c99014b0e59c2fc56963e5a70373cc030f67a6fa27ce492a84" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "ai-studio-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:4cad8160bad0b21ff2ebaf2f6cfac66aec6ce32d125494cfc444673e7fd094c9" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "ai-studio-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:2c9bfaba7462d5bed7eb962160b9955dc940ba4364e15d04d0fec7f809a388c0" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "ai-studio-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:994666d6f80aa52fa94d9a5bab9a92cd2ffe2aa092abecaf89a8772a20a58b30" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "ai-studio-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:d3ec888c5043c6623f52fd76c5ec315a8b21e2034d616bcebf68c51b1c9355a4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "ai-studio-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:c1daf80e5a1c2e2bbbb8d03a65bff9d9174a8a90c3b7822ceb473a2e18ee339b" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "alerts-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:3b06082098cebb4fce74e2ed50e75ab0749bf04ecd942bf0ada9793943c6a7d2" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "alerts-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:6c99a15e613dcb34e6168c7db78851142985bccc58cbf42c365efac58a4eff23" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "alerts-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:39aa3f7b186839b0c2d615dc1b25bac2ce37c1a312180d40da18b8f65aebddeb" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "alerts-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:485a6a4241cc551bd4f18ccbec199453c42afbe8a0b2a8805cd62ed62f706e08" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "alerts-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:28e8522de5fb8637e89697b6228a96c3826fe98b41c9d7884584fd5e5890e645" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "api-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:2e6aa55310ac8996ac48420cdaaeab7322e068001f8b98fee6133dbe3787c5a4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "api-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:43c25e1bbcbc159da14c4c7f4fd0b4e4ef1e2aaf6a1055035b9af42ec147c546" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "api-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:08ca39730a98b4978f55bc0edba367350a9ced6f9242269f875f72b30f927175" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "api-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:bb56793bc586f82a7aae885273a7841c0f43990ecb4f1a9ddc1537aa09758f02" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "api-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:d760a3596320705c80651e829de6a360ad201bf21c662b50da1a5ad8e5a6066c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "audit-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:11aec83f998a2992eb36c0db0a28eef243015721e7a8dfad8c32dbdf226b148c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "audit-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:12f5056cd57d0d0c0761dc3386aa9cd3bad098a312ff7717af00e95d55ab349d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "audit-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:ab7156d092d9c36099f7dce658be489976e7301cb44156227d48f3612b6bf748" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "audit-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:7556aa206ff903a226111ccc66f6e5f09fa71eb5295c012e9c3b11c70cf1d531" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "audit-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:024757e38a7e6c600ccb0c23c56177ed29f8ca5edcb4a56ca4508cc91fd5a86a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "claw-cli-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:6ff90642a3d18c8165bf92856584d014def34fe16b6baabb76604bf888163b82" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "claw-cli-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:d96e1ab5928c45d5594ffc60ee690951c22bd37fcf76ab92d539c6455f60d5c0" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "claw-cli-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:589742d390eb81ca04b803db46b8342e85f7dc6de0389b018b7a5c2766bd302f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "claw-cli-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:603d8859579ba5b6227a409313d5295d2e5455bf87916766f830e2a2c468f34f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "claw-cli-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:abffbca7caa3499110289601d5ff1f5180a6147b8dddd2566e1e9792008c9616" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "costs-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:427334120d315034e79a98ec14ba37aa0842bc14fb435a712bd95b748f03a0da" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "costs-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:e1c557b28fbf8d64113b19f675dc73be1d27689bf2427b003dd206e2046aa75b" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "costs-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:21e108234ba639dbb395c7a8226a3c166079441cea1097a5fb2b3285645d57f4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "costs-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:32530453e23a84759a416c96155fe759af10dbc814be2a4de39b838823cff0db" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "costs-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:350510e8461ce3e6f7deece14163ac55e329c40ccd6176df407b7eca940b54c3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dlq-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:2f2a90f8a01934fbd8ce743ab46f1525dfe1006b8907225a33fa1e20e2a01d8c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dlq-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:baa953b92c4d14220d01241920dc3d8388b30dbcd7341538e9c5afd68b76515c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dlq-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:0b8eb5377d99e55383ce485ba1c46b8de5263620b871f10da3e1f916749fee6f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dlq-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:bf32e542335329949174d45e3e5a2a2d667ad79dcde390ea3b0efba38f1b3075" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dlq-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:d4525b9a91ded889078b0a8db7072210133fc42a10218f18cf5737cad7e60497" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dogfood-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:2da0bd5c4e9fb614866d228aadeeeaebfeedf1c69fd6a66296fda0bd7126b09a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dogfood-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:8e5185c456697874f825130e68db8f11654c5d5dd1df819a5075318a2cc25b2f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dogfood-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:5e02fc20aca6966d4914950753e7d70a59af03069d4001695738e547e534c9ff" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dogfood-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:afb00da5c318b8acc9c88fa7aba99a680b2e60706f0b15285bde80fb32c40ee4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dogfood-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:8f3e7d0ac00c3abce4f0c93114e03d75bdd62f8420ae3124b8df5a07882ba991" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dr-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:fbeac561ad222ce0ece064eef5bd40bc74f81074d755b5d3b41b3a9018f658b1" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dr-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:66c247eb4aeb9c3ca52166c37241bb2ca340039c3416040e106af48a51e37104" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dr-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:a501f350a087da762e89e7f2034270693f07257deb3d8f59c641c86dcbdb5348" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dr-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:fd99b15917f3c53882f044b3474154368c2b607c6943c20e1b1e0633e766be54" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "dr-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:d279e2d418b045a866ef664e9968f124d31db8b32ab33b897a91b173de98a397" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "encryption-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:5798acdbc72bb963a027f457b63feecebd4ebe572fb5acda8f5b5560260d35f3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "encryption-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:68dfc43cef1b38ecbb1b03aabae1931746cd6e8ac51b747266a84165d10a18f3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "encryption-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:509608c14c987776033e0f098c7511a4a1151447e4aa9ea4ce1164224f409da4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "encryption-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:a8f0a8a6637e37a1560b8089dd88ece7720d9ae75c544bc1c36e7ecb4165205e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "encryption-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:ea735f9e7e58f4aa546005fe8454c029fe3a8d8affdeb70a925ccfde14fba28d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "federation-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:281a6fa9f3006b0e84e1d3db6f69f3053b9d0c22e5de10e222991422a36813e4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "federation-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:40bf742f304f4771c5d574ed257549d3035de1e9a8d9ad35f6f936b6378e23ee" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "federation-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:d1696402ffebc834635c398a72ec301e5a1561b78e0dea2ff583660b299f24df" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "federation-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:e28a7075fe83433d12bf3b14cc9c060e9f0367f11ef86abd13431e5a463c7662" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "federation-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:c409afc20f7f3f0aa09d9f21190c80db24bafc3c28aa352dcaed60402221da8a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "flags-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:2b01840568d763d95be95003a96e8a68a6e55058b381a79a7c4fdcd5e5959ef1" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "flags-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:e42c33ac1d7161a2a5e2b5134a6492018808a8e1074e39fb117adb2652ffacb2" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "flags-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:f82ef4460e9d96fc8883785325a4c48873de18bf866e439c0fa5a0acf3b19059" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "flags-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:fdfe2c9b4792bb1c3e18811ae0ddf8d48d8a8425033264d8245e72a675aa29ad" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "flags-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:5c67c99342c8e03b18b8ae6b6a9815faaff24d92446defce17e7ea304c3060bb" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gateway-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:9d8e079ec1f31a61ae27fdcde724e561bb2c69f27dbaf3657e08e04ce13cecec" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gateway-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:589f52cb8894481679934dcacb740e556887628d9b948d4ca08558dedc410448" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gateway-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:2726129207cbee5cc4d8499774e9d76b98d6d494d8185f054dd9a6e95d148521" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gateway-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:0a3fe72f0271b161943f929cfaf37d4c8ecd6af1154653b4227ab36d906fcb5f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gateway-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:8792f9393c8718936c9fe65e64fe03e383aee8ac34be553f70864970dceee1cd" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gauth-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:d2f1c6bee6dd25c6e355a7d5c16b55e685e5bbb073a9f5497fa17772f39668af" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gauth-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:b33aa4b68e9f838223f69fddd9e44ed317c4ebd08a7a2fc9e7b32385b49b6adc" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gauth-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:dd8205a2ff9fc4ad90a8d3d30d329def5216413ed54915b7cafff13db25903ec" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gauth-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:dcc6357ba23e59ef089be7f6686b3d867d660c458e0f42f276a1e97fc4cde64c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gauth-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:eec873e83b810497d5a30233d0746da04c6744b7fe8d8c2139167fbe30bf8aa2" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gdpr-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:f4daa6e7f575672dc8fa506d2f547b3739c4cf34f09b03583d2b745cfe9ac0b4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gdpr-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:f087fb4de45a531593d9f0152d9724c2cbae8025f343ec9c543b2acc884a4de3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gdpr-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:1f3bba453d5667a46acdaa738a9b017296f3f35ddc96763dfdcaec0615af0afd" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gdpr-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:a39cf8f9163709cbb321f371cb283d2f4f7fa431b3002c51f2de2124dc84d68a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "gdpr-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:249498c5b282148c344ca19613a1e47db864616b6d42b1b49217a7ce1868ee07" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "infra-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:0b351ce379f7a7bfcaed52c24349105d8e9b0d0202e73684304ccb32680a5e74" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "infra-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:67c8cf445938b18a9362d48418b15a315d6f2414aa33c7751bae0c504a3ebee5" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "infra-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:aad7a6410ed19bf406369750de5289c0ffb179170a2731a1cdb510c89585b732" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "infra-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:09350027570bc7a896dd0eae27da5bb27901f7303eae48bc16f72cb9c66dac21" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "infra-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:5984954c1c61121e5041434ca3d0283381c3a9599437600b7e7a39f8fde1f965" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "k8s-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:961c0d941f748745969e57d1ac67e0ae4a6b968fe7c58207c569e3e3c7892359" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "k8s-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:ba86cf228c9cc43520d3e890ac33c4c76309f98386400a4859d5773f9d780932" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "k8s-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:1faa10fcd6b2f99d3100e6adcc39fd6e62d9b0eb77bf35538b0ad97c187964d9" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "k8s-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:734b340b1fc43e0bb3b69a18ebb3e1808cbd61d20f39b42785fb9efc70aa5a5f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "k8s-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:784aeb198d2b2ade2515f40704ed41d43bee269027e5055ab37f09182ca1c8c1" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "mail-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:0ac4d707fe0a34fd00d01aa3447d680e9cb9971da04ff25283b2f082d3a9bbe4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "mail-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:86bc44042674e4363e96b36ebf2c2f253816de207c9cbaea708838b2956541bc" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "mail-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:46a67d46f9ab14cb4e25556120158aa6e8c9fd90604a34352f7893f2b3241384" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "mail-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:2e1273530459282a9855c4e9c4ff53b0509ec1dbdf88c7d0906f6a90b0f03d72" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "mail-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:2d4f26b9b8dfdc4f4a0920f923e70a3a725106617ee11b030e7f8f03d151e26d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "maintenance-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:40a8ce73eb38d942ec9b65198f07dd3044fc37d25ef2f6f8dfd6b88105bba2b5" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "maintenance-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:1fef1d6fe8328134bda4e93a9dfef43f04b8c72b3910f84525d3e322940b0035" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "maintenance-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:e943796452602fc9f1d4ac07403e0a7e7018160bf0648bfa5d311dc32fda9b66" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "maintenance-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:67089460c37789c9aa661711e90f5f6fcb93c9943a72339e2d39afc956a4973c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "maintenance-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:2c73233b6acbc6b0185965a0288917b496994671a0c25d590e6bb1ee1283a64e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "model-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:ba6d765de85249661af777625b62789fdd8635e68f0596e0266db2eb99b220aa" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "model-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:5bdd26917abbcae43bdd995710657dff8d388e3100b928a450a073400e600c6e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "model-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:60b563de03f2dbe8b39457c27f26dbc42ebe4ccaeefc7077d48280d77830a561" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "model-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:2e8ba35aac8d2efc17bce7a7f386a139c53c247d037bb29a7938fe4ad2813dc1" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "model-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:19d7a1e745958bf1e47a58d595a6ec2ea9bbf2d32e16451da067dd6a514ecf4a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "monitor-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:3be57ed1a6641fa1478587dce95a2aa18c57062d3473c206dc70f15d1bf5fa3e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "monitor-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:60a5e68325ee243d087908fcf2719b77671780e552f8e3c6e61ae416537f5ea4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "monitor-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:fc38bc30aba2516b4800bb93cbcdefa49b23b0ecc0af0717f52f66cadc4fdea2" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "monitor-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:7daa0c2ba22ea065fc4913e852242e0e10726d2c99b3b05b6c4bf24f53cfd0e3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "monitor-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:4728958bdfaa9e569dfac6baf1e03ac632f5265437fbf3d260682ecc25c154c4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "pentest-kit-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:aac14ea870734570a85d0c6d08e6cce63e96472250814363ca294d3643853ec3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "pentest-kit-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:986af84284f9162f3a02063b2c4d5bc30d8582ae20146db9fa257036da4b78a3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "pentest-kit-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:1f7d485729b5b5eaa428b4b16653dfb0924df229e946f08dc3c5a69b43cf9c68" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "pentest-kit-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:3fb1dc48b8ba9a235808da659bb1f2218d1febbbdd405475b54b225818d64b0c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "pentest-kit-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:7e0326d8190ca97d8a5a0fdf88495095bf8bb9d00e97cf8f029c500b7f5a2b69" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "queue-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:18a1c5561c5d85ac6ba5459386c608164e173141f037292a8446e65657a8e98f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "queue-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:fb6de207e92af115151cb984f57b4ad660843dd61caa02b3071fc42d715a2d46" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "queue-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:85eb88559ef1e8223672b295b35db7414575d693f1116d51556f3bc5d1f1cde9" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "queue-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:66f248bec20afca52b9556c3139600ffb5258b15c60daa096de394b39b1af572" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "queue-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:7bac24e8ca57ebb1d5d6808417607483e9609a5fd06e86c1c500215042d4374d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "region-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:461dc5e1b85fe836734fe5fd59c048a67fd8b68d18dc3a7fe0dc41597086021b" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "region-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:dfbc4b2a54b37f543024c660838977ee719c7084240d473baf11783eb9639c3b" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "region-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:580f5f8e458225251f206d64c3e18a5815470d032fbd1f69bfad95f327f12c1f" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "region-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:2cce93e171cddccd1ac9c61572f2a35ab7ba6efabcd7e2b33540797bbbe19a71" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "region-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:dc9eaf76a086a14691ee120161def9c9eadbc9bf77b16322817f6edc70f6e03c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "release-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:c05388622e679ac98b489b41c502e0cbfe623206931a9ee1cbfbc6888653c1d2" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "release-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:3b9e11ca0d0d57f91987830d0babdbff8ff5240d5f10b82dd33dc26bc8eca556" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "release-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:b1411f544578e9dc87612778bc45941cd4a00828465f37aee4a6f0fa61dc79b9" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "release-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:c05132030073003b8af79ebcd79773b99ecbafbbbc10c8567857fce699a6f5bd" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "release-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:b834de5cf8fb0cbb0f706ebd39f0c9c1ab4db53c9d021c77c685b92c5a941212" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "sentry-cli-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:72e31bf43529c73c6c69c175ac0b8b2b00a135dc9a58015e5eade100a9963ae0" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "sentry-cli-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:af9bb63fd89f349e4e00f9cbb1d18cb51f696460d6364d1159da5e65220981a6" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "sentry-cli-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:62e328002dd7402971df080636b0ec0b2d06df0691e53beb900b9314e5b7761b" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "sentry-cli-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:a3e63cca12f2a6b45cb70a37216f5b31964c970c656a34987dec0c5a34e1881e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "sentry-cli-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:f59f1267d043219a354e7e7edd573cbb8a594b71d4f9a56ac40f7148b57e8ed0" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "soak-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:ce8b798caa20e3dc3c35a0d60faa10c12a03ec8255115d8740b9dfc66b5f145c" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "soak-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:63eba62b2a2af02173f639662034b4d35a49fba00bc4d852e16cce71e0093257" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "soak-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:1fd80d6c57447413070be7ff1455d9e3717e1d986dbe5aea8891f8002429abf3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "soak-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:427c2e4825c5849c66a89cc2f6b2c3de91afcc3748cd7794ef06a75f593d7838" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "soak-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:22a13cdc300111d5d6646106940a6caf8606cf38caa5d742f3962c45b55087dc" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "tenant-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:01c95f78ac85ac02c1c5e7cd8ccaa1aebc50aaff25285374a9044928736f446a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "tenant-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:bc645193a521877379b36f45cee855b5999617e9914e72d5715d090ec4f314a4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "tenant-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:6a577b9dd4ba54768541eee0d50f4359879d6ee31cd1bf346143c7986a5a1594" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "tenant-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:84db957ee06a6b793f4d6de8d6812382bcab9444a28b3e443ca642dfb73de4b3" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "tenant-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:26f79656eada5b5334bb922667b1aebac0f73988fa511d93904351aa0505d6f4" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "waf-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:8048ecc9619d56cb41411a6d7e27b0c816f6fcf0c87b65c8bac9b6e1de449f7b" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "waf-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:316bf389893ed8e06e55de71d456e3fa2b86696a67ea6cce9faf1843ed4b3c0d" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "waf-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:9fef314843ace6404425d13bf59d90066c7eb6057718a358354082d8e6417de6" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "waf-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:1db9b97b6edd3329c03f8526a39ad064390e0bf14789c6d4e339b585562a9823" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "waf-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:fc3da3b511acaf102a03488978519916200a1a08169aef9185ddae9151e1bf2a" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "watchdog-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:30a6a5e4b231c00f37343efea0e0e4b25885ec75945bdda7b20b06c1f12cb415" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "watchdog-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:ba165c82d9651dc42044732d2adee06df0a96f0877cc235c4c4ccb04557e4dd7" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "watchdog-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:192c43e0a00841947a52bf794e2fdbce586b9ca24080d795c0210d5749c592e1" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "watchdog-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:bfe9b24f669ac3b348ca62f165691c4d0ea635c7f00a10041529942f499b5441" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "watchdog-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:1febc7701438fd6f875443b7b44969cd9751b2fed4f65693a2f95d409ced8005" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "webhooks-1.2.1-darwin-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:b4a5379902b7abe25c12332de5032f55c66db1ed2dd35325dfe67a889022f62e" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-darwin-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "webhooks-1.2.1-darwin-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:952d8a79b643a26428a343453b939b1cf3ae85c01dd1e6d9ec9e06927333ca19" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-darwin-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "webhooks-1.2.1-linux-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:e5844b9b8f231c3a9892e98ae088e9da7a8184e731fc678157b2380a11fa92e0" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-linux-amd64.tar.gz", + "releaseTag": "v1.2.1" + }, + "webhooks-1.2.1-linux-arm64.tar.gz": { + "checksums": { + "sha256": "sha256:122b0e89cfed1d2b60453100aad5c6a4d441494940a1f91d6edae64e5cd4d201" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-linux-arm64.tar.gz", + "releaseTag": "v1.2.1" + }, + "webhooks-1.2.1-windows-amd64.tar.gz": { + "checksums": { + "sha256": "sha256:8602828883813a69c2c0d0e421af9620784996b3bc66ba81afcc25b9465d2d07" + }, + "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-windows-amd64.tar.gz", + "releaseTag": "v1.2.1" } } } From 37e94979326f866380f05b28d67017f47e976681 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 13:51:27 -0400 Subject: [PATCH 17/18] fix(release): repair registry corruption and write checksums from published bytes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three related fixes. The automated backfill in the previous commit corrupted registry.json, and the checksums it wrote were not the published ones anyway. 1. registry.json — restored to 129 entries, checksums written from the bytes actually served. The backfill step derived the plugin name as "${tarball_name%-.tar.gz}". That suffix does not match a platform tarball ending "-linux-arm64.tar.gz", so the substitution was a no-op, the name came out as the whole filename, and jq's assignment CREATED it. registry.json went 129 -> 289 entries, with 160 junk keys such as "ai-cli-1.2.1-darwin-amd64.tar.gz", each carrying a checksum and no version. The CLI resolves installs from this file. Separately, every checksum already on this branch disagreed with the release: all 128 source tarballs mismatched when compared against the published assets. They had been computed from an earlier local build. Identical tar streams do not imply identical .tar.gz bytes — gzip's DEFLATE output is implementation- and version-dependent — which is exactly why the checksum of record must come from the published artifact. Now written by scripts/verify-published-checksums.sh --write v1.2.1: 288 fields from the release's own bytes. Re-verified in report mode afterwards: 288 assets checked, 0 mismatches, 0 missing. 32 plugins carry per-platform checksums (4 more than before, which had never been populated). 2. release-tarballs.yml — the backfill now splits at the first "-", classifies source vs platform, writes platform hashes to checksums.platforms., refuses to write a key that does not already exist, and fails if the entry count changes. Any of those four guards alone would have caught this. 3. verify-published-checksums.sh — it issued one `gh release download --pattern` per asset (578 API calls for this release) with stderr discarded, so a throttled download was reported as a missing asset. It produced a false MISSING for flags/linux-arm64, which is present on the release. It now lists assets once, downloads once, and separates "absent from the release" (a real defect) from "published but not downloaded" (transient), because those call for opposite responses. --- .github/workflows/release-tarballs.yml | 69 +- registry.json | 2331 ++++++------------------ scripts/verify-published-checksums.sh | 60 +- 3 files changed, 665 insertions(+), 1795 deletions(-) diff --git a/.github/workflows/release-tarballs.yml b/.github/workflows/release-tarballs.yml index a7ca0693..844ee26f 100644 --- a/.github/workflows/release-tarballs.yml +++ b/.github/workflows/release-tarballs.yml @@ -322,24 +322,71 @@ jobs: VERSION="${TAG#v}" REPO="${{ github.repository }}" - # For each plugin tarball, update registry.json with checksum + tarball URL + before_count="$(jq '.plugins | length' registry.json)" + + # dist/ holds TWO kinds of tarball: the source tarball + # -.tar.gz, and for cli plugins five platform tarballs + # --.tar.gz. They need different registry + # fields, and telling them apart matters. + # + # This loop used to derive the plugin name as "${tarball_name%-${VERSION}.tar.gz}". + # That suffix does not match a platform tarball (which ends + # "-linux-amd64.tar.gz"), so the substitution was a no-op and + # plugin_name came out as the whole filename. jq's `.plugins[$name] = ...` + # then CREATED that key. One run on v1.2.1 grew registry.json from 129 + # entries to 289 — 160 junk entries such as + # "ai-cli-1.2.1-darwin-amd64.tar.gz", each with a checksum and no + # version. The CLI resolves installs from this file, so that is a + # corrupt registry, and it was committed and pushed automatically. + # + # Now: strip at the FIRST "-", classify by what follows, and + # refuse to write a key that does not already exist, so a naming change + # fails the release loudly instead of silently inventing entries. for checksum_file in dist/*.sha256; do tarball_name="$(basename "$checksum_file" .sha256)" - plugin_name="${tarball_name%-${VERSION}.tar.gz}" sha256="$(cut -d' ' -f1 "$checksum_file")" tarball_url="https://github.com/${REPO}/releases/download/${TAG}/${tarball_name}" - jq --arg name "$plugin_name" \ - --arg sha "sha256:${sha256}" \ - --arg url "$tarball_url" \ - --arg tag "$TAG" \ - '(.plugins[$name].checksums.sha256) = $sha | - (.plugins[$name].tarballUrl) = $url | - (.plugins[$name].releaseTag) = $tag' \ - registry.json > registry.tmp.json && mv registry.tmp.json registry.json + stem="${tarball_name%.tar.gz}" # -[-] + plugin_name="${stem%%-${VERSION}*}" # + suffix="${stem#*-${VERSION}}" # "" (source) or "-" + + if ! jq -e --arg name "$plugin_name" '.plugins | has($name)' registry.json >/dev/null; then + echo "::error::$tarball_name resolved to plugin '$plugin_name', which is not in registry.json." + echo "::error::Refusing to create a new registry entry from a tarball filename." + exit 1 + fi + + if [ -z "$suffix" ]; then + # Source tarball — the artifact the flat checksum attests to. + jq --arg name "$plugin_name" \ + --arg sha "sha256:${sha256}" \ + --arg url "$tarball_url" \ + --arg tag "$TAG" \ + '(.plugins[$name].checksums.sha256) = $sha | + (.plugins[$name].tarballUrl) = $url | + (.plugins[$name].releaseTag) = $tag' \ + registry.json > registry.tmp.json && mv registry.tmp.json registry.json + else + # Platform tarball — belongs under checksums.platforms.. + platform="${suffix#-}" + jq --arg name "$plugin_name" \ + --arg platform "$platform" \ + --arg sha "sha256:${sha256}" \ + '(.plugins[$name].checksums.platforms[$platform]) = $sha' \ + registry.json > registry.tmp.json && mv registry.tmp.json registry.json + fi done - echo "registry.json updated" + # The entry count must not change. Backfilling checksums never adds or + # removes a plugin; if it did, something derived a name wrongly again. + after_count="$(jq '.plugins | length' registry.json)" + if [ "$after_count" != "$before_count" ]; then + echo "::error::registry.json entry count changed during checksum backfill: ${before_count} -> ${after_count}" + exit 1 + fi + + echo "registry.json updated ($after_count entries, unchanged)" - name: Commit updated registry.json run: | diff --git a/registry.json b/registry.json index 4e94d9fd..32b4d6d3 100644 --- a/registry.json +++ b/registry.json @@ -39,18 +39,17 @@ "binaryName": "nself-ai" }, "releaseTag": "v1.2.1", - "checksum": "f5162fae82506ccb27d97a97da592127c3ee69a8e07e007dacdb0ca0d6793b16", + "checksum": "5d8bce9d80fac57c2912ce2f61dcb461b79659708ce3080f72f59ee0419e5e8b", "checksums": { - "sha256": "sha256:5d8bce9d80fac57c2912ce2f61dcb461b79659708ce3080f72f59ee0419e5e8b", + "sha256": "5d8bce9d80fac57c2912ce2f61dcb461b79659708ce3080f72f59ee0419e5e8b", "platforms": { - "darwin-arm64": "5bdf210dbeb16255c516e71c97b5ee599fbe9767c452f81babcd05534fc68513", - "darwin-amd64": "099c19bc11726483942e5bf140f230ae3ab9e26f8ae9e0e2695303fa0b8a7d08", - "linux-amd64": "a9787e8d159c32110299c885841c3dcc9b3ecc61a96e0399c90c9ba2397bb168", - "linux-arm64": "0dc16e82e45044f0766e4a68bf74619520e9ba28b11bf453ef16a0d750578a7a", - "windows-amd64": "b89598b6e46a2a3f00c25632e402878c0c1ab7f4f7be13ab494532f417fe1a7e" + "darwin-arm64": "3c5687010cecb95fac74cc099dfa40e861bec9bc6db296df2136dd286102405c", + "darwin-amd64": "f09699e679ec95a1dd4b0e43ca7300d2ef380cdc3146e41f3251d574a38b73df", + "linux-amd64": "ad2c47cb0763c493959ea42094d3a74152bbec5f1800d3b11e47dd406a3da9ff", + "linux-arm64": "eacdabe4bb7d6c5c098f39256037fc9cfba7e64d49ae719daadd6f12b973ce54", + "windows-amd64": "eebc395738b5b2c99014b0e59c2fc56963e5a70373cc030f67a6fa27ce492a84" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1.tar.gz" + } }, "ai-studio": { "version": "1.2.1", @@ -82,18 +81,17 @@ "binaryName": "nself-ai-studio" }, "releaseTag": "v1.2.1", - "checksum": "c7e06f093d614b71c92c381c1319fe2833d7e0afb30576cc592d5c72ce1773eb", + "checksum": "322bbccd08a298202f4032102654e6d8511df87a69d97d6af2be75ce2ee0b198", "checksums": { - "sha256": "sha256:322bbccd08a298202f4032102654e6d8511df87a69d97d6af2be75ce2ee0b198", + "sha256": "322bbccd08a298202f4032102654e6d8511df87a69d97d6af2be75ce2ee0b198", "platforms": { - "darwin-arm64": "18c6510d0192be1e2eb1af413a5796b912e8ffc8d5e2823dd50c4cf57735399b", - "darwin-amd64": "c94d3380938b1059e13ed78ea5d69724243e09f25634fd1597144009a4822a4a", - "linux-amd64": "bc203b8f4839beb565b171c244aaaacb191714cb9e3ffe23141cb9ef324183a0", - "linux-arm64": "32ba15d6ad87126f282e0a4ddd2d8e079169c3e88d9b559326d127b69eacdb89", - "windows-amd64": "f6db648b3ac1dffcf12641fbf99f8845e18979db8535638b09d221bea515794a" + "darwin-arm64": "2c9bfaba7462d5bed7eb962160b9955dc940ba4364e15d04d0fec7f809a388c0", + "darwin-amd64": "4cad8160bad0b21ff2ebaf2f6cfac66aec6ce32d125494cfc444673e7fd094c9", + "linux-amd64": "994666d6f80aa52fa94d9a5bab9a92cd2ffe2aa092abecaf89a8772a20a58b30", + "linux-arm64": "d3ec888c5043c6623f52fd76c5ec315a8b21e2034d616bcebf68c51b1c9355a4", + "windows-amd64": "c1daf80e5a1c2e2bbbb8d03a65bff9d9174a8a90c3b7822ceb473a2e18ee339b" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1.tar.gz" + } }, "alerts": { "version": "1.2.1", @@ -126,18 +124,17 @@ "binaryName": "nself-alerts" }, "releaseTag": "v1.2.1", - "checksum": "6fc9176c37c5cd82666ce672dc92571dbb3d57cb65d8d93cad11893d81b4d5fd", + "checksum": "9ec0a307eda1b50f741bf748fa8dce695f0dda302271710f621ae010faea7184", "checksums": { - "sha256": "sha256:9ec0a307eda1b50f741bf748fa8dce695f0dda302271710f621ae010faea7184", + "sha256": "9ec0a307eda1b50f741bf748fa8dce695f0dda302271710f621ae010faea7184", "platforms": { - "darwin-arm64": "c8404a68c43fff044ae2fcf51d8a92b3383ca1cecac15e22b643ba18fe58b999", - "darwin-amd64": "7c7935f5ad85c3d2d83f57e0dc61cdbc8cfb0982246365b234f65603a7a845c4", - "linux-amd64": "11cac40a8de1c5977c010bb62c10a1456e2b9bf3e389169218d1f29cf22242d8", - "linux-arm64": "2f621947d4e4d1d58fa6e8c615c02c1568a92b9dcfcdd53844c71bfd1d1d3202", - "windows-amd64": "2407c97c56d58fc466da6443f0dd2d8e9884b4d7f05c8d72aba5b73b75061a33" + "darwin-arm64": "6c99a15e613dcb34e6168c7db78851142985bccc58cbf42c365efac58a4eff23", + "darwin-amd64": "3b06082098cebb4fce74e2ed50e75ab0749bf04ecd942bf0ada9793943c6a7d2", + "linux-amd64": "39aa3f7b186839b0c2d615dc1b25bac2ce37c1a312180d40da18b8f65aebddeb", + "linux-arm64": "485a6a4241cc551bd4f18ccbec199453c42afbe8a0b2a8805cd62ed62f706e08", + "windows-amd64": "28e8522de5fb8637e89697b6228a96c3826fe98b41c9d7884584fd5e5890e645" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1.tar.gz" + } }, "api": { "version": "1.2.1", @@ -169,18 +166,17 @@ "binaryName": "nself-api" }, "releaseTag": "v1.2.1", - "checksum": "72f91ba7a43328281e43c29d12abf922080d308ae4e7fa691ffdd443198f4757", + "checksum": "2ac834a3264a1c877b525f07eea4c9777c566be9915745432207c02cf7090cff", "checksums": { - "sha256": "sha256:2ac834a3264a1c877b525f07eea4c9777c566be9915745432207c02cf7090cff", + "sha256": "2ac834a3264a1c877b525f07eea4c9777c566be9915745432207c02cf7090cff", "platforms": { - "darwin-arm64": "da2120963f1892bce743c6441aad974d953321b4c44d6a01e2a2fb6967cd260c", - "darwin-amd64": "b17ae30218bfb5149546674c265778954707b2eaad1e4f01f5a23e457f01e7f0", - "linux-amd64": "a23a17e0cb1c70b37157b35bc334c7b33ba1f96612473d657a7202aac47dc014", - "linux-arm64": "3cb6bd84c48b4f01d8d43b3904d7e36e216ee529720e83a2460a15ac9c7fc4ef", - "windows-amd64": "59eff7819129606c8798bc4ebfd840d1e843a54dd939ca71d32c07340102b487" + "darwin-arm64": "43c25e1bbcbc159da14c4c7f4fd0b4e4ef1e2aaf6a1055035b9af42ec147c546", + "darwin-amd64": "2e6aa55310ac8996ac48420cdaaeab7322e068001f8b98fee6133dbe3787c5a4", + "linux-amd64": "08ca39730a98b4978f55bc0edba367350a9ced6f9242269f875f72b30f927175", + "linux-arm64": "bb56793bc586f82a7aae885273a7841c0f43990ecb4f1a9ddc1537aa09758f02", + "windows-amd64": "d760a3596320705c80651e829de6a360ad201bf21c662b50da1a5ad8e5a6066c" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1.tar.gz" + } }, "audit": { "version": "1.2.1", @@ -212,18 +208,17 @@ "binaryName": "nself-audit" }, "releaseTag": "v1.2.1", - "checksum": "08d01f3917a8db177626996e2f3f54a5ca86e5d6029e02b2ec0a5dce9a9d003e", + "checksum": "450fc7fb249560e46d3b83873ce97dd2046f521515e323e881b7a82a081c4f9a", "checksums": { - "sha256": "sha256:450fc7fb249560e46d3b83873ce97dd2046f521515e323e881b7a82a081c4f9a", + "sha256": "450fc7fb249560e46d3b83873ce97dd2046f521515e323e881b7a82a081c4f9a", "platforms": { - "darwin-arm64": "f23ebcfd12569190ff1aeb181a708e2fba35a36365ca37500b54e52bf20c0bcc", - "darwin-amd64": "afe57a4839b1415d0d9cb10d56df3a8e5e73b018e11493beba88e562435d8333", - "linux-amd64": "665e7feb09f72c231a128d4aa9e5beebcd23fad9b0640d9a184d5de70444b205", - "linux-arm64": "850da1083be62c74cbf0bc36213e881a9c55a90cd6c210ce73cec2e7b52178c0", - "windows-amd64": "1be13f1a13651c7d9d21374c8dddfdbe94a8980e0b2f4a03767645a60916c633" + "darwin-arm64": "12f5056cd57d0d0c0761dc3386aa9cd3bad098a312ff7717af00e95d55ab349d", + "darwin-amd64": "11aec83f998a2992eb36c0db0a28eef243015721e7a8dfad8c32dbdf226b148c", + "linux-amd64": "ab7156d092d9c36099f7dce658be489976e7301cb44156227d48f3612b6bf748", + "linux-arm64": "7556aa206ff903a226111ccc66f6e5f09fa71eb5295c012e9c3b11c70cf1d531", + "windows-amd64": "024757e38a7e6c600ccb0c23c56177ed29f8ca5edcb4a56ca4508cc91fd5a86a" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1.tar.gz" + } }, "audit-log": { "version": "1.2.1", @@ -256,11 +251,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "215bfb2e2764ba2626a297a78adab845a7815ee17957c377f38ca7848ccea55f", + "checksum": "29c963c02da01691c8fab7793289df9f3587e3bef4a580ae1eac52fef9cdf5b2", "checksums": { - "sha256": "sha256:29c963c02da01691c8fab7793289df9f3587e3bef4a580ae1eac52fef9cdf5b2" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-log-1.2.1.tar.gz" + "sha256": "29c963c02da01691c8fab7793289df9f3587e3bef4a580ae1eac52fef9cdf5b2" + } }, "backup": { "version": "1.2.1", @@ -294,11 +288,10 @@ "entryPoint": "cmd/main" }, "releaseTag": "v1.2.1", - "checksum": "458e3b22b604a0d76e2993e5e7843182281ad1e84214afc31dc6364e3cc7d35a", + "checksum": "4f63a2c5a203c6024ee1fd4b742b78e158f60af9d67a17a65cab1b1bc2ea00d7", "checksums": { - "sha256": "sha256:4f63a2c5a203c6024ee1fd4b742b78e158f60af9d67a17a65cab1b1bc2ea00d7" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/backup-1.2.1.tar.gz" + "sha256": "4f63a2c5a203c6024ee1fd4b742b78e158f60af9d67a17a65cab1b1bc2ea00d7" + } }, "ci": { "version": "1.2.1", @@ -332,11 +325,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "118c7967172a7cedd1426cd180c95d0a76778d2cdee8fce5411511e3aaea752d", + "checksum": "14e42744db3afa80b0693371f46ce02c3dea91683eaf735839bcae7760f23aa2", "checksums": { - "sha256": "sha256:14e42744db3afa80b0693371f46ce02c3dea91683eaf735839bcae7760f23aa2" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ci-1.2.1.tar.gz" + "sha256": "14e42744db3afa80b0693371f46ce02c3dea91683eaf735839bcae7760f23aa2" + } }, "claw-cli": { "version": "1.2.1", @@ -369,18 +361,17 @@ "binaryName": "nself-claw" }, "releaseTag": "v1.2.1", - "checksum": "eb6afc0c454935090941efe9316c19d475bdc7a3881d01054b3d12390fc1f589", + "checksum": "fda0dbe768b3317d5692d007f7f1e2853668ab1a7f25bb7e33fa7c7c9f8a418d", "checksums": { - "sha256": "sha256:fda0dbe768b3317d5692d007f7f1e2853668ab1a7f25bb7e33fa7c7c9f8a418d", + "sha256": "fda0dbe768b3317d5692d007f7f1e2853668ab1a7f25bb7e33fa7c7c9f8a418d", "platforms": { - "darwin-arm64": "cc59c8081b44b725e3a5540e0a531d73d6dba24f51cc8b68f5f63ded0a52e69b", - "darwin-amd64": "a1098b9abd36d59a3c8ed1aa4427eae794b2a8a0a8602731c52dd18591f41675", - "linux-amd64": "1dfafc56b99195a784ae3119a1e201de20e692001db93fb04beb0f27580086c7", - "linux-arm64": "bd429329132d3b9236579db37ca34f076f9303e042f200dd5d93346d59d3b487", - "windows-amd64": "ecb99abd0a6a2de6ba703c6249db489ba258a58d977ac360b7a41e5d1a4cdf3e" + "darwin-arm64": "d96e1ab5928c45d5594ffc60ee690951c22bd37fcf76ab92d539c6455f60d5c0", + "darwin-amd64": "6ff90642a3d18c8165bf92856584d014def34fe16b6baabb76604bf888163b82", + "linux-amd64": "589742d390eb81ca04b803db46b8342e85f7dc6de0389b018b7a5c2766bd302f", + "linux-arm64": "603d8859579ba5b6227a409313d5295d2e5455bf87916766f830e2a2c468f34f", + "windows-amd64": "abffbca7caa3499110289601d5ff1f5180a6147b8dddd2566e1e9792008c9616" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1.tar.gz" + } }, "content-acquisition": { "version": "1.2.1", @@ -438,11 +429,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "095fa07082add3e68fb4706d031300ace955256b47a2d737b8724369698a78e3", + "checksum": "2cf3425a4788534364067fc00465d1e35f932088d0ecf8d81c81b0b1da82ca31", "checksums": { - "sha256": "sha256:2cf3425a4788534364067fc00465d1e35f932088d0ecf8d81c81b0b1da82ca31" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/content-acquisition-1.2.1.tar.gz" + "sha256": "2cf3425a4788534364067fc00465d1e35f932088d0ecf8d81c81b0b1da82ca31" + } }, "content-progress": { "version": "1.2.1", @@ -479,12 +469,11 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "5bc44b327755732a219ecdaec757126e6550616cf4fcaa6ac8869c4a32b9e286", + "checksum": "d74f9d89b48ceaed53f73ec5e201041a239482ac69d29cc02ec7c5a5e6127501", "checksums": { - "sha256": "sha256:d74f9d89b48ceaed53f73ec5e201041a239482ac69d29cc02ec7c5a5e6127501" + "sha256": "d74f9d89b48ceaed53f73ec5e201041a239482ac69d29cc02ec7c5a5e6127501" }, - "releaseTag": "v1.2.1", - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/content-progress-1.2.1.tar.gz" + "releaseTag": "v1.2.1" }, "costs": { "version": "1.2.1", @@ -515,18 +504,17 @@ "binaryName": "nself-costs" }, "releaseTag": "v1.2.1", - "checksum": "e930ed1162eb189c74547bd0b1ef05de6fade4f7d90045ddf179bbd679a19b31", + "checksum": "7a763a4205afd8315061fb8b8a723c34f38f90fe66cacd4e2065b4fd3c233b89", "checksums": { - "sha256": "sha256:7a763a4205afd8315061fb8b8a723c34f38f90fe66cacd4e2065b4fd3c233b89", + "sha256": "7a763a4205afd8315061fb8b8a723c34f38f90fe66cacd4e2065b4fd3c233b89", "platforms": { - "darwin-arm64": "7b40834bb5c9813e09a16cadfc81073a93bbee39506a418f7a08795233311885", - "darwin-amd64": "ee1bea1543f96a1321c6697c9438991b9d08bb982b095b585d37def59d5cc7fd", - "linux-amd64": "8687c821a736120b6a6d825410fc23d23b36947bf78c7841aeefdc81c35d91a4", - "linux-arm64": "b7e27340d4d62f7994e5c2706746a81067014009d2c860cde87abef483349e6a", - "windows-amd64": "1cd1782de547bad85a9fddd40f87b26842dfc424790691435db8b67c6129fcf9" + "darwin-arm64": "e1c557b28fbf8d64113b19f675dc73be1d27689bf2427b003dd206e2046aa75b", + "darwin-amd64": "427334120d315034e79a98ec14ba37aa0842bc14fb435a712bd95b748f03a0da", + "linux-amd64": "21e108234ba639dbb395c7a8226a3c166079441cea1097a5fb2b3285645d57f4", + "linux-arm64": "32530453e23a84759a416c96155fe759af10dbc814be2a4de39b838823cff0db", + "windows-amd64": "350510e8461ce3e6f7deece14163ac55e329c40ccd6176df407b7eca940b54c3" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1.tar.gz" + } }, "cron": { "version": "1.2.1", @@ -560,12 +548,11 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "2cb08a2843c49c027504499c643b44d6156224d0275e6422e3488705801a665a", + "checksum": "fd1d114767aedede617ece8ae72b8237177dad38d6121384b94b7bc881cf8420", "checksums": { - "sha256": "sha256:fd1d114767aedede617ece8ae72b8237177dad38d6121384b94b7bc881cf8420" + "sha256": "fd1d114767aedede617ece8ae72b8237177dad38d6121384b94b7bc881cf8420" }, - "releaseTag": "v1.2.1", - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cron-1.2.1.tar.gz" + "releaseTag": "v1.2.1" }, "dlq": { "version": "1.2.1", @@ -598,18 +585,17 @@ "binaryName": "nself-dlq" }, "releaseTag": "v1.2.1", - "checksum": "8021708fd8b304b023aedff339dc82cbc36561d7ab5f066ba3709b6daf716b96", + "checksum": "ec1310beb970106b0902134441b6910c2217e3816e801584eb6aca11bfe7cb5c", "checksums": { - "sha256": "sha256:ec1310beb970106b0902134441b6910c2217e3816e801584eb6aca11bfe7cb5c", + "sha256": "ec1310beb970106b0902134441b6910c2217e3816e801584eb6aca11bfe7cb5c", "platforms": { - "darwin-arm64": "c8019b590f0b0dc3d1baf9e7cbf120b2f5fd1c561be780c29ddee0324f82ba80", - "darwin-amd64": "f03c70cf02325e420202e984a2b63a7d74b438c7e035e4167ff131743c231b77", - "linux-amd64": "4084d129ef54c960284b110b26b4a306ce35a9c3b9568c6a0a62cfb87c2c49f8", - "linux-arm64": "f1997872dc9f4fc26a390ede89167f040e4a7a79a2cf79fdb30b938c699f0384", - "windows-amd64": "091376523991093cb461e493dc179c1878def1cc0b91562fbd81de6988d03c6b" + "darwin-arm64": "baa953b92c4d14220d01241920dc3d8388b30dbcd7341538e9c5afd68b76515c", + "darwin-amd64": "2f2a90f8a01934fbd8ce743ab46f1525dfe1006b8907225a33fa1e20e2a01d8c", + "linux-amd64": "0b8eb5377d99e55383ce485ba1c46b8de5263620b871f10da3e1f916749fee6f", + "linux-arm64": "bf32e542335329949174d45e3e5a2a2d667ad79dcde390ea3b0efba38f1b3075", + "windows-amd64": "d4525b9a91ded889078b0a8db7072210133fc42a10218f18cf5737cad7e60497" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1.tar.gz" + } }, "dogfood": { "version": "1.2.1", @@ -642,18 +628,17 @@ "binaryName": "nself-dogfood" }, "releaseTag": "v1.2.1", - "checksum": "bb633b2e22edc8086074dbeeda3eaa4553935a1b6f0562356c3505f5774ea498", + "checksum": "2db55540508ec2e372f3637746b592992949474a2b4c3ebec9a38c6a5fd7c4fc", "checksums": { - "sha256": "sha256:2db55540508ec2e372f3637746b592992949474a2b4c3ebec9a38c6a5fd7c4fc", + "sha256": "2db55540508ec2e372f3637746b592992949474a2b4c3ebec9a38c6a5fd7c4fc", "platforms": { - "darwin-arm64": "af520c6bef1a3155d9e24eb60e9637145490479559932ecca8b160582aec4ba4", - "darwin-amd64": "2232275278bd76115590e69048f8ff32fec50c89667a40cb77a2f0eb921cf805", - "linux-amd64": "7a3b9b8cdc846655a9ec0799cb521aee5c280b168647ca4bfcab61dac88c5a70", - "linux-arm64": "20a86a538a2437c5dbb4b7b2d4fd51f6cb4ccaa6d1502f8725788ef58de423bd", - "windows-amd64": "fe903f7f017807dbbba8bcf64b1ef6f0b67825690b580d1fcc9150b611aa2c32" + "darwin-arm64": "8e5185c456697874f825130e68db8f11654c5d5dd1df819a5075318a2cc25b2f", + "darwin-amd64": "2da0bd5c4e9fb614866d228aadeeeaebfeedf1c69fd6a66296fda0bd7126b09a", + "linux-amd64": "5e02fc20aca6966d4914950753e7d70a59af03069d4001695738e547e534c9ff", + "linux-arm64": "afb00da5c318b8acc9c88fa7aba99a680b2e60706f0b15285bde80fb32c40ee4", + "windows-amd64": "8f3e7d0ac00c3abce4f0c93114e03d75bdd62f8420ae3124b8df5a07882ba991" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1.tar.gz" + } }, "donorbox": { "version": "1.2.1", @@ -691,12 +676,11 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "b25c64cb98710de42be81aaf257f9db75e153e81f7878ed6c768451e04c192a2", + "checksum": "7b6b2a862085cfe34591d19f1fc8bfd8b8c586fb554c328e8e9d03032efa7a5d", "checksums": { - "sha256": "sha256:7b6b2a862085cfe34591d19f1fc8bfd8b8c586fb554c328e8e9d03032efa7a5d" + "sha256": "7b6b2a862085cfe34591d19f1fc8bfd8b8c586fb554c328e8e9d03032efa7a5d" }, - "releaseTag": "v1.2.1", - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/donorbox-1.2.1.tar.gz" + "releaseTag": "v1.2.1" }, "dr": { "version": "1.2.1", @@ -729,18 +713,17 @@ "binaryName": "nself-dr" }, "releaseTag": "v1.2.1", - "checksum": "958adebb709b79ee4a47f6a547b8c5ccd8b2ef0c4b9bf688e1509e1ca9c3daa3", + "checksum": "50fc6cc42d137615071ef00ceaf8c8a4ccc5bf5ec7be09aa531575815a800c02", "checksums": { - "sha256": "sha256:50fc6cc42d137615071ef00ceaf8c8a4ccc5bf5ec7be09aa531575815a800c02", + "sha256": "50fc6cc42d137615071ef00ceaf8c8a4ccc5bf5ec7be09aa531575815a800c02", "platforms": { - "darwin-arm64": "3cbb0cf8c52ee159f35667e21c87284bd0a89e209322b6b697e972ab029efc2b", - "darwin-amd64": "1983e5022fcc66227d29dee16da007e9dc18b614f7e3efade9f7d75a5007d9f1", - "linux-amd64": "5d592b2e21285e726745a03c0ec0124f18876572a15b454b1b9197ba8a25b3a9", - "linux-arm64": "31f4a7d1164fef01c3d02b228431a2074838df5e61dc7876e0b358737f808f1c", - "windows-amd64": "4ea198d683dd8fd7a3e05a6694e0873cf663e32b692aa82b61eb69698dbb570b" + "darwin-arm64": "66c247eb4aeb9c3ca52166c37241bb2ca340039c3416040e106af48a51e37104", + "darwin-amd64": "fbeac561ad222ce0ece064eef5bd40bc74f81074d755b5d3b41b3a9018f658b1", + "linux-amd64": "a501f350a087da762e89e7f2034270693f07257deb3d8f59c641c86dcbdb5348", + "linux-arm64": "fd99b15917f3c53882f044b3474154368c2b607c6943c20e1b1e0633e766be54", + "windows-amd64": "d279e2d418b045a866ef664e9968f124d31db8b32ab33b897a91b173de98a397" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1.tar.gz" + } }, "e2ee": { "version": "1.2.1", @@ -785,11 +768,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "5d995fcd2a876d2ce69e45922c2b0a6cbd99d7edb11a4185ffab8ff2652d2d2e", + "checksum": "7bd6f7db7718cd769f2e185c1ee59326f3f70229d4e7c75a144effc80870302d", "checksums": { - "sha256": "sha256:7bd6f7db7718cd769f2e185c1ee59326f3f70229d4e7c75a144effc80870302d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/e2ee-1.2.1.tar.gz" + "sha256": "7bd6f7db7718cd769f2e185c1ee59326f3f70229d4e7c75a144effc80870302d" + } }, "family-gedcom": { "version": "1.2.1", @@ -824,11 +806,10 @@ "entryPoint": "binary" }, "releaseTag": "v1.2.1", - "checksum": "cbf04fc56d0b8121d84da19e9e5e6715fa3f9394e2bda3d02966898199817d81", + "checksum": "00fd7d24c6459bcfb757cc9d51d5f07b0a190ddd74823d29292d1766ddcf3297", "checksums": { - "sha256": "sha256:00fd7d24c6459bcfb757cc9d51d5f07b0a190ddd74823d29292d1766ddcf3297" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-gedcom-1.2.1.tar.gz" + "sha256": "00fd7d24c6459bcfb757cc9d51d5f07b0a190ddd74823d29292d1766ddcf3297" + } }, "feature-flags": { "version": "1.2.1", @@ -862,11 +843,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "837ca39444c01f878d42538503afc36f375d80882db08bffde2030e251398531", + "checksum": "a0e76608fd08d1b3b1a12c4e990ad6b8dee61c26bfc34a40a5b622eee4ee23b9", "checksums": { - "sha256": "sha256:a0e76608fd08d1b3b1a12c4e990ad6b8dee61c26bfc34a40a5b622eee4ee23b9" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/feature-flags-1.2.1.tar.gz" + "sha256": "a0e76608fd08d1b3b1a12c4e990ad6b8dee61c26bfc34a40a5b622eee4ee23b9" + } }, "federation": { "version": "1.2.1", @@ -899,18 +879,17 @@ "binaryName": "nself-federation" }, "releaseTag": "v1.2.1", - "checksum": "3869bb5d988aaa1dfb2f9d4d9a755faeffa06f4772e9f3349a4819abb802623d", + "checksum": "49b20ce3e8b1610177037c3203a13e67ce74937a9cb93c8215c6ca5df3cf6e37", "checksums": { - "sha256": "sha256:49b20ce3e8b1610177037c3203a13e67ce74937a9cb93c8215c6ca5df3cf6e37", + "sha256": "49b20ce3e8b1610177037c3203a13e67ce74937a9cb93c8215c6ca5df3cf6e37", "platforms": { - "darwin-arm64": "681b38261abf7e7b5a2cff2c45758b87d181777f142bf0090c2daf53cfeb5f22", - "darwin-amd64": "0a628a30d93a831cd5a874e6ffb9061b99d8ff78bb154bfab5b4817876f8e144", - "linux-amd64": "cb0fe237925c8e262f4ab4e24f327780f2076d839976bafc918f1df2b85f138e", - "linux-arm64": "c9c7c3b409873f7b73763be352c6c1d70f938abd34495aafb2ee57b23c9c132d", - "windows-amd64": "a82e0ab75e540be234a5036715248f66d09a9367a3b8b2908a2aec8ffbc21c9a" + "darwin-arm64": "40bf742f304f4771c5d574ed257549d3035de1e9a8d9ad35f6f936b6378e23ee", + "darwin-amd64": "281a6fa9f3006b0e84e1d3db6f69f3053b9d0c22e5de10e222991422a36813e4", + "linux-amd64": "d1696402ffebc834635c398a72ec301e5a1561b78e0dea2ff583660b299f24df", + "linux-arm64": "e28a7075fe83433d12bf3b14cc9c060e9f0367f11ef86abd13431e5a463c7662", + "windows-amd64": "c409afc20f7f3f0aa09d9f21190c80db24bafc3c28aa352dcaed60402221da8a" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1.tar.gz" + } }, "flags": { "version": "1.2.1", @@ -942,18 +921,17 @@ "binaryName": "nself-flags" }, "releaseTag": "v1.2.1", - "checksum": "31ffe025c10a82ee91625cc49b73ab0d20f91de57c1b7a12a0c1ac7a2d78326b", + "checksum": "cc83fd76d0bcf9ba2ef981b5f86d7e61e32a4c2014e82080267bc13433b4dd56", "checksums": { - "sha256": "sha256:cc83fd76d0bcf9ba2ef981b5f86d7e61e32a4c2014e82080267bc13433b4dd56", + "sha256": "cc83fd76d0bcf9ba2ef981b5f86d7e61e32a4c2014e82080267bc13433b4dd56", "platforms": { - "darwin-arm64": "0e9caa2b8aa53e8211481be1b40283d64adca120d66ceb7aa0236bd8a28893ce", - "darwin-amd64": "e2d9777318cbbf2fcb4e8819cbd15b0303549edb2a0963f4d79a90c3a1a27bb3", - "linux-amd64": "8b8cd713038044686af2f43644089e1d09b3c5650e715b5db4d15518b4328f77", - "linux-arm64": "dceae54c8cc57774b01921e0d98fc0957174cd686fec7f551b2391e319407f2f", - "windows-amd64": "e596b2a825f04194ade06f2efafaaaad9f87a79c027b3fbb10ef6e161336daa7" + "darwin-arm64": "e42c33ac1d7161a2a5e2b5134a6492018808a8e1074e39fb117adb2652ffacb2", + "darwin-amd64": "2b01840568d763d95be95003a96e8a68a6e55058b381a79a7c4fdcd5e5959ef1", + "linux-amd64": "f82ef4460e9d96fc8883785325a4c48873de18bf866e439c0fa5a0acf3b19059", + "linux-arm64": "fdfe2c9b4792bb1c3e18811ae0ddf8d48d8a8425033264d8245e72a675aa29ad", + "windows-amd64": "5c67c99342c8e03b18b8ae6b6a9815faaff24d92446defce17e7ea304c3060bb" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1.tar.gz" + } }, "forgejo": { "version": "1.2.1", @@ -988,11 +966,10 @@ "entryPoint": "docker-compose.plugin.yml" }, "releaseTag": "v1.2.1", - "checksum": "f818e08355c4eaec6fd0add1f46674e6fdd455fa2c2d0f3855f044e871f859e8", + "checksum": "0eb602a748df90687a9b949db12cbe5a6b39c84d4598274779c1b8a5b827b21f", "checksums": { - "sha256": "sha256:0eb602a748df90687a9b949db12cbe5a6b39c84d4598274779c1b8a5b827b21f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/forgejo-1.2.1.tar.gz" + "sha256": "0eb602a748df90687a9b949db12cbe5a6b39c84d4598274779c1b8a5b827b21f" + } }, "gateway": { "version": "1.2.1", @@ -1024,18 +1001,17 @@ "binaryName": "nself-gateway" }, "releaseTag": "v1.2.1", - "checksum": "f72afd7a20df9b3da73f681a3317d60fdeaab80e936df9992cd49ac5dd5cc66b", + "checksum": "84716057a7122967772f48889ed722974efe51715999e325e38a12766175556c", "checksums": { - "sha256": "sha256:84716057a7122967772f48889ed722974efe51715999e325e38a12766175556c", + "sha256": "84716057a7122967772f48889ed722974efe51715999e325e38a12766175556c", "platforms": { - "darwin-arm64": "84fa603ca058d2f2e7e5c93c304dd1042d1124f7dc8d1c69321ec284bb87c93e", - "darwin-amd64": "6a873e9f30603ca13a295aed728434d454238fe055defc7bdd16644f34c1dcc0", - "linux-amd64": "f97dd7e15abc6e92138fe22d939746611202d98e3baa727c058d89e5bdaaf5b3", - "linux-arm64": "22a5c21ee20cda5e53e557840c9b2be8ac589ba7efc007b67a6c4899827e813a", - "windows-amd64": "96a1b84085f7b2d7555290ff32aa4475dd6be1e536cec420b20744e93d1f9519" + "darwin-arm64": "589f52cb8894481679934dcacb740e556887628d9b948d4ca08558dedc410448", + "darwin-amd64": "9d8e079ec1f31a61ae27fdcde724e561bb2c69f27dbaf3657e08e04ce13cecec", + "linux-amd64": "2726129207cbee5cc4d8499774e9d76b98d6d494d8185f054dd9a6e95d148521", + "linux-arm64": "0a3fe72f0271b161943f929cfaf37d4c8ecd6af1154653b4227ab36d906fcb5f", + "windows-amd64": "8792f9393c8718936c9fe65e64fe03e383aee8ac34be553f70864970dceee1cd" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1.tar.gz" + } }, "gauth": { "version": "1.2.1", @@ -1067,18 +1043,17 @@ "binaryName": "nself-gauth" }, "releaseTag": "v1.2.1", - "checksum": "65803c554fab43aeefb6fddd0c1a2ed3d9c25a1b6c1d99522805666cd256f369", + "checksum": "aab9055409bb391fd76704a251d33665caab9f2a0623581604278b9c492a161e", "checksums": { - "sha256": "sha256:aab9055409bb391fd76704a251d33665caab9f2a0623581604278b9c492a161e", + "sha256": "aab9055409bb391fd76704a251d33665caab9f2a0623581604278b9c492a161e", "platforms": { - "darwin-arm64": "9a0d42af48c5fe66a1ba43ba923c9bc778e05989439e90ab398c15d7f34719f1", - "darwin-amd64": "c0e3466449685de83be121732bbb86a59226e3fb49c8a234ba0b49f0948995dc", - "linux-amd64": "329b8da1c53fec3a4f200b8823583f535361f943fe5682ad3932b0859ba701d1", - "linux-arm64": "29cb95ffabb36cb44f10b5b7b6f95c0b683ea26c1b61b81ac00caac9aa76a0a4", - "windows-amd64": "ea7bf96284020876b4877719f064901ac40cddb2e5e66e46ab7b95fd32698104" + "darwin-arm64": "b33aa4b68e9f838223f69fddd9e44ed317c4ebd08a7a2fc9e7b32385b49b6adc", + "darwin-amd64": "d2f1c6bee6dd25c6e355a7d5c16b55e685e5bbb073a9f5497fa17772f39668af", + "linux-amd64": "dd8205a2ff9fc4ad90a8d3d30d329def5216413ed54915b7cafff13db25903ec", + "linux-arm64": "dcc6357ba23e59ef089be7f6686b3d867d660c458e0f42f276a1e97fc4cde64c", + "windows-amd64": "eec873e83b810497d5a30233d0746da04c6744b7fe8d8c2139167fbe30bf8aa2" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1.tar.gz" + } }, "gdpr": { "version": "1.2.1", @@ -1112,18 +1087,17 @@ "binaryName": "nself-gdpr" }, "releaseTag": "v1.2.1", - "checksum": "08947829a10d401006ccda9ec9205a0a005983523f982da7e9a803d01e561e88", + "checksum": "84e43aee22db62992a983059cedf531e5ab10b07bfd71af55ac62c6a14f470c4", "checksums": { - "sha256": "sha256:84e43aee22db62992a983059cedf531e5ab10b07bfd71af55ac62c6a14f470c4", + "sha256": "84e43aee22db62992a983059cedf531e5ab10b07bfd71af55ac62c6a14f470c4", "platforms": { - "darwin-arm64": "9a6d58d1f3cd4a9484ea7ad54710ec0242747f1cf88f18ace26811cce4c4c57b", - "darwin-amd64": "fdda06a3c20fb456f094e7b52cddaf5d8d6ea610203114d3c738ee79b7bfeb80", - "linux-amd64": "174999ec7419f5ba5823cf0f24fec77ce653864d16ecb3121848e8bdb7bc31ca", - "linux-arm64": "34b95e89f0e6857f9ee6843404e09d79062454cedbf1586d8321744577c1dd03", - "windows-amd64": "cf830252176244ffb248e5f0af2ded5269e5ccc5f658cd0b28e01bfd92e6f97a" + "darwin-arm64": "f087fb4de45a531593d9f0152d9724c2cbae8025f343ec9c543b2acc884a4de3", + "darwin-amd64": "f4daa6e7f575672dc8fa506d2f547b3739c4cf34f09b03583d2b745cfe9ac0b4", + "linux-amd64": "1f3bba453d5667a46acdaa738a9b017296f3f35ddc96763dfdcaec0615af0afd", + "linux-arm64": "a39cf8f9163709cbb321f371cb283d2f4f7fa431b3002c51f2de2124dc84d68a", + "windows-amd64": "249498c5b282148c344ca19613a1e47db864616b6d42b1b49217a7ce1868ee07" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1.tar.gz" + } }, "github": { "version": "1.2.1", @@ -1179,11 +1153,10 @@ "entryPoint": "nself-github" }, "releaseTag": "v1.2.1", - "checksum": "2249b35287164a57769bf437951f8e5720e76adbc5060c7ab30d76b8e5396554", + "checksum": "a16375697c2971fbb72f7619696f8682348c0eead09fe33827e816d1831e0ca9", "checksums": { - "sha256": "sha256:a16375697c2971fbb72f7619696f8682348c0eead09fe33827e816d1831e0ca9" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/github-1.2.1.tar.gz" + "sha256": "a16375697c2971fbb72f7619696f8682348c0eead09fe33827e816d1831e0ca9" + } }, "github-runner": { "version": "1.2.1", @@ -1216,11 +1189,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "812ed28c5375ec45057462a582a086228754fc90579bc26307a3ae99adb2dead", + "checksum": "db307e5fd0857c2d16af9002b7f740a2f8348f55fed3e6893d9fce68fd908bd4", "checksums": { - "sha256": "sha256:db307e5fd0857c2d16af9002b7f740a2f8348f55fed3e6893d9fce68fd908bd4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/github-runner-1.2.1.tar.gz" + "sha256": "db307e5fd0857c2d16af9002b7f740a2f8348f55fed3e6893d9fce68fd908bd4" + } }, "infra": { "version": "1.2.1", @@ -1256,18 +1228,17 @@ "binaryName": "nself-infra" }, "releaseTag": "v1.2.1", - "checksum": "c01219518f1d1ac5e51ae8fc1bf40154a5babfd87e60a473e670836d76339b20", + "checksum": "4994b5799c9ae9e6cd89d59f9921cd552cd5270d8fd52102a8cab26672db6879", "checksums": { - "sha256": "sha256:4994b5799c9ae9e6cd89d59f9921cd552cd5270d8fd52102a8cab26672db6879", + "sha256": "4994b5799c9ae9e6cd89d59f9921cd552cd5270d8fd52102a8cab26672db6879", "platforms": { - "darwin-arm64": "b668494f59e8eff7201a5e3644039208a577613fd81703298abcb5f82931b737", - "darwin-amd64": "9a187941e9a45eb55920f8a6f31a221bb9323c10fdbf8d72f23d48f3ff71dbf8", - "linux-amd64": "7289f2bfcae4da763a48923164e1c72edaa51cdf8f676dafd622ee872e624bbf", - "linux-arm64": "469d9104e2261c06bed947f9d4e52eb19344a1bd8810baeaef3c78ee3b701ed3", - "windows-amd64": "3ab512917906f707334a4ae395d2b7fd223bc45a4cab0fb74c74476c8aaa9470" + "darwin-arm64": "67c8cf445938b18a9362d48418b15a315d6f2414aa33c7751bae0c504a3ebee5", + "darwin-amd64": "0b351ce379f7a7bfcaed52c24349105d8e9b0d0202e73684304ccb32680a5e74", + "linux-amd64": "aad7a6410ed19bf406369750de5289c0ffb179170a2731a1cdb510c89585b732", + "linux-arm64": "09350027570bc7a896dd0eae27da5bb27901f7303eae48bc16f72cb9c66dac21", + "windows-amd64": "5984954c1c61121e5041434ca3d0283381c3a9599437600b7e7a39f8fde1f965" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1.tar.gz" + } }, "invitations": { "version": "1.2.1", @@ -1301,11 +1272,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "4789b2293589617ccadb3bf0cff64c816eb40c16ac88a6e971f60bbbaf13b36d", + "checksum": "0007c353120e003b5a10c564be065f3e3ede58c211cf80be4bb7f0cb0f23f0a9", "checksums": { - "sha256": "sha256:0007c353120e003b5a10c564be065f3e3ede58c211cf80be4bb7f0cb0f23f0a9" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/invitations-1.2.1.tar.gz" + "sha256": "0007c353120e003b5a10c564be065f3e3ede58c211cf80be4bb7f0cb0f23f0a9" + } }, "jobs": { "version": "1.2.1", @@ -1340,11 +1310,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "36e9a5ae3626ae392a93054ce59be209c5e0aed18bec33559fd781a632f88f96", + "checksum": "5149e099cb9746235176853ebb08952b3cdee6394f5b434b21612b1c7752c75b", "checksums": { - "sha256": "sha256:5149e099cb9746235176853ebb08952b3cdee6394f5b434b21612b1c7752c75b" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/jobs-1.2.1.tar.gz" + "sha256": "5149e099cb9746235176853ebb08952b3cdee6394f5b434b21612b1c7752c75b" + } }, "k8s": { "version": "1.2.1", @@ -1377,18 +1346,17 @@ "binaryName": "nself-k8s" }, "releaseTag": "v1.2.1", - "checksum": "3d57bb77ab1bde3d938aed25383227dbffc4f65a8c8149e0b4d1d4eb8a885fed", + "checksum": "3458454eb5d6f3f918fea51b4f0676994d860dd79da8769fae99f73be78492b2", "checksums": { - "sha256": "sha256:3458454eb5d6f3f918fea51b4f0676994d860dd79da8769fae99f73be78492b2", + "sha256": "3458454eb5d6f3f918fea51b4f0676994d860dd79da8769fae99f73be78492b2", "platforms": { - "darwin-arm64": "64585db0263234f49fa9dc63aa87f73f715c8301e716bfff7e71777ef88fb0aa", - "darwin-amd64": "cbbfc223ee715e2d90f81863fbbcf840139aacaac11b2b8ba62b0427fa6c89cc", - "linux-amd64": "a43d91bd63ab180b08e2db1ba33a34f50617a76985a51262260ca789a112c4e1", - "linux-arm64": "9a55b485d44d59edc4a5ea2e786e85b673e65bcfa768a004a6a4b76921379203", - "windows-amd64": "cde4f8ecff6f0a2785a59825304c5090612982b27608848eb31fe428ae3188d2" + "darwin-arm64": "ba86cf228c9cc43520d3e890ac33c4c76309f98386400a4859d5773f9d780932", + "darwin-amd64": "961c0d941f748745969e57d1ac67e0ae4a6b968fe7c58207c569e3e3c7892359", + "linux-amd64": "1faa10fcd6b2f99d3100e6adcc39fd6e62d9b0eb77bf35538b0ad97c187964d9", + "linux-arm64": "734b340b1fc43e0bb3b69a18ebb3e1808cbd61d20f39b42785fb9efc70aa5a5f", + "windows-amd64": "784aeb198d2b2ade2515f40704ed41d43bee269027e5055ab37f09182ca1c8c1" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1.tar.gz" + } }, "link-preview": { "version": "1.2.1", @@ -1422,11 +1390,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "18396b5a1b3f6a914557f96a03994d0bb889647a64feb17688ff8445efea8e4b", + "checksum": "8939955cafdfef1743985078a3a193854f93da47b203ce38e041bbb83a50c92d", "checksums": { - "sha256": "sha256:8939955cafdfef1743985078a3a193854f93da47b203ce38e041bbb83a50c92d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/link-preview-1.2.1.tar.gz" + "sha256": "8939955cafdfef1743985078a3a193854f93da47b203ce38e041bbb83a50c92d" + } }, "maintenance": { "version": "1.2.1", @@ -1457,19 +1424,18 @@ "pluginType": "cli", "binaryName": "nself-maintenance" }, - "checksum": "81eeefba47402707b2ed8c19c01195a2c2059303c0ca6030af8b8f88a73b8845", + "checksum": "d468014ea12b88bc1e2065d0d4879d1fe7cdd356e8f0bf74e9ab8b115c91ae87", "checksums": { - "sha256": "sha256:d468014ea12b88bc1e2065d0d4879d1fe7cdd356e8f0bf74e9ab8b115c91ae87", + "sha256": "d468014ea12b88bc1e2065d0d4879d1fe7cdd356e8f0bf74e9ab8b115c91ae87", "platforms": { - "darwin-arm64": "ef7eb2afc8348fee829ab91e8bdaaa697c08c9d379b0126c10927bd9070a57ea", - "darwin-amd64": "6b3b5403db6b02431829092efe32a8b6d8072af2198fe8dc1a502793ceb042a3", - "linux-amd64": "3ba05bc51297061fca1a62006871662974fe25c15018daac5a7114ded5ce57ce", - "linux-arm64": "681d10b3d996a69eebc26abdb327debbe689fe2d8002a72a1edbdf4f1a4ec22d", - "windows-amd64": "12982d3775323f4af2d8d10755f86d71d244cc8179eca6eec70196b2514fe5d0" + "darwin-arm64": "1fef1d6fe8328134bda4e93a9dfef43f04b8c72b3910f84525d3e322940b0035", + "darwin-amd64": "40a8ce73eb38d942ec9b65198f07dd3044fc37d25ef2f6f8dfd6b88105bba2b5", + "linux-amd64": "e943796452602fc9f1d4ac07403e0a7e7018160bf0648bfa5d311dc32fda9b66", + "linux-arm64": "67089460c37789c9aa661711e90f5f6fcb93c9943a72339e2d39afc956a4973c", + "windows-amd64": "2c73233b6acbc6b0185965a0288917b496994671a0c25d590e6bb1ee1283a64e" } }, - "releaseTag": "v1.2.1", - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1.tar.gz" + "releaseTag": "v1.2.1" }, "mdns": { "version": "1.2.1", @@ -1503,11 +1469,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "427df3ebb91a2162599add09b8fde145901b781da11fbe3d7ed6746ce1dfa995", + "checksum": "69809c4431c073ba9e9227dea71d1f87fe29cdcf6368774fe6b993dc74fea106", "checksums": { - "sha256": "sha256:69809c4431c073ba9e9227dea71d1f87fe29cdcf6368774fe6b993dc74fea106" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mdns-1.2.1.tar.gz" + "sha256": "69809c4431c073ba9e9227dea71d1f87fe29cdcf6368774fe6b993dc74fea106" + } }, "mlflow": { "version": "1.2.1", @@ -1539,11 +1504,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "cddc0c0c7005b2b35160f01e23c9c12d78fbb457730a362c08f0f3ea29456194", + "checksum": "29ec27322ac8e24b3761422b2f3970e3ae50fdfe248157a41b68e34a2036c209", "checksums": { - "sha256": "sha256:29ec27322ac8e24b3761422b2f3970e3ae50fdfe248157a41b68e34a2036c209" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mlflow-1.2.1.tar.gz" + "sha256": "29ec27322ac8e24b3761422b2f3970e3ae50fdfe248157a41b68e34a2036c209" + } }, "model": { "version": "1.2.1", @@ -1575,18 +1539,17 @@ "binaryName": "nself-model" }, "releaseTag": "v1.2.1", - "checksum": "9fae49b490d9f0f616fd5d99647615cfcd056e4d2599fb4067296109b468b794", + "checksum": "a618f1dd152cb7b81ed7b76b1036eb3f4837970e1e8d1b0dace62fffb3671a77", "checksums": { - "sha256": "sha256:a618f1dd152cb7b81ed7b76b1036eb3f4837970e1e8d1b0dace62fffb3671a77", + "sha256": "a618f1dd152cb7b81ed7b76b1036eb3f4837970e1e8d1b0dace62fffb3671a77", "platforms": { - "darwin-arm64": "1e0efe1f961a31ef7c30f6e29d990dd38ab177797c400cd65c6b3409f3dc2a2f", - "darwin-amd64": "a90c13a84dfe6ccd0d981c575ae827028d4118c2d26d377a2cf610963a86a1e9", - "linux-amd64": "e51e531ee6fb9c1a7742e95dce3bb43efa6b042bbe2b76f3d17ba5bbfd59ec0b", - "linux-arm64": "7bf83615ea5db70410ac97689a582d925847fe2e91af6536a2f8dfff24cf868a", - "windows-amd64": "e20a3b81ededebaa86e5eb8d75b9e0a58ce014f8494686fae4dcacaf54099dd5" + "darwin-arm64": "5bdd26917abbcae43bdd995710657dff8d388e3100b928a450a073400e600c6e", + "darwin-amd64": "ba6d765de85249661af777625b62789fdd8635e68f0596e0266db2eb99b220aa", + "linux-amd64": "60b563de03f2dbe8b39457c27f26dbc42ebe4ccaeefc7077d48280d77830a561", + "linux-arm64": "2e8ba35aac8d2efc17bce7a7f386a139c53c247d037bb29a7938fe4ad2813dc1", + "windows-amd64": "19d7a1e745958bf1e47a58d595a6ec2ea9bbf2d32e16451da067dd6a514ecf4a" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1.tar.gz" + } }, "monitor": { "version": "1.2.1", @@ -1619,18 +1582,17 @@ "binaryName": "nself-monitor" }, "releaseTag": "v1.2.1", - "checksum": "7477c038111ee8f3a8d0113496b9088e6af91d0349906c9cad941c57dd04c71a", + "checksum": "9478bdb762a48af0edf4812833f38cfd83e18c688d22ca2e5f84a1e0ddfcd0e0", "checksums": { - "sha256": "sha256:9478bdb762a48af0edf4812833f38cfd83e18c688d22ca2e5f84a1e0ddfcd0e0", + "sha256": "9478bdb762a48af0edf4812833f38cfd83e18c688d22ca2e5f84a1e0ddfcd0e0", "platforms": { - "darwin-arm64": "f39462147e39c65868b6a7f15c2dce159d0ad031373b43fc660c4be0be6ed665", - "darwin-amd64": "9ee97e770018b2ec2afc370caac95ccc0546d5ddc86189db401ebb1d603eaccf", - "linux-amd64": "963e1208d53a4bcf21b041be44e8175bebd6362acc8d65aa2f289cc0e9f32966", - "linux-arm64": "52e2f3294ada39266b1d8640778867af694d8a1c4a1dfdcea2cfac7531bb321a", - "windows-amd64": "7fe8c3dd079ed208aa2042683c3e9628ce692d758fe296a39dc9b080b020861d" + "darwin-arm64": "60a5e68325ee243d087908fcf2719b77671780e552f8e3c6e61ae416537f5ea4", + "darwin-amd64": "3be57ed1a6641fa1478587dce95a2aa18c57062d3473c206dc70f15d1bf5fa3e", + "linux-amd64": "fc38bc30aba2516b4800bb93cbcdefa49b23b0ecc0af0717f52f66cadc4fdea2", + "linux-arm64": "7daa0c2ba22ea065fc4913e852242e0e10726d2c99b3b05b6c4bf24f53cfd0e3", + "windows-amd64": "4728958bdfaa9e569dfac6baf1e03ac632f5265437fbf3d260682ecc25c154c4" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1.tar.gz" + } }, "monitoring": { "version": "1.2.1", @@ -1667,11 +1629,10 @@ "entryPoint": "docker-compose.plugin.yml" }, "releaseTag": "v1.2.1", - "checksum": "6d9fbb34cea12b625955a49c2474450cb8704119249d57d95ff4bf1a183df88d", + "checksum": "7b5b0f49a758515f1da7ac11ea9250d58ad8f4f0f780279d5e20ca0fcc21bb1e", "checksums": { - "sha256": "sha256:7b5b0f49a758515f1da7ac11ea9250d58ad8f4f0f780279d5e20ca0fcc21bb1e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitoring-1.2.1.tar.gz" + "sha256": "7b5b0f49a758515f1da7ac11ea9250d58ad8f4f0f780279d5e20ca0fcc21bb1e" + } }, "notifications": { "version": "1.2.1", @@ -1706,12 +1667,11 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "dfcb4b63140ba3b92903c3b61467c1c22b6fcf175fd255d81ab41dc20c8687dd", + "checksum": "3bd65950cfc0e4a03362d3d4aa8b0c04086ed0650181462092a14921c387a399", "checksums": { - "sha256": "sha256:3bd65950cfc0e4a03362d3d4aa8b0c04086ed0650181462092a14921c387a399" + "sha256": "3bd65950cfc0e4a03362d3d4aa8b0c04086ed0650181462092a14921c387a399" }, - "releaseTag": "v1.2.1", - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/notifications-1.2.1.tar.gz" + "releaseTag": "v1.2.1" }, "notify": { "version": "1.2.1", @@ -1744,12 +1704,11 @@ "runtime": "go", "entryPoint": "cmd/main.go" }, - "checksum": "ed66f58a66cb2c7a715eb534a2bd6b6a1bcbec6d3a4b118b8f53513a894a1c34", + "checksum": "ce8fefb861ef43622fd8833417de29feeeaa536e9d8dd0de7a02e2829fa0d94f", "checksums": { - "sha256": "sha256:ce8fefb861ef43622fd8833417de29feeeaa536e9d8dd0de7a02e2829fa0d94f" + "sha256": "ce8fefb861ef43622fd8833417de29feeeaa536e9d8dd0de7a02e2829fa0d94f" }, - "releaseTag": "v1.2.1", - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/notify-1.2.1.tar.gz" + "releaseTag": "v1.2.1" }, "ollama": { "version": "1.2.1", @@ -1773,12 +1732,11 @@ ], "dependencies": [], "name": "ollama", - "checksum": "affe917f8d212725db3ed2852ef0cc6b4513fac701406e4bf2774dbcb869d52f", + "checksum": "3369853a2b55ea87782d1144986ebabbbfbbf5b9757758d54eb9a9ef5591f08b", "checksums": { - "sha256": "sha256:3369853a2b55ea87782d1144986ebabbbfbbf5b9757758d54eb9a9ef5591f08b" + "sha256": "3369853a2b55ea87782d1144986ebabbbfbbf5b9757758d54eb9a9ef5591f08b" }, - "releaseTag": "v1.2.1", - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ollama-1.2.1.tar.gz" + "releaseTag": "v1.2.1" }, "paypal": { "version": "1.2.1", @@ -1824,11 +1782,10 @@ "entryPoint": "nself-paypal" }, "releaseTag": "v1.2.1", - "checksum": "e51790ab52ccf1515d1cd8e266d393517de564f31480cd9245243cd6340e2be8", + "checksum": "110e8472893855c8f6c4d6ef77c82fc8cd5e849a9d58b79cf16f6d7fd5126863", "checksums": { - "sha256": "sha256:110e8472893855c8f6c4d6ef77c82fc8cd5e849a9d58b79cf16f6d7fd5126863" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/paypal-1.2.1.tar.gz" + "sha256": "110e8472893855c8f6c4d6ef77c82fc8cd5e849a9d58b79cf16f6d7fd5126863" + } }, "push": { "version": "1.2.1", @@ -1866,11 +1823,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "9fe3a18eda502ac0a6752e4bf1c49fc656b680ca1fd9035a22cdba5a5b24d58a", + "checksum": "e4b23cef0fb3887d51938ab21aa6100456d812d2635d4c59af0b4363c926a401", "checksums": { - "sha256": "sha256:e4b23cef0fb3887d51938ab21aa6100456d812d2635d4c59af0b4363c926a401" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/push-1.2.1.tar.gz" + "sha256": "e4b23cef0fb3887d51938ab21aa6100456d812d2635d4c59af0b4363c926a401" + } }, "queue": { "version": "1.2.1", @@ -1902,18 +1858,17 @@ "binaryName": "nself-queue" }, "releaseTag": "v1.2.1", - "checksum": "4939d2a683660401008f8256938c955f54ebda0580836403fa14d4e409558626", + "checksum": "6bf30d6e0f8a7debe96d3c0d8f8b6ee7375d52ac4572b6f32780b91e0273326c", "checksums": { - "sha256": "sha256:6bf30d6e0f8a7debe96d3c0d8f8b6ee7375d52ac4572b6f32780b91e0273326c", + "sha256": "6bf30d6e0f8a7debe96d3c0d8f8b6ee7375d52ac4572b6f32780b91e0273326c", "platforms": { - "darwin-arm64": "7b6ed611ffc64c78aef4b79b9627da08434d40b4554498d5f4346d53a43bd1b4", - "darwin-amd64": "b18cf8b9548510905d9362fb1e78e546353389c0b19cf06125e5e31d275b0cf5", - "linux-amd64": "c939e68012ef4f07f5dd5c4b5ff6cf7b4ec78ee4195413429a946573455211ee", - "linux-arm64": "84208085a8c6e943f8621419c0f91d3a31347fd4a8dac485559a44598c9c46dd", - "windows-amd64": "8ccc15d1a9aa94ae27c94af6fe12a96bc76908f6206cd7f14c8cd3fa9eb83595" + "darwin-arm64": "fb6de207e92af115151cb984f57b4ad660843dd61caa02b3071fc42d715a2d46", + "darwin-amd64": "18a1c5561c5d85ac6ba5459386c608164e173141f037292a8446e65657a8e98f", + "linux-amd64": "85eb88559ef1e8223672b295b35db7414575d693f1116d51556f3bc5d1f1cde9", + "linux-arm64": "66f248bec20afca52b9556c3139600ffb5258b15c60daa096de394b39b1af572", + "windows-amd64": "7bac24e8ca57ebb1d5d6808417607483e9609a5fd06e86c1c500215042d4374d" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1.tar.gz" + } }, "region": { "version": "1.2.1", @@ -1946,18 +1901,17 @@ "binaryName": "nself-region" }, "releaseTag": "v1.2.1", - "checksum": "7abea93ea691327681db5b30a29d428e1c6e78dcc08545c460e893e2927987cc", + "checksum": "b199110ab9cb94c74a9f6e62c0722f7e58ad12844e1baad30bde213fbdc2dae3", "checksums": { - "sha256": "sha256:b199110ab9cb94c74a9f6e62c0722f7e58ad12844e1baad30bde213fbdc2dae3", + "sha256": "b199110ab9cb94c74a9f6e62c0722f7e58ad12844e1baad30bde213fbdc2dae3", "platforms": { - "darwin-arm64": "5cd31df61b3a22e130b3efed777ab812467a92d27486008d378ba9d5f24af8d8", - "darwin-amd64": "ec6c2426ae0ae9c243a72d148462e310a2be53560d9b53861f68db4d83f91e4d", - "linux-amd64": "2f34d3abb1122e91198a3c76a9e379638016ee2be70e92a46a57e848f25f1328", - "linux-arm64": "d0194abec4b33c07cd138a7ddf45f90eea80e946fe24690cc6f4c23a39149d6d", - "windows-amd64": "57f15cc1bf85f9e29cb5974532e574e13abde0db272c19960192a904faceeabb" + "darwin-arm64": "dfbc4b2a54b37f543024c660838977ee719c7084240d473baf11783eb9639c3b", + "darwin-amd64": "461dc5e1b85fe836734fe5fd59c048a67fd8b68d18dc3a7fe0dc41597086021b", + "linux-amd64": "580f5f8e458225251f206d64c3e18a5815470d032fbd1f69bfad95f327f12c1f", + "linux-arm64": "2cce93e171cddccd1ac9c61572f2a35ab7ba6efabcd7e2b33540797bbbe19a71", + "windows-amd64": "dc9eaf76a086a14691ee120161def9c9eadbc9bf77b16322817f6edc70f6e03c" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1.tar.gz" + } }, "release": { "version": "1.2.1", @@ -1990,18 +1944,17 @@ "binaryName": "nself-release" }, "releaseTag": "v1.2.1", - "checksum": "9c1a86d97f31336f2ddba29ab8840bf94758eab8892e290a34adb1a18f5937b8", + "checksum": "1bf4027c65d095a726570b335cbd84a40a4f4dd4938e4897bb23f76b52f57d26", "checksums": { - "sha256": "sha256:1bf4027c65d095a726570b335cbd84a40a4f4dd4938e4897bb23f76b52f57d26", + "sha256": "1bf4027c65d095a726570b335cbd84a40a4f4dd4938e4897bb23f76b52f57d26", "platforms": { - "darwin-arm64": "824061303fa0922c4fd38d96ed8c2d1cf04ae38dd2753fb16a648b340b8cfe0e", - "darwin-amd64": "783cd3b7e724209ce7cbc6dd1b05560f8b66fa897c0baf076629947c1b56eb44", - "linux-amd64": "6fc5329a39f977dad3195174cf7bfb0bf66012730a9d8ef88c226b985a25eab8", - "linux-arm64": "e45f8e3824baff993adf8ec31fca337c73cc08db2fca812b7a2922b840ab912a", - "windows-amd64": "0b818576aa24bd89af364f099d3b4637eb28a1d0059c50fcee58d259b6637a08" + "darwin-arm64": "3b9e11ca0d0d57f91987830d0babdbff8ff5240d5f10b82dd33dc26bc8eca556", + "darwin-amd64": "c05388622e679ac98b489b41c502e0cbfe623206931a9ee1cbfbc6888653c1d2", + "linux-amd64": "b1411f544578e9dc87612778bc45941cd4a00828465f37aee4a6f0fa61dc79b9", + "linux-arm64": "c05132030073003b8af79ebcd79773b99ecbafbbbc10c8567857fce699a6f5bd", + "windows-amd64": "b834de5cf8fb0cbb0f706ebd39f0c9c1ab4db53c9d021c77c685b92c5a941212" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1.tar.gz" + } }, "search": { "version": "1.2.1", @@ -2041,12 +1994,11 @@ "bundles": [ "task" ], - "checksum": "f5ad32a815f4edc9d4f350314f51e6b1a35e424d0a2259181f52a30c7e907c41", + "checksum": "022db9d01e5d3965b8621395748fa576f320cd09198f5f3f62f31258cf89bc41", "checksums": { - "sha256": "sha256:022db9d01e5d3965b8621395748fa576f320cd09198f5f3f62f31258cf89bc41" + "sha256": "022db9d01e5d3965b8621395748fa576f320cd09198f5f3f62f31258cf89bc41" }, - "releaseTag": "v1.2.1", - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/search-1.2.1.tar.gz" + "releaseTag": "v1.2.1" }, "sentry-cli": { "version": "1.2.1", @@ -2090,18 +2042,17 @@ } ], "releaseTag": "v1.2.1", - "checksum": "1e11103c42b29f73494bced741aa589bbd536ba7f70af887ed000700fa15ba0f", + "checksum": "c40c0bc559a13df25b46ce6396c555a7f2edef7ed8943d5390ff3f85357e64df", "checksums": { - "sha256": "sha256:c40c0bc559a13df25b46ce6396c555a7f2edef7ed8943d5390ff3f85357e64df", + "sha256": "c40c0bc559a13df25b46ce6396c555a7f2edef7ed8943d5390ff3f85357e64df", "platforms": { - "darwin-arm64": "36871d2c965e144cb112d76877dc4e144785f2939f5d40850de4343bab9fa577", - "darwin-amd64": "a136d357f3fd70103467528f3e30bfb8fbfceccfb41df18b16c5f936d16b78eb", - "linux-amd64": "159acbe36d8da4724329e5964d6bcb01de1011526d87ca1bc31c2f41dd73b94b", - "linux-arm64": "cf81ff1f89d426a8d74956fe90483b2304d8ef2e6282ea01cd10d62063772dd3", - "windows-amd64": "cacec8bca6140b6ce23afbe330a8914d57fb6b9cb549950fab99c016771b38e9" + "darwin-arm64": "af9bb63fd89f349e4e00f9cbb1d18cb51f696460d6364d1159da5e65220981a6", + "darwin-amd64": "72e31bf43529c73c6c69c175ac0b8b2b00a135dc9a58015e5eade100a9963ae0", + "linux-amd64": "62e328002dd7402971df080636b0ec0b2d06df0691e53beb900b9314e5b7761b", + "linux-arm64": "a3e63cca12f2a6b45cb70a37216f5b31964c970c656a34987dec0c5a34e1881e", + "windows-amd64": "f59f1267d043219a354e7e7edd573cbb8a594b71d4f9a56ac40f7148b57e8ed0" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1.tar.gz" + } }, "shopify": { "version": "1.2.1", @@ -2142,11 +2093,10 @@ "entryPoint": "nself-shopify" }, "releaseTag": "v1.2.1", - "checksum": "ccee3978999fea81981d8ca6c83c4a6bc52ebd61557efe1ff6016f0ffbfce56f", + "checksum": "c5da83c169e8672330b9377fd654b41ab7e60e802b6f1fc4ce98c4f299a3de07", "checksums": { - "sha256": "sha256:c5da83c169e8672330b9377fd654b41ab7e60e802b6f1fc4ce98c4f299a3de07" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/shopify-1.2.1.tar.gz" + "sha256": "c5da83c169e8672330b9377fd654b41ab7e60e802b6f1fc4ce98c4f299a3de07" + } }, "soak": { "version": "1.2.1", @@ -2178,18 +2128,17 @@ "binaryName": "nself-soak" }, "releaseTag": "v1.2.1", - "checksum": "c37bae3da111b3e6b01cfe2c90580fa4f8e6e2e89407c96a83b4db987f2d07ee", + "checksum": "3958da4da9b2929e1c3e2f5fe0aaa0f705cc2b0c1dad15f79b5adc7bd866e96b", "checksums": { - "sha256": "sha256:3958da4da9b2929e1c3e2f5fe0aaa0f705cc2b0c1dad15f79b5adc7bd866e96b", + "sha256": "3958da4da9b2929e1c3e2f5fe0aaa0f705cc2b0c1dad15f79b5adc7bd866e96b", "platforms": { - "darwin-arm64": "d3fc6b07c2d56a17a119b29c335a695bf83a0b284811c7bf2f51ece575b74b8a", - "darwin-amd64": "cd75d8c347702b13c15d99866ffb72a193c3112d21c1d7de56ebe3666ec1c08e", - "linux-amd64": "f593d00f397a2c94a5f0631cc9ee0402ee083939230f28ecb71b6ba669b733b1", - "linux-arm64": "121809645664ceeedae5fab3a0cd34ac5993cb0bf2bf39dbf9737247bf3ced1e", - "windows-amd64": "fb86d50ae269fd966e94560f293ee3e4fd4f746e5523dc1ff2dbabe0f83b9cee" + "darwin-arm64": "63eba62b2a2af02173f639662034b4d35a49fba00bc4d852e16cce71e0093257", + "darwin-amd64": "ce8b798caa20e3dc3c35a0d60faa10c12a03ec8255115d8740b9dfc66b5f145c", + "linux-amd64": "1fd80d6c57447413070be7ff1455d9e3717e1d986dbe5aea8891f8002429abf3", + "linux-arm64": "427c2e4825c5849c66a89cc2f6b2c3de91afcc3748cd7794ef06a75f593d7838", + "windows-amd64": "22a13cdc300111d5d6646106940a6caf8606cf38caa5d742f3962c45b55087dc" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1.tar.gz" + } }, "stripe": { "version": "1.2.1", @@ -2245,11 +2194,10 @@ "entryPoint": "nself-stripe" }, "releaseTag": "v1.2.1", - "checksum": "1333b4119fe65b099d7cc614577c4171848f86b1c83f10b456fac08faf263100", + "checksum": "f766461fef712b04878d2019d3a6eebd2eb9be8c8d1c6541c3d3c6bd213a8ce1", "checksums": { - "sha256": "sha256:f766461fef712b04878d2019d3a6eebd2eb9be8c8d1c6541c3d3c6bd213a8ce1" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/stripe-1.2.1.tar.gz" + "sha256": "f766461fef712b04878d2019d3a6eebd2eb9be8c8d1c6541c3d3c6bd213a8ce1" + } }, "subtitle-manager": { "version": "1.2.1", @@ -2297,11 +2245,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "bef3fdb2502141e0c25219ded69d704e923759b268b88b58514a8ae19a1a6e80", + "checksum": "9bcddc4a5ad34e6caaa468d82b337b62d8b46dcb9d74f9ee226c2595e887b37a", "checksums": { - "sha256": "sha256:9bcddc4a5ad34e6caaa468d82b337b62d8b46dcb9d74f9ee226c2595e887b37a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/subtitle-manager-1.2.1.tar.gz" + "sha256": "9bcddc4a5ad34e6caaa468d82b337b62d8b46dcb9d74f9ee226c2595e887b37a" + } }, "tenant": { "version": "1.2.1", @@ -2344,18 +2291,17 @@ } ], "releaseTag": "v1.2.1", - "checksum": "f7495c9764f5197b8553fff4c2b64230ac9cb575d6f533929f6b654541f6d3ae", + "checksum": "81a3019c764c19947aa20b1810062d9694acafe5579fd107e88f9a37194c84da", "checksums": { - "sha256": "sha256:81a3019c764c19947aa20b1810062d9694acafe5579fd107e88f9a37194c84da", + "sha256": "81a3019c764c19947aa20b1810062d9694acafe5579fd107e88f9a37194c84da", "platforms": { - "darwin-arm64": "d53369c3ca6155f606fa9daa1cdcf617afea35beebd76404f4c0f0c50f4d863a", - "darwin-amd64": "20a691916fc8bab09ac7fac86a7c0b65c7065845b9d3463317436e6cc7c40026", - "linux-amd64": "b17b17548d7da7084ad6eecb82b2086c9119fb7675f4a70c45a6667a6bbe5983", - "linux-arm64": "2c9080bf9427d20d03cc0bf7742b2ef2f3f4db9a4bcaf2cbf65c20f71dedc6a5", - "windows-amd64": "5699c34a1a40164ed3a6adcb3fb39a056b413efc9464923696a638e3c1fe8c07" + "darwin-arm64": "bc645193a521877379b36f45cee855b5999617e9914e72d5715d090ec4f314a4", + "darwin-amd64": "01c95f78ac85ac02c1c5e7cd8ccaa1aebc50aaff25285374a9044928736f446a", + "linux-amd64": "6a577b9dd4ba54768541eee0d50f4359879d6ee31cd1bf346143c7986a5a1594", + "linux-arm64": "84db957ee06a6b793f4d6de8d6812382bcab9444a28b3e443ca642dfb73de4b3", + "windows-amd64": "26f79656eada5b5334bb922667b1aebac0f73988fa511d93904351aa0505d6f4" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1.tar.gz" + } }, "tokens": { "version": "1.2.1", @@ -2394,11 +2340,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "2e5cd40780b4ad27479ffd59e56e839b40f5cac119eebe6456a0501bc426562f", + "checksum": "6e612a79e4decd181554b2b1d51873253c50b8232cbc916113fb8907d9c0133b", "checksums": { - "sha256": "sha256:6e612a79e4decd181554b2b1d51873253c50b8232cbc916113fb8907d9c0133b" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tokens-1.2.1.tar.gz" + "sha256": "6e612a79e4decd181554b2b1d51873253c50b8232cbc916113fb8907d9c0133b" + } }, "torrent-manager": { "version": "1.2.1", @@ -2458,11 +2403,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "792ec903947aa318983772cb61058a02eefce68f6321fad5ae2f7ae772a0eeae", + "checksum": "f00d5213c05c2d4c35427437e1ee998107fb352b4c75386912e9e0fc9dc4cbd1", "checksums": { - "sha256": "sha256:f00d5213c05c2d4c35427437e1ee998107fb352b4c75386912e9e0fc9dc4cbd1" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/torrent-manager-1.2.1.tar.gz" + "sha256": "f00d5213c05c2d4c35427437e1ee998107fb352b4c75386912e9e0fc9dc4cbd1" + } }, "vpn": { "version": "1.2.1", @@ -2502,11 +2446,10 @@ "entryPoint": "cmd/main.go" }, "releaseTag": "v1.2.1", - "checksum": "ae0484724af35ce5a2405b9b4310f5ebe697c4383dced62286f30b2308227886", + "checksum": "8eb838953889a7f3a3b5002b7f1ee2af22ea16a888a7e5171e1c1cc861b75346", "checksums": { - "sha256": "sha256:8eb838953889a7f3a3b5002b7f1ee2af22ea16a888a7e5171e1c1cc861b75346" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/vpn-1.2.1.tar.gz" + "sha256": "8eb838953889a7f3a3b5002b7f1ee2af22ea16a888a7e5171e1c1cc861b75346" + } }, "waf": { "version": "1.2.1", @@ -2539,18 +2482,17 @@ "binaryName": "nself-waf" }, "releaseTag": "v1.2.1", - "checksum": "62506f1c3bddaf331476a80c120500f7934f798a9e36dc72a9f8b1d058478542", + "checksum": "195ffabffc7529a0fb587fdd945907a398775a9e5befeb6eb9ff3b976234a764", "checksums": { - "sha256": "sha256:195ffabffc7529a0fb587fdd945907a398775a9e5befeb6eb9ff3b976234a764", + "sha256": "195ffabffc7529a0fb587fdd945907a398775a9e5befeb6eb9ff3b976234a764", "platforms": { - "darwin-arm64": "8aa8d8c4c14a94a66421f3b497f7dfceb5fcf0f86f2d95514918f530216b6d11", - "darwin-amd64": "fb909c4fec21e18bfb8b7c14ab2ef4ae882cea669da07310f00cd78497146ee1", - "linux-amd64": "dc453d0f9b666997a7640e5a8467742f366447066258a842b258014a01d5f795", - "linux-arm64": "1860f6d0303ad5289b762c8fda44539c9200e7819413587c7540912c4b4d800e", - "windows-amd64": "c45da6e10a66874054135bb13447bd426b63872f07931761310200653f99106c" + "darwin-arm64": "316bf389893ed8e06e55de71d456e3fa2b86696a67ea6cce9faf1843ed4b3c0d", + "darwin-amd64": "8048ecc9619d56cb41411a6d7e27b0c816f6fcf0c87b65c8bac9b6e1de449f7b", + "linux-amd64": "9fef314843ace6404425d13bf59d90066c7eb6057718a358354082d8e6417de6", + "linux-arm64": "1db9b97b6edd3329c03f8526a39ad064390e0bf14789c6d4e339b585562a9823", + "windows-amd64": "fc3da3b511acaf102a03488978519916200a1a08169aef9185ddae9151e1bf2a" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1.tar.gz" + } }, "watchdog": { "version": "1.2.1", @@ -2583,18 +2525,17 @@ "binaryName": "nself-watchdog" }, "releaseTag": "v1.2.1", - "checksum": "a3d09925851e709538e9ad6706b051e8584fef5eb8df342aee068c56035ed76f", + "checksum": "689f3a9dbb44c9092ca10b90a20e98e7964128daa5aaea57993842b79cc5b5c0", "checksums": { - "sha256": "sha256:689f3a9dbb44c9092ca10b90a20e98e7964128daa5aaea57993842b79cc5b5c0", + "sha256": "689f3a9dbb44c9092ca10b90a20e98e7964128daa5aaea57993842b79cc5b5c0", "platforms": { - "darwin-arm64": "65bf8e627eaef4ebde7eead0cc04d4d7dff9010b2040eeb2dbf680689f50c657", - "darwin-amd64": "b738d7cc9af170fb11c93cd6cfc70a7676bfe6c18f747c4349dc4c94bc41fab6", - "linux-amd64": "0d8070578bc571f0a23f5e4e358a6deab3d00ddb8bd9b382b2ca85dc91296163", - "linux-arm64": "6db2a6ff8e740dc327b18537ad46afbc828c078384cdaed22d4dc9d7f2326d38", - "windows-amd64": "89b253b21863cca09e224e5246eaaef2b9b439bc2973619b2f4c12e25eeaf786" + "darwin-arm64": "ba165c82d9651dc42044732d2adee06df0a96f0877cc235c4c4ccb04557e4dd7", + "darwin-amd64": "30a6a5e4b231c00f37343efea0e0e4b25885ec75945bdda7b20b06c1f12cb415", + "linux-amd64": "192c43e0a00841947a52bf794e2fdbce586b9ca24080d795c0210d5749c592e1", + "linux-arm64": "bfe9b24f669ac3b348ca62f165691c4d0ea635c7f00a10041529942f499b5441", + "windows-amd64": "1febc7701438fd6f875443b7b44969cd9751b2fed4f65693a2f95d409ced8005" } - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1.tar.gz" + } }, "webhooks": { "version": "1.2.1", @@ -2631,11 +2572,17 @@ "task" ], "releaseTag": "v1.2.1", - "checksum": "0ee5c202f4456c3aca514ab79b706aef36d0032a4a56595e925c0f51c2a93223", + "checksum": "cc1d3f53a5bc48c19403a5eba9ea8fd9be09a9445c112920cc37285d8ec43a79", "checksums": { - "sha256": "sha256:cc1d3f53a5bc48c19403a5eba9ea8fd9be09a9445c112920cc37285d8ec43a79" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1.tar.gz" + "sha256": "cc1d3f53a5bc48c19403a5eba9ea8fd9be09a9445c112920cc37285d8ec43a79", + "platforms": { + "darwin-arm64": "952d8a79b643a26428a343453b939b1cf3ae85c01dd1e6d9ec9e06927333ca19", + "darwin-amd64": "b4a5379902b7abe25c12332de5032f55c66db1ed2dd35325dfe67a889022f62e", + "linux-amd64": "e5844b9b8f231c3a9892e98ae088e9da7a8184e731fc678157b2380a11fa92e0", + "linux-arm64": "122b0e89cfed1d2b60453100aad5c6a4d441494940a1f91d6edae64e5cd4d201", + "windows-amd64": "8602828883813a69c2c0d0e421af9620784996b3bc66ba81afcc25b9465d2d07" + } + } }, "access-controls": { "version": "1.2.1", @@ -2662,11 +2609,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "6e9d3966a4588ce1c2d7a10c0f5c48f64015c68fc80a648ad7392c81223e8530", + "checksum": "1b002b683499d312bc2819870252f18e8a82fd34f2792c408e04ab9798bcf865", "checksums": { - "sha256": "sha256:1b002b683499d312bc2819870252f18e8a82fd34f2792c408e04ab9798bcf865" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/access-controls-1.2.1.tar.gz" + "sha256": "1b002b683499d312bc2819870252f18e8a82fd34f2792c408e04ab9798bcf865" + } }, "admin-api": { "version": "1.2.1", @@ -2692,11 +2638,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "3c9ba5681c326ed0d3d3cfc1d4d64b1e215ad69e8202bbc1d5221e1ee1a45be5", + "checksum": "b713febd954e8b1d4c42cb4d33ede85d29ce044e8d1449e49c7b2a425bbb14bb", "checksums": { - "sha256": "sha256:b713febd954e8b1d4c42cb4d33ede85d29ce044e8d1449e49c7b2a425bbb14bb" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/admin-api-1.2.1.tar.gz" + "sha256": "b713febd954e8b1d4c42cb4d33ede85d29ce044e8d1449e49c7b2a425bbb14bb" + } }, "analytics": { "version": "1.2.1", @@ -2722,11 +2667,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "24731bcf900ecb1e0c4910f29559f7f0b34e94e9775f2aafe7c8841f00761b74", + "checksum": "6155012ec0a9bdbfcc3461a8f33acd3482331d606829d7ac005eb8035f386c74", "checksums": { - "sha256": "sha256:6155012ec0a9bdbfcc3461a8f33acd3482331d606829d7ac005eb8035f386c74" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/analytics-1.2.1.tar.gz" + "sha256": "6155012ec0a9bdbfcc3461a8f33acd3482331d606829d7ac005eb8035f386c74" + } }, "audit-analytics": { "version": "1.2.1", @@ -2756,11 +2700,10 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.2.1", - "checksum": "5b04e63cbf0fc749e821c746b4e6324b77af6dab33142a874bbd05ba243319da", + "checksum": "e9d657cd268ac136d75b631cbf2d6342382e38d7afb7b11739410338a883c8ed", "checksums": { - "sha256": "sha256:e9d657cd268ac136d75b631cbf2d6342382e38d7afb7b11739410338a883c8ed" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-analytics-1.2.1.tar.gz" + "sha256": "e9d657cd268ac136d75b631cbf2d6342382e38d7afb7b11739410338a883c8ed" + } }, "auth-enterprise": { "version": "1.2.1", @@ -2780,11 +2723,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "30489ebbaf7b4ef63c7ec0e073ca5f228f5e8ee91f91bd16b434f305e9ecbedd", + "checksum": "1a3b1c30aa0453d3b484fa13a9e7f41a47a8861c9e80b3a34f9030f267309394", "checksums": { - "sha256": "sha256:1a3b1c30aa0453d3b484fa13a9e7f41a47a8861c9e80b3a34f9030f267309394" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/auth-enterprise-1.2.1.tar.gz" + "sha256": "1a3b1c30aa0453d3b484fa13a9e7f41a47a8861c9e80b3a34f9030f267309394" + } }, "byok": { "version": "1.2.1", @@ -2815,11 +2757,10 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.2.1", - "checksum": "3069a7d9a2797069881476d8fdc7ee51de79c761acc1249ad9070b851ff6b191", + "checksum": "60f45d3d2d6ea9bed83f41bec5048606eb6c7030f81710cb231e74d904cffe3c", "checksums": { - "sha256": "sha256:60f45d3d2d6ea9bed83f41bec5048606eb6c7030f81710cb231e74d904cffe3c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/byok-1.2.1.tar.gz" + "sha256": "60f45d3d2d6ea9bed83f41bec5048606eb6c7030f81710cb231e74d904cffe3c" + } }, "cdc": { "version": "1.2.1", @@ -2845,11 +2786,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "b81f8530b1b42d81a2ecb5064581ac4f84cef01c5b6616b5b86489b28e5eabbe", + "checksum": "aff247dee48fffc154bd44599ffe066e8555f81f0227c94f0a1b255d374ffe09", "checksums": { - "sha256": "sha256:aff247dee48fffc154bd44599ffe066e8555f81f0227c94f0a1b255d374ffe09" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cdc-1.2.1.tar.gz" + "sha256": "aff247dee48fffc154bd44599ffe066e8555f81f0227c94f0a1b255d374ffe09" + } }, "cdn": { "version": "1.2.1", @@ -2875,11 +2815,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "09d3af8e778af8d12017c8780305036648fe26bc2ea71d9108e67a1d39383a04", + "checksum": "be3187f70eea6b7633215c4d4ef554ac8b260896c9f3d334141d48eeab6d79d4", "checksums": { - "sha256": "sha256:be3187f70eea6b7633215c4d4ef554ac8b260896c9f3d334141d48eeab6d79d4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cdn-1.2.1.tar.gz" + "sha256": "be3187f70eea6b7633215c4d4ef554ac8b260896c9f3d334141d48eeab6d79d4" + } }, "cloudflare": { "version": "1.2.1", @@ -2906,11 +2845,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "a5af1c0d901bfa883b56f69f20ad523014746916da144e5ffb50f59ea795c8cd", + "checksum": "d1462d23b1b7091e216a130f84d7129a3851fdf1746e2e909b2c820c86a3aa48", "checksums": { - "sha256": "sha256:d1462d23b1b7091e216a130f84d7129a3851fdf1746e2e909b2c820c86a3aa48" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/cloudflare-1.2.1.tar.gz" + "sha256": "d1462d23b1b7091e216a130f84d7129a3851fdf1746e2e909b2c820c86a3aa48" + } }, "compliance": { "version": "1.2.1", @@ -2946,11 +2884,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "90c1a11d71c0d7cb2fbc66da981c4a6cef1971268998d0deb726d7f697a7ae97", + "checksum": "aacd8c24bcb48c4d704601ffaa4cda8959abf9f0677e67c0115d33816c7c5e66", "checksums": { - "sha256": "sha256:aacd8c24bcb48c4d704601ffaa4cda8959abf9f0677e67c0115d33816c7c5e66" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/compliance-1.2.1.tar.gz" + "sha256": "aacd8c24bcb48c4d704601ffaa4cda8959abf9f0677e67c0115d33816c7c5e66" + } }, "content-safety": { "version": "1.2.1", @@ -2977,11 +2914,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "0bd848955d59d7472a826e65a8d7e5b0778d78c482cda5574576c2484d91081e", + "checksum": "005a70b25d9830136ad8749461a4528cdfc72b538b60943a5558b8f4958e5d0c", "checksums": { - "sha256": "sha256:005a70b25d9830136ad8749461a4528cdfc72b538b60943a5558b8f4958e5d0c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/content-safety-1.2.1.tar.gz" + "sha256": "005a70b25d9830136ad8749461a4528cdfc72b538b60943a5558b8f4958e5d0c" + } }, "crdt": { "version": "1.2.1", @@ -3010,11 +2946,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "592b535e6331bd1d8241cbf138cefaae8de5e1b1683b6bb86fb77fbc685db402", + "checksum": "e586d0f7ef211633dd8f39a634a909e9f5cc50f32c1a9b8cb09dff848f59c9b2", "checksums": { - "sha256": "sha256:e586d0f7ef211633dd8f39a634a909e9f5cc50f32c1a9b8cb09dff848f59c9b2" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/crdt-1.2.1.tar.gz" + "sha256": "e586d0f7ef211633dd8f39a634a909e9f5cc50f32c1a9b8cb09dff848f59c9b2" + } }, "ddns": { "version": "1.2.1", @@ -3041,11 +2976,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "df8d74fbcf27336bdcfc25371865c905e1b972cec93ef7ce339bce3801d7be7c", + "checksum": "e9c005f824810e59a74e67eca02a19a5c4504a50a656ed14b9454276bfc0796e", "checksums": { - "sha256": "sha256:e9c005f824810e59a74e67eca02a19a5c4504a50a656ed14b9454276bfc0796e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ddns-1.2.1.tar.gz" + "sha256": "e9c005f824810e59a74e67eca02a19a5c4504a50a656ed14b9454276bfc0796e" + } }, "devices": { "version": "1.2.1", @@ -3072,11 +3006,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "d63bbb38f214d7a126dbe6251088511f396288c042bf0e6d4ef1c2ff21b69d01", + "checksum": "58fdcd29b130f84d4fe276f85f01dce8f79ff19045be9d473b5f9527037c142c", "checksums": { - "sha256": "sha256:58fdcd29b130f84d4fe276f85f01dce8f79ff19045be9d473b5f9527037c142c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/devices-1.2.1.tar.gz" + "sha256": "58fdcd29b130f84d4fe276f85f01dce8f79ff19045be9d473b5f9527037c142c" + } }, "documents": { "version": "1.2.1", @@ -3103,11 +3036,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "4316ffc6541cf1c7a8c0d4b968eaadf03b990580019a8bf3232da4f38dfc60d3", + "checksum": "cd6925df104e0cd87aa26050aa1d1ad1fb8b22d81921e516ef231a858aecd926", "checksums": { - "sha256": "sha256:cd6925df104e0cd87aa26050aa1d1ad1fb8b22d81921e516ef231a858aecd926" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/documents-1.2.1.tar.gz" + "sha256": "cd6925df104e0cd87aa26050aa1d1ad1fb8b22d81921e516ef231a858aecd926" + } }, "email": { "version": "1.2.1", @@ -3127,11 +3059,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "9330c3b0e9ace6613e6ed5edf88c99b03bcbcd1bfb22dec32ddeb403917d41bb", + "checksum": "bdac751f0b65adfe53af60e3c20886d06cc9307878251abe78d54d3bc6cf19b3", "checksums": { - "sha256": "sha256:bdac751f0b65adfe53af60e3c20886d06cc9307878251abe78d54d3bc6cf19b3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/email-1.2.1.tar.gz" + "sha256": "bdac751f0b65adfe53af60e3c20886d06cc9307878251abe78d54d3bc6cf19b3" + } }, "encryption": { "version": "1.2.1", @@ -3157,11 +3088,17 @@ "minNselfVersion": "1.2.8", "tables": [], "releaseTag": "v1.2.1", - "checksum": "83c67d0ced4bae71407601524bcf163d6cd721b04ae3c505e63526928110a03b", + "checksum": "afa7c72de503da649a481c9cd8b7d136e393061a6f058b295b8ad0cac4340dd7", "checksums": { - "sha256": "sha256:afa7c72de503da649a481c9cd8b7d136e393061a6f058b295b8ad0cac4340dd7" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1.tar.gz" + "sha256": "afa7c72de503da649a481c9cd8b7d136e393061a6f058b295b8ad0cac4340dd7", + "platforms": { + "darwin-arm64": "68dfc43cef1b38ecbb1b03aabae1931746cd6e8ac51b747266a84165d10a18f3", + "darwin-amd64": "5798acdbc72bb963a027f457b63feecebd4ebe572fb5acda8f5b5560260d35f3", + "linux-amd64": "509608c14c987776033e0f098c7511a4a1151447e4aa9ea4ce1164224f409da4", + "linux-arm64": "a8f0a8a6637e37a1560b8089dd88ece7720d9ae75c544bc1c36e7ecb4165205e", + "windows-amd64": "ea735f9e7e58f4aa546005fe8454c029fe3a8d8affdeb70a925ccfde14fba28d" + } + } }, "entitlements": { "version": "1.2.1", @@ -3188,11 +3125,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "5e9445780e78bfb0f04d15f20ffbdbfcf7ae69feca427c46a7b3865b4c197b80", + "checksum": "702d26062701654494ab2da0957b4e56337627da4e1b30debe1cfedd873e4976", "checksums": { - "sha256": "sha256:702d26062701654494ab2da0957b4e56337627da4e1b30debe1cfedd873e4976" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/entitlements-1.2.1.tar.gz" + "sha256": "702d26062701654494ab2da0957b4e56337627da4e1b30debe1cfedd873e4976" + } }, "event-bus": { "version": "1.2.1", @@ -3217,11 +3153,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "818b61f997ef6052f915e96fc59ab288006455f8523c13dc6f5b087481cfeb98", + "checksum": "a62bd1756f48c3b4e98d202f8ca01bcc9867d90111129b89819d97511a025243", "checksums": { - "sha256": "sha256:a62bd1756f48c3b4e98d202f8ca01bcc9867d90111129b89819d97511a025243" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/event-bus-1.2.1.tar.gz" + "sha256": "a62bd1756f48c3b4e98d202f8ca01bcc9867d90111129b89819d97511a025243" + } }, "family-ancestry": { "version": "1.2.1", @@ -3248,11 +3183,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "ef05c58b911c37f00d1c1f1feaa84bf4ed0a6742cfe388297e35110a157b72a4", + "checksum": "1b055a79f44307a9e9a6c151a4a45c7287c6715782fe61a8f379ec656671de5e", "checksums": { - "sha256": "sha256:1b055a79f44307a9e9a6c151a4a45c7287c6715782fe61a8f379ec656671de5e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-ancestry-1.2.1.tar.gz" + "sha256": "1b055a79f44307a9e9a6c151a4a45c7287c6715782fe61a8f379ec656671de5e" + } }, "family-familysearch": { "version": "1.2.1", @@ -3280,11 +3214,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "31fe27efc8875036dbdc17e43ac36906fc27de38706086954fb6af7cf9d8a751", + "checksum": "52dfd9e628a486ab229f17dfd25d2ddb295bbda479fa382137111832642883c3", "checksums": { - "sha256": "sha256:52dfd9e628a486ab229f17dfd25d2ddb295bbda479fa382137111832642883c3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-familysearch-1.2.1.tar.gz" + "sha256": "52dfd9e628a486ab229f17dfd25d2ddb295bbda479fa382137111832642883c3" + } }, "family-myheritage": { "version": "1.2.1", @@ -3311,11 +3244,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "e88fca02f8ed544aab0695e2e462cc7a5ea552f07a639461c07981758187790e", + "checksum": "552f748893dcb6f24642b0d2d17082cce4a64cda640be5925844f2b3d19356bd", "checksums": { - "sha256": "sha256:552f748893dcb6f24642b0d2d17082cce4a64cda640be5925844f2b3d19356bd" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-myheritage-1.2.1.tar.gz" + "sha256": "552f748893dcb6f24642b0d2d17082cce4a64cda640be5925844f2b3d19356bd" + } }, "family-wikitree": { "version": "1.2.1", @@ -3342,11 +3274,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "a7c494f0fc166a880d17efdade77a56500428c29ff142cd96239e1782ba83a25", + "checksum": "a277e7b207b35e4b3add5ded5e29a665e3753138b17de4ea002dfb3e08572cf9", "checksums": { - "sha256": "sha256:a277e7b207b35e4b3add5ded5e29a665e3753138b17de4ea002dfb3e08572cf9" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/family-wikitree-1.2.1.tar.gz" + "sha256": "a277e7b207b35e4b3add5ded5e29a665e3753138b17de4ea002dfb3e08572cf9" + } }, "functions-v8": { "version": "1.2.1", @@ -3374,11 +3305,10 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.2.1", - "checksum": "f5ca59c1f8b9b484537d58904633250de6505ed13c4a58b67eb1481c68333508", + "checksum": "d84410738f366aa99c0ebf87969aee21cd8d42346720d7a00a4ccaead9d5afd6", "checksums": { - "sha256": "sha256:d84410738f366aa99c0ebf87969aee21cd8d42346720d7a00a4ccaead9d5afd6" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/functions-v8-1.2.1.tar.gz" + "sha256": "d84410738f366aa99c0ebf87969aee21cd8d42346720d7a00a4ccaead9d5afd6" + } }, "hipaa": { "version": "1.2.1", @@ -3407,11 +3337,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "a822f40d2f55e0fa2f327ed8e1abb8b8d06f7060e3b9b37be15ae7c73b4d6fb5", + "checksum": "36eff51c37ed25fbda80e6392f6f58bb6a10d9771a3eb8b403693190e834df25", "checksums": { - "sha256": "sha256:36eff51c37ed25fbda80e6392f6f58bb6a10d9771a3eb8b403693190e834df25" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/hipaa-1.2.1.tar.gz" + "sha256": "36eff51c37ed25fbda80e6392f6f58bb6a10d9771a3eb8b403693190e834df25" + } }, "home": { "version": "1.2.1", @@ -3437,11 +3366,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "b516901b055cbf661cb93d8067d049ed09f2db42f142958235ae489ff8531be1", + "checksum": "a004bd9d330d13e9dc82c7fc40eaf6f5b3515ce184f05f9991215db079b9fb06", "checksums": { - "sha256": "sha256:a004bd9d330d13e9dc82c7fc40eaf6f5b3515ce184f05f9991215db079b9fb06" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/home-1.2.1.tar.gz" + "sha256": "a004bd9d330d13e9dc82c7fc40eaf6f5b3515ce184f05f9991215db079b9fb06" + } }, "idme": { "version": "1.2.1", @@ -3469,11 +3397,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "c830f4c19b0e4e44353b54dabfff1e3185d615577fd21f21590465eea9ff28ba", + "checksum": "c89719026ab07ff02c33ab7695145db850cf0a7308448c4c66c4dc98f7fb115d", "checksums": { - "sha256": "sha256:c89719026ab07ff02c33ab7695145db850cf0a7308448c4c66c4dc98f7fb115d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/idme-1.2.1.tar.gz" + "sha256": "c89719026ab07ff02c33ab7695145db850cf0a7308448c4c66c4dc98f7fb115d" + } }, "job-queue": { "version": "1.2.1", @@ -3498,11 +3425,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "e2831cd3c06444ce9f0976ab965b066d3cee91d5608d9c3fe0b15421f45fdae2", + "checksum": "b64d5b3ccc3bb80f03f95cdf042e21c0725fba821bf3a2d09ce1a466c74b24b5", "checksums": { - "sha256": "sha256:b64d5b3ccc3bb80f03f95cdf042e21c0725fba821bf3a2d09ce1a466c74b24b5" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/job-queue-1.2.1.tar.gz" + "sha256": "b64d5b3ccc3bb80f03f95cdf042e21c0725fba821bf3a2d09ce1a466c74b24b5" + } }, "linkedin": { "version": "1.2.1", @@ -3528,11 +3454,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "761d4027be619d52f72925b5f260dde6eb8d8bcc28b32ef7d67ea2afe644fb15", + "checksum": "4c62bc22c5a93891fea1ab21e9a8a3ec478b99feee4e5b20d4877116ca13a849", "checksums": { - "sha256": "sha256:4c62bc22c5a93891fea1ab21e9a8a3ec478b99feee4e5b20d4877116ca13a849" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/linkedin-1.2.1.tar.gz" + "sha256": "4c62bc22c5a93891fea1ab21e9a8a3ec478b99feee4e5b20d4877116ca13a849" + } }, "mail": { "version": "1.2.1", @@ -3558,11 +3483,17 @@ "minNselfVersion": "1.2.8", "tables": [], "releaseTag": "v1.2.1", - "checksum": "a547a631637d4d1c2cad1cc960ec1796e14b59178973b7c54e7dd9c34265f0d8", + "checksum": "2eb0dc05fbd51961882b344568c0eacff0da8fcfdcf31ad37f2d0a0de0c0c873", "checksums": { - "sha256": "sha256:2eb0dc05fbd51961882b344568c0eacff0da8fcfdcf31ad37f2d0a0de0c0c873" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1.tar.gz" + "sha256": "2eb0dc05fbd51961882b344568c0eacff0da8fcfdcf31ad37f2d0a0de0c0c873", + "platforms": { + "darwin-arm64": "86bc44042674e4363e96b36ebf2c2f253816de207c9cbaea708838b2956541bc", + "darwin-amd64": "0ac4d707fe0a34fd00d01aa3447d680e9cb9971da04ff25283b2f082d3a9bbe4", + "linux-amd64": "46a67d46f9ab14cb4e25556120158aa6e8c9fd90604a34352f7893f2b3241384", + "linux-arm64": "2e1273530459282a9855c4e9c4ff53b0509ec1dbdf88c7d0906f6a90b0f03d72", + "windows-amd64": "2d4f26b9b8dfdc4f4a0920f923e70a3a725106617ee11b030e7f8f03d151e26d" + } + } }, "meetings": { "version": "1.2.1", @@ -3590,11 +3521,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "6f49a02a07ada9bb72daffdf70e06da92caf71a95b2ec05d413fa60b2f4c99a0", + "checksum": "fa4333958f1a9b487bccdecf446b2f5a31131706d6bffa0ecd4ec05f93f00a2a", "checksums": { - "sha256": "sha256:fa4333958f1a9b487bccdecf446b2f5a31131706d6bffa0ecd4ec05f93f00a2a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/meetings-1.2.1.tar.gz" + "sha256": "fa4333958f1a9b487bccdecf446b2f5a31131706d6bffa0ecd4ec05f93f00a2a" + } }, "nself-cloud": { "version": "1.2.1", @@ -3619,11 +3549,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "81d6ad39e3ef18c2812f1a664d1c13ceb6940159b556f56f63d60af227f624ea", + "checksum": "7c541caf3443a5bf5e5dba278cbb7648230026ca4da4b514e8d3689c91e051f7", "checksums": { - "sha256": "sha256:7c541caf3443a5bf5e5dba278cbb7648230026ca4da4b514e8d3689c91e051f7" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-cloud-1.2.1.tar.gz" + "sha256": "7c541caf3443a5bf5e5dba278cbb7648230026ca4da4b514e8d3689c91e051f7" + } }, "nself-eval-gate": { "version": "1.2.1", @@ -3649,11 +3578,10 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.2.1", - "checksum": "fd1287c644e3c60d29038c68c62e7e20bc15d5f407fe59cc10c9b1862514dba1", + "checksum": "346a3d6db2316b598f755bb4b1314953cb95f1dd46a8997d25ae07ac59dc484d", "checksums": { - "sha256": "sha256:346a3d6db2316b598f755bb4b1314953cb95f1dd46a8997d25ae07ac59dc484d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-eval-gate-1.2.1.tar.gz" + "sha256": "346a3d6db2316b598f755bb4b1314953cb95f1dd46a8997d25ae07ac59dc484d" + } }, "nself-geo": { "version": "1.2.1", @@ -3680,11 +3608,10 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "48367db3d350895d27fe742237d89ebd1c0210ecca1e2285c78e237cc1d507e5", + "checksum": "98351e8a37ce7f34367e22df6536081ee2a66cda981570b2912c4d5c892a268a", "checksums": { - "sha256": "sha256:98351e8a37ce7f34367e22df6536081ee2a66cda981570b2912c4d5c892a268a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-geo-1.2.1.tar.gz" + "sha256": "98351e8a37ce7f34367e22df6536081ee2a66cda981570b2912c4d5c892a268a" + } }, "nself-image": { "version": "1.2.1", @@ -3716,11 +3643,10 @@ "minNselfVersion": "1.2.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "a664b5853c5df24ceaa0fea75a59da1aac25e7c07a596fa2d69f2ca4b873f1d0", + "checksum": "07363f7181a5d1d3b8702bb72939b02479046a2360aa5b8de6afc9ff651f5f06", "checksums": { - "sha256": "sha256:07363f7181a5d1d3b8702bb72939b02479046a2360aa5b8de6afc9ff651f5f06" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-image-1.2.1.tar.gz" + "sha256": "07363f7181a5d1d3b8702bb72939b02479046a2360aa5b8de6afc9ff651f5f06" + } }, "nself-pdf": { "version": "1.2.1", @@ -3749,11 +3675,10 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "3ddade984c51555b8ee81aa83c1b5e2fcf9f7c9f3d09562e102f573e9de597df", + "checksum": "3f2a19ac47dfc5a32a8d496b3945ad41230d18866e0619ef456fc4b220e77bf3", "checksums": { - "sha256": "sha256:3f2a19ac47dfc5a32a8d496b3945ad41230d18866e0619ef456fc4b220e77bf3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-pdf-1.2.1.tar.gz" + "sha256": "3f2a19ac47dfc5a32a8d496b3945ad41230d18866e0619ef456fc4b220e77bf3" + } }, "nself-scan": { "version": "1.2.1", @@ -3784,11 +3709,10 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "85db1a432059ce4588ac0f36dcfc62270c11b473c267db8acc0567e3dfeadbc5", + "checksum": "7cb80dd9f78f1572d7ce23adf1d84c7eb9a6ef90441b8d08e803d7b40b0d6743", "checksums": { - "sha256": "sha256:7cb80dd9f78f1572d7ce23adf1d84c7eb9a6ef90441b8d08e803d7b40b0d6743" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-scan-1.2.1.tar.gz" + "sha256": "7cb80dd9f78f1572d7ce23adf1d84c7eb9a6ef90441b8d08e803d7b40b0d6743" + } }, "nself-sync": { "version": "1.2.1", @@ -3822,11 +3746,10 @@ "np_sync_cursors" ], "releaseTag": "v1.2.1", - "checksum": "e78deb7b78f361deac0c1529f92a9ca40edfbedfbf9e9e437eda2cbd5837aa6c", + "checksum": "65cb9d210f62a25130624bbcb0340add8c7a1e970fbfc7137d6470834421870d", "checksums": { - "sha256": "sha256:65cb9d210f62a25130624bbcb0340add8c7a1e970fbfc7137d6470834421870d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-sync-1.2.1.tar.gz" + "sha256": "65cb9d210f62a25130624bbcb0340add8c7a1e970fbfc7137d6470834421870d" + } }, "nself-vault": { "version": "1.2.1", @@ -3855,11 +3778,10 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "af60a93d84444127ea7e22a826c951b2a31a2a4a71a8a7bb37a0b1205e1937a2", + "checksum": "3b6d18a67a8e8abbedddecab93e5a95051f6d1cc7ad08440f1cca6fa410baadd", "checksums": { - "sha256": "sha256:3b6d18a67a8e8abbedddecab93e5a95051f6d1cc7ad08440f1cca6fa410baadd" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/nself-vault-1.2.1.tar.gz" + "sha256": "3b6d18a67a8e8abbedddecab93e5a95051f6d1cc7ad08440f1cca6fa410baadd" + } }, "object-storage": { "version": "1.2.1", @@ -3889,11 +3811,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "5b7bf3e129efdde764528d9cd4fb96a4f790067778eaf5aa7a709f4147b8c7df", + "checksum": "e00366c466ec95d3049053a94e81ea65e3d351b8a16f528e41bdf3c662ae4b5b", "checksums": { - "sha256": "sha256:e00366c466ec95d3049053a94e81ea65e3d351b8a16f528e41bdf3c662ae4b5b" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/object-storage-1.2.1.tar.gz" + "sha256": "e00366c466ec95d3049053a94e81ea65e3d351b8a16f528e41bdf3c662ae4b5b" + } }, "observability": { "version": "1.2.1", @@ -3919,11 +3840,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "c5c66501998cc7aa423a18ac8f0ba9509dfc15c440b641856028087679c50ef7", + "checksum": "67de59538cc3cb9cce8b724c044105e2fd616c5d336056394150010c18b99d04", "checksums": { - "sha256": "sha256:67de59538cc3cb9cce8b724c044105e2fd616c5d336056394150010c18b99d04" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/observability-1.2.1.tar.gz" + "sha256": "67de59538cc3cb9cce8b724c044105e2fd616c5d336056394150010c18b99d04" + } }, "payments": { "version": "1.2.1", @@ -3949,11 +3869,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "7e25ca3e13a458eddbfa97e73e5a11dd1534cf7da917f768ac9dddfa387810fd", + "checksum": "992a6466f6674e2d18abd19056bdc9169df95abb4999213c3480280bdf0a2cd8", "checksums": { - "sha256": "sha256:992a6466f6674e2d18abd19056bdc9169df95abb4999213c3480280bdf0a2cd8" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/payments-1.2.1.tar.gz" + "sha256": "992a6466f6674e2d18abd19056bdc9169df95abb4999213c3480280bdf0a2cd8" + } }, "pentest": { "version": "1.2.1", @@ -3979,11 +3898,10 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.2.1", - "checksum": "039d896548cc7c64c3033712906baacb0aa21ddd3c7629451c140133bc2d32fc", + "checksum": "544e8279821b3f9ce8329829246fdb3c38bd8980bb620e6a0c0fccbc098a43a0", "checksums": { - "sha256": "sha256:544e8279821b3f9ce8329829246fdb3c38bd8980bb620e6a0c0fccbc098a43a0" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-1.2.1.tar.gz" + "sha256": "544e8279821b3f9ce8329829246fdb3c38bd8980bb620e6a0c0fccbc098a43a0" + } }, "pentest-kit": { "version": "1.2.1", @@ -4008,11 +3926,17 @@ "minNselfVersion": "1.2.8", "tables": [], "releaseTag": "v1.2.1", - "checksum": "4495d4ad638f6b791ac5f01ba4fc9493cee0fa26122b7391542bd9fd514d3c5a", + "checksum": "2f65723883754824a551e3b223cc607c3622fec937e9bb593620b35fdf4bc3b8", "checksums": { - "sha256": "sha256:2f65723883754824a551e3b223cc607c3622fec937e9bb593620b35fdf4bc3b8" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1.tar.gz" + "sha256": "2f65723883754824a551e3b223cc607c3622fec937e9bb593620b35fdf4bc3b8", + "platforms": { + "darwin-arm64": "986af84284f9162f3a02063b2c4d5bc30d8582ae20146db9fa257036da4b78a3", + "darwin-amd64": "aac14ea870734570a85d0c6d08e6cce63e96472250814363ca294d3643853ec3", + "linux-amd64": "1f7d485729b5b5eaa428b4b16653dfb0924df229e946f08dc3c5a69b43cf9c68", + "linux-arm64": "3fb1dc48b8ba9a235808da659bb1f2218d1febbbdd405475b54b225818d64b0c", + "windows-amd64": "7e0326d8190ca97d8a5a0fdf88495095bf8bb9d00e97cf8f029c500b7f5a2b69" + } + } }, "plugin-clawde": { "version": "1.2.1", @@ -4032,11 +3956,10 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.2.1", - "checksum": "32e27e2fb3036a89aae6c69617ef25cb7cff8fcf13992583e4e68d9251f13abc", + "checksum": "dfec158c22aefbdd972f8857f6ef0646c3f5410ce9509a4c3c4b631e6a3ae925", "checksums": { - "sha256": "sha256:dfec158c22aefbdd972f8857f6ef0646c3f5410ce9509a4c3c4b631e6a3ae925" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-clawde-1.2.1.tar.gz" + "sha256": "dfec158c22aefbdd972f8857f6ef0646c3f5410ce9509a4c3c4b631e6a3ae925" + } }, "plugin-gauth": { "version": "1.2.1", @@ -4056,11 +3979,10 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.2.1", - "checksum": "f5d3ae0adbdfb86c3cdb18f0c41975645d85a723616f73d40d431bbaba751abf", + "checksum": "0c1cf7be503faa53076ac022fa9e9cf2b08ee46d5e4b49e0ca3ddced580c2265", "checksums": { - "sha256": "sha256:0c1cf7be503faa53076ac022fa9e9cf2b08ee46d5e4b49e0ca3ddced580c2265" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-gauth-1.2.1.tar.gz" + "sha256": "0c1cf7be503faa53076ac022fa9e9cf2b08ee46d5e4b49e0ca3ddced580c2265" + } }, "plugin-llm-gateway": { "version": "1.2.1", @@ -4080,11 +4002,10 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.2.1", - "checksum": "773524889faa560b682a1d648fe76ab7a2289e95c5997dd2d864ecea13d91a68", + "checksum": "a2e52a8ea3592797ede141a7ed3efeaf87471b4787b5c31934b37db6ce9db2c0", "checksums": { - "sha256": "sha256:a2e52a8ea3592797ede141a7ed3efeaf87471b4787b5c31934b37db6ce9db2c0" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-llm-gateway-1.2.1.tar.gz" + "sha256": "a2e52a8ea3592797ede141a7ed3efeaf87471b4787b5c31934b37db6ce9db2c0" + } }, "plugin-pty": { "version": "1.2.1", @@ -4104,11 +4025,10 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.2.1", - "checksum": "d0113187dd8ea1204c24f8370d86dfc6ca3092bc43c13f822200b15df0a77da2", + "checksum": "cd4ec1a8fd29553a11f76891ed1ca06f0ce04ad489fa66616e900ca4c488ccdf", "checksums": { - "sha256": "sha256:cd4ec1a8fd29553a11f76891ed1ca06f0ce04ad489fa66616e900ca4c488ccdf" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-pty-1.2.1.tar.gz" + "sha256": "cd4ec1a8fd29553a11f76891ed1ca06f0ce04ad489fa66616e900ca4c488ccdf" + } }, "plugin-retrieval": { "version": "1.2.1", @@ -4128,11 +4048,10 @@ "minNselfVersion": "1.1.1", "tables": [], "releaseTag": "v1.2.1", - "checksum": "a41a11ae99ed35b9542babc025b17650440c540fc7bba098a721dcf1c532af45", + "checksum": "83861eb3d036276680c7c58bd14df6a1bdfa1528572564f9750f35f86f3bcae4", "checksums": { - "sha256": "sha256:83861eb3d036276680c7c58bd14df6a1bdfa1528572564f9750f35f86f3bcae4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/plugin-retrieval-1.2.1.tar.gz" + "sha256": "83861eb3d036276680c7c58bd14df6a1bdfa1528572564f9750f35f86f3bcae4" + } }, "post": { "version": "1.2.1", @@ -4162,11 +4081,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "0bfe68a2847edfbd12114b22eab5ec683f2415f019f1c0a75cc3a597e02aeb08", + "checksum": "4730166dfacc1de7f7763c6f9fa2b6c12a5d6bc691544a41a82fd70e2df3c172", "checksums": { - "sha256": "sha256:4730166dfacc1de7f7763c6f9fa2b6c12a5d6bc691544a41a82fd70e2df3c172" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/post-1.2.1.tar.gz" + "sha256": "4730166dfacc1de7f7763c6f9fa2b6c12a5d6bc691544a41a82fd70e2df3c172" + } }, "retro-gaming": { "version": "1.2.1", @@ -4195,11 +4113,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "02c6d55ae0800323ff9a205c5917a6941223f54a04df9a4b039f99713483476a", + "checksum": "978b18176f279ec352c0a55c969eda39311545b00f4065c2ec19c1472ccd8d4c", "checksums": { - "sha256": "sha256:978b18176f279ec352c0a55c969eda39311545b00f4065c2ec19c1472ccd8d4c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/retro-gaming-1.2.1.tar.gz" + "sha256": "978b18176f279ec352c0a55c969eda39311545b00f4065c2ec19c1472ccd8d4c" + } }, "rom-discovery": { "version": "1.2.1", @@ -4228,11 +4145,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "d648bdf3bf37aed7d08a3efb8ac73615e02a436fabbf690b6ff4c654cf575cdf", + "checksum": "9e11ad43026ea1ec79c2914894b3ec9db1321f07c58972df0eb3f8355d349f0f", "checksums": { - "sha256": "sha256:9e11ad43026ea1ec79c2914894b3ec9db1321f07c58972df0eb3f8355d349f0f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/rom-discovery-1.2.1.tar.gz" + "sha256": "9e11ad43026ea1ec79c2914894b3ec9db1321f07c58972df0eb3f8355d349f0f" + } }, "siem": { "version": "1.2.1", @@ -4262,11 +4178,10 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.2.1", - "checksum": "57a2930c5f498777bcff01ceef148afd3efaec1013dcc1bb13813bc7ad200191", + "checksum": "b447d05872c51fbbe35169ee850b60751e2909ec0926a578e5b02167672d98d5", "checksums": { - "sha256": "sha256:b447d05872c51fbbe35169ee850b60751e2909ec0926a578e5b02167672d98d5" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/siem-1.2.1.tar.gz" + "sha256": "b447d05872c51fbbe35169ee850b60751e2909ec0926a578e5b02167672d98d5" + } }, "sms": { "version": "1.2.1", @@ -4286,11 +4201,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "a2b4aa085299f1b4a2972009c1fed3ef0ffb965d6fe66a2be2aaa61b08ec7645", + "checksum": "bad33c5141cb77acbadcc75746e9080154d04979c6c67f66bf420876d9bf1e3e", "checksums": { - "sha256": "sha256:bad33c5141cb77acbadcc75746e9080154d04979c6c67f66bf420876d9bf1e3e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sms-1.2.1.tar.gz" + "sha256": "bad33c5141cb77acbadcc75746e9080154d04979c6c67f66bf420876d9bf1e3e" + } }, "storage": { "version": "1.2.1", @@ -4315,12 +4229,11 @@ "author": "nself", "minNselfVersion": "1.1.0", "tables": [], - "checksum": "cee934dc9e8a95f67950cf3bdf81f70e610ace5dedede89b82f7eedd346564c4", + "checksum": "4ffc35d775a0c99771faf3b9b10075d66c5ba32344e72a7e839a07eb4b5bb632", "checksums": { - "sha256": "sha256:4ffc35d775a0c99771faf3b9b10075d66c5ba32344e72a7e839a07eb4b5bb632" + "sha256": "4ffc35d775a0c99771faf3b9b10075d66c5ba32344e72a7e839a07eb4b5bb632" }, - "releaseTag": "v1.2.1", - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/storage-1.2.1.tar.gz" + "releaseTag": "v1.2.1" }, "storage-transform": { "version": "1.2.1", @@ -4348,11 +4261,10 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.2.1", - "checksum": "522a38ef35a689a40719af0c9d9cd56d929cf08ded564bd62843ff46e68fb403", + "checksum": "8b9031d5a7b41fd0f270270e1d743f905c983e8a58f659b2358c38a2f874bbe8", "checksums": { - "sha256": "sha256:8b9031d5a7b41fd0f270270e1d743f905c983e8a58f659b2358c38a2f874bbe8" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/storage-transform-1.2.1.tar.gz" + "sha256": "8b9031d5a7b41fd0f270270e1d743f905c983e8a58f659b2358c38a2f874bbe8" + } }, "tenant-controller": { "version": "1.2.1", @@ -4379,11 +4291,10 @@ "minNselfVersion": "1.0.9", "tables": [], "releaseTag": "v1.2.1", - "checksum": "6ed7d89b72a4b11b1dce4a2e494aed69cfca0ec51294a1d8382280be3d46ea96", + "checksum": "09b0b44869209ab6637995fc095365530c1fc44e9367a03f9ec58a95cb6c5a61", "checksums": { - "sha256": "sha256:09b0b44869209ab6637995fc095365530c1fc44e9367a03f9ec58a95cb6c5a61" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-controller-1.2.1.tar.gz" + "sha256": "09b0b44869209ab6637995fc095365530c1fc44e9367a03f9ec58a95cb6c5a61" + } }, "transactional-email": { "version": "1.2.1", @@ -4411,11 +4322,10 @@ "minNselfVersion": "1.1.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "43a86b405669f09d47b05ee6700767f8f54af36315e09ab93d4184473d4cb299", + "checksum": "fd08f54f6f79a3ffc2fc4e6c22ed3ce64a5131ff318e6441f7fcf8aa3bc7b0fd", "checksums": { - "sha256": "sha256:fd08f54f6f79a3ffc2fc4e6c22ed3ce64a5131ff318e6441f7fcf8aa3bc7b0fd" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/transactional-email-1.2.1.tar.gz" + "sha256": "fd08f54f6f79a3ffc2fc4e6c22ed3ce64a5131ff318e6441f7fcf8aa3bc7b0fd" + } }, "warehouse": { "version": "1.2.1", @@ -4441,11 +4351,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "0ac4dbb1bd55c893140181a8a16419a6da96f1fb0754b3d1861576ed5c5717b3", + "checksum": "91384c9f196fb368a27eb825cb2ce5d6a14fdf29b0837d9e92b6da47b7b68d13", "checksums": { - "sha256": "sha256:91384c9f196fb368a27eb825cb2ce5d6a14fdf29b0837d9e92b6da47b7b68d13" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/warehouse-1.2.1.tar.gz" + "sha256": "91384c9f196fb368a27eb825cb2ce5d6a14fdf29b0837d9e92b6da47b7b68d13" + } }, "web3": { "version": "1.2.1", @@ -4474,11 +4383,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "77cf94dedf162dc7580e1cb695c4793525a5dea33993f280bd4de661ab1263df", + "checksum": "9426659414d8b164940b03f9023ddf4a0866e8b84cabb247d93b7ab93bf9e33f", "checksums": { - "sha256": "sha256:9426659414d8b164940b03f9023ddf4a0866e8b84cabb247d93b7ab93bf9e33f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/web3-1.2.1.tar.gz" + "sha256": "9426659414d8b164940b03f9023ddf4a0866e8b84cabb247d93b7ab93bf9e33f" + } }, "workflows": { "version": "1.2.1", @@ -4506,11 +4414,10 @@ "minNselfVersion": "1.0.0", "tables": [], "releaseTag": "v1.2.1", - "checksum": "b287a558fbb4595c9e58611389d1e4048ea43aca7d8913910cd10056b5818063", + "checksum": "6f457b9c1b7a03236bcef82a81fcb72220181c01d7c6579330a0b64bfc4dbef8", "checksums": { - "sha256": "sha256:6f457b9c1b7a03236bcef82a81fcb72220181c01d7c6579330a0b64bfc4dbef8" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/workflows-1.2.1.tar.gz" + "sha256": "6f457b9c1b7a03236bcef82a81fcb72220181c01d7c6579330a0b64bfc4dbef8" + } }, "shared-utils": { "version": "1.2.1", @@ -4531,12 +4438,7 @@ "author": "nself", "minNselfVersion": "1.0.0", "tables": [], - "installable": false, - "checksums": { - "sha256": "sha256:b3ba3dbaa743d1cefcebeda21fe24348a4b549edd2e0732efb9b2d5b586683a0" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/shared-utils-1.2.1.tar.gz", - "releaseTag": "v1.2.1" + "installable": false }, "tmdb": { "version": "1.2.1", @@ -4575,11 +4477,10 @@ "np_tmdb_webhook_events" ], "releaseTag": "v1.2.1", - "checksum": "043bc8d4ced877a59e78ce67b8e6b25b489afd42d4e45ba8fdbe0fecb16318df", + "checksum": "771d00e5a7d63ecd0dd311fdc10ca9a212ba74473e5a842a13de7e9c3c3784e4", "checksums": { - "sha256": "sha256:771d00e5a7d63ecd0dd311fdc10ca9a212ba74473e5a842a13de7e9c3c3784e4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tmdb-1.2.1.tar.gz" + "sha256": "771d00e5a7d63ecd0dd311fdc10ca9a212ba74473e5a842a13de7e9c3c3784e4" + } }, "game-metadata": { "version": "1.2.1", @@ -4612,11 +4513,10 @@ "np_game_genres" ], "releaseTag": "v1.2.1", - "checksum": "81c220149c3b9555644c9891f29879bf416acab722c690aea4df016872bf0ffc", + "checksum": "482125be2dce22ac5eb5ac5bcbba6c0471dc420f0ae44dfcfa2eb3cb179882a0", "checksums": { - "sha256": "sha256:482125be2dce22ac5eb5ac5bcbba6c0471dc420f0ae44dfcfa2eb3cb179882a0" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/game-metadata-1.2.1.tar.gz" + "sha256": "482125be2dce22ac5eb5ac5bcbba6c0471dc420f0ae44dfcfa2eb3cb179882a0" + } }, "sports": { "version": "1.2.1", @@ -4660,11 +4560,10 @@ "np_sports_webhook_events" ], "releaseTag": "v1.2.1", - "checksum": "78a8d9026d5c367e678c2e2b74d13268b799ffa6ad956360a64200d089b4e626", + "checksum": "7365f5081d1543a7fb03c73b0ba71ded8cd9cf8004b7f7f339f65ed553ab859d", "checksums": { - "sha256": "sha256:7365f5081d1543a7fb03c73b0ba71ded8cd9cf8004b7f7f339f65ed553ab859d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sports-1.2.1.tar.gz" + "sha256": "7365f5081d1543a7fb03c73b0ba71ded8cd9cf8004b7f7f339f65ed553ab859d" + } }, "podcast": { "version": "1.2.1", @@ -4697,11 +4596,10 @@ "np_podcast_categories" ], "releaseTag": "v1.2.1", - "checksum": "f4714ca8dbbcc668cf4936d152f4f2e68173af7dfea0a9cec18f71eac491f50f", + "checksum": "5e421670608d252f56bd64eba16b1a4917dd20ff631cadb5686eeaf7f8ce588a", "checksums": { - "sha256": "sha256:5e421670608d252f56bd64eba16b1a4917dd20ff631cadb5686eeaf7f8ce588a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/podcast-1.2.1.tar.gz" + "sha256": "5e421670608d252f56bd64eba16b1a4917dd20ff631cadb5686eeaf7f8ce588a" + } }, "file-processing": { "version": "1.2.1", @@ -4731,11 +4629,10 @@ "np_fileproc_metadata" ], "releaseTag": "v1.2.1", - "checksum": "b8a9551f38586f2215b0a0e38a01d11b304d42e880c11d7b89843b72d3ba771e", + "checksum": "6695dc38cd01823e944373e8ebfb893003ec804afae312970ea1babc592cd362", "checksums": { - "sha256": "sha256:6695dc38cd01823e944373e8ebfb893003ec804afae312970ea1babc592cd362" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/file-processing-1.2.1.tar.gz" + "sha256": "6695dc38cd01823e944373e8ebfb893003ec804afae312970ea1babc592cd362" + } }, "media-processing": { "version": "1.2.1", @@ -4775,11 +4672,10 @@ "np_mediap_uploads" ], "releaseTag": "v1.2.1", - "checksum": "cda9c4d015cf49631f55105bb4dc99806775d585f3bcdd74851d49d0fcb02a78", + "checksum": "fb908d7bab56eddeb75649f2fd4e32d568ea2bc4c47eca49df89ec0c2ae81d93", "checksums": { - "sha256": "sha256:fb908d7bab56eddeb75649f2fd4e32d568ea2bc4c47eca49df89ec0c2ae81d93" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/media-processing-1.2.1.tar.gz" + "sha256": "fb908d7bab56eddeb75649f2fd4e32d568ea2bc4c47eca49df89ec0c2ae81d93" + } }, "geocoding": { "version": "1.2.1", @@ -4810,1131 +4706,10 @@ "np_geoc_places" ], "releaseTag": "v1.2.1", - "checksum": "0641b2a79af09bccd0c7cfd75055609bf2bbcc0e9b5e3bffd03ecca2b37fff4e", - "checksums": { - "sha256": "sha256:fd243377a98045b3df88eed92d9bf414eca5bb8e75cbbc7a6906a82b084d9d9d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/geocoding-1.2.1.tar.gz" - }, - "ai-cli-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:f09699e679ec95a1dd4b0e43ca7300d2ef380cdc3146e41f3251d574a38b73df" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "ai-cli-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:3c5687010cecb95fac74cc099dfa40e861bec9bc6db296df2136dd286102405c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "ai-cli-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:ad2c47cb0763c493959ea42094d3a74152bbec5f1800d3b11e47dd406a3da9ff" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "ai-cli-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:eacdabe4bb7d6c5c098f39256037fc9cfba7e64d49ae719daadd6f12b973ce54" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "ai-cli-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:eebc395738b5b2c99014b0e59c2fc56963e5a70373cc030f67a6fa27ce492a84" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-cli-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "ai-studio-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:4cad8160bad0b21ff2ebaf2f6cfac66aec6ce32d125494cfc444673e7fd094c9" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "ai-studio-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:2c9bfaba7462d5bed7eb962160b9955dc940ba4364e15d04d0fec7f809a388c0" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "ai-studio-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:994666d6f80aa52fa94d9a5bab9a92cd2ffe2aa092abecaf89a8772a20a58b30" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "ai-studio-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:d3ec888c5043c6623f52fd76c5ec315a8b21e2034d616bcebf68c51b1c9355a4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "ai-studio-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:c1daf80e5a1c2e2bbbb8d03a65bff9d9174a8a90c3b7822ceb473a2e18ee339b" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/ai-studio-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "alerts-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:3b06082098cebb4fce74e2ed50e75ab0749bf04ecd942bf0ada9793943c6a7d2" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "alerts-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:6c99a15e613dcb34e6168c7db78851142985bccc58cbf42c365efac58a4eff23" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "alerts-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:39aa3f7b186839b0c2d615dc1b25bac2ce37c1a312180d40da18b8f65aebddeb" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "alerts-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:485a6a4241cc551bd4f18ccbec199453c42afbe8a0b2a8805cd62ed62f706e08" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "alerts-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:28e8522de5fb8637e89697b6228a96c3826fe98b41c9d7884584fd5e5890e645" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/alerts-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "api-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:2e6aa55310ac8996ac48420cdaaeab7322e068001f8b98fee6133dbe3787c5a4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "api-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:43c25e1bbcbc159da14c4c7f4fd0b4e4ef1e2aaf6a1055035b9af42ec147c546" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "api-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:08ca39730a98b4978f55bc0edba367350a9ced6f9242269f875f72b30f927175" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "api-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:bb56793bc586f82a7aae885273a7841c0f43990ecb4f1a9ddc1537aa09758f02" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "api-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:d760a3596320705c80651e829de6a360ad201bf21c662b50da1a5ad8e5a6066c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/api-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "audit-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:11aec83f998a2992eb36c0db0a28eef243015721e7a8dfad8c32dbdf226b148c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "audit-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:12f5056cd57d0d0c0761dc3386aa9cd3bad098a312ff7717af00e95d55ab349d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "audit-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:ab7156d092d9c36099f7dce658be489976e7301cb44156227d48f3612b6bf748" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "audit-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:7556aa206ff903a226111ccc66f6e5f09fa71eb5295c012e9c3b11c70cf1d531" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "audit-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:024757e38a7e6c600ccb0c23c56177ed29f8ca5edcb4a56ca4508cc91fd5a86a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/audit-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "claw-cli-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:6ff90642a3d18c8165bf92856584d014def34fe16b6baabb76604bf888163b82" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "claw-cli-1.2.1-darwin-arm64.tar.gz": { + "checksum": "fd243377a98045b3df88eed92d9bf414eca5bb8e75cbbc7a6906a82b084d9d9d", "checksums": { - "sha256": "sha256:d96e1ab5928c45d5594ffc60ee690951c22bd37fcf76ab92d539c6455f60d5c0" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "claw-cli-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:589742d390eb81ca04b803db46b8342e85f7dc6de0389b018b7a5c2766bd302f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "claw-cli-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:603d8859579ba5b6227a409313d5295d2e5455bf87916766f830e2a2c468f34f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "claw-cli-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:abffbca7caa3499110289601d5ff1f5180a6147b8dddd2566e1e9792008c9616" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/claw-cli-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "costs-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:427334120d315034e79a98ec14ba37aa0842bc14fb435a712bd95b748f03a0da" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "costs-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:e1c557b28fbf8d64113b19f675dc73be1d27689bf2427b003dd206e2046aa75b" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "costs-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:21e108234ba639dbb395c7a8226a3c166079441cea1097a5fb2b3285645d57f4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "costs-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:32530453e23a84759a416c96155fe759af10dbc814be2a4de39b838823cff0db" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "costs-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:350510e8461ce3e6f7deece14163ac55e329c40ccd6176df407b7eca940b54c3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/costs-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dlq-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:2f2a90f8a01934fbd8ce743ab46f1525dfe1006b8907225a33fa1e20e2a01d8c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dlq-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:baa953b92c4d14220d01241920dc3d8388b30dbcd7341538e9c5afd68b76515c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dlq-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:0b8eb5377d99e55383ce485ba1c46b8de5263620b871f10da3e1f916749fee6f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dlq-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:bf32e542335329949174d45e3e5a2a2d667ad79dcde390ea3b0efba38f1b3075" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dlq-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:d4525b9a91ded889078b0a8db7072210133fc42a10218f18cf5737cad7e60497" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dlq-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dogfood-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:2da0bd5c4e9fb614866d228aadeeeaebfeedf1c69fd6a66296fda0bd7126b09a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dogfood-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:8e5185c456697874f825130e68db8f11654c5d5dd1df819a5075318a2cc25b2f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dogfood-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:5e02fc20aca6966d4914950753e7d70a59af03069d4001695738e547e534c9ff" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dogfood-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:afb00da5c318b8acc9c88fa7aba99a680b2e60706f0b15285bde80fb32c40ee4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dogfood-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:8f3e7d0ac00c3abce4f0c93114e03d75bdd62f8420ae3124b8df5a07882ba991" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dogfood-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dr-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:fbeac561ad222ce0ece064eef5bd40bc74f81074d755b5d3b41b3a9018f658b1" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dr-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:66c247eb4aeb9c3ca52166c37241bb2ca340039c3416040e106af48a51e37104" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dr-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:a501f350a087da762e89e7f2034270693f07257deb3d8f59c641c86dcbdb5348" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dr-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:fd99b15917f3c53882f044b3474154368c2b607c6943c20e1b1e0633e766be54" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "dr-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:d279e2d418b045a866ef664e9968f124d31db8b32ab33b897a91b173de98a397" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/dr-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "encryption-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:5798acdbc72bb963a027f457b63feecebd4ebe572fb5acda8f5b5560260d35f3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "encryption-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:68dfc43cef1b38ecbb1b03aabae1931746cd6e8ac51b747266a84165d10a18f3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "encryption-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:509608c14c987776033e0f098c7511a4a1151447e4aa9ea4ce1164224f409da4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "encryption-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:a8f0a8a6637e37a1560b8089dd88ece7720d9ae75c544bc1c36e7ecb4165205e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "encryption-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:ea735f9e7e58f4aa546005fe8454c029fe3a8d8affdeb70a925ccfde14fba28d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/encryption-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "federation-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:281a6fa9f3006b0e84e1d3db6f69f3053b9d0c22e5de10e222991422a36813e4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "federation-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:40bf742f304f4771c5d574ed257549d3035de1e9a8d9ad35f6f936b6378e23ee" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "federation-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:d1696402ffebc834635c398a72ec301e5a1561b78e0dea2ff583660b299f24df" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "federation-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:e28a7075fe83433d12bf3b14cc9c060e9f0367f11ef86abd13431e5a463c7662" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "federation-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:c409afc20f7f3f0aa09d9f21190c80db24bafc3c28aa352dcaed60402221da8a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/federation-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "flags-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:2b01840568d763d95be95003a96e8a68a6e55058b381a79a7c4fdcd5e5959ef1" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "flags-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:e42c33ac1d7161a2a5e2b5134a6492018808a8e1074e39fb117adb2652ffacb2" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "flags-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:f82ef4460e9d96fc8883785325a4c48873de18bf866e439c0fa5a0acf3b19059" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "flags-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:fdfe2c9b4792bb1c3e18811ae0ddf8d48d8a8425033264d8245e72a675aa29ad" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "flags-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:5c67c99342c8e03b18b8ae6b6a9815faaff24d92446defce17e7ea304c3060bb" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/flags-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gateway-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:9d8e079ec1f31a61ae27fdcde724e561bb2c69f27dbaf3657e08e04ce13cecec" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gateway-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:589f52cb8894481679934dcacb740e556887628d9b948d4ca08558dedc410448" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gateway-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:2726129207cbee5cc4d8499774e9d76b98d6d494d8185f054dd9a6e95d148521" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gateway-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:0a3fe72f0271b161943f929cfaf37d4c8ecd6af1154653b4227ab36d906fcb5f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gateway-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:8792f9393c8718936c9fe65e64fe03e383aee8ac34be553f70864970dceee1cd" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gateway-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gauth-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:d2f1c6bee6dd25c6e355a7d5c16b55e685e5bbb073a9f5497fa17772f39668af" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gauth-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:b33aa4b68e9f838223f69fddd9e44ed317c4ebd08a7a2fc9e7b32385b49b6adc" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gauth-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:dd8205a2ff9fc4ad90a8d3d30d329def5216413ed54915b7cafff13db25903ec" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gauth-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:dcc6357ba23e59ef089be7f6686b3d867d660c458e0f42f276a1e97fc4cde64c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gauth-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:eec873e83b810497d5a30233d0746da04c6744b7fe8d8c2139167fbe30bf8aa2" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gauth-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gdpr-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:f4daa6e7f575672dc8fa506d2f547b3739c4cf34f09b03583d2b745cfe9ac0b4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gdpr-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:f087fb4de45a531593d9f0152d9724c2cbae8025f343ec9c543b2acc884a4de3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gdpr-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:1f3bba453d5667a46acdaa738a9b017296f3f35ddc96763dfdcaec0615af0afd" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gdpr-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:a39cf8f9163709cbb321f371cb283d2f4f7fa431b3002c51f2de2124dc84d68a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "gdpr-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:249498c5b282148c344ca19613a1e47db864616b6d42b1b49217a7ce1868ee07" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/gdpr-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "infra-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:0b351ce379f7a7bfcaed52c24349105d8e9b0d0202e73684304ccb32680a5e74" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "infra-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:67c8cf445938b18a9362d48418b15a315d6f2414aa33c7751bae0c504a3ebee5" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "infra-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:aad7a6410ed19bf406369750de5289c0ffb179170a2731a1cdb510c89585b732" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "infra-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:09350027570bc7a896dd0eae27da5bb27901f7303eae48bc16f72cb9c66dac21" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "infra-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:5984954c1c61121e5041434ca3d0283381c3a9599437600b7e7a39f8fde1f965" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/infra-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "k8s-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:961c0d941f748745969e57d1ac67e0ae4a6b968fe7c58207c569e3e3c7892359" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "k8s-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:ba86cf228c9cc43520d3e890ac33c4c76309f98386400a4859d5773f9d780932" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "k8s-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:1faa10fcd6b2f99d3100e6adcc39fd6e62d9b0eb77bf35538b0ad97c187964d9" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "k8s-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:734b340b1fc43e0bb3b69a18ebb3e1808cbd61d20f39b42785fb9efc70aa5a5f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "k8s-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:784aeb198d2b2ade2515f40704ed41d43bee269027e5055ab37f09182ca1c8c1" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/k8s-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "mail-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:0ac4d707fe0a34fd00d01aa3447d680e9cb9971da04ff25283b2f082d3a9bbe4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "mail-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:86bc44042674e4363e96b36ebf2c2f253816de207c9cbaea708838b2956541bc" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "mail-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:46a67d46f9ab14cb4e25556120158aa6e8c9fd90604a34352f7893f2b3241384" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "mail-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:2e1273530459282a9855c4e9c4ff53b0509ec1dbdf88c7d0906f6a90b0f03d72" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "mail-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:2d4f26b9b8dfdc4f4a0920f923e70a3a725106617ee11b030e7f8f03d151e26d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/mail-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "maintenance-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:40a8ce73eb38d942ec9b65198f07dd3044fc37d25ef2f6f8dfd6b88105bba2b5" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "maintenance-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:1fef1d6fe8328134bda4e93a9dfef43f04b8c72b3910f84525d3e322940b0035" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "maintenance-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:e943796452602fc9f1d4ac07403e0a7e7018160bf0648bfa5d311dc32fda9b66" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "maintenance-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:67089460c37789c9aa661711e90f5f6fcb93c9943a72339e2d39afc956a4973c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "maintenance-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:2c73233b6acbc6b0185965a0288917b496994671a0c25d590e6bb1ee1283a64e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/maintenance-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "model-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:ba6d765de85249661af777625b62789fdd8635e68f0596e0266db2eb99b220aa" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "model-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:5bdd26917abbcae43bdd995710657dff8d388e3100b928a450a073400e600c6e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "model-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:60b563de03f2dbe8b39457c27f26dbc42ebe4ccaeefc7077d48280d77830a561" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "model-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:2e8ba35aac8d2efc17bce7a7f386a139c53c247d037bb29a7938fe4ad2813dc1" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "model-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:19d7a1e745958bf1e47a58d595a6ec2ea9bbf2d32e16451da067dd6a514ecf4a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/model-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "monitor-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:3be57ed1a6641fa1478587dce95a2aa18c57062d3473c206dc70f15d1bf5fa3e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "monitor-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:60a5e68325ee243d087908fcf2719b77671780e552f8e3c6e61ae416537f5ea4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "monitor-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:fc38bc30aba2516b4800bb93cbcdefa49b23b0ecc0af0717f52f66cadc4fdea2" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "monitor-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:7daa0c2ba22ea065fc4913e852242e0e10726d2c99b3b05b6c4bf24f53cfd0e3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "monitor-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:4728958bdfaa9e569dfac6baf1e03ac632f5265437fbf3d260682ecc25c154c4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/monitor-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "pentest-kit-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:aac14ea870734570a85d0c6d08e6cce63e96472250814363ca294d3643853ec3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "pentest-kit-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:986af84284f9162f3a02063b2c4d5bc30d8582ae20146db9fa257036da4b78a3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "pentest-kit-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:1f7d485729b5b5eaa428b4b16653dfb0924df229e946f08dc3c5a69b43cf9c68" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "pentest-kit-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:3fb1dc48b8ba9a235808da659bb1f2218d1febbbdd405475b54b225818d64b0c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "pentest-kit-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:7e0326d8190ca97d8a5a0fdf88495095bf8bb9d00e97cf8f029c500b7f5a2b69" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/pentest-kit-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "queue-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:18a1c5561c5d85ac6ba5459386c608164e173141f037292a8446e65657a8e98f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "queue-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:fb6de207e92af115151cb984f57b4ad660843dd61caa02b3071fc42d715a2d46" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "queue-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:85eb88559ef1e8223672b295b35db7414575d693f1116d51556f3bc5d1f1cde9" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "queue-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:66f248bec20afca52b9556c3139600ffb5258b15c60daa096de394b39b1af572" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "queue-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:7bac24e8ca57ebb1d5d6808417607483e9609a5fd06e86c1c500215042d4374d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/queue-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "region-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:461dc5e1b85fe836734fe5fd59c048a67fd8b68d18dc3a7fe0dc41597086021b" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "region-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:dfbc4b2a54b37f543024c660838977ee719c7084240d473baf11783eb9639c3b" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "region-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:580f5f8e458225251f206d64c3e18a5815470d032fbd1f69bfad95f327f12c1f" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "region-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:2cce93e171cddccd1ac9c61572f2a35ab7ba6efabcd7e2b33540797bbbe19a71" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "region-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:dc9eaf76a086a14691ee120161def9c9eadbc9bf77b16322817f6edc70f6e03c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/region-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "release-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:c05388622e679ac98b489b41c502e0cbfe623206931a9ee1cbfbc6888653c1d2" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "release-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:3b9e11ca0d0d57f91987830d0babdbff8ff5240d5f10b82dd33dc26bc8eca556" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "release-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:b1411f544578e9dc87612778bc45941cd4a00828465f37aee4a6f0fa61dc79b9" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "release-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:c05132030073003b8af79ebcd79773b99ecbafbbbc10c8567857fce699a6f5bd" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "release-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:b834de5cf8fb0cbb0f706ebd39f0c9c1ab4db53c9d021c77c685b92c5a941212" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/release-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "sentry-cli-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:72e31bf43529c73c6c69c175ac0b8b2b00a135dc9a58015e5eade100a9963ae0" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "sentry-cli-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:af9bb63fd89f349e4e00f9cbb1d18cb51f696460d6364d1159da5e65220981a6" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "sentry-cli-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:62e328002dd7402971df080636b0ec0b2d06df0691e53beb900b9314e5b7761b" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "sentry-cli-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:a3e63cca12f2a6b45cb70a37216f5b31964c970c656a34987dec0c5a34e1881e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "sentry-cli-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:f59f1267d043219a354e7e7edd573cbb8a594b71d4f9a56ac40f7148b57e8ed0" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/sentry-cli-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "soak-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:ce8b798caa20e3dc3c35a0d60faa10c12a03ec8255115d8740b9dfc66b5f145c" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "soak-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:63eba62b2a2af02173f639662034b4d35a49fba00bc4d852e16cce71e0093257" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "soak-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:1fd80d6c57447413070be7ff1455d9e3717e1d986dbe5aea8891f8002429abf3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "soak-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:427c2e4825c5849c66a89cc2f6b2c3de91afcc3748cd7794ef06a75f593d7838" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "soak-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:22a13cdc300111d5d6646106940a6caf8606cf38caa5d742f3962c45b55087dc" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/soak-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "tenant-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:01c95f78ac85ac02c1c5e7cd8ccaa1aebc50aaff25285374a9044928736f446a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "tenant-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:bc645193a521877379b36f45cee855b5999617e9914e72d5715d090ec4f314a4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "tenant-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:6a577b9dd4ba54768541eee0d50f4359879d6ee31cd1bf346143c7986a5a1594" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "tenant-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:84db957ee06a6b793f4d6de8d6812382bcab9444a28b3e443ca642dfb73de4b3" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "tenant-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:26f79656eada5b5334bb922667b1aebac0f73988fa511d93904351aa0505d6f4" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/tenant-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "waf-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:8048ecc9619d56cb41411a6d7e27b0c816f6fcf0c87b65c8bac9b6e1de449f7b" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "waf-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:316bf389893ed8e06e55de71d456e3fa2b86696a67ea6cce9faf1843ed4b3c0d" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "waf-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:9fef314843ace6404425d13bf59d90066c7eb6057718a358354082d8e6417de6" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "waf-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:1db9b97b6edd3329c03f8526a39ad064390e0bf14789c6d4e339b585562a9823" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "waf-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:fc3da3b511acaf102a03488978519916200a1a08169aef9185ddae9151e1bf2a" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/waf-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "watchdog-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:30a6a5e4b231c00f37343efea0e0e4b25885ec75945bdda7b20b06c1f12cb415" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "watchdog-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:ba165c82d9651dc42044732d2adee06df0a96f0877cc235c4c4ccb04557e4dd7" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "watchdog-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:192c43e0a00841947a52bf794e2fdbce586b9ca24080d795c0210d5749c592e1" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "watchdog-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:bfe9b24f669ac3b348ca62f165691c4d0ea635c7f00a10041529942f499b5441" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "watchdog-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:1febc7701438fd6f875443b7b44969cd9751b2fed4f65693a2f95d409ced8005" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/watchdog-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "webhooks-1.2.1-darwin-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:b4a5379902b7abe25c12332de5032f55c66db1ed2dd35325dfe67a889022f62e" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-darwin-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "webhooks-1.2.1-darwin-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:952d8a79b643a26428a343453b939b1cf3ae85c01dd1e6d9ec9e06927333ca19" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-darwin-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "webhooks-1.2.1-linux-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:e5844b9b8f231c3a9892e98ae088e9da7a8184e731fc678157b2380a11fa92e0" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-linux-amd64.tar.gz", - "releaseTag": "v1.2.1" - }, - "webhooks-1.2.1-linux-arm64.tar.gz": { - "checksums": { - "sha256": "sha256:122b0e89cfed1d2b60453100aad5c6a4d441494940a1f91d6edae64e5cd4d201" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-linux-arm64.tar.gz", - "releaseTag": "v1.2.1" - }, - "webhooks-1.2.1-windows-amd64.tar.gz": { - "checksums": { - "sha256": "sha256:8602828883813a69c2c0d0e421af9620784996b3bc66ba81afcc25b9465d2d07" - }, - "tarballUrl": "https://github.com/nself-org/plugins/releases/download/v1.2.1/webhooks-1.2.1-windows-amd64.tar.gz", - "releaseTag": "v1.2.1" + "sha256": "fd243377a98045b3df88eed92d9bf414eca5bb8e75cbbc7a6906a82b084d9d9d" + } } } } diff --git a/scripts/verify-published-checksums.sh b/scripts/verify-published-checksums.sh index ab06e094..4d71d592 100755 --- a/scripts/verify-published-checksums.sh +++ b/scripts/verify-published-checksums.sh @@ -114,9 +114,42 @@ fi REGISTRY_JSON="$(cat "$REGISTRY_FILE")" MISMATCHES=0 MISSING_ASSETS=0 +DOWNLOAD_ERRORS=0 CHECKED=0 WRITTEN=0 +# Fetch the release's asset list ONCE, and fetch the bytes ONCE. +# +# This used to run `gh release download --pattern ` per asset: 578 API +# calls for v1.2.1. That is slow, it trips GitHub's secondary rate limit (the +# same limit that broke the upload job at 525 assets), and — because the call +# was `>/dev/null 2>&1` — a throttled or transient download was indistinguishable +# from a genuinely absent asset and got reported as "MISSING". On the first +# v1.2.1 run that produced a false MISSING for flags/linux-arm64, an asset which +# was in fact present on the release. A checksum gate that cries missing under +# load is worse than no gate: the failure mode is to dismiss it as noise. +# +# So: list once, download everything once, then work from local files. An asset +# absent from the manifest is MISSING (a real release defect). An asset that is +# in the manifest but has no local file is a DOWNLOAD ERROR (transient/infra). +# They are counted separately and mean different things. +ASSET_MANIFEST="${WORK_DIR}/.asset-manifest" +if ! gh release view "$TAG" --repo "$REPO" --json assets --jq '.assets[].name' > "$ASSET_MANIFEST" 2>/dev/null; then + err "could not list assets on release $TAG" + exit 1 +fi +log "Release $TAG lists $(wc -l < "$ASSET_MANIFEST" | tr -d ' ') asset(s); downloading them once." + +asset_is_published() { grep -Fxq "$1" "$ASSET_MANIFEST"; } + +dl_err="${WORK_DIR}/.download-stderr" +if ! gh release download "$TAG" --repo "$REPO" --dir "$WORK_DIR" --clobber >/dev/null 2>"$dl_err"; then + err "bulk download of $TAG's assets failed; cannot verify against published bytes." + err "gh said: $(tr '\n' ' ' < "$dl_err" | cut -c1-400)" + exit 1 +fi +rm -f "$dl_err" + # Iterate plugin names in a stable, deterministic order rather than # registry.json's own (already-alphabetical) key order directly, so this # script's log output is predictable even if that ever changes. @@ -138,14 +171,18 @@ while IFS= read -r name; do tarball_name="${name}-${VERSION}.tar.gz" asset_path="${WORK_DIR}/${tarball_name}" - if ! gh release download "$TAG" --repo "$REPO" --pattern "$tarball_name" --dir "$WORK_DIR" --clobber >/dev/null 2>&1; then + if ! asset_is_published "$tarball_name"; then printf "MISSING %s: no asset named %s on release %s\n" "$name" "$tarball_name" "$TAG" MISSING_ASSETS=$((MISSING_ASSETS + 1)) continue fi + if [ ! -f "$asset_path" ]; then + printf "DOWNLOAD-ERROR %s: %s is published but was not downloaded\n" "$name" "$tarball_name" + DOWNLOAD_ERRORS=$((DOWNLOAD_ERRORS + 1)) + continue + fi computed_sha="$(sha256_file "$asset_path")" - rm -f "$asset_path" CHECKED=$((CHECKED + 1)) reg_flat="$(printf '%s' "$entry" | jq -r '.checksum // ""')" @@ -185,14 +222,18 @@ while IFS= read -r name; do ptar_name="${name}-${VERSION}-${platform}.tar.gz" ptar_path="${WORK_DIR}/${ptar_name}" - if ! gh release download "$TAG" --repo "$REPO" --pattern "$ptar_name" --dir "$WORK_DIR" --clobber >/dev/null 2>&1; then + if ! asset_is_published "$ptar_name"; then printf "MISSING %s/%s: no asset named %s on release %s\n" "$name" "$platform" "$ptar_name" "$TAG" MISSING_ASSETS=$((MISSING_ASSETS + 1)) continue fi + if [ ! -f "$ptar_path" ]; then + printf "DOWNLOAD-ERROR %s/%s: %s is published but was not downloaded\n" "$name" "$platform" "$ptar_name" + DOWNLOAD_ERRORS=$((DOWNLOAD_ERRORS + 1)) + continue + fi p_computed="$(sha256_file "$ptar_path")" - rm -f "$ptar_path" CHECKED=$((CHECKED + 1)) if [ "$WRITE" = "true" ]; then @@ -220,10 +261,17 @@ else fi if [ "$MISSING_ASSETS" -gt 0 ]; then - err "${MISSING_ASSETS} expected asset(s) were not found on release ${TAG}." + err "${MISSING_ASSETS} expected asset(s) are genuinely absent from release ${TAG}." + err "That is a release defect: rebuild and upload the missing artifact(s)." +fi + +if [ "$DOWNLOAD_ERRORS" -gt 0 ]; then + err "${DOWNLOAD_ERRORS} asset(s) are published but could not be downloaded." + err "That is transient (network or GitHub rate limiting), NOT a missing artifact." + err "Re-run this script; do not rebuild or re-upload anything on account of it." fi -if [ "$MISMATCHES" -gt 0 ] || [ "$MISSING_ASSETS" -gt 0 ]; then +if [ "$MISMATCHES" -gt 0 ] || [ "$MISSING_ASSETS" -gt 0 ] || [ "$DOWNLOAD_ERRORS" -gt 0 ]; then exit 1 fi From 7c2f7d22b5dc93bf329f8588f8c902c7f805a8be Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Fri, 11 Sep 2026 13:51:46 -0400 Subject: [PATCH 18/18] fix(release): do not backfill checksums when nothing was uploaded MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Publishing the draft creates the tag, which re-triggers this workflow. Every asset is already on the release by then, so the upload step correctly uploads nothing — but the backfill step would still rebuild dist/ and recompute every checksum from those fresh local bytes, overwriting values that were verified against the published artifact. gzip's DEFLATE output is implementation- and version-dependent, so a rebuild is not guaranteed to reproduce the published bytes. That is the whole reason the checksum of record comes from the release rather than from a build. Letting the tag-push run recompute them re-introduces the bug by the back door. The upload step now reports how many assets it actually published, and backfill and its commit are skipped when that is zero. Writing checksums for a release that is already fully populated is scripts/verify-published-checksums.sh --write's job; it reads published bytes. --- .github/workflows/release-tarballs.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/release-tarballs.yml b/.github/workflows/release-tarballs.yml index 844ee26f..61a09d21 100644 --- a/.github/workflows/release-tarballs.yml +++ b/.github/workflows/release-tarballs.yml @@ -246,6 +246,7 @@ jobs: # Free plugin tarballs are source-only; arch verification is not applicable here. - name: Upload tarballs to GitHub Release + id: upload env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | @@ -312,9 +313,19 @@ jobs: --repo "${{ github.repository }}" fi + echo "uploaded_count=${#to_upload[@]}" >> "$GITHUB_OUTPUT" echo "Upload complete" + # Only backfill when THIS run actually published something. When every + # asset is already on the release (the tag-push run that follows + # publishing a draft, for instance) the bytes of record are the ones + # already there, and a fresh local build is not guaranteed to reproduce + # them. Recomputing from dist/ would overwrite verified checksums with + # unverified ones. scripts/verify-published-checksums.sh is the tool that + # writes checksums for an already-populated release; it reads the + # published bytes rather than a rebuild. - name: Backfill checksums in registry.json + if: steps.upload.outputs.uploaded_count != '0' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | @@ -389,6 +400,7 @@ jobs: echo "registry.json updated ($after_count entries, unchanged)" - name: Commit updated registry.json + if: steps.upload.outputs.uploaded_count != '0' run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com"