From 8904593f76eafd2a95f9897a9617f80f0280ee23 Mon Sep 17 00:00:00 2001 From: Ben Allfree Date: Sat, 29 Nov 2025 22:08:57 -0800 Subject: [PATCH] refactor: add version to plugin slug for build hashing --- convex/plugins.ts | 5 ++++- src/pages/BuildNew.tsx | 8 +++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/convex/plugins.ts b/convex/plugins.ts index 6f36d70..73ca346 100644 --- a/convex/plugins.ts +++ b/convex/plugins.ts @@ -29,7 +29,10 @@ export const getAll = query({ export const incrementFlashCount = internalMutation({ args: { slugs: v.array(v.string()) }, handler: async (ctx, args) => { - for (const slug of args.slugs) { + for (const pluginSpec of args.slugs) { + // Extract slug from "slug@version" format, or use as-is if no @ present + const slug = pluginSpec.split('@')[0] + const existing = await ctx.db .query('plugins') .withIndex('by_slug', (q) => q.eq('slug', slug)) diff --git a/src/pages/BuildNew.tsx b/src/pages/BuildNew.tsx index a8ea6ec..c763827 100644 --- a/src/pages/BuildNew.tsx +++ b/src/pages/BuildNew.tsx @@ -147,9 +147,15 @@ export default function BuildNew() { setIsFlashing(true) setErrorMessage(null) try { - const pluginsEnabled = Object.keys(pluginConfig).filter( + const enabledSlugs = Object.keys(pluginConfig).filter( (id) => pluginConfig[id] === true ) + const pluginsEnabled = enabledSlugs.map((slug) => { + const plugin = (registryData as Record)[ + slug + ] + return `${slug}@${plugin.version}` + }) const result = await ensureBuildFromConfig({ target: selectedTarget, version: selectedVersion,