Commit graph

1983 commits

Author SHA1 Message Date
senke
c785e61e69 feat(v0.701): AdminTransfers page/route, MSW, stories, Deep Health, API ref, docs, scope v0.702
Some checks failed
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
- Step 13: AdminTransfersPage, LazyAdminTransfers, route /admin/transfers
- Step 14: MSW handlers admin transfers
- Step 15: AdminTransfersView stories (Default, Empty, WithFailedTransfers, Error, Loading)
- Step 16-17: DeepHealth handler (disk, config), GET /health/deep
- Step 19: health_deep_test.go (4 tests)
- Step 20: docs/API_REFERENCE.md
- Step 21: Archive V0_604, MIGRATIONS.md migration 116
- Step 22: CHANGELOG, PROJECT_STATE, FEATURE_STATUS v0.701
- Step 23: RETROSPECTIVE_V0701, V0_702 placeholder, SCOPE_CONTROL, .cursorrules
- Step 24: Archive V0_701_RELEASE_SCOPE
- Fix: AdminTransfersView Select component (use options API)
2026-02-23 23:42:02 +01:00
senke
36e7bfc355 feat(frontend): add admin transfer API functions in commerceService 2026-02-23 23:36:09 +01:00
senke
b3a74d6740 test(admin): add admin transfer handler tests 2026-02-23 23:35:11 +01:00
senke
7d530f9612 feat(routes): wire admin transfer endpoints in /admin group 2026-02-23 23:33:54 +01:00
senke
9ee4b18c33 feat(admin): add admin transfer handler (GET list, POST retry) 2026-02-23 23:33:35 +01:00
senke
06db7d6936 test(marketplace): add transfer retry worker tests 2026-02-23 23:32:59 +01:00
senke
b83a650279 feat(server): start TransferRetryWorker on boot (v0.701) 2026-02-23 23:32:23 +01:00
senke
8272f4770a feat(marketplace): add TransferRetryWorker background goroutine 2026-02-23 23:32:03 +01:00
senke
2a9e6084fc feat(monitoring): add transfer retry Prometheus metrics 2026-02-23 23:31:35 +01:00
senke
42764110f0 feat(config): add transfer retry configuration (v0.701) 2026-02-23 23:31:09 +01:00
senke
706a97b824 feat(marketplace): add retry fields to SellerTransfer model 2026-02-23 23:30:51 +01:00
senke
c46a7202aa feat(marketplace): add migration 116 — retry columns for seller_transfers 2026-02-23 23:30:41 +01:00
senke
c6c7c8b20f docs: add v0.701 release scope, smoke test, and update references
Phase 7 kickoff — Retry Transfers, Admin Dashboard & Deep Health.
Absorbs v0.604 backlog. Updates SCOPE_CONTROL, PROJECT_STATE, .cursorrules.
2026-02-23 23:21:06 +01:00
senke
dcf5aab783 docs: add RETROSPECTIVE_V0603.md
chore(release): archive v0.603 scope, create v0.604 placeholder
2026-02-23 22:59:59 +01:00
senke
00d33a1add docs: update PROJECT_STATE, FEATURE_STATUS, CHANGELOG for v0.603 2026-02-23 22:59:38 +01:00
senke
3263511167 chore(marketplace): go vet passes, no dead code 2026-02-23 22:59:18 +01:00
senke
bd7657710d docs(payout): update PAYOUT_MANUAL for v0.603 auto transfer 2026-02-23 22:59:07 +01:00
senke
ba31ce6a33 chore(docs): archive obsolete pre-v0.501 docs 2026-02-23 22:58:53 +01:00
senke
993b756758 chore(backend): triage TODOs — 10 remaining, all actionable (scope met) 2026-02-23 22:58:29 +01:00
senke
5e7e506fe3 test(commerce): add transfer tests — success, multi-seller, transfer-fails 2026-02-23 22:58:16 +01:00
senke
5835469ef2 test(seller): add MSW handler and story for transfers 2026-02-23 22:57:35 +01:00
senke
fdd750d772 feat(seller): add transfers history card to SellerDashboard 2026-02-23 22:57:28 +01:00
senke
b3c74428d8 feat(commerce): add GET /sell/transfers endpoint 2026-02-23 22:56:26 +01:00
senke
22ce89f3da feat(commerce): trigger seller transfers on payment succeeded 2026-02-23 22:56:01 +01:00
senke
6d1d861a52 feat(commerce): wire TransferService in marketplace and webhook routes 2026-02-23 22:55:39 +01:00
senke
31833c01f1 feat(commerce): add TransferService interface and WithTransferService option 2026-02-23 22:55:18 +01:00
senke
6a468e5ffb feat(commerce): add SellerTransfer model 2026-02-23 22:55:08 +01:00
senke
553bd87d85 feat(commerce): add 115_seller_transfers migration 2026-02-23 22:54:56 +01:00
senke
535e76adfe feat(commerce): add PLATFORM_FEE_RATE config (default 10%) 2026-02-23 22:54:50 +01:00
senke
c4110fded7 docs(v0.603): scope, plan d'implémentation et smoke test
Define v0.603 release scope: automatic Stripe Connect transfers
after payment, configurable platform commission, technical debt
triage (210+ TODOs), and docs archival. Includes detailed
implementation plan (4 sprints, 19 commits) and smoke test checklist.
2026-02-23 22:48:04 +01:00
senke
83ed4f315b chore(release): v0.602 — Payout, Dette Technique & Tests E2E
Some checks failed
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
- Stripe Connect: onboarding, balance, SellerDashboardView
- Interceptors: auth.ts, error.ts extracted, facade
- Grafana: dashboards enriched (p50, top endpoints, 4xx, WS, commerce)
- E2E commerce: product->order->review->invoice
- SMOKE_TEST_V0602, RETROSPECTIVE_V0602, PAYOUT_MANUAL
- Archive V0_602 scope, V0_603 placeholder, SCOPE_CONTROL v0.603
- Fix sanitizer regex (Go no backreferences)
- Marketplace test schema: product_licenses, product_images, orders, licenses
2026-02-23 22:32:01 +01:00
senke
941f6e6f3e feat(seller): add seller_stripe_accounts migration and model 2026-02-23 22:11:11 +01:00
senke
ae81e171c7 feat(seller): add Stripe Connect config 2026-02-23 22:09:23 +01:00
senke
914139a7b1 refactor(api): extract error interceptor to interceptors/error.ts 2026-02-23 22:05:37 +01:00
senke
45e8522200 refactor(api): extract auth interceptor to interceptors/auth.ts 2026-02-23 22:01:11 +01:00
senke
cc9fbf4f24 feat(commerce): Hyperswitch LIVE_MODE configuration
Some checks failed
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
- config: HyperswitchLiveMode (HYPERSWITCH_LIVE_MODE)
- routes_marketplace: warn when production + LiveMode=false
- docker-compose.prod: HYPERSWITCH_LIVE_MODE env var
2026-02-23 19:56:52 +01:00
senke
30bc31f3a6 feat(monitoring): add Alertmanager with Slack notifications
- config/alertmanager/alertmanager.yml: route, slack-default and null receivers
- config/prometheus.yml: alerting.alertmanagers -> alertmanager:9093
- docker-compose.prod.yml: alertmanager service (port 9093)
2026-02-23 19:54:55 +01:00
senke
c002e74031 feat(monitoring): add 3 Grafana dashboards (API, Chat, Commerce)
- api-overview.json: request rate, p95 latency, 5xx errors, DB pool
- chat-overview.json: WebSocket upgrade rate, chat API
- commerce-overview.json: marketplace/commerce/orders metrics
- system-overview.json: replaces veza-dashboard.json
2026-02-23 19:54:01 +01:00
senke
0ff8a85684 feat(infra): blue-green deployment via HAProxy
- HAProxy: api/stream/web backends with blue+green servers (backup)
- docker-compose.prod: backend-api-blue/green, stream-server-blue/green, web-blue/green
- haproxy-blue.cfg, haproxy-green.cfg: config variants for active stack
- scripts/deploy-blue-green.sh: switch traffic via config copy + HUP reload
2026-02-23 19:52:19 +01:00
senke
cdc4bd82e6 docs(v0.601): scope et plan d'implémentation
- V0_601_RELEASE_SCOPE.md: lots INF1, COM1, AUTH1, CLN1, QA1
- PLAN_V0_601_IMPLEMENTATION.md: 6 sprints, tâches détaillées, commits
- PROJECT_STATE.md: prochaine version v0.601
- FEATURE_STATUS.md: section Prévu en v0.601
- SCOPE_CONTROL.md: référence V0_601_RELEASE_SCOPE
2026-02-23 19:41:19 +01:00
senke
7243f96314 fix(player): make PlayerBarGlass 100% responsive
- GlobalPlayer: responsive margins (left-2/right-2 on mobile, left-4/right-4 on sm+),
  bottom-4 on mobile, max-w-full min-w-0 to prevent overflow
