Commit graph

2141 commits

Author SHA1 Message Date
senke
6a675565e1 feat(v0.13.3): complete - Polish Sécurité Avancée
TASK-SECADV-001: WebAuthn/Passkeys (F022)
- WebAuthn credential model, service, handler
- Registration/authentication ceremony endpoints
- CRUD operations (list, rename, delete passkeys)
- Routes: GET/POST/PUT/DELETE /auth/passkeys/*

TASK-SECADV-002: Configurable password policy (F015)
- PasswordPolicyConfig with MinLength, MaxLength, RequireUpper/Lower/Number/Special
- NewPasswordValidatorWithPolicy constructor
- PasswordPolicyFromEnv() reads env vars (PASSWORD_MIN_LENGTH, etc.)
- All character class checks now respect policy configuration

TASK-SECADV-003: Géolocalisation connexions (F025)
- GeoIPResolver interface + GeoIPService implementation
- Country/city columns added to login_history table
- LoginHistoryService.Record() performs GeoIP lookup
- GetUserHistory returns geolocation data
- GET /auth/login-history endpoint

TASK-SECADV-004: Password expiration (F016)
- password_changed_at column on users table
- CheckPasswordExpiration() method on PasswordService
- All password change/reset methods now set password_changed_at
- NewPasswordServiceWithPolicy() supports expiration days config

Migration: 971_security_advanced_v0133.sql

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 10:09:01 +01:00
senke
955be70935 Merge branch 'feat/v0.13.0-conformite-features' 2026-03-12 09:32:07 +01:00
senke
e4dd09a909 feat(v0.13.0): conformité features partielles — CAPTCHA, password history, login history, SMS 2FA
Some checks failed
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
TASK-CONF-001: SMS 2FA service (sms_2fa_service.go) — SMSProvider interface,
  rate limiting (3/h), 6-digit codes, 5min expiry, LogSMSProvider for dev.
TASK-CONF-002: CAPTCHA service (captcha_service.go) — Cloudflare Turnstile
  verification with fail-open + RequireCaptcha middleware. 11 tests.
TASK-CONF-003: Auth features completed:
  - F014 password history (password_history_service.go) — checks last 5 hashes,
    integrated into PasswordService.ChangePassword. 3 tests.
  - F024 login history (login_history_service.go) — Record, GetUserHistory,
    CountRecentFailures for security auditing.
  - F010/F013/F018/F021/F026 verified already implemented.
TASK-CONF-004: F075 ClamAV verified implemented. F080 watermark deferred (P4).
TASK-CONF-005: ADR-005 handler architecture documented (keep dual, migrate forward).
TASK-CONF-006: Frontend 0 TODO/FIXME, backend 1 — criteria met.

Migration: 970_password_login_history_v0130.sql (password_history, login_history,
sms_verification_codes tables).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:31:50 +01:00
senke
f47434ea06 Merge branch 'feat/v0.12.9-tests-ethiques-coverage' 2026-03-12 08:20:00 +01:00
senke
0aa77d2bd9 feat(v0.12.9): ethical bias tests, discovery algorithm docs, CI coverage gates
Some checks failed
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
TASK-ETH-001: 4 discovery bias tests (genre/tag browse, emerging artist visibility,
  metrics not exposed in JSON). Verifies chronological ordering regardless of play count.
TASK-ETH-002: 4 search fairness tests (artist 0 plays discoverable, zero-play tracks
  not filtered, default sort is chronological, no popularity bias in default ranking).
TASK-ETH-003: veza-docs/DISCOVERY_ALGORITHM.md — documents all 6 discovery mechanisms,
  ethical constraints, and forbidden patterns per ORIGIN specs.
TASK-COV-001: CI coverage gates — Go >= 70% (backend-ci.yml), Rust >= 50% (rust-ci.yml
  with cargo-tarpaulin). Extended Go test scope to core/ and middleware/.
TASK-COV-002: Coverage badge JSON artifact on main push (shields.io compatible).

All 8 ethical tests PASS. Build clean.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 08:19:41 +01:00
senke
fdf335bc4c Merge branch 'feat/v0.12.6.3-nettoyage-fantome' 2026-03-12 07:30:18 +01:00
senke
72b732664a feat(v0.12.6.3): remove ghost modules — gamification, A/B testing, GraphQL stubs
Some checks failed
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
Deleted 8 dead code modules identified by audit diagnostic:
- api/contest/, sound_design_contest/, production_challenge/, voting_system/
  (gamification stubs — violate CLAUDE.md Rule 3: no XP/streaks/leaderboards/badges)
- models/contest.go (314 lines: ContestBadge with rarity, ContestPrize, ContestVote)
- models/user.go: removed orphan JuryMember struct (contest reference)
- services/playback_abtest_service.go + test (476+579 lines: A/B testing on playback
  metrics — violates ORIGIN_UI_UX_SYSTEM.md §13 anti-dark-patterns)
- api/graphql/ (REST-only per ORIGIN spec)

Kept: listing/, offer/ (marketplace stubs, ORIGIN-approved), grpc/ (ORIGIN §9 approved).
Verified: go build passes, grep confirms 0 forbidden terms remaining.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 07:29:56 +01:00
senke
7a0819f69a feat(v0.12.6.2): enforce MFA for admin/moderator + align refresh token TTL to 7 days
Some checks failed
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
TASK-SFIX-001: MFA enforcement for privileged roles
- Add RequireMFA() middleware, TwoFactorChecker interface, SetTwoFactorChecker()
- Apply to all 3 admin route groups (platform, moderation, core)
- Returns 403 "mfa_setup_required" if admin/moderator without 2FA
- Regular users bypass the check
- Ref: ORIGIN_SECURITY_FRAMEWORK.md Rule 5

TASK-SFIX-002: Refresh token TTL alignment
- jwt_service.go: RefreshTokenTTL 14d→7d, RememberMeRefreshTokenTTL 30d→7d
- handlers/auth.go: Cookie max-age and session expiresIn → 7d across
  Login, LoginWith2FA, Register, Refresh handlers
- middleware/auth.go: Session auto-refresh default 30d→7d
- Ref: ORIGIN_SECURITY_FRAMEWORK.md Rule 4

TASK-SFIX-003: 5 unit tests — all PASS
- TestRequireMFA_AdminWithoutMFA, TestRequireMFA_AdminWithMFA
- TestRequireMFA_RegularUserNotAffected
- TestRefreshTokenTTL_Is7Days, TestAccessTokenTTL_Is5Minutes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 06:53:27 +01:00
senke
0e4117f028 docs: integrate audit roadmap into VEZA_VERSIONS_ROADMAP — v0.12.6.1 DONE, 14 versions added
- Mark v0.12.6.1 (pentest remediation 30/30) as DONE
- Add 14 new versions from audit: v0.12.6.2→v1.0.0-rc1
- Update tracking table with priorities P0→P3
- Update v0.12.6 checkboxes (all findings now resolved)
- Add Phase P7 (Conformité) and Validation phases
- Update AUDIT_05_ROADMAP_v1.0.md to reflect completed remediation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 06:34:52 +01:00
senke
f595824b97 fix(v0.12.6.1): LOW-002 update Hyperswitch 2025.01.21→2026.03.11
Updated Hyperswitch payment router from 2025.01.21.0-standalone to
2026.03.11.0-standalone in both docker-compose.yml and docker-compose.prod.yml.

All 30/30 pentest findings now remediated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 06:23:56 +01:00
senke
c0e2fe2e12 fix(v0.12.6.1): remediate remaining 15 MEDIUM + LOW pentest findings
MEDIUM-002: Remove manual X-Forwarded-For parsing in metrics_protection.go,
  use c.ClientIP() only (respects SetTrustedProxies)
MEDIUM-003: Pin ClamAV Docker image to 1.4 across all compose files
MEDIUM-004: Add clampLimit(100) to 15+ handlers that parsed limit directly
MEDIUM-006: Remove unsafe-eval from CSP script-src on Swagger routes
MEDIUM-007: Pin all GitHub Actions to SHA in 11 workflow files
MEDIUM-008: Replace rabbitmq:3-management-alpine with rabbitmq:3-alpine in prod
MEDIUM-009: Add trial-already-used check in subscription service
MEDIUM-010: Add 60s periodic token re-validation to WebSocket connections
MEDIUM-011: Mask email in auth handler logs with maskEmail() helper
MEDIUM-012: Add k-anonymity threshold (k=5) to playback analytics stats
LOW-001: Align frontend password policy to 12 chars (matching backend)
LOW-003: Replace deprecated dotenv with dotenvy crate in Rust stream server
LOW-004: Enable xpack.security in Elasticsearch dev/local compose files
LOW-005: Accept context.Context in CleanupExpiredSessions instead of Background()
LOW-002: Noted — Hyperswitch version update deferred (requires payment integration tests)

29/30 findings remediated. 1 noted (LOW-002).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 06:13:38 +01:00
senke
01378a06a5 fix(v0.12.6.1): update in-memory UserRepositoryImpl to accept context.Context
Aligns the in-memory implementation with the updated services.UserRepository
interface for consistency (HIGH-003 context propagation).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:47:47 +01:00
senke
24b29d229d fix(v0.12.6.1): remediate 2 CRITICAL + 10 HIGH + 1 MEDIUM pentest findings
Security fixes implemented:

CRITICAL:
- CRIT-001: IDOR on chat rooms — added IsRoomMember check before
  returning room data or message history (returns 404, not 403)
- CRIT-002: play_count/like_count exposed publicly — changed JSON
  tags to "-" so they are never serialized in API responses

HIGH:
- HIGH-001: TOCTOU race on marketplace downloads — transaction +
  SELECT FOR UPDATE on GetDownloadURL
- HIGH-002: HS256 in production docker-compose — replaced JWT_SECRET
  with JWT_PRIVATE_KEY_PATH / JWT_PUBLIC_KEY_PATH (RS256)
- HIGH-003: context.Background() bypass in user repository — full
  context propagation from handlers → services → repository (29 files)
- HIGH-004: Race condition on promo codes — SELECT FOR UPDATE
- HIGH-005: Race condition on exclusive licenses — SELECT FOR UPDATE
- HIGH-006: Rate limiter IP spoofing — SetTrustedProxies(nil) default
- HIGH-007: RGPD hard delete incomplete — added cleanup for sessions,
  settings, follows, notifications, audit_logs anonymization
- HIGH-008: RTMP callback auth weak — fail-closed when unconfigured,
  header-only (no query param), constant-time compare
- HIGH-009: Co-listening host hijack — UpdateHostState now takes *Conn
  and verifies IsHost before processing
- HIGH-010: Moderator self-strike — added issuedBy != userID check

MEDIUM:
- MEDIUM-001: Recovery codes used math/rand — replaced with crypto/rand
- MEDIUM-005: Stream token forgeable — resolved by HIGH-002 (RS256)

Updated REMEDIATION_MATRIX: 14 findings marked  CORRIGÉ.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:40:53 +01:00
senke
0d845ebf2c Merge branch 'feat/v0.12.6-pentest-audit'
# Conflicts:
#	VEZA_VERSIONS_ROADMAP.md
2026-03-11 23:05:26 +01:00
senke
e35f1c0e51 Merge branch 'feat/v0.12.5-pwa-mobile'
# Conflicts:
#	VEZA_VERSIONS_ROADMAP.md
2026-03-11 23:05:01 +01:00
senke
8f4ba0c284 Merge branch 'feat/v0.12.4-performance-scalabilite'
# Conflicts:
#	VEZA_VERSIONS_ROADMAP.md
2026-03-11 23:04:31 +01:00
senke
02d1846141 feat(v0.12.3): F276-F305 video upload, HLS transcoding, education tests
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
- Add video upload endpoint POST /courses/:id/lessons/:lesson_id/video
- Add VideoTranscodeService for multi-bitrate HLS (720p/480p/360p)
- Add VideoTranscodeWorker for async lesson video processing
- Add SetLessonVideoPath and UpdateLessonTranscoding to education service
- Add uploadLessonVideo to frontend educationService with progress
- Add comprehensive handler tests (video upload, auth, validation)
- Add service-level tests (models, slugs, clamping, errors, UUIDs)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:20:48 +01:00
senke
f56b5a2b45 feat(v0.12.6): consolidated audit — 2 CRITICAL, 10 HIGH findings
Deep audit with 6 parallel analysis passes reveals additional findings:

CRITICAL:
- CRIT-001: IDOR on chat rooms — any user can read private conversations
- CRIT-002: play_count/like_count publicly exposed (violates VEZA ethics)

NEW HIGH:
- HIGH-004/005: Race conditions on promo codes and exclusive licenses
- HIGH-006: Rate limiter bypass via X-Forwarded-For (no TrustedProxies)
- HIGH-007: GDPR hard delete incomplete (Redis, ES, audit_logs)
- HIGH-008: RTMP callback auth fallback to stream_key as secret
- HIGH-009: Co-listening host hijack by non-host participants
- HIGH-010: Moderator can issue strikes without conflict-of-interest check

Total: 2 CRITICAL, 10 HIGH, 12 MEDIUM, 6 LOW, 5 INFO
Estimated remediation: ~39h30

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:44:51 +01:00
senke
d6b614cc42 docs: update VEZA_VERSIONS_ROADMAP [v0.12.6 DONE]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:31:54 +01:00
senke
a5069c9311 feat(v0.12.6): pentest OWASP Top 10 + ASVS Level 2 — 3 reports
Internal security audit replacing external pentester.
Methodology: OWASP Top 10 (2021), API Security Top 10 (2023), ASVS v4.0 Level 2.

Results: 0 CRITICAL, 3 HIGH, 8 MEDIUM, 6 LOW, 5 INFO.
ASVS Level 2: 82% PASS, 2 FAIL (to fix), 15% PARTIAL.

Deliverables:
- PENTEST_REPORT_VEZA_v0.12.6.md (main report)
- REMEDIATION_MATRIX_v0.12.6.md (prioritized actions)
- ASVS_CHECKLIST_v0.12.6.md (item-by-item ASVS Level 2)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:31:27 +01:00
senke
8f0de5727d docs: update VEZA_VERSIONS_ROADMAP [v0.12.5 DONE]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 10:10:53 +01:00
senke
66de8d6638 feat(v0.12.5): PWA enhancements — offline audio, responsive hooks, icons
- Service Worker: audio caching strategy for offline playback (cache-first)
- Service Worker: CACHE_AUDIO message for explicit track caching
- useMediaQuery hook with useIsMobile/useIsTablet/useIsDesktop helpers
- PWAUpdateBanner and OfflineBanner components (previously stubs)
- Missing notification icons: badge-72x72, checkmark, xmark

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 10:09:24 +01:00
senke
9b0ae525db docs: update VEZA_VERSIONS_ROADMAP [v0.12.4 DONE]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:59:04 +01:00
senke
df8ce52a1e feat(v0.12.4): k6 load test for 1000 concurrent users
Three scenarios: smoke (10 VUs), load (500 VUs), stress (1000 VUs).
Tests tracks listing, search, track detail, and user profiles.
Thresholds: p95 < 100ms, p99 < 200ms, error rate < 1%.
Custom metrics for cache hit ratio tracking.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:58:06 +01:00
senke
ade46fc70f feat(v0.12.4): Redis response cache and CDN cache headers middleware
- ResponseCache: Redis-backed HTTP response caching for public GET endpoints
  with configurable TTLs per endpoint prefix (tracks 15m, search 5m, etc.)
- CacheHeaders: CDN-optimized Cache-Control headers per asset type
  (static 1yr immutable, audio 7d, HLS 60s, images 30d, API no-cache)
- Integrated both middlewares into the router middleware stack
- Unit tests for cache key generation, header rules, and config

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:57:06 +01:00
senke
65f2104458 feat(v0.12.4): database performance indexes migration
Critical indexes for users, tracks, messages, playlists, follows,
comments, notifications, analytics, marketplace, education, and
full-text search GIN indexes. Reference: ORIGIN_PERFORMANCE_TARGETS.md §8.4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:56:04 +01:00
senke
9e0cfb23c8 docs: update VEZA_VERSIONS_ROADMAP [v0.12.3 DONE]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:47:42 +01:00
senke
a54196f229 feat(v0.12.3): F276-F305 frontend education UI and routing
- EducationPage with 3 tabs: Catalog, My Courses, Certificates
- HLS.js video player integration for course lessons
- Course enrollment, progress tracking, and certificate display
- TypeScript types matching backend models
- API service layer for all education endpoints
- Lazy loading route configuration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:46:25 +01:00
senke
506195f4e0 feat(v0.12.3): F276-F305 education backend service, handler, and routes
- Course CRUD with slug generation, publish/archive lifecycle
- Lesson management with ordering and transcoding status
- Enrollment system with duplicate prevention
- Progress tracking with auto-completion at 90%
- Certificate issuance requiring full course completion
- Course reviews with rating aggregation
- Unit tests for service and handler layers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:45:26 +01:00
senke
329f53ada3 feat(v0.12.3): database migrations for education courses
Tables: courses, lessons, course_enrollments, lesson_progress,
certificates, course_reviews with proper indexes and constraints.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:44:54 +01:00
senke
f0304d78ba docs: update VEZA_VERSIONS_ROADMAP [v0.12.2 DONE]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:55:56 +01:00
senke
a8c985688a feat(v0.12.2): F501-F510 frontend distribution dashboard UI
- Distribution types, API service, and page component
- Distributions list with platform-specific status badges
- External streaming revenue table with summary cards
- Platform icons and status colors for Spotify/Apple Music/Deezer
- ARIA labels for accessibility
- Lazy-loaded route at /distribution

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:54:45 +01:00
senke
6063bfdeea feat(v0.12.2): F501-F510 distribution service, handler, and routes
- Distribution module: submit tracks to Spotify, Apple Music, Deezer
- Subscription eligibility check (Creator/Premium only)
- Distribution status tracking with platform-specific statuses
- Status history audit trail
- External streaming royalties import and aggregation
- Distributor provider interface for DistroKid/TuneCore integration
- Handler and service unit tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:54:26 +01:00
senke
9f5ffbe569 feat(v0.12.2): database migrations for distribution platforms
Add migration 950 with track_distributions, track_distribution_status_history,
and external_streaming_royalties tables for F501-F510.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:54:00 +01:00
senke
67a3d60266 docs: update VEZA_VERSIONS_ROADMAP [v0.12.1 DONE]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:39:01 +01:00
senke
341546d439 feat(v0.12.1): frontend subscription plans UI
- Add subscription types, service, and page component
- Pricing page with Free/Creator/Premium plan cards
- Monthly/yearly billing toggle (17% savings on yearly)
- Current subscription status display
- Cancel/reactivate subscription controls
- Invoice billing history table
- ARIA labels for accessibility
- Lazy-loaded route at /subscription

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:37:35 +01:00
senke
f6ca52c3dc feat(v0.12.1): subscription plans service, handler, and routes
- Add subscription module (models, service, tests)
- Plans: Free, Creator ($9.99/mo), Premium ($19.99/mo)
- Features: subscribe, cancel, reactivate, change billing cycle
- 14-day trial for Premium plan
- Upgrade immediate, downgrade at period end
- Invoice tracking and history
- Handler tests for auth and validation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:36:57 +01:00
senke
11432dac7f feat(v0.12.1): database migrations for subscription plans
Add migration 949 with subscription_plans, user_subscriptions,
and subscription_invoices tables. Includes default plan data
(Free, Creator $9.99/mo, Premium $19.99/mo with 14-day trial).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:36:29 +01:00
senke
d4a55b44f3 docs: update VEZA_VERSIONS_ROADMAP [v0.12.0 DONE]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 18:53:39 +01:00
senke
849c0e6cb8 feat(v0.12.0): F254-F255 frontend marketplace payout and balance UI
- Add seller balance/payout API methods to marketplaceService
- Add seller stats API methods (evolution, top products, sales)
- Add marketplace balance card to SellerDashboardView
- Add manual payout request button (min $100)
- Display auto-payout threshold info ($50 weekly)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 18:52:37 +01:00
senke
38530b5a52 feat(v0.12.0): F252-F254 marketplace service enhancements
- F252: Enable download count decrement on GetDownloadURL
- F253: Differentiated commission rates (creator 15%, premium 10%)
- F254: Seller balance tracking, payout scheduling, manual payout request
- Enforce 14-day refund window on RefundOrder
- Credit seller balance on completed sales
- New payout handler with balance/payouts/request endpoints
- 15 new tests (payout, refund window, commission)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 18:52:06 +01:00
senke
848087aee7 feat(v0.12.0): F252-F254 database migrations for marketplace completion
- seller_balances table for balance tracking
- seller_payouts table for payout scheduling
- commission_rate column on seller_transfers
- refund_deadline column on orders (14-day window)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 18:51:26 +01:00
senke
ba286f59cd docs: update VEZA_VERSIONS_ROADMAP [v0.11.3 DONE]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 18:27:47 +01:00
senke
c92e3e8799 feat(v0.11.3): F421-F425 frontend admin platform dashboard and routes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 18:20:27 +01:00
senke
ec2792118f feat(v0.11.3): F421-F424 admin platform handler and routes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 18:19:45 +01:00
senke
8078345f24 feat(v0.11.3): F421-F424 admin platform service with metrics, user mgmt, content, payments
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 18:16:27 +01:00
senke
4ea725157e docs: update VEZA_VERSIONS_ROADMAP [v0.11.2 DONE]
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:51:36 +01:00
senke
4fe689ddfd feat(v0.11.2): F411-F420 frontend advanced moderation components
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:50:15 +01:00
senke
025c7aae45 feat(v0.11.2): F411-F420 moderation handler and routes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:49:51 +01:00
senke
e6f1d7f18a feat(v0.11.2): F411-F420 moderation service with queue, spam, fingerprints, strikes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:45:34 +01:00