Skip to content

feat(catalog): let a partner send a section subtitle and title icon (STORE-5421) - #80

Open
kirill-stash wants to merge 1 commit into
mainfrom
store-5421
Open

kirill-stash wants to merge 1 commit into
mainfrom
store-5421

Conversation

@kirill-stash

@kirill-stash kirill-stash commented Oct 29, 2026 •

Copy link
Copy Markdown

https://linear.app/stashgg/issue/STORE-5421/partner-catalog-section-gains-optional-subtitle-and-title-icon-public

Intent

Partners need a place in the catalog contract to send a short subtitle and a title icon for each catalog section, so a partner can show a line such as "Save up to 20% on gems." and an icon beside a section title on its webshop. Both fields are optional, and a partner that sends neither keeps the contract it has today.

flowchart LR
  partner["Partner game server"] --> section["Catalog section: header, subtitle, icon"]
Loading

Beast Intent v0.2.0

Verification

Row State Note
Invalid icon URL sent by a partner not-verified The uri rule matches SectionHeader.icon_image_url; no Stash build reads the field yet.
Partner docs announcement not-verified Published API docs read the served public swagger, so the fields appear there once pie-mono bumps this contract, before web shops render them. Partners hear nothing until the render ships.
What does this touch that I do not know about? ask Does any other consumer read this contract directly and treat a new field as live?

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Note

💥 Blast Radius — Low Risk

Intent: Partners can supply a subtitle and title icon for catalog sections.

The shared catalog contract adds optional fields; responses that omit them retain their existing shape.

Overview
Section.subtitle and Section.icon_image_url add display metadata to GetCatalogResponse.

Shop reach: none beyond adopters — shops whose backends omit both fields keep their existing response shape. Adoption by shop is not enumerated in this checkout.

Data/proto: A partner backend can send catalog.sections[].subtitle and iconImageUrl to the catalog reader for section rendering. Existing responses omit both; readers must adopt the fields before displaying them.

Scope is the shared catalog schema and two generated documentation files; existing field definitions are unchanged.

Not reviewed: 2 generated file(s) — marked linguist-generated in .gitattributes: docs/gen/redoc.v1.html, docs/gen/swagger.v1.json.

Ripley Review v0.1.0 · c79f4be · Report Issue

@kirill-stash
kirill-stash marked this pull request as ready for review October 29, 2026 16:57
repeated Group groups = 4 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Optional offer groups within this section; array order is display order"}];
optional Background background = 5 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Optional background styling for this section"}];
optional google.protobuf.Timestamp display_expiration = 6 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Optional timestamp for display-only section UI such as a countdown (e.g., 'Offers expire in 7d 19h'). Does not change purchase rules; only each offer's own expiration is enforced at purchase time."}];
optional LocalizableText subtitle = 8 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Not shown yet: web shops ignore this field until support ships. Optional short line shown under the section header, resolved to the player's language like any other text field. A subtitle that is absent or resolves to blank is not shown."}];

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

once the submodule bump publishes this, partners read "web shops ignore this field", and nothing in this stack removes the sentence after the render ships. could we drop "Not shown yet: web shops ignore this field until support ships." here and on line 1296, then regenerate? public-api field docs read as built.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Done: the sentence is gone from both fields here, and from empty_state in #81, and the docs are regenerated. Field docs now read as built. The Stash side stays quiet with partners until the shop renders the fields.

— Beast

…STORE-5421)

A partner can show a short line under a webshop section title, such as a
savings line, and an icon beside the title. A catalog section had no
field for either.

Section gains an optional LocalizableText subtitle (8), typed like the
shop banner subtitle, and an optional icon_image_url (9) with the same
URI rule as SectionHeader.icon_image_url. Both are additive.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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