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
Michael and Claude 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
Michael and Claude 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
Michael and Claude 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
Michael and Claude 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
Michael and Claude 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
Michael and Claude 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
Michael and Claude 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
Michael and Claude Sonnet 4.6
3914f28e19
Corrige subscribe 500 et trending 500
...
- subscribe: passe undefined à createPodcastFromRss pour qu'il parse vraiment le flux RSS (bug: on passait feedData avec episodes:[] vide)
- trending/discover: retournent [] au lieu de 500 si l'API iTunes échoue
- trending: utilise l'iTunes RSS officiel (itunes.apple.com/fr/rss/toppodcasts) au lieu de l'API Marketing Tools instable
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-16 11:24:44 +02:00
Michael and Claude Sonnet 4.6
59144e9ce6
Remplace PodcastIndex par iTunes Search API (gratuit, sans clé)
...
- Réécriture complète de podcastIndexService avec l'API iTunes d'Apple
- Recherche de podcasts : itunes.apple.com/search (gratuit, pas d'auth)
- Tendances : top podcasts France via rss.applemarketingtools.com + lookup RSS URLs
- Suppression des vérifications isConfigured() dans le contrôleur
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-16 11:21:26 +02:00
Michael and Claude Sonnet 4.6
9a3171f640
Ajoute un champ RSS URL dans la page Découvrir
...
Permet d'abonner un podcast directement par son URL de flux RSS, sans passer par la recherche PodcastIndex.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-16 11:19:40 +02:00