senke
28e6642fa6
feat(social): GET /social/explore, explore tab, feed filters all/following/groups (S1.5, S1.6)
2026-02-21 05:31:12 +01:00
senke
b572863847
feat(social): feed pagination with cursor (S1.4)
2026-02-21 05:28:19 +01:00
senke
79feb220f4
feat(social): connect feed to social API, enrich with actor/track, FeedItem supports posts (S1.1-S1.3)
2026-02-21 05:26:52 +01:00
senke
5cc3d7b181
feat(presence): PresenceBadge and display (P1.3)
2026-02-21 05:22:52 +01:00
senke
3e280b66f5
feat(chat): wire typing indicators, read receipts, delivered status (C1)
...
- Add setMessageRead to chatStore, handle MessageRead in useChat
- Send MarkAsRead when receiving messages and when loading history
- Add read_at to ChatMessage, tooltip 'Vu à HH:mm' for read status
- Typing, Delivered, MessageRead already wired in useChat
2026-02-21 05:18:54 +01:00
senke
20e4278996
fix(chat): align typing WebSocket protocol with Chat Server
...
- startTyping/stopTyping now send { type: 'Typing', conversation_id, is_typing }
- Document JWT auth limitation (query param) for v0.302
2026-02-21 05:16:52 +01:00
senke
082fb9f2eb
fix(player): resolve TypeScript errors in PlayerQueue and queue API types
Frontend CI / test (push) Failing after 0s
Storybook Audit / Build & audit Storybook (push) Failing after 0s
2026-02-21 05:11:07 +01:00
senke
cc2d4fb8ba
feat(queue): add collaborative queue UI (share link, session mode, polling sync)
2026-02-20 18:45:42 +01:00
senke
afd214bba9
feat(search): add search syntax help tooltip
2026-02-20 18:38:55 +01:00
senke
830409ab84
feat(social): connect SocialViewTrending to API
2026-02-20 18:34:21 +01:00
senke
ede3546f4b
feat(release): v0.202 — Lots G, H, F, C, D
...
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
Frontend CI / test (push) Failing after 0s
Storybook Audit / Build & audit Storybook (push) Failing after 0s
- 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
2424986ebf
feat(player): add PiP button when supported (C3)
2026-02-20 17:52:46 +01:00
senke
0c811dfcfd
feat(player): add gapless playback via preload (C2)
2026-02-20 17:05:41 +01:00
senke
ca1739fe08
feat(player): implement crossfade from settings (C1)
2026-02-20 17:04:54 +01:00
senke
7caf082078
feat(seller): add GET /sell/stats and connect dashboard (F1)
2026-02-20 17:02:13 +01:00
senke
363b092f3e
feat(analytics): add creator export CSV/JSON (H4)
2026-02-20 17:00:36 +01:00
senke
d81695c27c
feat(analytics): add creator charts endpoint and UI (H2)
2026-02-20 16:59:25 +01:00
senke
ecbc2389d8
feat(analytics): add creator stats endpoint and UI (H1)
2026-02-20 16:57:58 +01:00
senke
26397bbceb
feat(search): add search history in localStorage (G5)
2026-02-20 16:56:30 +01:00
senke
72bc1a811d
feat(search): wire type facettes in SearchPage (G4)
2026-02-20 16:55:32 +01:00
senke
aeb941d41a
feat(search): add autocomplete suggestions endpoint and UI (G3)
2026-02-20 16:54:17 +01:00
senke
124f0006f1
feat(search): add relevance sort option (G2)
2026-02-20 16:50:49 +01:00
senke
b042da9575
feat(search): add musical_key filter and wire tags filter (G1)
2026-02-20 16:50:30 +01:00
senke
1977183718
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
6b80089706
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
1620819afd
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
b33c9d3cca
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
09f9dc3de6
feat(profile): add social links section on public profile (B2)
2026-02-20 15:06:20 +01:00
senke
9be0e6e14f
feat(profile): add profile banner (B1)
2026-02-20 14:56:25 +01:00
senke
d626e9c533
feat(auth): enrich sessions page with history and revoke (A4)
2026-02-20 14:52:20 +01:00
senke
6bac68b679
feat(auth): add OAuth Spotify provider (A1)
2026-02-20 14:48:08 +01:00
senke
286be8ba1d
chore(v0.102): consolidate remaining changes — docs, frontend, backend
...
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
Frontend CI / test (push) Failing after 0s
Storybook Audit / Build & audit Storybook (push) Failing after 0s
- 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
42490b539c
feat(queue): migrate QueueView drag & drop to @dnd-kit (B3)
2026-02-20 13:00:57 +01:00
senke
222fb95372
docs: add CHANGELOG v0.102 release notes; test(e2e): add queue flow tests
2026-02-20 12:57:26 +01:00
senke
274e63c883
docs: update FEATURE_STATUS.md for v0.102 — gear, live, queue, developer operational
2026-02-20 12:56:55 +01:00
senke
7b86ae7457
docs(live): document Go Live limitation (A6)
2026-02-20 12:56:29 +01:00
senke
9e1458e738
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
1b2f5333df
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
0622aa81aa
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
senke
64c92d9788
feat(developer): connect API keys to real backend (Lot C frontend)
...
- developerApi: listKeys, createKey, deleteKey
- developerService: use real API instead of localStorage
- DeveloperDashboardView: list keys, Create API Key button, revoke with confirmation
- CreateAPIKeyModal: scopes read/write/admin
- MSW handlers for GET/POST/DELETE developer/api-keys
2026-02-20 00:19:58 +01:00
senke
93361bf89f
feat(queue): sync playerStore with backend API, migrate QueueView to usePlayerStore
...
- Add useQueueSync hook: restore queue on login, sync add/remove/reorder/clear
- Extend queueApi.getQueue to return queueItemIds for backend sync
- Migrate QueueView from useAudio to usePlayerStore + usePlayer
- Add ConfirmationDialog for Clear Queue button
- Add MSW handlers for GET/PUT/POST/DELETE queue endpoints
- Wire useQueueSync in DashboardLayout
2026-02-20 00:13:33 +01:00
senke
dc81f89338
feat(live): replace mock fallback with real API
2026-02-19 23:42:20 +01:00
senke
d803d2bcfe
feat(gear): connect CRUD operations and add category filter
2026-02-19 23:41:46 +01:00
senke
ec74f82967
fix(e2e): align local E2E setup with CI or document CI-only validation
2026-02-19 19:23:17 +01:00
senke
de2af0fb58
fix(e2e): align local E2E setup with CI or document CI-only validation
2026-02-19 19:10:15 +01:00
senke
ddd0b6f5e4
chore(web): remove console.log in prod, address TODO/FIXME for v0.101
2026-02-19 19:01:42 +01:00
senke
c0bcb711df
fix(e2e): align CI Go version to 1.24 for v0.101
...
fix(web): resolve lint errors for v0.101
- eslint: add ignores (e2e, scripts, playwright-report, generated types)
- eslint: add browser globals, disable react-hooks in stories
- fix empty catch blocks (Cart, MarketplacePage, RolesPage, SettingsPage)
- fix PlayerExpanded: move useEffect before early return
- fix TrackHistory.test: rename type import to avoid no-redeclare
2026-02-19 16:27:10 +01:00
senke
4b0c266b8e
chore(docs): add v0.101 diagnostic baseline
...
- Add V0_101_DIAGNOSTIC_BASELINE.md with initial diagnostic results
- Fix eslint: remove storybook plugin dep, add dist_verification to ignores
- Fix .storybook/preview.tsx: remove unused React, use object shorthand
2026-02-19 16:08:05 +01:00
senke
07b1f71b56
fix(frontend): resolve failing tests for v0.101
...
- setup: mock HTMLCanvasElement.getContext and HTMLMediaElement.pause for JSDOM
- bitrateService: accept multiple network error message patterns
- TrackDetailPage: use Object.defineProperty for navigator.clipboard
2026-02-19 12:07:02 +01:00
senke
a53dc358e6
fix(chat): ensure WebSocket auth token from query or cookie
...
- Chat server: accept token from ?token= or access_token cookie (httpOnly)
- Frontend: append token to WS URL when available (TokenStorage)
2026-02-18 12:42:48 +01:00