|
Some checks failed
Veza CI / Rust (Stream Server) (push) Successful in 5m28s
Security Scan / Secret Scanning (gitleaks) (push) Failing after 53s
Veza CI / Backend (Go) (push) Failing after 7m59s
Veza CI / Frontend (Web) (push) Failing after 17m43s
Veza CI / Notify on failure (push) Successful in 4s
E2E Playwright / e2e (full) (push) Failing after 20m55s
Three pieces shipping under one banner since they're the day's
deliverables and share no review-time coupling :
1. HLS_STREAMING default flipped true
- config.go : getEnvBool default true (was false). Operators wanting
a lightweight dev / unit-test env explicitly set HLS_STREAMING=false
to skip the transcoder pipeline.
- .env.template : default flipped + comment explaining the opt-out.
- Effect : every new track upload routes through the HLS transcoder
by default ; ABR ladder served via /tracks/:id/master.m3u8.
2. Marketplace 30s pre-listen (creator opt-in)
- migrations/989 : adds products.preview_enabled BOOLEAN NOT NULL
DEFAULT FALSE + partial index on TRUE values. Default off so
adoption is opt-in.
- core/marketplace/models.go : PreviewEnabled field on Product.
- handlers/marketplace.go : StreamProductPreview gains a fall-through.
When no file-based ProductPreview exists AND the product is a
track product AND preview_enabled=true, redirect to the underlying
/tracks/:id/stream?preview=30. Header X-Preview-Cap-Seconds: 30
surfaces the policy.
- core/track/track_hls_handler.go : StreamTrack accepts ?preview=30
and gates anonymous access via isMarketplacePreviewAllowed (raw
SQL probe of products.preview_enabled to avoid the
track→marketplace import cycle ; the reverse arrow already exists).
- Trust model : 30s cap is enforced client-side (HTML5 audio
currentTime). Industry standard for tease-to-buy ; not anti-rip.
Documented in the migration + handler doc comment.
3. FLAC tier preview checkbox (Premium-gated, hidden by default)
- upload-modal/constants.ts : optional flacAvailable on UploadFormData.
- upload-modal/UploadModalMetadataForm.tsx : new optional props
showFlacAvailable + flacAvailable + onFlacAvailableChange.
Checkbox renders only when showFlacAvailable=true ; consumers
pass that based on the user's role/subscription tier (deferred
to caller wiring — Item G phase 4 will replace the role check
with a real subscription-tier check).
- Today the checkbox is a UI affordance only ; the actual lossless
distribution path (ladder + storage class) is post-launch work.
Acceptance (Day 17) : new uploads serve HLS ABR by default ;
products.preview_enabled flag wires anonymous 30s pre-listen ;
checkbox visible to premium users on the upload form. All 4 tested
backend packages pass : handlers, core/track, core/marketplace, config.
W4 progress : Day 16 ✓ · Day 17 ✓ · Day 18 (faceted search) ⏳ ·
Day 19 (HAProxy sticky WS) ⏳ · Day 20 (k6 nightly) ⏳.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| 076_create_gear_items_down.sql | ||
| 077_create_live_streams_down.sql | ||
| 078_add_missing_indexes_down.sql | ||
| 082_create_api_keys_down.sql | ||
| 125_follow_counts_triggers_down.sql | ||
| 129_playlist_editorial_down.sql | ||
| 132_quiet_hours_down.sql | ||
| 133_notification_grouping_down.sql | ||
| 134_weekly_digest_prefs_down.sql | ||
| 900_triggers_and_functions_down.sql | ||
| 910_create_audit_logs_down.sql | ||
| 920_add_performance_indexes_down.sql | ||
| 930_add_missing_foreign_keys_down.sql | ||
| 931_add_refresh_tokens_updated_at_down.sql | ||
| 940_performance_indexes_v0951_down.sql | ||
| 941_notification_prefs_defaults_v0105_down.sql | ||
| 942_create_co_listening_sessions_down.sql | ||
| 943_create_track_stems_down.sql | ||
| 944_create_data_exports_down.sql | ||
| 945_creator_analytics_v0110_down.sql | ||
| 946_advanced_analytics_v0111_down.sql | ||
| 947_moderation_advanced_v0112_down.sql | ||
| 948_marketplace_complete_v0120_down.sql | ||
| 949_subscription_plans_v0121_down.sql | ||
| 950_distribution_platforms_v0122_down.sql | ||
| 951_education_courses_v0123_down.sql | ||
| 960_performance_indexes_v0124_down.sql | ||
| 970_password_login_history_v0130_down.sql | ||
| 971_security_advanced_v0133_down.sql | ||
| 972_seller_kyc_v0135_down.sql | ||
| 973_support_tickets_v0135_down.sql | ||
| 980_void_unpaid_subscriptions_down.sql | ||
| 981_seller_transfers_stripe_reversal_id_down.sql | ||
| 982_seller_transfers_reversal_pending_index_down.sql | ||
| 983_seller_transfers_reversal_pending_not_null_down.sql | ||
| 984_hyperswitch_webhook_log_down.sql | ||
| 985_tracks_storage_backend_down.sql | ||
| 986_user_subscriptions_pending_payment_index_down.sql | ||
| 987_orders_hyperswitch_payment_id_backfill_down.sql | ||
| 988_dmca_notices_down.sql | ||
| 989_products_preview_enabled_down.sql | ||