Commit graph

2174 commits

Author SHA1 Message Date
senke
b02946cc75 fix(player): resolve TypeScript errors in PlayerQueue and queue API types 2026-02-21 05:11:07 +01:00
senke
95aa9682d7 docs: update FEATURE_STATUS, PROJECT_STATE, CHANGELOG for v0.203 2026-02-20 18:47:23 +01:00
senke
9987b392ad feat(queue): add collaborative queue UI (share link, session mode, polling sync) 2026-02-20 18:45:42 +01:00
senke
5c79b8fafe feat(queue): add queue session API (create, get, delete, add/remove items) 2026-02-20 18:41:12 +01:00
senke
92d25164e9 feat(queue): add queue_sessions and shared_queue_items models 2026-02-20 18:39:33 +01:00
senke
4e1fd7bd42 feat(search): add search syntax help tooltip 2026-02-20 18:38:55 +01:00
senke
d54945d84e feat(search): add boolean operators AND, OR, NOT, exact phrase 2026-02-20 18:38:34 +01:00
senke
b209a8dc96 feat(search): add phonetic/fuzzy search via pg_trgm 2026-02-20 18:36:07 +01:00
senke
6b71c6b6b8 feat(search): add pg_trgm extension for fuzzy search 2026-02-20 18:34:50 +01:00
senke
a789019b8e feat(social): connect SocialViewTrending to API 2026-02-20 18:34:21 +01:00
senke
544ffd140a feat(social): cache trending hashtags in Redis 2026-02-20 18:33:17 +01:00
senke
3ad7d39128 feat(social): add GET /social/trending endpoint 2026-02-20 18:32:16 +01:00
senke
cbd2266bc3 chore(release): create branch release/v0.203 2026-02-20 18:31:29 +01:00
senke
b5fe6e8fd1 feat(release): v0.202 — Lots G, H, F, C, D
- Lot G: Recherche avancée (musical_key, tri pertinence, autocomplete, facettes, historique)
- Lot H: Analytics créateur (stats, charts, completion rate, export CSV/JSON)
- Lot F: Seller dashboard (GET /sell/stats, liste produits)
- Lot C: Player (crossfade, gapless preload, PiP)
- Lot D2: Autoplay (GET /tracks/recommendations, section À écouter ensuite)

Backend: GetRecommendations handler, route /tracks/recommendations
Frontend: PlayerQueue recommendations, fix TS errors (GlobalPlayer, AnalyticsViewKpiGrid, etc.)
Docs: FEATURE_STATUS, PROJECT_STATE, CHANGELOG, SCOPE_CONTROL
2026-02-20 18:16:17 +01:00
senke
32b4a48c81 feat(player): add PiP button when supported (C3) 2026-02-20 17:52:46 +01:00
senke
8071fd2b16 feat(player): add gapless playback via preload (C2) 2026-02-20 17:05:41 +01:00
senke
4fcc1d4049 feat(player): implement crossfade from settings (C1) 2026-02-20 17:04:54 +01:00
senke
b8693ca07f feat(seller): connect products list to marketplace API (F2) 2026-02-20 17:02:54 +01:00
senke
ea29927d2a feat(seller): add GET /sell/stats and connect dashboard (F1) 2026-02-20 17:02:13 +01:00
senke
b887110214 feat(analytics): add creator export CSV/JSON (H4) 2026-02-20 17:00:36 +01:00
senke
d9fee2684b feat(analytics): add creator charts endpoint and UI (H2) 2026-02-20 16:59:25 +01:00
senke
9ca90e6096 feat(analytics): add creator stats endpoint and UI (H1) 2026-02-20 16:57:58 +01:00
senke
ccec85103a feat(search): add search history in localStorage (G5) 2026-02-20 16:56:30 +01:00
senke
d16b6ca43f feat(search): wire type facettes in SearchPage (G4) 2026-02-20 16:55:32 +01:00
senke
ef320888f6 feat(search): add autocomplete suggestions endpoint and UI (G3) 2026-02-20 16:54:17 +01:00
senke
7eb1e0d945 feat(search): add relevance sort option (G2) 2026-02-20 16:50:49 +01:00
senke
458e88472b feat(search): add musical_key filter and wire tags filter (G1) 2026-02-20 16:50:30 +01:00
senke
992e93cd23 chore: finalize v0.201 docs (CHANGELOG, FEATURE_STATUS, PROJECT_STATE, SCOPE_CONTROL) 2026-02-20 15:44:30 +01:00
senke
002b8f2ec2 feat(tracks): add suggested tags endpoint and UI (E4)
- Migration 085: tracks.tags TEXT[]
- Track model: Tags pq.StringArray
- GET /tracks/suggested-tags?genre=X&bpm=Y (static suggestions by genre)
- UpdateTrack: support tags
- TrackMetadataEditModal: tags chips + suggestions dropdown
- TrackDetailPageInfo: display tags
- getSuggestedTags, UpdateTrackParams.tags
- MSW: suggested-tags handler, tags in mock track
2026-02-20 15:38:51 +01:00
senke
79f552212f feat(tracks): add lyrics model and endpoints (E3)
- Migration 084: track_lyrics table
- TrackLyrics model, GetLyrics, CreateOrUpdateLyrics in TrackService
- GET /tracks/:id/lyrics, PUT /tracks/:id/lyrics (owner only)
- Frontend: TrackLyricsSection with show/hide toggle, Lyrics tab
- trackService: getLyrics, updateLyrics
- MSW: handlers for lyrics
2026-02-20 15:36:28 +01:00
senke
ce562530e4 feat(tracks): add musical_key field and edit UI (E2)
- musical_key in Track type, UpdateTrackParams
- TrackDetailPageInfo: display musical_key (Key)
- TrackMetadataEditModal: Key select with predefined values
- MSW: musical_key in mock track
2026-02-20 15:34:10 +01:00
senke
265f9fa86c feat(tracks): add BPM field to model and CRUD (E1)
- Backend: BPM and MusicalKey in Track model, UpdateTrack handler
- track_search_service: enable BPM filter (min_bpm, max_bpm)
- Frontend: Track type, UpdateTrackParams, display in TrackDetailPageInfo
- TrackMetadataEditModal: BPM input, edit flow for track creator
- MSW: bpm, musical_key in mock track, correct response envelope
2026-02-20 15:34:00 +01:00
senke
1d9f33b3a4 chore: branch release/v0.201 for Phase 2 Contenu 2026-02-20 15:29:15 +01:00
senke
425b11d50c docs: prepare v0.201 — scope, project state, SCOPE_CONTROL
- V0_201_RELEASE_SCOPE.md: Phase 2 Contenu (recherche, métadonnées, analytics)
- PROJECT_STATE.md: état actuel, prochaines étapes
- SCOPE_CONTROL.md: référence v0.201
- .cursorrules: scope v0.201
2026-02-20 15:23:12 +01:00
senke
a11f8e526a chore(v0.103): finalize release — CHANGELOG, FEATURE_STATUS, .cursorrules scope 2026-02-20 15:14:25 +01:00
senke
efd09e0c11 feat(profile): add profile privacy toggle (B3)
- Backend: is_public in Profile, UpdateProfile; strip SocialLinks for private
- Settings: ProfileVisibilityCard toggle in Privacy tab
- UserProfilePage: show 'Profil privé' when viewing private profile
2026-02-20 15:10:02 +01:00
senke
f0aa74b3a5 feat(profile): add social links section on public profile (B2) 2026-02-20 15:06:20 +01:00
senke
ef00e165e9 feat(profile): add profile banner (B1) 2026-02-20 14:56:25 +01:00
senke
813e83caab docs: document WebAuthn/Passkeys deferral to v0.104 (A3) 2026-02-20 14:52:53 +01:00
senke
99f60ebbaa feat(auth): enrich sessions page with history and revoke (A4) 2026-02-20 14:52:20 +01:00
senke
5a43cb8356 docs: document 2FA SMS deferral to v0.104 (A2) 2026-02-20 14:49:21 +01:00
senke
6a1686aad8 feat(auth): add OAuth Spotify provider (A1) 2026-02-20 14:48:08 +01:00
senke
134b8979c0 chore(v0.102): consolidate remaining changes — docs, frontend, backend
- docs: SCOPE_CONTROL, CONTRIBUTING, README, .github templates
- frontend: DeveloperDashboardView, Player components, MSW handlers, auth, reactQuerySync
- backend: playback_analytics, playlist_service, testutils, integration README

