Commit Graph
67 Commits
Author SHA1 Message Date
Michael f68989c228 feat: implement AudioPlayer component with playback controls, progress tracking, and persistence 2026-04-16 16:11:39 +02:00
Michael ad78a34cb4 feat: implement AudioPlayer component with playback controls, progress tracking, and persistence 2026-04-16 16:05:23 +02:00
Michael d8cb830570 feat: implement Library page with subscription management and synchronization features 2026-04-16 16:04:39 +02:00
Michael a670a4fe5d feat: add trending podcasts discovery page with genre filtering and subscription support 2026-04-16 15:46:35 +02:00
Michael ea4fdb38d5 feat: implement AddPodcast page with RSS subscription and discovery search functionality 2026-04-16 15:45:20 +02:00
Michael acd9a1a2c5 feat: initialize global styles with theme variables, Tailwind configuration, and custom UI components 2026-04-16 15:39:32 +02:00
Michael 030ddfba81 feat: implement AudioPlayer component with playback controls, progress tracking, and persistent settings 2026-04-16 15:34:34 +02:00
Michael 17f2496dda feat: implement global audio player with playback controls, progress tracking, and persistent settings 2026-04-16 15:34:09 +02:00
Michael c9127c70c1 feat: implement trending podcasts discovery page with genre filtering and subscription capabilities 2026-04-16 15:27:00 +02:00
Michael 67d45b72ee feat: initialize global styles with theme-aware CSS variables and utility components 2026-04-16 15:20:29 +02:00
Michael 3bb2dfc009 feat: implement authentication routing, episode details slide-over, and success notification modal 2026-04-16 15:15:28 +02:00
Michael 90ee8df9df feat: implement authenticated user dashboard with episode listing and pagination 2026-04-16 15:04:57 +02:00
Michael e01b661aa2 feat: implement podcastIndexService using iTunes API for search and trending podcasts 2026-04-16 15:03:10 +02:00
Michael a993e2d658 feat: implement podcast discovery and management controllers and services 2026-04-16 14:57:49 +02:00
Michael 7923f4cf09 feat: initialize backend project with dependencies and build scripts 2026-04-16 14:50:12 +02:00
Michael aa54304bf3 feat: implement backend episode management and progress tracking controllers and routes 2026-04-16 14:48:32 +02:00
MichaelandClaude Haiku 4.5 686c4d9007 feat: use episode-specific images instead of podcast images
EpisodeCard and AudioPlayer now display episode.imageUrl when available,
falling back to the podcast image only if the episode has none.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-16 14:29:45 +02:00
MichaelandClaude Sonnet 4.6 b73f06c2b2 Refonte thème + fixes lecteur + suppression faux stats
AudioPlayer:
- Supprime section vitesse de lecture
- -30s/+30s (compact et expanded), avec icônes RotateCcw/RotateCw
- Rewind compact passé de -15s à -30s

Thème:
- globals.css refait : animations slide-up/fade-in/reveal définies, glass card améliorée
- Background plus profond (#080d1a), glow/blur plus soignés
- Boutons neon-button avec hover translateY

Corrections:
- Supprime Settings2 (bouton sans action) dans Library
- Supprime stat "2.4k mins listened" inventée dans Navigation
- Stats Library passent de 3 à 2 colonnes (réelles uniquement)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 14:26:19 +02:00
MichaelandClaude Sonnet 4.6 d3b356ce26 Corrige ReferenceError: handleConfirmUnsubscribe is not defined
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 14:20:42 +02:00
MichaelandClaude Sonnet 4.6 177917c06e Résout tous les conflits de merge
- podcastController: createPodcastFromRss sans feedData (parse le RSS réel)
- Discover.tsx: stub vide (remplacé par /trending et /add)
- App.tsx + Navigation.tsx: conflits déjà résolus

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 14:19:55 +02:00
Michael ad1c65b1f5 feat: implement rssParserService to handle feed parsing, episode extraction, and podcast synchronization 2026-04-16 14:16:45 +02:00
Michael 1e3caea1ab feat: implement rssParserService to handle feed parsing, episode extraction, and database synchronization 2026-04-16 14:16:35 +02:00
Michael 0d9bffbc46 feat: implement rssParserService to handle feed parsing, episode extraction, and database synchronization 2026-04-16 14:15:18 +02:00
Michael 6e9da01488 feat: initialize frontend entry point with HTML boilerplate and custom fonts 2026-04-16 14:09:14 +02:00
Michael f441251bb1 feat: implement library page with subscription management and optimistic updates 2026-04-16 13:58:24 +02:00
Michael 1028774a65 feat: implement podcast controller with subscription, search, and sync functionality 2026-04-16 13:56:48 +02:00
Michael e075434dd7 feat: implement RSS parsing service and podcast controller for feed ingestion and episode synchronization 2026-04-16 13:55:18 +02:00
Michael ba376930b0 feat: implement RSS feed parsing service and add library page UI for podcast management 2026-04-16 13:50:10 +02:00
Michael 277d966e50 feat: implement AddPodcast and Trending pages for podcast discovery and subscription management 2026-04-16 13:46:29 +02:00
Michael aaf7b82985 feat: implement trending podcasts page and RSS parsing service for feed data extraction 2026-04-16 13:44:05 +02:00
Michael 2fbbf70ee0 feat: add Library page to display and manage user podcast subscriptions 2026-04-16 13:34:27 +02:00
Michael cdc0a4671c feat: implement podcast controller for subscription management, search, and discovery functionality 2026-04-16 13:32:26 +02:00
Michael d81b3a6516 feat: implement podcast subscription management, library page, and associated service methods 2026-04-16 13:28:23 +02:00
Michael 8156b7b228 feat: implement AudioPlayer component with playback controls, speed adjustment, and progress tracking 2026-04-16 13:23:45 +02:00
Michael b2d0af639f feat: implement audio player component with progress tracking and add library page for managing subscriptions 2026-04-16 13:13:12 +02:00
Michael 872ef5c31a feat: implement backend podcast subscription controllers and frontend library page with optimistic updates 2026-04-16 13:07:46 +02:00
Michael 38521c45dc feat: add AddPodcast and Trending pages for podcast discovery and subscription management 2026-04-16 13:01:53 +02:00
Michael f50d1072a9 feat: add Library page to manage and unsubscribe from podcast subscriptions 2026-04-16 13:00:10 +02:00
Michael 2b971f97b3 feat: implement main navigation component and integrate protected routing in App structure 2026-04-16 12:57:37 +02:00
Michael b06298d80e chore: upgrade MongoDB to v8 and implement health checks for database services with conditional startup dependencies 2026-04-16 12:51:14 +02:00
Michael 34db9e2542 feat: implement podcast controller for subscription management, discovery, and search functionality 2026-04-16 12:46:22 +02:00
Michael 7e3b43fb5c chore: update mongodb version, rename network, and parameterize app port in docker-compose 2026-04-16 12:42:49 +02:00
Michael 57da7ad50b refactor: rename app service to podcastic and remove explicit image tag in docker-compose.yml 2026-04-16 12:42:15 +02:00
Michael 2c2d7501e6 feat: add Discover page component and define image tag in docker-compose 2026-04-16 12:39:33 +02:00
Michael f356b82258 Please provide the changes or the files you would like me to summarize. 2026-04-16 12:37:22 +02:00
Michael 2d5e90a441 feat: add Trending and AddPodcast pages for podcast discovery and subscription management 2026-04-16 12:35:52 +02:00
Michael f48789dfde feat: implement application routing with protected routes and sidebar navigation component 2026-04-16 12:27:58 +02:00
MichaelandClaude Sonnet 4.6 a8cef14226 Rend l'abonnement idempotent (409 → 200)
Abonner deux fois au même podcast retourne 200 au lieu de 409.
Tous les messages d'erreur traduits en français.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:40:22 +02:00
MichaelandClaude Sonnet 4.6 eb6821ca76 Corrige TypeError dans subscribeFromDiscovery
result.podcast est un plain object (toJSON()), appeler .toJSON() dessus crashe.
Fix: refetch le podcast depuis MongoDB après création pour avoir un vrai Document Mongoose.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:29:55 +02:00
MichaelandClaude Sonnet 4.6 84c5cd6363 Migre eslint v8 → v9 (flat config), supprime les dépréciations
- eslint 8 → 9, @typescript-eslint/* → typescript-eslint (package unifié)
- Remplace .eslintrc.json par eslint.config.mjs (backend) et eslint.config.js (frontend)
- Ajoute eslint-plugin-react, eslint-plugin-react-hooks, globals (frontend)
- Supprime rimraf@3, @humanwhocodes/* qui étaient des deps transitives d'eslint v8

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:27:46 +02:00