Normalize alternate-title formatting across public game surfaces #351

Closed
opened 2026-06-03 11:12:57 -05:00 by Codex · 1 comment
Member

Alternate-title display needs to use a consistent, readable label/value format across public game surfaces.

The Notion report says alternate-title formatting is off when looking at games: the display looks like the raw game edit input, with a pipe-style separator and no clear colon/label presentation. The same formatting issue is also visible on a game profile page.

The Laravel checkout had multiple alternate-title rendering paths. resources/views/components/site/game-card.blade.php split alt_titles on commas/semicolons and rendered an ALTERNATIVE TITLE(S): label before the joined values, while game profile metadata was built in App\Support\GameInformationPresenter and rendered through resources/views/pages/games/partials/information-card.blade.php as a definition-list row. This has been normalized so users see polished alternate-title text instead of raw pipe separators or inconsistent label punctuation.

Related but separate: #45 covers apostrophes/backslashes in alternate titles. This issue is for label/separator/layout formatting.

Source: https://app.notion.com/p/3742f7baaae480a7873cda1f4b89c7eb

Scope

  • Alternate-title display on public game cards/search results/newly-added/platform game lists.
  • Alternate-title display on public game profile pages.
  • Shared display parsing/formatting behavior for games.alt_titles values separated by pipe characters.
  • Commas and semicolons inside games.alt_titles are preserved as title punctuation, not treated as display separators.
  • Singular/plural label text for one vs multiple alternate titles.
  • Light/dark mode readability for the label and values.
  • Existing search matching, admin add/edit game forms, and stored alt_titles persistence remain unchanged.

Acceptance Criteria

  • Game cards show alternate titles with a clear label and separator, such as Alternative Title: Foo or Alternative Titles: Foo, Bar.
  • Game profile pages show alternate titles with the same polished label/value convention and no raw pipe-style formatting.
  • Alternate-title values are trimmed before display.
  • Multiple alternate titles are joined consistently for display.
  • Empty alternate-title values are filtered out and do not create dangling punctuation.
  • Titles containing apostrophes or other normal punctuation still display safely and readably.
  • Existing game search behavior continues to match alternate titles.
  • Admin add/edit game forms continue to save existing alternate-title input without an unrelated workflow change.
  • The UI remains readable in light and dark mode.

Test Coverage Required

  • Feature test confirming public game cards render alternate titles with the expected label and punctuation.
  • Feature test confirming game profile pages render alternate titles with the expected label and punctuation.
  • Regression test confirming pipe-separated stored values render as clean comma-separated display values.
  • Regression test confirming commas and semicolons are preserved as normal title punctuation.
  • Regression test confirming blank alternate-title segments are ignored.
  • Regression test confirming alternate titles with apostrophes render without raw escaping artifacts, coordinated with #45 for deeper apostrophe/backslash cleanup.
  • Regression test confirming alternate-title search matching still works.
  • Run focused affected tests with php artisan test --compact.
  • Run vendor/bin/pint --dirty --format agent before closing the issue if PHP files are changed.

Progress Checklist

  • games.alt_titles storage exists
  • Game card alternate-title rendering exists
  • Game profile information-row rendering exists
  • Existing search matches alternate titles
  • Decide the canonical alternate-title label/value presentation
  • Normalize alternate-title parsing for display
  • Update game card/list display if needed
  • Update game profile display
  • Add/adjust focused tests for cards, profiles, separators, blanks, and search regression
Alternate-title display needs to use a consistent, readable label/value format across public game surfaces. The Notion report says alternate-title formatting is off when looking at games: the display looks like the raw game edit input, with a pipe-style separator and no clear colon/label presentation. The same formatting issue is also visible on a game profile page. The Laravel checkout had multiple alternate-title rendering paths. `resources/views/components/site/game-card.blade.php` split `alt_titles` on commas/semicolons and rendered an `ALTERNATIVE TITLE(S):` label before the joined values, while game profile metadata was built in `App\Support\GameInformationPresenter` and rendered through `resources/views/pages/games/partials/information-card.blade.php` as a definition-list row. This has been normalized so users see polished alternate-title text instead of raw pipe separators or inconsistent label punctuation. Related but separate: #45 covers apostrophes/backslashes in alternate titles. This issue is for label/separator/layout formatting. Source: https://app.notion.com/p/3742f7baaae480a7873cda1f4b89c7eb ## Scope - Alternate-title display on public game cards/search results/newly-added/platform game lists. - Alternate-title display on public game profile pages. - Shared display parsing/formatting behavior for `games.alt_titles` values separated by pipe characters. - Commas and semicolons inside `games.alt_titles` are preserved as title punctuation, not treated as display separators. - Singular/plural label text for one vs multiple alternate titles. - Light/dark mode readability for the label and values. - Existing search matching, admin add/edit game forms, and stored `alt_titles` persistence remain unchanged. ## Acceptance Criteria - Game cards show alternate titles with a clear label and separator, such as `Alternative Title: Foo` or `Alternative Titles: Foo, Bar`. - Game profile pages show alternate titles with the same polished label/value convention and no raw pipe-style formatting. - Alternate-title values are trimmed before display. - Multiple alternate titles are joined consistently for display. - Empty alternate-title values are filtered out and do not create dangling punctuation. - Titles containing apostrophes or other normal punctuation still display safely and readably. - Existing game search behavior continues to match alternate titles. - Admin add/edit game forms continue to save existing alternate-title input without an unrelated workflow change. - The UI remains readable in light and dark mode. ## Test Coverage Required - Feature test confirming public game cards render alternate titles with the expected label and punctuation. - Feature test confirming game profile pages render alternate titles with the expected label and punctuation. - Regression test confirming pipe-separated stored values render as clean comma-separated display values. - Regression test confirming commas and semicolons are preserved as normal title punctuation. - Regression test confirming blank alternate-title segments are ignored. - Regression test confirming alternate titles with apostrophes render without raw escaping artifacts, coordinated with #45 for deeper apostrophe/backslash cleanup. - Regression test confirming alternate-title search matching still works. - Run focused affected tests with `php artisan test --compact`. - Run `vendor/bin/pint --dirty --format agent` before closing the issue if PHP files are changed. ## Progress Checklist - [x] `games.alt_titles` storage exists - [x] Game card alternate-title rendering exists - [x] Game profile information-row rendering exists - [x] Existing search matches alternate titles - [x] Decide the canonical alternate-title label/value presentation - [x] Normalize alternate-title parsing for display - [x] Update game card/list display if needed - [x] Update game profile display - [x] Add/adjust focused tests for cards, profiles, separators, blanks, and search regression
jimmyb self-assigned this 2026-06-03 18:18:58 -05:00
Author
Member

Implemented and pushed in b6906bf on dev.

Notes for future readers:

  • Public alternate-title display now uses a shared App\Support\GameAlternateTitles formatter.
  • Display parsing intentionally splits only on the pipe character (|). Commas and semicolons are preserved as normal title punctuation.
  • Game cards/search results/newly-added/platform lists and game profile metadata now share the same polished label/value convention: Alternative Title: Foo or Alternative Titles: Foo, Bar.
  • Storage, admin add/edit forms, and search matching were left unchanged.

Verification:

  • vendor/bin/pint --format agent app/Support/GameAlternateTitles.php app/Support/GameInformationPresenter.php tests/Feature/NewlyAddedGamesPageTest.php tests/Feature/PlatformIndexTest.php tests/Feature/GameProfileTest.php tests/Feature/GameSearchTest.php
  • php artisan test --compact tests/Feature/NewlyAddedGamesPageTest.php tests/Feature/PlatformIndexTest.php tests/Feature/GameProfileTest.php tests/Feature/GameSearchTest.php
  • Result: 36 passed, 314 assertions.
Implemented and pushed in `b6906bf` on `dev`. Notes for future readers: - Public alternate-title display now uses a shared `App\Support\GameAlternateTitles` formatter. - Display parsing intentionally splits only on the pipe character (`|`). Commas and semicolons are preserved as normal title punctuation. - Game cards/search results/newly-added/platform lists and game profile metadata now share the same polished label/value convention: `Alternative Title: Foo` or `Alternative Titles: Foo, Bar`. - Storage, admin add/edit forms, and search matching were left unchanged. Verification: - `vendor/bin/pint --format agent app/Support/GameAlternateTitles.php app/Support/GameInformationPresenter.php tests/Feature/NewlyAddedGamesPageTest.php tests/Feature/PlatformIndexTest.php tests/Feature/GameProfileTest.php tests/Feature/GameSearchTest.php` - `php artisan test --compact tests/Feature/NewlyAddedGamesPageTest.php tests/Feature/PlatformIndexTest.php tests/Feature/GameProfileTest.php tests/Feature/GameSearchTest.php` - Result: 36 passed, 314 assertions.
Codex 2026-06-03 18:38:51 -05:00
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MyVideoGameList/myvideogamelist.com#351
No description provided.