senke
ade1a7d2a6
feat(presence): PresenceService and GET /users/:id/presence (P1.2)
2026-02-21 05:22:43 +01:00
senke
4a2ba9f404
feat(presence): migration 088 user_presence (P1.1)
2026-02-21 05:22:33 +01:00
senke
3ddb52e3e0
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
697dd5aa52
chore(v0.301): verify Chat Server build and P0 completion
2026-02-21 05:17:04 +01:00
senke
db117d5881
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
b4e958a1c6
chore(v0.301): create release branch
2026-02-21 05:16:36 +01:00
senke
15398e8941
docs: prepare v0.301 Phase 3 Social implementation
...
- Add V0_301_RELEASE_SCOPE.md: P0 (Chat Server fix), C1 (typing, read receipts),
P1 (presence), S1 (social enrichi)
- Update SCOPE_CONTROL.md to reference v0.301
- Update PROJECT_STATE.md and FEATURE_STATUS.md
- Update .cursorrules scope to v0.301
2026-02-21 05:13:43 +01:00
senke
bcde78461e
docs: update PROJECT_STATE post v0.203 merge
2026-02-21 05:11:36 +01:00
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