diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 4f0f23d..2401a18 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -12,6 +12,13 @@ All UI is DARK-ONLY. Remove/ignore any light mode patterns. Maintain a utilitari 7. Honest UI: If data is missing, show placeholder monospace text (e.g. `--` or `/path/not/found`). 8. Component Modularity: Always componentize reusable UI patterns. Never inline complex markup or styles. If a component doesn't exist, create it first, then use it. Keep everything modular and DRY (Don't Repeat Yourself). +## App Content + +- Every app must have a one-sentence description that states what it does. +- Add the description to the app content frontmatter when the app has a local entry in `src/content/apps/`. +- Add the app folder name and description to `src/content/app-descriptions.ts` when the app comes from the external `badger/home` catalog. +- Keep external catalog keys aligned with the folder names used under `badge/apps/`. + ## Color Tokens (Dark Only) ``` background: #010409 diff --git a/src/content/app-descriptions.ts b/src/content/app-descriptions.ts new file mode 100644 index 0000000..f544093 --- /dev/null +++ b/src/content/app-descriptions.ts @@ -0,0 +1,20 @@ +export const appDescriptions: Record = { + '30_minutes_to_alpha_centauri': 'Pilot your ship through space to deliver your cargo.', + bee_amazed: 'Navigate your bee through the maze.', + clock: 'Clock with multiple styles, time zones, and more.', + demos: 'Collection of graphics for your badge. Shapes, text, sprites, and more.', + extend_a_squirrel: 'Snake-style game with a squirrel.', + ghost_signal: 'Follow the wave pattern as accurately as you can.', + hydrate: 'Have you had enough water today? Track it with this app!', + input_test: 'Hardware testing for badge inputs.', + iss_tracker: "Track the International Space Station's location in this app.", + life: "Conway's classic 'Game of Life' now on your badge.", + mass_storage: 'Use your badge as a USB storage device.', + plucky_cluck: 'Guide your chicken through obstacles in this Flappy Bird-style game.', + rogue: 'Turn-based dungeon crawler for your badge.', + sense: 'Sensor dashboard to display temp, humidity, pressure, light, and motion.', + sketchy_sketch: 'Draw on your badge with this app!', + snarky_sciuridae: 'A virtual pet for your badge.', + tennis: 'Battle back and forth in this Pong-style game.', + tomato: 'Pomodoro timer to help you focus.' +} diff --git a/src/pages/edit.astro b/src/pages/edit.astro index 57b5a5e..472c564 100644 --- a/src/pages/edit.astro +++ b/src/pages/edit.astro @@ -3,6 +3,7 @@ import Layout from '@/layouts/Layout.astro' import { BadgeManager } from '@/components/badge-manager' import EditorTools from '@/components/editor-tools.astro' import { getCollection } from 'astro:content' +import { appDescriptions as catalogDescriptions } from '@/content/app-descriptions' const apps = await getCollection('apps') // Catalog folders from badger/home are matched by content slug and by the badge @@ -13,6 +14,7 @@ const appDescriptions = Object.fromEntries( return [app.slug, ...(folder ? [folder] : [])].map((key) => [key, app.data.description]) }) ) +Object.assign(appDescriptions, catalogDescriptions) ---