senke
e64968e761
feat(player): integrate HLS streaming with ABR quality switching
...
- Connect useHLSPlayer hook to useAudioPlayerLifecycle for automatic
HLS activation when feature flag and browser support are available
- Wire quality selector to HLS level switching via hlsPlayer.setQuality
- Expose isHLSActive and hlsLevels from lifecycle hook for UI components
- Create MSW handlers for HLS endpoints (info, status, master/quality
playlists) for Storybook and testing
- Enable VITE_FEATURE_HLS_STREAMING in .env.storybook
2026-02-22 21:24:40 +01:00
senke
1fb80d6c2f
feat(chat): Sprint 4 -- Docker cleanup, frontend migration to Go WS
...
- Remove Rust chat-server from docker-compose.yml, staging.yml, prod.yml
- Remove VITE_WS_URL from docker frontend env vars (auto-derived from API_URL)
- Update env.ts: derive WS_URL from API_URL (/api/v1/ws) when not explicitly set
- Remove 127.0.0.1:8081 dev hack from useChat.ts
- Add missing types: EditMessage, DeleteMessage, FetchHistory, SearchMessages,
SyncMessages, MessageEdited, MessageDeleted, SearchResults, SyncChunk
- Update MSW chat/token handler to return ws_url: /api/v1/ws
- Update .env.example and .env.storybook
2026-02-22 20:46:58 +01:00
senke
43309327e6
feat(v0.501): Sprint 5 -- integration, tests, and cleanup
...
- INT-01: Add E2E streaming tests (upload -> HLS auth)
- INT-02: Add E2E cloud tests (CRUD auth, public gear)
- INT-03: Split track/handler.go into 4 focused sub-handlers
- INT-04: Create migration squash script + MIGRATIONS.md
- INT-05: Add Trivy container image scanning CI workflow
- INT-06: Replace production console.log with structured logger
2026-02-22 18:40:07 +01:00
senke
edde637c8e
feat(v0.501): Sprint 4 -- Cloud frontend + Gear advanced
...
- C1-09: Create CloudPage with folder tree, file list, and /cloud route
- C1-10: Create CloudUploadModal with drag-and-drop and progress
- C1-11: Create CloudFilePreview mini player inline
- C1-12: Add Cloud stories (loading, empty, populated, quota full)
- G1-01: Add is_public toggle, public gear endpoint, GearShowcase
- G1-02: Add gear image upload endpoints, GearImageGallery component
- G1-03: Add gear search with ILIKE + SearchBar in toolbar
- G1-04: Add stories for GearShowcase and GearImageGallery
2026-02-22 18:30:49 +01:00
senke
ec4564fb37
feat(v0.501): Sprint 3 -- Cloud Storage MVP backend
...
- C1-01: Create CloudService with CRUD folders/files, quota, ownership
- C1-02: Create CloudHandler with 11 REST endpoints
- C1-03: Register cloud routes in Go router
- C1-04: Implement file streaming with HTTP Range support
- C1-05: Add publish cloud file as track endpoint
- C1-06: Add MSW mock handlers for cloud API
- C1-07: Auto-init 5GB storage quota on user registration
- C1-08: Add 12 unit tests for CloudService
2026-02-22 18:23:58 +01:00
senke
73533bea77
feat(v0.501): Sprint 2 -- HLS production-ready
...
- S1-01: Add multi-bitrate streaming profiles (128k, 256k, 320k)
- S1-02: Update master.m3u8 endpoint with 3-tier quality system
- S1-03: Integrate hls.js with ABR + useHLSPlayer hook
- S1-04: Add Cache-Control headers on HLS segments and manifests
- S1-05: Create WaveformService with async generation (FFmpeg + audiowaveform)
- S1-06: Add GET /tracks/:id/waveform endpoint with Redis cache
- S1-07: Create WaveformDisplay component with story
- S1-08: Add 4 Prometheus metrics for streaming monitoring
2026-02-22 18:16:37 +01:00
senke
fc318d5aa0
chore: unify TypeScript version to 5.9.3 across all packages
...
CLN-06: apps/web, root, veza-docs, and fixtures package.json files
now pin TypeScript to exact version 5.9.3.
2026-02-22 17:45:07 +01:00
senke
8efd398239
refactor(frontend): eliminate ~45 'any' types in production code
...
CLN-04: Replaced any with unknown, proper interfaces, or concrete
types across 17 files. Focus: error handlers, API responses,
WebSocket data, and function parameters.
2026-02-22 17:44:49 +01:00
senke
8e9431fe93
feat(commerce): replace mock purchases with real API calls
...
CLN-02: getPurchases() now calls GET /marketplace/orders;
requestRefund() calls POST /marketplace/orders/:id/refund.
Removed MOCK_PURCHASES constant. MSW handler updated.
2026-02-22 17:44:29 +01:00
senke
5e4291ecba
feat(auth): add ephemeral stream-token endpoint for HLS and WebSocket authentication
...
SEC-03: TokenStorage.getAccessToken() returns null with httpOnly cookies.
New POST /api/v1/auth/stream-token returns a 5-min JWT compatible with
both stream server (Claims struct) and chat server (JwtClaims struct).
Frontend hlsService and websocket updated to use fetchStreamToken() fallback.
2026-02-22 17:28:00 +01:00
senke
40c31b8c3d
feat(marketplace): wire RefundRequestModal to API, add refund button to SellerDashboard (v0.403 R2)
...
- RefundRequestModal: call marketplaceService.refundOrder, loading state, onSuccess callback
- PurchasesView: pass loadPurchases as onSuccess to refetch after refund
- SellerDashboardView: add Refund button on each sale, RefundRequestModal with fetchData onSuccess
- MSW: add POST /marketplace/orders/:id/refund handler
2026-02-22 16:19:31 +01:00
senke
9f4c84c025
feat(marketplace): add invoice download link to PurchasesView and LicensesView
2026-02-22 16:15:55 +01:00
senke
e6797481cf
feat(marketplace): add review API to frontend
2026-02-22 16:09:04 +01:00
senke
89a09c2b35
feat(checkout): integrate Hyperswitch payment form in Cart
2026-02-22 14:46:06 +01:00
senke
508e082bcc
feat(checkout): add CheckoutSuccessView, CheckoutErrorView and getOrder
2026-02-22 14:42:15 +01:00
senke
fa4d141572
test(marketplace): add MSW handlers, update CHANGELOG and docs for v0.401
2026-02-22 14:23:28 +01:00
senke
0adc212719
feat(seller): add GET /sell/stats/evolution, top-products, sales, SalesEvolutionChart, real commerceService
2026-02-22 14:21:21 +01:00
senke
c418e677d2
feat(marketplace): add getMyLicenses, enrich LicenceCard/LicenceDetailsModal, LicensesView
2026-02-22 14:18:05 +01:00
senke
31a27e4724
feat(marketplace): add playable preview and image gallery to ProductDetailView
2026-02-22 14:14:38 +01:00
senke
a8549add70
feat(marketplace): add rich text description with sanitization
2026-02-22 14:14:27 +01:00
senke
7ee70925e8
feat(marketplace): add BPM, key, category filters to MarketplaceHome
2026-02-22 14:14:20 +01:00
senke
3d7cc141fe
feat(marketplace): connect CreateProductView to enriched product API
2026-02-22 14:10:26 +01:00
senke
13d9e96001
feat(marketplace): add bpm, musical_key, category to marketplaceService listProducts
2026-02-22 14:08:59 +01:00
senke
f48a910d5d
feat(chat): add call signaling types
2026-02-22 03:46:10 +01:00
senke
49bb633fc6
feat(presence): P2.1 rich presence, P2.2 invisible mode
...
Backend:
- UserPresence: track_id, track_title, invisible
- UpdatePresenceFull, GetPresenceForViewer (invisible hides for others)
- PUT /users/me/presence
- Migration 094 rich presence columns
Frontend:
- presenceService.updatePresence
- usePresenceSync: sync currentTrack to presence
- PresenceBadge: statusMessage tooltip
- PresenceInvisibleToggle in PrivacySettings
- MSW: PUT /users/me/presence
2026-02-21 16:47:09 +01:00
senke
0c8cd43303
feat(notifications): N1 Web Push subscribe, preferences, badge
...
- notificationService: subscribePush, getPreferences, updatePreferences
- PushPreferencesSection: API-connected toggles, subscribe button
- usePushSubscribe: permission, pushManager.subscribe, POST to API
- NotificationMenu: document.title badge (N1.4)
- sw.js: payload compat (link/url)
- MSW: push/subscribe, preferences handlers
2026-02-21 16:43:48 +01:00
senke
d2a55b405e
feat(groups): S2 frontend - request join, invite, roles, my groups, MSW handlers
2026-02-21 05:51:29 +01:00
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