Commit graph

2174 commits

Author SHA1 Message Date
senke
bce563beb5 docs: add v0.404 CHANGELOG and retrospective
FIN-05 + FIN-06: Complete CHANGELOG for v0.404 with all security,
infrastructure, code quality, documentation, testing, and integration
changes. Retrospective includes pre/post scores (4.2 -> 6.6/10).
2026-02-22 17:57:49 +01:00
senke
022e274636 docs: archive V0_404_RELEASE_SCOPE.md (completed)
FIN-04: Moved scope document to docs/archive/ with completion header.
2026-02-22 17:56:59 +01:00
senke
097fe7a59b docs: update SCOPE_CONTROL.md and cursorrules to reference v0.501
FIN-03: Active scope now points to V0_501_RELEASE_SCOPE.md.
Updated .cursorrules scope from v0.402 to v0.501.
2026-02-22 17:56:55 +01:00
senke
9e7e2f6e37 docs: update PROJECT_STATE.md to reflect v0.404 stabilization
FIN-02: Updated version to v0.404, added security score improvements
(5->7/10), infrastructure readiness, code quality metrics, and
updated next version target to v0.501.
2026-02-22 17:56:51 +01:00
senke
22083aedd9 test(rust): add 51 unit tests across chat and stream servers
INT-05: 26 tests in chat-server (config, error, permissions, rate
limiter, logging, utils) and 25 tests in stream-server (config,
error, auth, HLS, signature, utils). All test pure logic.
2026-02-22 17:55:27 +01:00
senke
09dc20e965 refactor(websocket): replace gorilla/websocket with coder/websocket
INT-06: Migrated playback_websocket_handler.go from deprecated
gorilla/websocket to coder/websocket v1.8.14. Uses context-based
reads/writes and websocket.Accept instead of Upgrader.
2026-02-22 17:53:10 +01:00
senke
43536ea3f3 fix(tests): fix 2 skipped tests, add clear skip reasons to 11 others
INT-04: Fixed nil UserID panic in AuditService (re-enabled 2 tests).
Added INT-04 comments explaining skip reasons for tests requiring
PostgreSQL, real file headers, or external services.
2026-02-22 17:53:00 +01:00
senke
23791095ad test: add 5 cross-service E2E integration tests
INT-03: Tests for health endpoint, auth flow, track upload auth,
webhook HTTPS-only, and rate limit headers. Build-tagged
'integration' to avoid running in regular test suite.
2026-02-22 17:52:50 +01:00
senke
5258b9bf17 feat(streaming): trigger HLS transcoding after track upload
INT-02: TrackService.copyFileAsync now calls StreamService.StartProcessing
after successful file copy. Wires the stream server integration into
all track route registrations.
2026-02-22 17:52:39 +01:00
senke
5cf0baabc8 docs: add ADR-001 (Go+Rust architecture) and ADR-002 (chat server migration)
CLN-08 + INT-01: Documents the rationale for multi-language architecture
and the decision to rewrite chat server from Rust to Go in v0.501.
2026-02-22 17:45:15 +01:00
senke
cf2a9e3aeb refactor(infra): centralize protobuf definitions in shared proto/ directory
CLN-07: Copied .proto sources from chat-server and stream-server
to proto/{common,chat,stream}/. Original copies remain until builds
are updated to use the shared directory.
2026-02-22 17:45:11 +01:00
senke
526c49bc1a 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
4e72fe5fda docs: align FEATURE_STATUS.md with actual code state
CLN-05: Corrected OAuth status (Discord/Spotify not implemented),
HLS streaming (integration in progress), Chat (partial). Added
erratum section for v0.404 audit.
2026-02-22 17:45:03 +01:00
senke
13bde80a65 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
0e095d9a54 refactor(backend): replace 40 fmt.Printf calls with zap structured logging
CLN-03: router.go, track/service.go, upload_validator.go, cors.go,
playlist_handler.go, and mfa.go now use zap.L() or local logger
for structured logging instead of fmt.Printf.
2026-02-22 17:44:38 +01:00
senke
193c47ef83 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
05daed60df refactor: remove dead code (api_manager.go, unused templates)
CLN-01: Deleted archived api_manager.go (~789 LOC, build-tag ignore)
and dev-environment/templates/ (~806 LOC, never used by generator).
2026-02-22 17:44:19 +01:00
senke
9752a90dfb fix(security): hash password reset tokens before database storage
INF-10: Reset tokens are now SHA-256 hashed before INSERT. Validation
hashes the received token and compares against stored hash. Plain
tokens never persisted.
2026-02-22 17:36:10 +01:00
senke
7d868f075e feat(monitoring): add Prometheus alerting rules for critical conditions
INF-08: Alert rules for service_down, high_error_rate (>5%),
high_latency (P99>2s), and redis_unreachable. Enabled rule_files
in prometheus.yml.
2026-02-22 17:36:07 +01:00
senke
60d5ce5fc9 feat(infra): complete staging compose with chat, stream, and reverse proxy
INF-07: Added chat-server, stream-server, Caddy reverse proxy,
and healthchecks for all services in staging compose.
2026-02-22 17:36:03 +01:00
senke
aac1df3762 feat(ci): add CodeQL SAST scanning for Go and TypeScript
INF-06: New sast.yml workflow runs CodeQL analysis on push to main
and PRs for Go and JavaScript/TypeScript.
2026-02-22 17:35:50 +01:00
senke
bad8efa87a feat(ci): add clippy lint step for Rust services
INF-05: New rust-ci.yml runs cargo clippy with -D warnings for both
chat-server and stream-server.
2026-02-22 17:35:46 +01:00
senke
c96edd6927 feat(ci): add go vet and gofmt check to backend CI
INF-04: Backend CI now runs go vet and gofmt to catch issues early.
2026-02-22 17:35:42 +01:00
senke
309750cef6 fix(ci): add lint, typecheck and build steps to frontend CI
INF-03: frontend-ci.yml now runs eslint, tsc --noEmit, and vite build.
Audit level aligned to critical.
2026-02-22 17:35:39 +01:00
senke
df9979e695 fix(infra): align PostgreSQL to version 16 in test compose
INF-02: Test environment now uses postgres:16-alpine to match production.
2026-02-22 17:35:35 +01:00
senke
eb92779df2 feat(security): implement Redis-backed rate limiter with in-memory fallback
INF-01: RedisRateLimiter uses atomic Lua script (INCR+EXPIRE) for
distributed rate limiting. Falls back to in-memory SimpleRateLimiter
when Redis is unavailable. Same X-RateLimit-* headers and 429 format.
2026-02-22 17:35:21 +01:00
senke
86ad549152 fix(ci): move hardcoded E2E credentials to GitHub Secrets
SEC-10: Replaced hardcoded TEST_PASSWORD, JWT_SECRET, DATABASE_URL
password, and RABBITMQ_URL with GitHub Secrets references. Secrets
to create: E2E_TEST_PASSWORD, E2E_JWT_SECRET, E2E_RABBITMQ_URL,
E2E_DB_PASSWORD.
2026-02-22 17:32:52 +01:00
senke
4409022d55 fix(build): unify Go version to 1.24 across Dockerfile and CI
SEC-09: go.mod declares Go 1.24.0 but Dockerfile.production used 1.23
and backend-ci.yml used 1.23. Aligned both to 1.24.
2026-02-22 17:32:17 +01:00
senke
4efd5d1d07 fix(security): require Hyperswitch webhook secret in production when payments enabled
SEC-08: If HYPERSWITCH_ENABLED=true in production, startup now fails
unless HYPERSWITCH_WEBHOOK_SECRET is set. This prevents webhook
signature verification from being silently bypassed.
2026-02-22 17:31:52 +01:00
senke
142d1576be fix(security): add SSRF protection for webhook URL registration
SEC-07: Strengthened ValidateWebhookURL to require HTTPS only (was
allowing HTTP). Private IP ranges, localhost, and cloud metadata
endpoints remain blocked.
2026-02-22 17:31:10 +01:00
senke
72d15f60b5 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
5d840d2ebe 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
c47b2cc5bf 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
de5b3bc542 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
a462a1d3fd fix(infra): add Redis authentication in production compose 2026-02-22 17:24:12 +01:00
senke
3da269875e 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
901b1ce2ce 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
952520dd7f feat(marketplace): add license revoked_at migration 2026-02-22 16:18:01 +01:00
senke
bf57d58f5a feat(hyperswitch): add CreateRefund to client 2026-02-22 16:17:54 +01:00
senke
3ff3784946 feat(marketplace): add invoice download link to PurchasesView and LicensesView 2026-02-22 16:15:55 +01:00
senke
5b023ae895 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
cfb270e5a9 feat(marketplace): add review API to frontend 2026-02-22 16:09:04 +01:00
senke
45cbc96fac feat(marketplace): add avg_rating and review_count to Product 2026-02-22 16:07:06 +01:00
senke
25eee5bf91 feat(marketplace): add create and list reviews endpoints 2026-02-22 16:06:18 +01:00
senke
578af84819 feat(marketplace): add ProductReview model and service 2026-02-22 16:05:16 +01:00
senke
c3b8d9198a feat(marketplace): add product_reviews migration 2026-02-22 16:04:14 +01:00
senke
f64c858464 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
230b35009f feat(checkout): integrate Hyperswitch payment form in Cart 2026-02-22 14:46:06 +01:00
senke
afeec3ae65 fix(checkout): handle cancelled status in Hyperswitch webhook 2026-02-22 14:42:57 +01:00
senke
d502ea83ee docs: update PAYMENTS_SETUP for checkout complete URL 2026-02-22 14:42:44 +01:00