From c9b122076a53db6213d073c9f6eb4bf351a87a55 Mon Sep 17 00:00:00 2001 From: Till JS Date: Mon, 27 Apr 2026 00:01:06 +0200 Subject: [PATCH] feat(feedback): public feed types + ReactionBar + service split MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @mana/feedback wird zur Pflege-SSOT fΓΌr Public-Community-Hub. - PublicFeedbackItem-Typ: anonymisiertes Item, das nur display_name + reactions + status fΓΌhrt β€” kein userId, displayHash, deviceInfo. - ReactionEmoji ('πŸ‘' '❀️' 'πŸš€' 'πŸ€”' 'πŸŽ‰') + REACTION_LABELS mit DE-Labels. - CreateFeedbackInput erweitert um moduleContext + parentId. Reactions + score auf Feedback-Type optional gemacht. - Service-Split: createFeedbackService β€” auth-required Submit/React/Manage, getPublicFeed (auth-enriched mit myReactions) createPublicFeedbackService β€” anonymous, SSR-only, getFeed/getItem. toggleReaction(emoji) statt vote/unvote (legacy-Shims bleiben fΓΌr back-compat zu vote β†’ 'πŸ‘'-Toggle). - ReactionBar.svelte: Slack-Style emoji-row mit Active-Highlighting fΓΌr myReactions, ReadOnly-Mode fΓΌr Public-SSR. Auto-disabled-Tooltip. - index.ts re-exportiert die neuen Typen + ReactionBar; FeedbackVote rausgeschmissen (durch FeedbackReactions im Server-Schema ersetzt). FeedbackCard + FeedbackPage minimal angepasst, damit svelte-check clean bleibt β€” die Legacy-Komponenten bleiben funktional, werden aber in Phase 3 zu @mana/feedback's neuen Modul-Views ausgemistet. Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/feedback/src/FeedbackCard.svelte | 4 +- packages/feedback/src/FeedbackPage.svelte | 6 +- packages/feedback/src/ReactionBar.svelte | 147 +++++++++++++ packages/feedback/src/api.ts | 53 ++++- .../feedback/src/createFeedbackService.ts | 195 +++++++++++------- .../src/createPublicFeedbackService.ts | 48 +++++ packages/feedback/src/feedback.ts | 60 +++++- packages/feedback/src/index.ts | 28 ++- packages/feedback/src/types.ts | 27 ++- 9 files changed, 460 insertions(+), 108 deletions(-) create mode 100644 packages/feedback/src/ReactionBar.svelte create mode 100644 packages/feedback/src/createPublicFeedbackService.ts diff --git a/packages/feedback/src/FeedbackCard.svelte b/packages/feedback/src/FeedbackCard.svelte index 1fae6faf6..ee3d75c78 100644 --- a/packages/feedback/src/FeedbackCard.svelte +++ b/packages/feedback/src/FeedbackCard.svelte @@ -20,7 +20,7 @@ }: Props = $props(); function handleVote() { - onVote(feedback.id, feedback.userHasVoted); + onVote(feedback.id, feedback.userHasVoted ?? false); } function formatDate(dateString: string): string { @@ -37,7 +37,7 @@