From 5b51057d2a52f156cf0a7af17822a0e393f501d4 Mon Sep 17 00:00:00 2001 From: "Dennis (via Claude+Gemma)" Date: Sat, 23 May 2026 06:45:30 +0200 Subject: [PATCH] feat(in-app-changelog): Changelog-Modal mit Versions-History [tsc:fail] --- .phase13-state.json | 5 +- GENERATION_LOG.md | 19 ++++ apps/web/src/components/ChangelogModal.tsx | 113 +++++++++++++++++++++ apps/web/src/components/VersionBadge.tsx | 26 +++-- 4 files changed, 152 insertions(+), 11 deletions(-) create mode 100644 apps/web/src/components/ChangelogModal.tsx diff --git a/.phase13-state.json b/.phase13-state.json index 817bd6e..25e2317 100644 --- a/.phase13-state.json +++ b/.phase13-state.json @@ -1,8 +1,9 @@ { "completed_features": [], - "current_feature": "breadcrumb-navigation", + "current_feature": "in-app-changelog", "started_at": "2026-05-23T06:42:42.473991", "attempted_features": [ - "undo-toast" + "undo-toast", + "breadcrumb-navigation" ] } \ No newline at end of file diff --git a/GENERATION_LOG.md b/GENERATION_LOG.md index 3de0813..254f3a9 100644 --- a/GENERATION_LOG.md +++ b/GENERATION_LOG.md @@ -1599,3 +1599,22 @@ src/index.ts(27,25): error TS2769: No overload matches this call. Overload 2 of 3, '(plugin: FastifyPluginAsync<{ limits: { fileSize: number; }; }, RawServerDefault, FastifyTypeProvider, FastifyBaseLogger>, opts?: FastifyRegisterOptions<...> | undefined): FastifyInstance<...> & PromiseLike<...>', gave the following error. Argument of type 'Promise' is not assignable to parameter of type 'FastifyPluginAsync<{ limits: { fileSize: number; }; }, RawServerDefault, FastifyTypeProvider, FastifyBaseLogger>'. Type 'Promise' provides no match for the signature '(instance: FastifyInstance, FastifyBaseLogger, FastifyTy +- `06:44:46` **INFO** Committed feature breadcrumb-navigation +- `06:44:46` **INFO** Pushed: rc=0 + +## Phase-3 Feature: in-app-changelog (2026-05-23 06:44:46) + +- `06:44:46` **INFO** Description: Changelog-Modal mit Versions-History +- `06:44:46` **INFO** Generating apps/web/src/components/ChangelogModal.tsx (Changelog-Modal. Inline-Array CHANGELOG = [{version, date, changes: [s…) +- `06:45:22` **INFO** wrote 3865 chars in 35.7s (attempt 1) +- `06:45:22` **INFO** Generating apps/web/src/components/VersionBadge.tsx (ERWEITERT — behalte VersionBadge. Klick öffnet jetzt , opts?: FastifyRegisterOptions<...> | undefined): FastifyInstance<...> & PromiseLike<...>', gave the following error. + Argument of type 'Promise' is not assignable to parameter of type 'FastifyPluginCallback<{ limits: { fileSize: number; }; }, RawServerDefault, FastifyTypeProvider, FastifyBaseLogger>'. + Type 'Promise' provides no match for the signature '(instance: FastifyInstance, FastifyBaseLogger, FastifyTypeProvider>, opts: { ...; }, done: (err?: Error | undefined) => void): void'. + Overload 2 of 3, '(plugin: FastifyPluginAsync<{ limits: { fileSize: number; }; }, RawServerDefault, FastifyTypeProvider, FastifyBaseLogger>, opts?: FastifyRegisterOptions<...> | undefined): FastifyInstance<...> & PromiseLike<...>', gave the following error. + Argument of type 'Promise' is not assignable to parameter of type 'FastifyPluginAsync<{ limits: { fileSize: number; }; }, RawServerDefault, FastifyTypeProvider, FastifyBaseLogger>'. + Type 'Promise' provides no match for the signature '(instance: FastifyInstance, FastifyBaseLogger, FastifyTy diff --git a/apps/web/src/components/ChangelogModal.tsx b/apps/web/src/components/ChangelogModal.tsx new file mode 100644 index 0000000..e2c6a4f --- /dev/null +++ b/apps/web/src/components/ChangelogModal.tsx @@ -0,0 +1,113 @@ +import React from 'react'; + +interface ChangelogEntry { + version: string; + date: string; + changes: string[]; +} + +const CHANGELOG: ChangelogEntry[] = [ + { + version: '0.0.5', + date: '2024-05-20', + changes: [ + 'Optimized database queries for project loading', + 'Fixed z-index issues in the navigation bar', + 'Added keyboard shortcuts for quick search', + ], + }, + { + version: '0.0.4', + date: '2024-05-10', + changes: [ + 'Implemented real-time collaboration via WebSockets', + 'Added support for Markdown in project descriptions', + 'Improved error handling for API timeouts', + ], + }, + { + version: '0.0.3', + date: '2024-04-25', + changes: [ + 'Integrated TanStack Router for type-safe navigation', + 'Added dark mode support via Tailwind CSS', + 'Refactored shared types in @emberclone/shared', + ], + }, + { + version: '0.0.2', + date: '2024-04-12', + changes: [ + 'Added Projects module for organizing tasks', + 'Implemented Drizzle ORM schema migrations', + 'Added user authentication flow', + ], + }, + { + version: '0.0.1', + date: '2024-04-01', + changes: [ + 'Initial release of EmberClone', + 'Basic Fastify backend setup', + 'Core React application structure', + ], + }, +]; + +interface ChangelogModalProps { + open: boolean; + onClose: () => void; +} + +export default function ChangelogModal({ open, onClose }: ChangelogModalProps) { + if (!open) return null; + + return ( +
+
+
+

Changelog

+ +
+ +
+ {CHANGELOG.map((entry) => ( +
+
+ +
+ v{entry.version} + {entry.date} +
+ +
    + {entry.changes.map((change, idx) => ( +
  • + + {change} +
  • + ))} +
+
+ ))} +
+ +
+ +
+
+
+ ); +} \ No newline at end of file diff --git a/apps/web/src/components/VersionBadge.tsx b/apps/web/src/components/VersionBadge.tsx index 5980532..ac42a36 100644 --- a/apps/web/src/components/VersionBadge.tsx +++ b/apps/web/src/components/VersionBadge.tsx @@ -1,4 +1,5 @@ -import React from 'react'; +import React, { useState } from 'react'; +import { ChangelogModal } from './ChangelogModal'; interface VersionBadgeProps { repoUrl?: string; @@ -7,16 +8,23 @@ interface VersionBadgeProps { export const VersionBadge: React.FC = ({ repoUrl = 'https://github.com/emberclone/emberclone' }) => { + const [isOpen, setIsOpen] = useState(false); const version = import.meta.env.VITE_APP_VERSION || '0.0.1'; return ( - - v{version} - + <> + + + setIsOpen(false)} + repoUrl={repoUrl} + /> + ); }; \ No newline at end of file