Skip to content

feat(studio/releases):Phase 2 release/track UI updates + notes#988

Open
ITurres wants to merge 1 commit intomasterfrom
enhancement/stud-release-track-distribute
Open

feat(studio/releases):Phase 2 release/track UI updates + notes#988
ITurres wants to merge 1 commit intomasterfrom
enhancement/stud-release-track-distribute

Conversation

@ITurres
Copy link
Copy Markdown
Member

@ITurres ITurres commented Mar 12, 2026

Pull Request — Issue #TBD

Overview

Update Studio releases/track flow for phase 2: add release type selection, refine
track UI/copy, centralize tooltip copy, introduce release/track types, and add a
README with pending work and cleanup notes.


Files Summary

Total Changes: 18 files

Added (8)
  • apps/studio/src/modules/releases/index.ts
    • Barrel export for release/track modules.
  • apps/studio/src/modules/releases/release/index.ts
    • Release module exports.
  • apps/studio/src/modules/releases/release/types.ts
    • Tentative release type definition.
  • apps/studio/src/modules/releases/track/index.ts
    • Track module exports.
  • apps/studio/src/modules/releases/track/types.ts
    • Tentative track type definition.
  • apps/studio/src/pages/home/releases/README.md
    • Phase 2 release/track workflow notes and cleanup checklist.
  • apps/studio/src/pages/home/releases/constants.tsx
    • Shared tooltip copy for release/track fields.
  • apps/studio/src/pages/home/releases/release/tracks/tabs/PlayTrack.tsx
    • Track playback component used in the track info tab.
Modified (10)
  • apps/studio/src/common/constants.ts
    • Marked tooltip copy as legacy/compatibility.
  • apps/studio/src/components/minting/CoverRemixSample.tsx
    • Updated copy to reference tracks.
  • apps/studio/src/pages/home/releases/ReleaseList.tsx
    • Swapped inline Release type for shared module type.
  • apps/studio/src/pages/home/releases/release/ReleaseDetails.tsx
    • Added release type dropdown; simplified header UI.
  • apps/studio/src/pages/home/releases/release/tracks/AdvancedTrackDetails.tsx
    • Reworked advanced track fields and tooltip copy; cleanup for phase 2.
  • apps/studio/src/pages/home/releases/release/tracks/BasicTrackDetails.tsx
    • Updated track details form structure and labels.
  • apps/studio/src/pages/home/releases/release/tracks/NewTrack.tsx
    • Aligned track creation flow with updated forms.
  • apps/studio/src/pages/home/releases/release/tracks/ViewTrack.tsx
    • Updated tab copy and TODO note for delete behavior.
  • apps/studio/src/pages/home/releases/release/tracks/tabs/TrackInfo.tsx
    • Renamed component, updated labels, and added play track integration.
  • apps/studio/src/pages/home/releases/release/tracks/trackFormTypes.ts
    • Added primary/secondary genre fields.
Deleted (0)
  • None.

Impact

  • Updates release/track UI copy and form structure for phase 2 workflows.
  • Introduces tentative release/track types and shared tooltip constants.
  • Adds a play-track tab component and a README outlining pending backend work.

Testing

  • Not run (local changes only).

Related Issues

  • References: TBD

Dependencies

  • No new dependencies.

Additional Notes

  • Backend model/type alignment and cleanup tasks are tracked in
    apps/studio/src/pages/home/releases/README.md.

--END--

@ITurres ITurres self-assigned this Mar 12, 2026
@ITurres ITurres requested a review from a team as a code owner March 12, 2026 12:53
@ITurres ITurres added documentation Improvements or additions to documentation enhancement New feature or request labels Mar 12, 2026
@github-actions
Copy link
Copy Markdown

Visit the studio preview URL for this PR 🚀 : https://988.artist.preview.newm.io/

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the Studio releases/track workflow UI for “phase 2” by shifting terminology from “song” → “track”, introducing tentative release/track types, centralizing tooltip copy, and adding early UI for release type selection and track playback.