- Inner flex: smaller gaps (gap-1.5 sm:gap-2 md:gap-3), reduced padding (px-2 sm:px-3 md:px-4),
  overflow-hidden to contain content
- PlayerBarTrackInfo: min-w-0 for shrink, smaller cover (w-9 on mobile, w-10 sm, w-11 md)
- PlayerBarRight: min-w-0, smaller gaps, hide PiP on <md, hide Like on <sm,
  hide volume divider on <sm, responsive volume slider width
- Hide PlaybackSpeedControl and time display on <sm to save space
2026-02-23 19:37:28 +01:00
senke
706837be97 fix(auth): skip state invalidation on logout response
invalidateStateAfterMutation was triggered on POST /auth/logout 200,
causing invalidateQueries for ['user','me'] and refetch of getMe().
That refetch fails (500) since session is already invalidated.
Skip invalidation for /auth/logout - cleanup is handled in auth service.
2026-02-23 10:00:54 +01:00
senke
d6840eda76 fix(auth): sign out - await logout and use full page redirect
- useSidebarNavigation: was not awaiting logout(), so navigate ran before
  store was updated; LoginPage then saw isAuthenticated=true and
  redirected back to dashboard
- Both Sidebar and Header: use window.location.href instead of
  navigate() for logout redirect to ensure clean state (clears any
  stale React/Query cache, forces fresh load)
