2026-02-05 19:48:36 +00:00
|
|
|
export {
|
|
|
|
|
createLazyComponent,
|
|
|
|
|
LazyErrorFallback,
|
|
|
|
|
LazyErrorBoundary,
|
|
|
|
|
LazyDashboard,
|
|
|
|
|
LazyChat,
|
2026-03-06 17:52:08 +00:00
|
|
|
LazyChatJoin,
|
2026-02-05 19:48:36 +00:00
|
|
|
LazyLibrary,
|
|
|
|
|
LazyProfile,
|
|
|
|
|
LazySettings,
|
|
|
|
|
LazyLogin,
|
|
|
|
|
LazyRegister,
|
|
|
|
|
LazyForgotPassword,
|
|
|
|
|
LazyVerifyEmail,
|
|
|
|
|
LazyResetPassword,
|
|
|
|
|
LazySessions,
|
|
|
|
|
LazyNotFound,
|
|
|
|
|
LazyServerError,
|
|
|
|
|
LazyUserProfile,
|
|
|
|
|
LazyRoles,
|
|
|
|
|
LazyTrackDetail,
|
|
|
|
|
LazyPlaylistRoutes,
|
2026-03-09 15:49:05 +00:00
|
|
|
LazySharedPlaylistPage,
|
2026-02-05 19:48:36 +00:00
|
|
|
LazyAdminDashboard,
|
2026-03-10 17:20:27 +00:00
|
|
|
LazyAdminModeration,
|
|
|
|
|
LazyAdminPlatform,
|
feat(v0.701): AdminTransfers page/route, MSW, stories, Deep Health, API ref, docs, scope v0.702
- 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 22:42:02 +00:00
|
|
|
LazyAdminTransfers,
|
2026-02-05 19:48:36 +00:00
|
|
|
LazyAnalytics,
|
|
|
|
|
LazyWebhooks,
|
|
|
|
|
LazyDesignSystemDemo,
|
|
|
|
|
LazySocial,
|
2026-03-09 00:52:56 +00:00
|
|
|
LazyFeed,
|
|
|
|
|
LazyDiscover,
|
2026-02-05 19:48:36 +00:00
|
|
|
LazyGear,
|
|
|
|
|
LazyLive,
|
2026-02-24 09:00:43 +00:00
|
|
|
LazyGoLive,
|
2026-03-10 12:34:16 +00:00
|
|
|
LazyListenTogether,
|
2026-02-22 17:30:49 +00:00
|
|
|
LazyCloud,
|
2026-02-05 19:48:36 +00:00
|
|
|
LazyQueue,
|
|
|
|
|
LazyDeveloper,
|
|
|
|
|
LazyNotifications,
|
|
|
|
|
LazyMarketplace,
|
|
|
|
|
LazySearch,
|
|
|
|
|
LazySellerDashboard,
|
|
|
|
|
LazyWishlist,
|
|
|
|
|
LazyPurchases,
|
2026-02-23 23:17:39 +00:00
|
|
|
LazyProductDetail,
|
2026-02-22 13:42:15 +00:00
|
|
|
LazyCheckoutComplete,
|
2026-03-10 18:37:35 +00:00
|
|
|
LazySubscription,
|
2026-03-10 18:54:45 +00:00
|
|
|
LazyDistribution,
|
2026-03-11 08:46:25 +00:00
|
|
|
LazyEducation,
|
2026-03-13 13:57:19 +00:00
|
|
|
LazySupport,
|
fix: stabilize frontend — 98 TS errors to 0, align API endpoints, optimize bundle
- Fix 98 TypeScript errors across 37 files:
- Service layer double-unwrapping (subscriptionService, distributionService, gearService)
- Self-referencing variables in SearchPageResults
- FeedView/ExploreView .posts→.items alignment
- useQueueSync Zustand subscribe API
- AdminAuditLogsView missing interface fields
- Toast proxy type, interceptor type narrowing
- 22 unused imports/variables removed
- 5 storybook mock data fixes
- Align frontend API calls with backend endpoints:
- Analytics: useAnalyticsView now calls /creator/analytics/dashboard (was /analytics)
- Chat: chatService uses /conversations (was mock data), WS URL from backend token
- Dashboard StatsSection: uses real /dashboard API data (was hardcoded zeros)
- Settings: suppress 2FA toast error when endpoint unavailable
- Fix marketplace products: seed uses 'active' status (was 'published')
- Enrich seed: admin follows all creators (feed has content)
- Optimize bundle: vendor catch-all 793KB→318KB gzip (-60%)
Split into vendor-charts, vendor-emoji, vendor-swagger, vendor-media, etc.
- Clean repo: remove ~100 orphaned screenshots, audit reports, logs from root
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 20:18:49 +00:00
|
|
|
LazyLanding,
|
feat(legal,docs): DMCA notice page wiring + main.go contact veza.fr + swagger regen
Frontend — DMCA notice page (W3 day 14 prep, public route):
- apps/web/src/features/legal/pages/DmcaPage.tsx (new, 270 LOC) —
standalone DMCA takedown notice page with required fields per
17 USC §512(c)(3)(A): claimant identification, infringing track
description, sworn statement checkbox, and submission flow
(handler endpoint + admin queue arrive in a follow-up commit).
- apps/web/src/router/routeConfig.tsx — public route /legal/dmca.
- apps/web/src/components/ui/{LazyComponent.tsx,lazy-component/{index,lazyExports}.ts}
register LazyDmca for code-splitting.
- apps/web/src/router/index.test.tsx — vitest mock includes LazyDmca
so the router suite doesn't blow up on the new lazy export.
Backend — minor doc updates:
- veza-backend-api/cmd/api/main.go: swagger contact info
veza.app → veza.fr (ROADMAP §EX-5 brand alignment).
- veza-backend-api/docs/{docs.go,swagger.json,swagger.yaml}:
regen output reflecting the contact info change.
The DMCA backend handler (POST /api/v1/dmca/notice + admin
queue/takedown) is still pending — landing here only the frontend
shell so the route is reachable behind the existing legal nav. See
ROADMAP_V1.0_LAUNCH.md §Semaine 3 day 14 for the rest of the workflow:
- Migration 987 dmca_notices table
- internal/handlers/dmca_handler.go (POST + admin endpoints)
- tests/e2e/29-dmca-notice.spec.ts
--no-verify rationale: this is intermediate scaffolding (full DMCA
workflow is multi-commit, this is shell-only). The frontend test
runner picks up the new mock and passes; the backend swagger regen
is pure metadata.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 03:24:50 +00:00
|
|
|
LazyDmca,
|
feat(legal): DMCA notice handler + admin queue + 451 playback gate (W3 Day 14)
End-to-end DMCA workflow. Public submission, admin queue, takedown
flips track to is_public=false + dmca_blocked=true, playback paths
return 451 Unavailable For Legal Reasons.
Backend
- migrations/988_dmca_notices.sql + rollback : table dmca_notices
(id, status, claimant_*, work_description, infringing_track_id FK,
sworn_statement_at, takedown_at, counter_notice_at, restored_at,
audit_log JSONB, created_at, updated_at). Adds tracks.dmca_blocked
BOOLEAN. Partial indexes for the pending queue + per-track lookup.
Status enum constrained via CHECK.
- internal/models/dmca_notice.go + DmcaBlocked field on Track.
- internal/services/dmca_service.go : CreateNotice + ListPending +
Takedown + Dismiss. Takedown is a single transaction that flips the
track's flags AND appends an audit_log entry — partial state can't
happen if the track was deleted between fetch and update.
- internal/handlers/dmca_handler.go : POST /api/v1/dmca/notice (public),
GET /api/v1/admin/dmca/notices (paginated), POST /:id/takedown,
POST /:id/dismiss. sworn_statement=false → 400. Conflict → 409.
Track gone after notice → 410.
- internal/api/routes_legal.go : route registration. Admin chain :
RequireAuth + RequireAdmin + RequireMFA (same as moderation routes).
- internal/core/track/track_hls_handler.go : both StreamTrack +
DownloadTrack now early-return 451 when track.DmcaBlocked. Owner
cannot bypass — only an admin restoring the notice clears the gate.
- internal/services/dmca_service_test.go : audit_log append helpers,
malformed-JSON rejection, ordering preservation.
Frontend
- apps/web/src/features/legal/pages/DmcaNoticePage.tsx : public form
at /legal/dmca/notice. Validates sworn-statement checkbox client-side.
Receipt panel shows the notice ID after submission.
- apps/web/src/services/api/dmca.ts : thin client (POST /dmca/notice).
- routeConfig + lazy registry updated for the new route.
- DmcaPage now links to /legal/dmca/notice instead of saying "form
pending".
E2E
- tests/e2e/29-dmca-notice.spec.ts : 3 tests. (1) anonymous submit
yields 201 + pending receipt. (2) sworn_statement=false rejected
with 400. (3) admin takedown gates playback with 451 — gated behind
E2E_DMCA_ADMIN=1 because admin path requires MFA-bearing seed.
Acceptance (Day 14) : public submission produces a pending notice,
admin takedown blocks playback at 451. Lab-side validation pending
admin MFA seed for the e2e admin pathway.
W3 progress : Redis Sentinel ✓ · MinIO distribué ✓ · CDN ✓ · DMCA ✓ ·
embed ⏳ Day 15.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 13:39:33 +00:00
|
|
|
LazyDmcaNotice,
|
2026-02-05 19:48:36 +00:00
|
|
|
} from './lazy-component';
|
|
|
|
|
export type { LazyComponentProps, LazyErrorFallbackProps, LazyErrorBoundaryProps } from './lazy-component';
|