8000 Mobile UI Improvements by ginesdt · Pull Request #161 · sightread/sightread · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Mobile UI Improvements #161

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open

Mobile UI Improvements #161

wants to merge 7 commits into from

Conversation

ginesdt
Copy link
Contributor
@ginesdt ginesdt commented Feb 6, 2025

This PR enhances the user experience on small devices (e.g., smartphones) and touchscreens. The updates ensure better screen utilization, and improved responsiveness across various device sizes.
Changes Made:

  • Zoom out f 8000 or wide screens: Optimized scaling for wider displays. You were not able to see the falling notes.

  • Added fullscreen toggle button: Allows users to easily enter/exit fullscreen to have more space to visualize notes.

  • Added button to hide top menu bar: Gives users the option to hide the top menu for the same purpose.

    • Thin progress bar when the menu is hidden: Displays a minimal progress bar for visual feedback without obstructing the view.
  • Automatically collapse menu for small screens: Prevent icons to paint on top of each other in small screens.

  • Other fixes, like ensure the song list is visible in small screens or make the scrub bar draggable on touchscreens.

Overall, it goes from this:
Before
To this:
After

@samouri
Copy link
Contributor
samouri commented Mar 23, 2025

Sorry for all of the merge conflicts here 😱. Excited to test this out

@@ -76,7 +76,10 @@ function deriveState(state: GivenState): State {
const notes: SongNote[] = items
? (items.filter((i) => i.type === 'note') as SongNote[])
: ([{ midiNote: 21 }, { midiNote: 108 }] as SongNote[])
const { startNote, endNote } = getSongRange({ notes })

const minNotes = Math.floor(Math.max(36, 50 * ( state.windowWidth / state.height)))
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you explain this logic?

Copy link
Contributor
@samouri samouri Mar 23, 2025

Choose a reason for hiding this comment

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

I think the logic I would want is something similar to setting a maxWidth on the piano keys, as well as having a "minHeight" for the falling notes viewport

@samouri samouri mentioned this pull request Mar 23, 2025
@samouri
Copy link
Contributor
samouri commented Mar 23, 2025

@ginesdt: I really like this PR! Would love to incorporate fullscreen mode, make viewing better on phones/iPads, and collapsible toparea. I think this feature would benefit from being split into multiple to make it easier to ensure quality on the different parts.

I've extracted the least controversial commits to a separate feature (#167) for now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants
0