PvZ listings and featured banner languages
The public banner previously requested Spanish and Japanese slot lists, while the admin editor could only configure English and Chinese. With no matching rows, featured-world slides disappeared.
The banner now uses an active custom lineup for the viewer's language, or the English lineup when none is active. Simplified and Traditional Chinese share the Chinese lineup. Clearing all custom slots restores English inheritance. Scheduled overrides apply only within their active dates.
For a language-group slot, the server selects an eligible published variant in the viewer's language, then English, then an available source-language variant when the group has neither. Primary variants win within a language. All publication, visibility, age-rating and block filters run before this choice. An exact-world slot remains an exact pin. Responses return the selected row's actual ID and metadata; the ordinary Discover feed's language scope is unchanged.
The admin editor supports English, Chinese, Spanish and Japanese custom lineups. Slot saves now validate dates before an atomic upsert. Traditional Chinese banner titles and summaries use the existing script converter.
PvZ listing changes
- English and the user's final Chinese copy are unchanged.
- Japanese overview refreshed; it explicitly notes that the game UI is English.
- Spanish published variant added to the existing language group:
b77d34d8-e9f4-455f-9ea2-c87a8ac9d423. - Spanish and Japanese point to the same
/pvz/game. Native game code and assets are unchanged. - No featured slots, announcements or promotions were changed. PvZ is not placed on the banner by this release.
The scoped production metadata operation is packages/server/scripts/update-pvz-listing-locales.mjs. It previews by default, requires an explicit connection and backup path to apply, and preserves the English/Chinese rows and native game definitions.
Verification
- 28 targeted tests passed: lineup inheritance, scheduled overrides, real localized row selection, English fallback, exact pins, group deduplication and existing public-feed guards.
- Full monorepo typecheck and build passed.
- Browser verification against the production app build with mocked account/banner data passed: all four admin language sections, Spanish slot picker and Traditional Chinese title/summary conversion.
- Spanish and Japanese public world metadata read back successfully after the database update.
Local QA artifacts and the pre-update backup are under output/pvz-banner-locales-20260913/ in the main workspace. Database credentials are never stored in the operation script or report.