Excluded (artifacts): .auth, playwright-report, test-results, storybook_audit_detailed.json
2026-02-20 13:02:12 +01:00
senke
c20990d7df feat(queue): migrate QueueView drag & drop to @dnd-kit (B3) 2026-02-20 13:00:57 +01:00
senke
4af1008200 docs: add CHANGELOG v0.102 release notes; test(e2e): add queue flow tests 2026-02-20 12:57:26 +01:00
senke
1b5f17f1c6 docs: update FEATURE_STATUS.md for v0.102 — gear, live, queue, developer operational 2026-02-20 12:56:55 +01:00
senke
ef016a07ed docs(live): document Go Live limitation (A6) 2026-02-20 12:56:29 +01:00
senke
0cf68964a0 feat(player): Lot F - PlaybackSpeedControl, useMediaSession, waveform
- Add playbackSpeed to playerStore with setPlaybackSpeed action
- Add setPlaybackRate to AudioPlayerService
- Create PlaybackSpeedControl (0.5x–2x) and integrate in GlobalPlayer
- Create useMediaSession hook for OS controls (title, artwork, play/pause/next/prev)
- Add waveform preview in PlayerBarProgress (placeholder bars client-side)
- Update types, tests, and mocks
2026-02-20 00:40:53 +01:00
senke
118925da71 feat(social): Lot E - Like/Comment API + RoleBadge on profile
- Connect SocialViewFeedItem like to socialService.toggleLike(track.id, 'track')
- Connect SocialViewFeedItem comment to socialService.postComment (expandable form)
- Update socialService.postComment to use POST /social/comments (target_id, target_type, content)
- Add RoleBadge component and display on UserProfilePageHeader
- Fetch user roles via getUserRoles in useUserProfilePage
- Add MSW handlers for POST /social/like and POST /social/comments
2026-02-20 00:25:08 +01:00
senke
33e88c3e91 feat(playlists): Lot D - DuplicatePlaylistButton, Export, Share, Recommendations
- Add duplicatePlaylist() to playlistService (POST /playlists/:id/duplicate)
- Implement DuplicatePlaylistButton with navigation to new playlist on success
- Add DuplicatePlaylistButton and ExportPlaylistButton to PlaylistDetailPageActionsBar
- Add MSW handlers for duplicate and export endpoints
- SharePlaylistModal and PlaylistRecommendations already wired (flags enabled)
2026-02-20 00:22:42 +01:00