Changes:

  • Added shared release/track type exports under apps/studio/src/modules/releases/**.
  • Centralized tooltip copy into apps/studio/src/pages/home/releases/constants.tsx and updated multiple track/release screens to use it.
  • Refactored track details screens (basic/advanced/info) and introduced a new PlayTrack component for playback in track contexts.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
apps/studio/src/modules/releases/index.ts Barrel exports for release/track module types.
apps/studio/src/modules/releases/release/index.ts Re-export release types.
apps/studio/src/modules/releases/release/types.ts Adds tentative Release type.
apps/studio/src/modules/releases/track/index.ts Re-export track types.
apps/studio/src/modules/releases/track/types.ts Adds tentative Track type.
apps/studio/src/pages/home/releases/README.md Documents phase-2 gaps and cleanup checklist.
apps/studio/src/pages/home/releases/constants.tsx New centralized tooltip copy for releases/tracks.
apps/studio/src/pages/home/releases/release/tracks/tabs/PlayTrack.tsx New track playback component (copy of PlaySong with “track” wording).
apps/studio/src/common/constants.ts Marks old tooltip copy as legacy/back-compat.
apps/studio/src/components/minting/CoverRemixSample.tsx Copy update to “track”.
apps/studio/src/pages/home/releases/ReleaseList.tsx Switches to shared Release type import.
apps/studio/src/pages/home/releases/release/ReleaseDetails.tsx Adds “Release Type” dropdown and tweaks tracks placeholder copy.
apps/studio/src/pages/home/releases/release/tracks/AdvancedTrackDetails.tsx Removes several advanced fields and updates tooltip sourcing.
apps/studio/src/pages/home/releases/release/tracks/BasicTrackDetails.tsx Restructures basic details UI; introduces primary/secondary genre UI.
apps/studio/src/pages/home/releases/release/tracks/NewTrack.tsx Updates initial values (adds primary/secondary genre fields).
apps/studio/src/pages/home/releases/release/tracks/ViewTrack.tsx Copy update (“track” aria-label) + deletion tooltip TODO.
apps/studio/src/pages/home/releases/release/tracks/tabs/TrackInfo.tsx Renames SongInfo → TrackInfo, integrates PlayTrack, updates labels/tooltips.
apps/studio/src/pages/home/releases/release/tracks/trackFormTypes.ts Adds primaryGenre/secondaryGenre to form values.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +6 to +10
explicit: `Explicit content includes strong or discriminatory language,
"or depictions of sex, violence or substance abuse.`,

instrumental: `Tracks without vocals or lyrics should be indicated as an instrumental.
Failure to accurately label the track could result in a declined distribution submission.`,
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FIELDS_TOOLTIP_COPY_TEXT.explicit includes an extra " character and newline/indentation inside the template literal, which will render incorrectly in the tooltip (currently it shows "or depictions...). Please remove the stray quote and normalize whitespace so the tooltip reads as a single sentence/paragraph.

Suggested change
explicit: `Explicit content includes strong or discriminatory language,
"or depictions of sex, violence or substance abuse.`,
instrumental: `Tracks without vocals or lyrics should be indicated as an instrumental.
Failure to accurately label the track could result in a declined distribution submission.`,
explicit: `Explicit content includes strong or discriminatory language, or depictions of sex, violence or substance abuse.`,
instrumental: `Tracks without vocals or lyrics should be indicated as an instrumental.
Failure to accurately label the track could result in a declined distribution submission.`,
Failure to accurately label the track could result in a declined distribution submission.`,

Copilot uses AI. Check for mistakes.
Comment on lines 48 to +52
const audioRef = useRef<HTMLDivElement>(null);
const coCreatorsRef = useRef<HTMLDivElement>(null);
const coverArtUrlRef = useRef<HTMLDivElement>(null);
const agreesToCoverArtGuidelinesRef = useRef<HTMLInputElement>(null);
const descriptionRef = useRef<HTMLTextAreaElement>(null);
const songDetailsRef = useRef<HTMLDivElement>(null);
const trackDetailsRef = useRef<HTMLDivElement>(null);
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

coverArtUrlRef / hasCoverArtChanged / errors.coverArtUrl are still wired into scroll-to-error + cover-art-guidelines flow, but the cover art input was removed from this component. With commonYupValidation.coverArtUrl still required (see NewTrack/EditTrack), users won't be able to satisfy validation. Either re-add the cover art field here (and attach coverArtUrlRef), or remove the requirement and associated logic from the form/validation while in the phase-2 transition.

Copilot uses AI. Check for mistakes.
Comment on lines +214 to 220
<DropdownMultiSelectField
isOptional={ false }
label="SONG TITLE"
name="title"
placeholder="Give your track a name..."
label="PRIMARY GENRE"
name="primaryGenre"
options={ genres ?? [] }
placeholder="Select primary genre"
/>
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The form now collects genres in primaryGenre/secondaryGenre, but NewTrack/EditTrack validation still requires genres (min 1/max 2) and the submit payload still uses genres. As-is, selecting primary/secondary genres here won't satisfy validation or be persisted. Please either (a) map primaryGenre+secondaryGenre back into genres before validation/submit, or (b) update validation + API payloads to use the new fields consistently.

Copilot uses AI. Check for mistakes.
Comment on lines 248 to 251
label="DESCRIPTION"
name="description"
placeholder="Tell us about your song"
ref={ descriptionRef }
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy mismatch: the description placeholder still says "Tell us about your song" even though the rest of this flow has been updated to "track" terminology.

Copilot uses AI. Check for mistakes.
Comment on lines 49 to 53
const releaseDateRef = useRef<HTMLInputElement | null>(null);
const compositionCopyrightRef = useRef<HTMLDivElement | null>(null);
const phonographicCopyrightRef = useRef<HTMLDivElement | null>(null);
const coCreatorsRef = useRef<HTMLDivElement | null>(null);
const ipiRef = useRef<HTMLInputElement | null>(null);
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

releaseDateRef/publicationDateRef/barcodeNumberRef/ipiRef are still kept here (and later errors are handled for these fields), but the corresponding inputs were removed from the UI. NewTrack/EditTrack still validate releaseDate as required, so users can be blocked from submitting with no way to fix the error. Please either restore the removed date/barcode/IPI fields, or update validation to skip/remove them during the phase-2 transition and clean up the now-dead refs/effects.

Copilot uses AI. Check for mistakes.
Comment on lines +167 to +170
primaryGenre: [],
publicationDate: undefined, // TODO: Remove once fully migrated to Track type.
releaseDate: undefined, // TODO: Remove once fully migrated to Track type.
secondaryGenre: [],
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New initial values introduce primaryGenre/secondaryGenre, but the form still maintains genres, coverArtUrl, and required releaseDate validation in the current flow. Since Basic/Advanced details no longer expose inputs for genres/cover art/release date, this will make the New Track form impossible to submit. Please align the Yup schema + submit payload with the new fields (or temporarily skip/remove the required validations until the UI/back-end migration is complete).

Copilot uses AI. Check for mistakes.
name="releaseType"
options={ [...RELEASE_TYPE_OPTIONS] }
placeholder="Select one"
tooltipText="TO BE UPDATED"
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new releaseType field uses placeholder tooltip text ("TO BE UPDATED"), and releaseType is not present in the form's initialValues/validation (it only appears here). Since isOptional={false}, please add a real tooltip (or remove it), include releaseType in initial values (e.g. NONE_OPTION), and decide whether it should be required in the Yup schema so the UI and validation agree.

Suggested change
tooltipText="TO BE UPDATED"
tooltipText="Select the type of this release (e.g., single, EP, album, or compilation)."

Copilot uses AI. Check for mistakes.
Comment on lines 192 to 206
<TextInputField
disabled={ true }
isOptional={ false }
label="GENRE"
label="PRIMARY GENRE"
name="genres"
title={ values.genres?.join(", ") || "" }
/>

<TextInputField
disabled={ true }
isOptional={ true }
label="SECONDARY GENRE"
name="genres"
title={ values.genres?.join(", ") || "" }
/>
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both "PRIMARY GENRE" and "SECONDARY GENRE" fields are bound to the same Formik field (name="genres") and display the same values.genres string. This makes the UI misleading and can also cause the two inputs to overwrite each other if they ever become editable. Please wire these to distinct fields (e.g., primaryGenre/secondaryGenre) or display a single combined "GENRES" field until the backend supports the split.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe include a comment in this section or update the form field naming scheme as well.


{ title && <Typography variant="h3">{ title.toUpperCase() }</Typography> }

{ /* // TODO: Replace with TrackDeletionHelp once API is updated. */ }
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The TODO is currently wrapped as { /* // TODO: ... */ } (double comment markers). Consider using a single block comment ({/* TODO: ... */}) to avoid the extra // noise.

Suggested change
{ /* // TODO: Replace with TrackDeletionHelp once API is updated. */ }
{/* TODO: Replace with TrackDeletionHelp once API is updated. */}

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

@dmkirshon dmkirshon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Look over the copilot review comments, mostly minor fixes, will approve after updates and final review. I didn't see anything major for change otherwise 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants