Commit graph

1889 commits

Author SHA1 Message Date
senke
da3bad1b0e fix(security): add ownership check to GetUploadStatus handler (IDOR fix)
SEC-06: GetUploadStatus now verifies that the authenticated user owns the
upload before returning status. Returns 404 for non-owners to prevent
information disclosure.
2026-02-22 17:30:30 +01:00
senke
c6db1da25e fix(infra): add JWT_SECRET to stream-server in production compose
SEC-05: stream-server was missing JWT_SECRET while chat-server had it.
Both services need the shared secret to validate tokens.
2026-02-22 17:28:37 +01:00
senke
b84baf1823 fix(infra): remove docker-compose.hybrid.yml (network_mode host + default credentials)
SEC-04: File used network_mode: host on all services and had default
Grafana password 'admin'. Removed entirely; if needed in the future,
recreate without host networking.
2026-02-22 17:28:17 +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
3ad4699e80 fix(infra): add Redis authentication in production compose 2026-02-22 17:24:12 +01:00
senke
eb82e02c83 fix(ci): repair CD pipeline -- use vars.* instead of secrets.* in if conditions, target Dockerfile.production 2026-02-22 17:23:43 +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
bab3f38c4a feat(marketplace): add license revoked_at migration 2026-02-22 16:18:01 +01:00
senke
51373b653f feat(hyperswitch): add CreateRefund to client 2026-02-22 16:17:54 +01:00
senke
9f4c84c025 feat(marketplace): add invoice download link to PurchasesView and LicensesView 2026-02-22 16:15:55 +01:00
senke
166acc6069 chore(backend): add PDF library for invoices
feat(marketplace): add invoice generation service and download endpoint
2026-02-22 16:11:42 +01:00
senke
e6797481cf feat(marketplace): add review API to frontend 2026-02-22 16:09:04 +01:00
senke
c6611c3d8f feat(marketplace): add avg_rating and review_count to Product 2026-02-22 16:07:06 +01:00
senke
85daf595a8 feat(marketplace): add create and list reviews endpoints 2026-02-22 16:06:18 +01:00
senke
d6d49dbfc3 feat(marketplace): add ProductReview model and service 2026-02-22 16:05:16 +01:00
senke
4ac1bf7c25 feat(marketplace): add product_reviews migration 2026-02-22 16:04:14 +01:00
senke
7534c1d50e docs: prepare v0.403 implementation (scope, plan, SCOPE_CONTROL)
- Add V0_403_RELEASE_SCOPE.md: P3 Payout, R1 Reviews, F1 Factures, R2 Remboursements
- Add PLAN_V0_403_IMPLEMENTATION.md: phases détaillées, commits suggérés
- Update SCOPE_CONTROL: reference v0.403, v0.402 taguée
- Update FEATURE_STATUS: section Prévu en v0.403
- Update PROJECT_STATE: prochaines étapes v0.403
2026-02-22 16:01:03 +01:00
senke
89a09c2b35 feat(checkout): integrate Hyperswitch payment form in Cart 2026-02-22 14:46:06 +01:00
senke
5ac4c3988a fix(checkout): handle cancelled status in Hyperswitch webhook 2026-02-22 14:42:57 +01:00
senke
9cd56a05a6 docs: update PAYMENTS_SETUP for checkout complete URL 2026-02-22 14:42:44 +01:00
senke
508e082bcc feat(checkout): add CheckoutSuccessView, CheckoutErrorView and getOrder 2026-02-22 14:42:15 +01:00
senke
5233a5b7f2 feat(checkout): add order_id to Hyperswitch return URL 2026-02-22 14:40:13 +01:00
senke
c8400789d5 docs: update SCOPE_CONTROL for v0.402 2026-02-22 14:26:28 +01:00
senke
464a23e545 docs: add V0_402_RELEASE_SCOPE and PLAN_V0_402_IMPLEMENTATION 2026-02-22 14:26:19 +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
1fef428ce0 feat(marketplace): add migration 098 product_licenses, ProductLicense model, GET /licenses/mine 2026-02-22 14:16:24 +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
d292270d4e feat(marketplace): add bpm, musical_key, category filters to ListProducts 2026-02-22 14:08:41 +01:00
senke
aec22b596c feat(marketplace): add product images management endpoint 2026-02-22 14:08:13 +01:00
senke
c6f094a3d5 feat(marketplace): add POST /products/:id/preview for audio preview upload 2026-02-22 14:07:30 +01:00
senke
f6c02afbf8 feat(marketplace): accept bpm, musical_key, category in CreateProduct and UpdateProduct 2026-02-22 14:06:20 +01:00
senke
8de3dcdc27 feat(marketplace): add ProductPreview, ProductImage models and Product enrichment fields 2026-02-22 14:05:37 +01:00
senke
e8ad5b5f4b feat(marketplace): add migrations 095-097 for products enrichment, previews, images 2026-02-22 14:05:19 +01:00
senke
0110bf27ca docs(scope): update SCOPE_CONTROL for v0.401
- Référence active V0_401_RELEASE_SCOPE
- Règle d'or, checklist, historique versions alignés
2026-02-22 14:02:31 +01:00
senke
0b9f5609ab docs(v0.401): add V0_401_RELEASE_SCOPE and PLAN_V0_401_IMPLEMENTATION
- V0_401_RELEASE_SCOPE: Phase 4 Commerce (M1 produits, M2 licences, M3 seller)
- PLAN_V0_401_IMPLEMENTATION: phases 0-4, diagramme Mermaid, commits suggérés
2026-02-22 14:02:24 +01:00
senke
8644ed6d5e chore(docs): remove V0_302_IMPLEMENTATION, update V0_302_RELEASE_SCOPE 2026-02-22 03:46:50 +01:00
senke
f48a910d5d feat(chat): add call signaling types 2026-02-22 03:46:10 +01:00
senke
2c0614fa3a feat(chat-server): add C2.1 WebRTC call signaling (CallOffer, CallAnswer, ICECandidate, CallHangup, CallReject) 2026-02-22 03:42:47 +01:00
senke
ea730665bb docs(scope): update SCOPE_CONTROL for v0.303 2026-02-22 03:38:49 +01:00
senke
4c81233983 docs(v0.303): add full V0_303_RELEASE_SCOPE with C2 detail 2026-02-22 03:38:43 +01:00
senke
c910680b96 docs: prepare v0.302 documentation - scope, implementation guide, SCOPE_CONTROL 2026-02-22 03:35:45 +01:00
senke
2309e3432a docs: add V0_303_RELEASE_SCOPE placeholder for transition 2026-02-22 03:28:59 +01:00
senke
98894be01b docs: update FEATURE_STATUS, PROJECT_STATE, CHANGELOG for v0.302 2026-02-22 03:24:01 +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