From 52cf8a7b6708c18e87dd9799ec3c84298a072102 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 11 Sep 2026 20:16:37 +0000 Subject: [PATCH 1/3] Initial plan From 7ec19a824079bad43232a53ee29a5f697e95081f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 11 Sep 2026 20:19:18 +0000 Subject: [PATCH 2/3] Show app descriptions in /edit app store list Co-authored-by: MetzinAround <65838556+MetzinAround@users.noreply.github.com> --- src/components/badge-manager.tsx | 6 ++++-- src/pages/edit.astro | 11 ++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/components/badge-manager.tsx b/src/components/badge-manager.tsx index 3b96b45..5dcd043 100644 --- a/src/components/badge-manager.tsx +++ b/src/components/badge-manager.tsx @@ -57,6 +57,7 @@ type StoreApp = { title: string files: string[] iconUrl?: string + description?: string } type AutosaveState = 'saved' | 'pending' | 'saving' | 'error' @@ -172,7 +173,7 @@ async function collectDroppedFiles(dataTransfer: DataTransfer) { return (await Promise.all(entries.map((entry) => visit(entry)))).flat() } -export function BadgeManager() { +export function BadgeManager({ appDescriptions = {} }: { appDescriptions?: Record }) { const [port, setPort] = useState(null) const portRef = useRef(null) const [diskRoot, setDiskRoot] = useState(null) @@ -331,6 +332,7 @@ export function BadgeManager() { title: titleForApp(name), files: files.sort(), iconUrl: files.includes('icon.png') ? `https://raw.githubusercontent.com/badger/home/main/badge/apps/${name}/icon.png` : undefined, + description: appDescriptions[name], })) .sort((left, right) => left.title.localeCompare(right.title)) setStoreApps(loadedApps) @@ -903,7 +905,7 @@ export function BadgeManager() { const queued = pendingApps.some((item) => item.name === app.name) const installed = apps.some((item) => item.name === app.name) const needsRepair = legacyApps.includes(app.name) - return
{app.iconUrl ? :
}

{app.title}

+ return
{app.iconUrl ? :
}

{app.title}

{app.description &&

{app.description}

}
})} event.target.files && addFiles(event.target.files)} /> diff --git a/src/pages/edit.astro b/src/pages/edit.astro index 5fb4c34..8f4a4a5 100644 --- a/src/pages/edit.astro +++ b/src/pages/edit.astro @@ -2,13 +2,22 @@ import Layout from '@/layouts/Layout.astro' import { BadgeManager } from '@/components/badge-manager' import EditorTools from '@/components/editor-tools.astro' +import { getCollection } from 'astro:content' + +const apps = await getCollection('apps') +const appDescriptions = Object.fromEntries( + apps.flatMap((app) => { + const folder = app.data.fileLocation.split('/').filter(Boolean).at(-1) + return [app.slug, ...(folder ? [folder] : [])].map((key) => [key, app.data.description]) + }) +) ---
- +
From fe97279e52a4ce3248e5bcb03b3c4bbea9d64924 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 11 Sep 2026 20:20:08 +0000 Subject: [PATCH 3/3] Explain description key derivation in edit page Co-authored-by: MetzinAround <65838556+MetzinAround@users.noreply.github.com> --- src/pages/edit.astro | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/edit.astro b/src/pages/edit.astro index 8f4a4a5..57b5a5e 100644 --- a/src/pages/edit.astro +++ b/src/pages/edit.astro @@ -5,6 +5,8 @@ import EditorTools from '@/components/editor-tools.astro' import { getCollection } from 'astro:content' const apps = await getCollection('apps') +// Catalog folders from badger/home are matched by content slug and by the badge +// folder name in fileLocation (for example quest for monaquest). const appDescriptions = Object.fromEntries( apps.flatMap((app) => { const folder = app.data.fileLocation.split('/').filter(Boolean).at(-1)