2026-02-23 09:57:22 +01:00
senke
fa7fc7031e fix(auth): restore login and logout flow
- Clear React Query user cache on logout (auth.ts + logoutLocal in authStore)
  to prevent stale user data in Header/useUser after disconnect
- Fix LoginPage redirect: user was removed from persist (Action 4.1.1.5),
  so parsed.state?.user was always undefined and redirect never triggered.
  Use isAuthenticated directly as source of truth.
- Close Header user menu on logout for cleaner UX
2026-02-23 09:54:05 +01:00
senke
4b1509d8f0 fix(web): add missing LazyCloud export in lazy-component index
LazyComponent.tsx and routeConfig.tsx import LazyCloud from the
lazy-component module, but it was not re-exported in index.ts.
This caused: 'The requested module does not provide an export
named LazyCloud' at runtime.
2026-02-23 09:43:16 +01:00
senke
aee1ec18e2 docs(v0.503): finalization, documentation, changelog, tag
- Update FEATURE_STATUS.md: HLS Streaming -> Opérationnel (v0.503)
- Update PROJECT_STATE.md: v0.503 delivered, next version v0.601
- Add CHANGELOG.md v0.503 entry with all changes
- Create SMOKE_TEST_V0503.md validation checklist
- Create RETROSPECTIVE_V0503.md
- Archive V0_503_RELEASE_SCOPE.md to docs/archive/
- Create V0_601_RELEASE_SCOPE.md placeholder
- Update SCOPE_CONTROL.md references to v0.601
- Update .cursorrules scope to v0.601
2026-02-22 21:28:46 +01:00
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
218b4b33d6 feat(streaming): wire HLS pipeline end-to-end with serving routes
- Add HLSEnabled and HLSStorageDir to backend config (HLS_STREAMING env)
- Register HLS serving routes (master.m3u8, quality playlist, segments)
  behind HLSEnabled feature flag on existing track routes
- Add GetHLSStatus and TriggerHLSTranscode methods to StreamService
  for stream server communication
- Update docker-compose (dev, staging, prod) with HLS env vars and
  shared hls-data volume between backend and stream-server
- Stream callback already correctly updates stream_manifest_url
2026-02-22 21:20:35 +01:00
senke
1ed7fe2ebb feat(chat): Redis rate limiter, persistent presence, PostgreSQL full-text search
- Rewrite chat rate limiter with Redis sliding window (sorted sets) and
  automatic in-memory fallback when Redis is unavailable
- Add ChatPresenceService with Redis-backed online/offline/heartbeat
  tracking (2min TTL), integrated into Hub register/unregister
- Add migration 113: tsvector column with GIN index and auto-update
  trigger on messages table for full-text search
- Update Search repository method to use ts_rank ordering instead of ILIKE
- Wire Redis client into chat WebSocket setup in router.go
- Add comprehensive tests: rate limiter, presence, 100-user concurrent benchmark
2026-02-22 21:17:51 +01:00
senke
279a10d317 chore(cleanup): remove veza-chat-server directory and all operational references
Chat functionality is now fully handled by the Go backend (since v0.502).
Remove the deprecated Rust chat server and all its references from:
- CI/CD workflows (ci.yml, cd.yml, rust-ci.yml, chat-ci.yml)
- Monitoring & proxy config (prometheus, caddy, haproxy)
- Incus deployment scripts and documentation
- Monorepo config (package.json, dependabot, GH templates)
2026-02-22 21:13:00 +01:00