From b4cf1c6427c0ce3361f2e5ddde7ea714acee5a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Thu, 27 Aug 2026 08:43:46 +0000 Subject: [PATCH] publish the catalogue from the release clones, and make the cards look like cards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit three small things. marketplace-sync reads PLUGINS_DIR now instead of assuming the directory it sits next to. platform/plugins/ is what a machine has INSTALLED — updated by plugins:update, which is a git pull — while the release is made in the workspace clones. publishing from the install directory means the catalogue advertises the version this machine happens to be running: 21 plugins were tagged and the store went on showing 1.0.0 until this changed. the grid cards used bg-white/40. this app's surfaces are a DARKENING of the panel behind them — every other card and section here is bg-duck-dark/5 — so a translucent white read as a pale box floating on a dark theme. picking a colour instead of a token, and it only looked right against a background this app does not have. hover now moves the BORDER and nothing else: a background swap across twenty-one cards makes the whole grid twitch as the pointer crosses it. the tag pills were the same value as the card surface, so they rendered as text with no chip at all. and the marketplace todo said the UI was not started. it is. Co-Authored-By: Claude Opus 5 Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043 --- scripts/marketplace-sync.ts | 14 +++++++++- .../src/apps/Plugins/PluginGrid.tsx | 11 ++++++-- .../marketplace-browse-by-tag.md | 28 ++++++++++--------- 3 files changed, 37 insertions(+), 16 deletions(-) diff --git a/scripts/marketplace-sync.ts b/scripts/marketplace-sync.ts index 97d340b9..7ab10f1b 100644 --- a/scripts/marketplace-sync.ts +++ b/scripts/marketplace-sync.ts @@ -66,7 +66,19 @@ const git = (dir: string, args: string[]): string | null => { return new TextDecoder().decode(result.stdout).trim() || null; }; -const PLUGINS_DIR = resolve(import.meta.dir, '..', 'plugins'); +/* + Which plugins directory to publish FROM. + + There are two, and they are not the same thing. `platform/plugins/` holds what this machine has + INSTALLED — updated by `plugins:update`, which is a git pull, and therefore always at whatever version + was last installed. `officer-dev/plugins/` holds every repo in the org, cloned for working on, and is + where a release is actually made. + + Publishing from the install directory means the catalogue advertises the version this machine happens + to be running rather than the version that was released. That is exactly what happened on 2026-08-27: + 21 plugins were tagged and the store went on showing 1.0.0. +*/ +const PLUGINS_DIR = process.env.PLUGINS_DIR ?? resolve(import.meta.dir, '..', 'plugins'); async function syncOne(dir: string): Promise { const appName = basename(dir); diff --git a/src/workspaces/officerdev/src/apps/Plugins/PluginGrid.tsx b/src/workspaces/officerdev/src/apps/Plugins/PluginGrid.tsx index fa4dc61b..a4c81e09 100644 --- a/src/workspaces/officerdev/src/apps/Plugins/PluginGrid.tsx +++ b/src/workspaces/officerdev/src/apps/Plugins/PluginGrid.tsx @@ -29,7 +29,14 @@ const Card = ({ entry, search }: { entry: Entry; search: string }) => { return (
{entry.image ? ( @@ -62,7 +69,7 @@ const Card = ({ entry, search }: { entry: Entry; search: string }) => { {!!entry.tags?.length && (
{entry.tags.map((tag) => ( - + {tag} ))} diff --git a/todo/plugin-ecosystem/marketplace-browse-by-tag.md b/todo/plugin-ecosystem/marketplace-browse-by-tag.md index a1443c57..7fb59d2d 100644 --- a/todo/plugin-ecosystem/marketplace-browse-by-tag.md +++ b/todo/plugin-ecosystem/marketplace-browse-by-tag.md @@ -12,21 +12,23 @@ order: 5 own tags in its manifest, the sync caches them, and `CatalogueEntry.tags` serves them normalised. All 21 are tagged and every tag has at least three plugins behind it. -**The UI is not started.** What the owner asked for, 2026-08-27: +**The UI landed the same day** (`d58f5881`, card styling corrected in a follow-up): tags down the left +with counts, cards in a grid on the right, detail replacing the grid with a back link that keeps `?tag=`. +Both the filter and the selection are in the URL so browser Back works. The screen also moved from +`useDashboardState` to `useAuthoredLayout`, or none of it would have reached anyone who had opened it +before. + +What is left here is what the owner has not looked at yet, and one thing he named and I have not built: + +- **"more that I want to implement here, one of them very challenging but fun"** — not described yet. +- Whether "Untagged" earns its place in the left-hand list. +- Whether the cards want to be bigger. + +Original ask, 2026-08-27, kept because it is the spec: - tags listed down the LEFT, as the filter - plugins on the right as **cards in a grid**, app-store style — not the current master/detail list - clicking a card opens the detail, with a **back button returning where you were** -Two things to settle before building: - -- **"All" has to be the default selection**, or a store that filters opens on nothing. -- **Does the detail replace the grid or sit beside it?** A back button implies replace, which changes the - screen from master-detail to list-then-page. The current screen is explicitly built the other way - (`?selected=` rather than a route, deliberately — see `docs/navigation-audit.md`), so this is a real - change rather than a tweak. - -Whatever it becomes, the filter AND the selection both belong in the URL, or Back breaks. - -**More is wanted here beyond this** — the owner has said so, including "one very challenging but fun" -thing not yet described. +Both questions it raised were answered in the building: "All" is the default, and the detail REPLACES +the grid — a grid needs the width and a detail beside one gets half of it.