From d168bfd9e48467bdb0748f7ca70d71071bfc04b0 Mon Sep 17 00:00:00 2001 From: senke Date: Fri, 13 Mar 2026 16:23:18 +0100 Subject: [PATCH] =?UTF-8?q?feat(v1.0.0-rc1):=20release=20candidate=20?= =?UTF-8?q?=E2=80=94=20GO/NO-GO=20audit,=20dark=20pattern=20fix,=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TASK-RC-001: GO/NO-GO checklist with evidence (16/21 GO, 5 staging-dependent) TASK-RC-002: Dark pattern audit — removed public play/like/follower counts - TrackDetailPageCoverAndActions: stats visible only to creator - TrackList: removed public play count column - TrackSearchResults: removed play_count/like_count display - UserCard: removed public follower count - SearchPageResults: removed followers_count display TASK-RC-003: Privacy policy (RGPD-compliant, docs/PRIVACY_POLICY.md) TASK-RC-004: Discovery algorithm documentation (auditable, docs/DISCOVERY_ALGORITHM.md) TASK-RC-005: Branch release ready (CI/CD validation pending) TASK-RC-006: Re-pentest noted as optional/staging-dependent Co-Authored-By: Claude Opus 4.6 --- .../src/components/dashboard/TrackList.tsx | 7 +- apps/web/src/components/user/UserCard.tsx | 7 +- .../search-page/SearchPageResults.tsx | 4 +- .../tracks/components/TrackSearchResults.tsx | 5 +- .../TrackDetailPageCoverAndActions.tsx | 44 +++--- docs/DISCOVERY_ALGORITHM.md | 96 ++++++++++++ docs/GO_NO_GO_CHECKLIST_v1.0.0.md | 78 ++++++++++ docs/PRIVACY_POLICY.md | 142 ++++++++++++++++++ 8 files changed, 343 insertions(+), 40 deletions(-) create mode 100644 docs/DISCOVERY_ALGORITHM.md create mode 100644 docs/GO_NO_GO_CHECKLIST_v1.0.0.md create mode 100644 docs/PRIVACY_POLICY.md diff --git a/apps/web/src/components/dashboard/TrackList.tsx b/apps/web/src/components/dashboard/TrackList.tsx index e4ed5e517..47e32a80d 100644 --- a/apps/web/src/components/dashboard/TrackList.tsx +++ b/apps/web/src/components/dashboard/TrackList.tsx @@ -160,12 +160,7 @@ export const TrackList: React.FC = () => {
- - {' '} - {(track.plays || track.play_count) > 1000 - ? `${((track.plays || track.play_count) / 1000).toFixed(1)}k` - : track.plays || track.play_count} - + {/* Play count removed from public display (ORIGIN_UI_UX_SYSTEM §13.4) */} {track.duration} diff --git a/apps/web/src/components/user/UserCard.tsx b/apps/web/src/components/user/UserCard.tsx index 500da93bb..6aba54607 100644 --- a/apps/web/src/components/user/UserCard.tsx +++ b/apps/web/src/components/user/UserCard.tsx @@ -59,12 +59,7 @@ export const UserCard: React.FC = ({
{user.stats?.tracks || 0}
Tracks
-
-
- {user.stats?.followers || 0} -
-
Fans
-
+ {/* Follower count removed from public display (ORIGIN_UI_UX_SYSTEM §13.4) */}
diff --git a/apps/web/src/features/search/components/search-page/SearchPageResults.tsx b/apps/web/src/features/search/components/search-page/SearchPageResults.tsx index 63a614428..82d168f16 100644 --- a/apps/web/src/features/search/components/search-page/SearchPageResults.tsx +++ b/apps/web/src/features/search/components/search-page/SearchPageResults.tsx @@ -118,9 +118,7 @@ export function SearchPageResults({ results, query = '', activeTab = 'all', onTa

{highlightMatch(artist.username, query)}

-

- {artist.followers_count ?? 0} followers -

+ {/* Follower count removed from public display (ORIGIN_UI_UX_SYSTEM §13.4) */} ))}
diff --git a/apps/web/src/features/tracks/components/TrackSearchResults.tsx b/apps/web/src/features/tracks/components/TrackSearchResults.tsx index cc41edb2b..992ffe529 100644 --- a/apps/web/src/features/tracks/components/TrackSearchResults.tsx +++ b/apps/web/src/features/tracks/components/TrackSearchResults.tsx @@ -222,10 +222,7 @@ export function TrackSearchResults({ )} -
- {track.play_count} écoutes - {track.like_count} likes -
+ {/* Popularity metrics hidden from public display (ORIGIN_UI_UX_SYSTEM §13.4, §14.2) */} diff --git a/apps/web/src/features/tracks/pages/track-detail-page/TrackDetailPageCoverAndActions.tsx b/apps/web/src/features/tracks/pages/track-detail-page/TrackDetailPageCoverAndActions.tsx index 075f0e8ac..52eaee68c 100644 --- a/apps/web/src/features/tracks/pages/track-detail-page/TrackDetailPageCoverAndActions.tsx +++ b/apps/web/src/features/tracks/pages/track-detail-page/TrackDetailPageCoverAndActions.tsx @@ -180,27 +180,29 @@ export function TrackDetailPageCoverAndActions({ - {/* Stats */} -
- - - {playCount.toLocaleString()} - Plays - - - - Likes - -
+ {/* Stats — private metrics visible only to creator (ORIGIN_UI_UX_SYSTEM §13.4, §14.2) */} + {isCreator && ( +
+ + + {playCount.toLocaleString()} + Plays + + + + Likes + +
+ )} {/* Listen Together modal (v0.10.7 F481) */}