Skip to content

Add UX optionality settings #42

Description

@thomaseleff

During early stages of implementation, user's may want to "try" out various UX options for various elements. Moving forward, each streamer web-app feature should ship with 2-3 UX options that a user can select between / enable within the Settings tab.

For example, here is a recent anecdote,

Can we keep the checkbox for muting a speaker, but label is as “enabled” and flip its meaning so that checked means that the speaker will play, and unchecked means it will be silent? I keep checking the box to enable a speaker and then remembering that it’s for mute (yes, I know, the word mute is right next to it 🤓). I really like the feature you added last time where the volume slider becomes grayed out when a speaker is disabled / muted.

Why
Allowing for / always shipping with optionality means we can remove the ambiguity of "what we like" by not having to imagine different UX - users can immediately experiment with different UX and report their favorite.

To do

  • Write a new ADR describing the UX optionality approach, update / add coding agent instructions within the ui sub-package noting the optionality requirement
  • Add optionality for existing UX options these should be organized as feature-flags, e.g., FF_DISABLED_VS_MUTE,
    • Remove the existing "host" settings in favor of Features settings
      • Each feature should be organized by the experience, like "Player Selection" and leverage a button group for options, allowing only a single button selection at a time. A button selection would then enable a particular feature-flag and force a refresh.
  • Add the "Player Selection" feature
    • Add FF_DISABLED_VS_MUTE, when default (not enabled), the existing MUTE experience is used, otherwise, a new DISABLED experience is used.
    • For the DISABLED experience, instead of the Mute checkbox, each player should have a toggle to the left of the name, by default enabled. On disable, the card should be minimized to a single line (no more player settings info, no more volume slider). Disabling a player also mutes the player.
  • Add the "Volume" feature
    • Add FF_VOLUME_PERC_OR_DB, when default (not enabled), the existing percentage based volume experience is used, otherwise, a new DB experience is used.
    • For the DB experience, instead of the slider representing a percentage, the slider should represent DB.
    • new For both modes, the UI should also display the current value in small gray font to the right of the slider
    • new For both modes, the UI should also display the material volume_up icon to the left of the slider
  • Route the feature-flag settings through the DAL to ensure they are persisted on restarts

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions