From ec0d9afefa79d5dd56b68a02b49b07859f3ab0b8 Mon Sep 17 00:00:00 2001 From: Lalit Shrotriya Date: Sun, 7 Jun 2026 10:36:36 +0000 Subject: [PATCH 1/3] feat(event-meta): add description field to EventMeta MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds an optional description/note field to event definitions so teams can document what each event means directly in the OpenPanel UI — a lightweight alternative to a separate wiki. Changes: - Prisma schema: `description String?` on EventMeta model - Migration: ALTER TABLE event_meta ADD COLUMN description TEXT - tRPC router: accept and persist description in updateEventMeta - Edit-event modal: textarea to set/edit the description Co-Authored-By: Claude Sonnet 4.6 --- apps/start/src/modals/edit-event.tsx | 15 +++++++++++++++ .../migration.sql | 2 ++ packages/db/prisma/schema.prisma | 13 +++++++------ packages/trpc/src/routers/event.ts | 7 ++++--- 4 files changed, 28 insertions(+), 9 deletions(-) mode change 100644 => 100755 apps/start/src/modals/edit-event.tsx create mode 100644 packages/db/prisma/migrations/20260607120000_add_event_meta_description/migration.sql mode change 100644 => 100755 packages/db/prisma/schema.prisma mode change 100644 => 100755 packages/trpc/src/routers/event.ts diff --git a/apps/start/src/modals/edit-event.tsx b/apps/start/src/modals/edit-event.tsx old mode 100644 new mode 100755 index be2a4d82f..d9ec54af6 --- a/apps/start/src/modals/edit-event.tsx +++ b/apps/start/src/modals/edit-event.tsx @@ -7,6 +7,7 @@ import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Checkbox } from '@/components/ui/checkbox'; import { Label } from '@/components/ui/label'; +import { Textarea } from '@/components/ui/textarea'; import { useAppParams } from '@/hooks/use-app-params'; import { useTRPC } from '@/integrations/trpc/react'; import { cn } from '@/utils/cn'; @@ -37,6 +38,7 @@ export default function EditEvent({ id }: Props) { const [selectedIcon, setIcon] = useState(null); const [selectedColor, setColor] = useState(EventIconRecords.default!.color); const [conversion, setConversion] = useState(false); + const [description, setDescription] = useState(''); const [step, setStep] = useState<'icon' | 'color'>('icon'); useEffect(() => { if (event?.meta?.icon) { @@ -48,6 +50,9 @@ export default function EditEvent({ id }: Props) { if (event?.meta?.conversion) { setConversion(event.meta.conversion); } + if (event?.meta?.description) { + setDescription(event.meta.description); + } }, [event]); const SelectedIcon = selectedIcon ? EventIconMapper[selectedIcon] : null; @@ -87,6 +92,15 @@ export default function EditEvent({ id }: Props) { +
+ +