senke
80d54527b9
feat(v0.11.1): F396-F399 database migrations for advanced analytics
...
Add tables: track_segment_stats (heatmap), product_views (marketplace
conversion), metric_alerts, metric_alert_preferences.
Add segment_positions JSONB column to playback_analytics.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:12:01 +01:00
senke
b955a3c0b4
feat(v0.11.0): F381-F385 database migrations and models for creator analytics
...
Add daily_track_stats, geographic_play_stats, track_discovery_sources tables.
Add source and country_code columns to track_plays.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 16:21:01 +01:00
senke
19fec9e40a
feat(gdpr): v0.10.8 portabilité données - export ZIP async, suppression compte, hard delete cron
...
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
Backend API CI / test-unit (push) Failing after 0s
- Export: table data_exports, POST /me/export (202), GET /me/exports, messages+playback_history
- Notification email quand ZIP prêt, rate limit 3/jour
- Suppression: keep_public_tracks, anonymisation PII complète (users, user_profiles)
- HardDeleteWorker: final anonymization après 30 jours
- Frontend: POST export, checkbox keep_public_tracks
- MSW handlers pour Storybook
2026-03-10 13:57:04 +01:00
senke
871a0f2a05
feat(v0.10.7): Collaboration Temps Réel F481-F483
...
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
Backend API CI / test-unit (push) Failing after 0s
- F481: Co-listening sessions (WebSocket sync, ListenTogether page)
- F482: Stem sharing (upload/list/download wav,aiff,flac)
- F483: Collaborative rooms (type collaborative, max 10, invite-only)
- Roadmap: v0.10.7 → DONE
2026-03-10 13:34:16 +01:00
senke
dd23805401
feat(v0.10.5): Notifications Complètes (F551-F555)
...
- Phase 1: Default prefs — push_message & push_follow only; migration 941
- Phase 2: Digest = new tracks from followed artists (ORIGIN §8.1), not unread notifications
- Phase 3: Toggle 'désactiver marketing' + button 'Tout désactiver sauf messages et follows'
- Phase 4: PushPreferencesSection first in NotificationSettings (source of truth)
- Roadmap: v0.10.5 → DONE
2026-03-10 10:09:32 +01:00
senke
7cd01e4216
feat(v0.10.5): Notifications complètes — F551-F555
...
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
F555: Backend pagination/filter GetNotifications (type, page, limit) + frontend pagination
F551: WebSocket real-time — backend inject chat hub, send on CreateNotification; frontend useChat invalidates
F553: Quiet hours — migration 132, CreateNotification skips push/WS, UI in PushPreferencesSection
F554: Notification grouping — migration 133, group_key/actor_count for like/comment, UI format
F552: Weekly digest — migration 134, NotificationDigestWorker, email template, prefs UI
Acceptance: no gamification notif; defaults unchanged; individual toggles for marketing
2026-03-10 10:02:21 +01:00
senke
22f0c04b3f
stabilisation commit: while implementing v0.10.5
2026-03-09 19:36:33 +01:00
senke
6111ae6136
feat(v0.10.3): Commentaires & Interactions Sociales - F201-F215
...
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
- F201: Commentaires avec timestamp cliquable, modération mots-clés
- F202: Likes privés (compteur visible créateur uniquement)
- F203: Reposts de tracks sur le profil, bouton Repost, onglet Reposts
- F204: Notifications (commentaire, repost), pas de gamification
Backend: migrations 127/128, comment_moderation_service, track_repost_service,
GetTrackLikes/GetTrack masquent like_count pour non-créateurs
Frontend: LikeButton isCreator, RepostButton, Reposts tab profil, timestamp seek
2026-03-09 10:30:47 +01:00
senke
4a422fc4c3
feat(v0.10.1): Tags & Genres discover - F351-F355
...
- Tags déclaratifs (max 10, 30 chars) via track_tags + tags
- Genres normalisés (max 3) via track_genres + taxonomy
- GET /api/v1/discover/genre/:genre, tag/:tag (browse chrono)
- POST/DELETE follow genre/tag
- Section feed "Nouvelles sorties dans vos genres"
- Track update: SyncTrackTags, SyncTrackGenres via discover service
- Frontend: discoverService, FeedPage by_genres, DiscoverPage
- Migration 126_tags_genres_discover
- MSW handlers for discover
2026-03-09 01:52:56 +01:00
senke
05467c1c2f
v0.9.7
2026-03-06 18:52:08 +01:00
senke
2df921abd5
v0.9.1
2026-03-05 19:22:31 +01:00
senke
7cfd48a82a
fix(release): v1.0.1 — Conformité complète ROADMAP checklist
...
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
Stream Server CI / test (push) Failing after 0s
- Sécurité: npm 0 CRITICAL, cargo audit 0 vulnérabilités
- OpenAPI: @Param id corrigé pour /tracks/quota/{id}
- Tests: Payment E2E passe, OAuth DATABASE_URL fallback
- Migrations: 000_mark_consolidated.sql
- veza-stream-server: prometheus 0.14, validator 0.19
- docs: SECURITY_SCAN_RC1, V1_SIGNOFF, PROJECT_STATE
2026-03-03 20:17:54 +01:00
senke
d577f8c9be
chore(release): v0.971 — Phantom (gamification removal, WebRTC Beta, limits doc)
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
2026-03-02 19:25:37 +01:00
senke
da837fc085
chore(release): v0.951 — Loadtest (500 req/s, 1000 WS, 50 uploads, perf indexes)
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
2026-03-02 19:22:38 +01:00
senke
40fba3cbbf
chore(release): v0.942 — Compress (migration consolidation procedure, mark script)
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
2026-03-02 19:05:54 +01:00
senke
6823e5a30d
release(v0.902): Sentinel - PKCE OAuth, token encryption, redirect validation, CHAT_JWT_SECRET
...
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
- PKCE (S256) in OAuth flow: code_verifier in oauth_states, code_challenge in auth URL
- CryptoService: AES-256-GCM encryption for OAuth provider tokens at rest
- OAuth redirect URL validated against OAUTH_ALLOWED_REDIRECT_DOMAINS
- CHAT_JWT_SECRET must differ from JWT_SECRET in production
- Migration script: cmd/tools/encrypt_oauth_tokens for existing tokens
- Fixes: VEZA-SEC-003, VEZA-SEC-004, VEZA-SEC-009, VEZA-SEC-010
2026-02-26 19:49:15 +01:00
senke
c782bcb5b3
feat(admin): feature flags CRUD with DB persistence
2026-02-25 19:56:24 +01:00
senke
99b7cd8d97
feat(admin): global announcements CRUD and public banner endpoint
2026-02-25 19:55:21 +01:00
senke
911fc525a2
feat(admin): moderation queue with reports CRUD
2026-02-25 19:53:04 +01:00
senke
9636613eaa
feat(users): account deletion hardening with anonymization, S3 cleanup, session revocation
2026-02-25 19:51:21 +01:00
senke
689d9164f6
feat(db): add migrations 119-122 for cloud versions, gear warranty/documents/repairs
2026-02-25 13:30:49 +01:00
senke
d161a3739d
feat(users): add user_preferences migration with appearance fields
2026-02-25 09:45:03 +01:00
senke
076a132c0f
feat(live): add migration 117 and model fields for Go Live
2026-02-24 09:51:21 +01:00
senke
c46a7202aa
feat(marketplace): add migration 116 — retry columns for seller_transfers
2026-02-23 23:30:41 +01:00
senke
553bd87d85
feat(commerce): add 115_seller_transfers migration
2026-02-23 22:54:56 +01:00
senke
941f6e6f3e
feat(seller): add seller_stripe_accounts migration and model
2026-02-23 22:11:11 +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
4d4d07836c
feat(chat): Sprint 1 -- migrations, models, repositories for chat rewrite
...
- Add migrations 109-112: read_receipts, delivered_status, message_reactions, messages extra columns
- Create ReadReceipt, DeliveredStatus, MessageReaction GORM models
- Update Message model with EditedAt, Status, IsPinned, Metadata fields
- Enrich ChatMessageRepository with cursor pagination, search, soft delete
- Create ReadReceiptRepository, DeliveredStatusRepository, ReactionRepository
- Create ChatPubSubService with Redis PubSub and in-memory fallback
2026-02-22 20:38:20 +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
89cc015e54
feat(v0.501): Sprint 1 -- infrastructure foundations
...
- Add MinIO S3-compatible storage to docker-compose (dev, staging, prod)
- Create migrations 103-108 (waveform_url, user_folders, user_files,
user_storage_quotas, gear_items.is_public, gear_images)
- Add Go models: UserFile, UserFolder, StorageQuota, GearImage
- Add WaveformURL to Track model, IsPublic + GearImages to GearItem model
2026-02-22 18:10:25 +01:00
senke
bab3f38c4a
feat(marketplace): add license revoked_at migration
2026-02-22 16:18:01 +01:00
senke
4ac1bf7c25
feat(marketplace): add product_reviews migration
2026-02-22 16:04:14 +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
e8ad5b5f4b
feat(marketplace): add migrations 095-097 for products enrichment, previews, images
2026-02-22 14:05:19 +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
49e3122e78
feat(notifications): N1.1-N1.3 Web Push subscription, send on events, preferences
...
- N1.1: POST /notifications/push/subscribe, PushService, migration 090
- N1.2: Send Web Push on follow/like/comment/message via CreateNotification
- N1.3: GET/PUT /notifications/preferences, migration 093
- Shared NotificationService with PushService for profile, track, comment handlers
- Fix MockSocialService GetGlobalFeed, GetTrendingHashtags for tests
2026-02-21 16:41:39 +01:00
senke
7ca8d14283
feat(groups): S2.1-S2.5 request join, invite, roles, feed groups, my groups
2026-02-21 05:48:59 +01:00
senke
6cd69f1e62
chore(migrations): add 069, 089, 090, 091 for v0.302
2026-02-21 05:47:14 +01:00
senke
4d37311b79
feat(presence): migration 088 user_presence (P1.1)
2026-02-21 05:22:33 +01:00
senke
8884efdb75
feat(queue): add queue_sessions and shared_queue_items models
2026-02-20 18:39:33 +01:00
senke
eb2f7e0d8c
feat(search): add pg_trgm extension for fuzzy search
2026-02-20 18:34:50 +01:00
senke
1977183718
feat(tracks): add suggested tags endpoint and UI (E4)
...
- Migration 085: tracks.tags TEXT[]
- Track model: Tags pq.StringArray
- GET /tracks/suggested-tags?genre=X&bpm=Y (static suggestions by genre)
- UpdateTrack: support tags
- TrackMetadataEditModal: tags chips + suggestions dropdown
- TrackDetailPageInfo: display tags
- getSuggestedTags, UpdateTrackParams.tags
- MSW: suggested-tags handler, tags in mock track
2026-02-20 15:38:51 +01:00
senke
6b80089706
feat(tracks): add lyrics model and endpoints (E3)
...
- Migration 084: track_lyrics table
- TrackLyrics model, GetLyrics, CreateOrUpdateLyrics in TrackService
- GET /tracks/:id/lyrics, PUT /tracks/:id/lyrics (owner only)
- Frontend: TrackLyricsSection with show/hide toggle, Lyrics tab
- trackService: getLyrics, updateLyrics
- MSW: handlers for lyrics
2026-02-20 15:36:28 +01:00
senke
9be0e6e14f
feat(profile): add profile banner (B1)
2026-02-20 14:56:25 +01:00
senke
32348bebce
feat(developer): add API keys backend (Lot C)
...
- Migration 082: api_keys table (user_id, name, prefix, hashed_key, scopes, last_used_at, expires_at)
- APIKey model, APIKeyService (Create, List, Delete, ValidateAPIKey)
- APIKeyHandler: GET/POST/DELETE /api/v1/developer/api-keys
- AuthMiddleware: X-API-Key and Bearer vza_* accepted as alternative to JWT
- CSRF: skip for API key auth (stateless)
- Key format: vza_ prefix, SHA-256 hashed storage
2026-02-20 00:18:36 +01:00
senke
d93e3a3790
Merge branch 'production-ready-fixes-10504759203042880560' into main
2026-02-17 16:45:16 +01:00
senke
b103a09a25
chore: consolidate CI, E2E, backend and frontend updates
...
- CI: workflows updates (cd, ci), remove playwright.yml
- E2E: global-setup, auth/playlists/profile specs
- Remove playwright-report and test-results artifacts from tracking
- Backend: auth, handlers, services, workers, migrations
- Frontend: components, features, vite config
- Add e2e-results.json to gitignore
- Docs: REMEDIATION_PROGRESS, audit archive
- Rust: chat-server, stream-server updates
2026-02-17 16:43:21 +01:00
senke
7846bbab28
fix(backend): remediation plan — tests, playback_analytics, job queue, gamification
...
Phase 1 - Backend tests:
- Add PlaybackAnalytics to AutoMigrate in setupTestTrackHandler
- Create migration 081_create_playback_analytics.sql for production
- PlaybackAnalyticsService: return ErrTrackNotFound for missing track
- RecordPlay handler: return 404 when track not found
- CreateShare: use RespondSuccess, fix services.ErrTrackNotFound/ErrForbidden
- GetTrackLikes, UnlikeTrack: use RespondSuccess for consistent response
- GetUserLikedTracks test: fix route /users/:id/likes and params
- GetSharedTrack_InvalidToken: set share service in test
Phase 4 - Job queue transcoding:
- Add EnqueueTranscodingJob to JobEnqueuer interface
- Add TypeTranscoding and processTranscodingJob (stub) in JobWorker
- MockJobEnqueuer: implement EnqueueTranscodingJob
Phase 5 - Gamification cleanup:
- Move api_manager.go to internal/api/archive/
- Add archive/README.md documenting archived modules
- Update TODOS_AUDIT.md and FEATURE_STATUS.md
2026-02-17 16:01:45 +01:00
senke
92f432fb9e
chore: consolidate pending changes (Hyperswitch, PostCard, dashboard, stream server, etc.)
2026-02-14 21:45:15 +01:00
senke
2d0403ae14
perf(db): add missing indexes for file_id and cover_art_file_id
2026-02-14 18:32:05 +01:00