Skip to content

Keep the previous game visible in the home tile row, with the name and state icon as on the console - #150

Open
Lenny4250gh wants to merge 10 commits into
AnyTogether:mainfrom
Lenny4250gh:main
Open

Lenny4250gh wants to merge 10 commits into
AnyTogether:mainfrom
Lenny4250gh:main

Conversation

@Lenny4250gh

Copy link
Copy Markdown

What

On the home screen, when the selected game is not the first one, the previous game used to fade out completely. It now stays on the left, almost at full brightness and partly past the window edge, so you can see where you came from.

The tile row is also closer to the real console home screen:

  • the tiles are top-aligned and the next ones follow right after the selected one
  • the game's name sits beside the selected tile, under the next tiles
  • the state is shown as a small icon next to the name (no words)

How

lib/ui/home.dart (TileRow):

  • The game right before the selected one keeps an opacity of tilePeekOpacity instead of fading to 0. The ones before it still fade out.
  • From the second game on, the row moves tilePeekShift to the right so the previous tile is mostly visible. On the first game it goes back to 0. The move uses the existing Motion.layout animation.
  • Clicking the previous tile selects it (no change needed: a dimmed tile is still hit-testable).
  • The name moves from the side of the selected tile to its right, and the row height is unchanged.
  • StateLabel has a new iconOnly option, used by the tile row. A plain locked game shows no icon there, since its tile already has the padlock. The hero and the games panel keep the full label.

lib/ui/theme.dart: two new constants, tilePeekShift (48) and tilePeekOpacity (0.85), to tune the effect.

Notes

  • With the shift, the selected tile is no longer aligned with the hero title below it. The real console does the same. Setting tilePeekShift to 0 keeps the alignment and shows a thinner strip of the previous tile.
  • The real console shows more than one previous item. With this shift only one fits on screen, so I kept a single one.
  • Screenshots: before / after (add yours here).
  • Tested: (write here what you tried).
before after
before after

Add constants for tile peek shift and opacity in theme.
Updated the layout and styling of game tiles in the TileRow widget, including adjustments to the height, label positioning, and text properties.
Updated tile peek shift and opacity values for UI.
Updated the layout and structure of the game tile row, adjusting the positioning of labels and icons for better alignment and clarity.
@Lenny4250gh

Copy link
Copy Markdown
Author

waiting for updated-goldens to finish loading

@Lenny4250gh

Lenny4250gh commented Nov 14, 2026 •

Copy link
Copy Markdown
Author

@utkuhalis i uploaded the updated-goldens, try checking now

@utkuhalis

Copy link
Copy Markdown
Collaborator

Thanks a lot for this, Lenny. The previous tile peeking in from the edge is a nice touch, and the change is small and easy to follow. A few things before it can go in.

Required changes

  1. The golden images. On the first head the macOS golden job failed on 173 images, because every screen that shows Home changes, also the ones where Home is only the backdrop behind a panel (controllers, settings, the encryption sheet and more). Thanks for uploading new ones. The 98 you uploaded are all among those 173, so nothing unrelated changed, but the other 75 are still the old images (from settings_search_tr.png on in the alphabet, through the together_, update_notice_ and unpack_* ones). GitHub's web upload takes at most 100 files at a time, which is probably where it stopped. Please do not upload the rest by hand. Once the code changes below are in, we will push your branch to our repository, run the golden workflow there and commit the full set, so every image comes from the same runner. Please also add one golden with the second game selected (lib/ui/home.dart:765, where the peek starts), so the previous tile and the shift are pinned by a picture.
  2. The state words have to stay reachable. With iconOnly (home.dart:1198-1199) the tile row shows a bare Icon without a semanticLabel, so a screen reader says nothing and a pointer gets no hint of what the icon means. Please give the Icon semanticLabel: text and wrap it in a Tooltip with the same text. The Mac port does the same with an accessibility label and a help tag.
  3. One true description. theme.dart:120-121 says the previous tile is "dimmed" and "almost at full brightness" in one sentence, and home.dart:764 calls it dimmed as well. At 0.85 it is the second one. Please make both comments say the same thing.
  4. A test in the style of test/ui/mouse_test.dart or drag_test.dart: with the second game selected, the previous tile's opacity is tilePeekOpacity, a tap on it selects that game, the one before it is at 0, and the label shows only the icon (none for a plain locked game).
  5. The PR text still has the placeholders "Screenshots: before / after (add yours here)" and "Tested: (write here what you tried)". Please fill in what you tried, on which system and at which window size.

Nice to have

  1. The label starts at leading + peek + large + gap * 0.75 (home.dart:842) while the next tile starts at + gap, so the name sits 4 px left of the tile column above it. Using gap would line them up.
  2. top: large - 28 * scale (home.dart:843) ties the name to a fixed number rather than to the text's height. In the folder row (large 148, small 112) that leaves 8 px between the tiles and the name, in the main row about 30 px. Something like large - lineHeight would keep both rows alike.
  3. Going from the first to the second game moves the selected tile 48 px as well as the row, and from then on the selected tile no longer lines up with the hero title. You mention this in the notes. We are fine with it for now, but if you find a way to keep the selected tile in one place on every game, we would take it.

The Mac launcher gets the same change in its own PR, with the same numbers, so the two launchers stay alike. It lands together with this one.

@Lenny4250gh

Lenny4250gh commented Nov 14, 2026 •

Copy link
Copy Markdown
Author

@utkuhalis changes made. You can now regenerate the golden files in your repository including home_previous_tile.png, which does not yet exist (and is the reason the macOS job is failing: https://github.com/Lenny4250gh/AnyPS5-Desktop-fork1/actions/runs/43624812527)

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