Drupal 10 is no longer supported
core_version_requirement is now ^11.3 (was ^10 || ^11). Subscription Manager uses core's plugin autowiring (PluginBase::create(), available since 11.3) and will adopt more 11-only APIs as it approaches 1.0.0. Drupal 10 reaches end of life alongside the Drupal 12 release; sites still on 10 should stay on 1.0.0-beta6. Connector modules should raise their own requirement to match when they update for beta7 (#3616936: SubscribeMenuLink declares the user.roles cache context but varies per user, leaking Join/Upgrade labels across users).
The Join/Upgrade label no longer leaks between users
The main-menu link to the subscribe page reads "Join" for a user without a subscription and "Upgrade" for one with. It declared the user.roles cache context, but ownership of a subscription is per user, so on a site with render caching, users sharing the same roles could see whichever label was cached first. The link now declares the user cache context and the subscription_list cache tag, so each user sees their own label and it updates when they subscribe. The connector chooser page received the same per-user cache metadata (and subscription_plan_list and config:subscription_manager.settings tags); without it, Dynamic Page Cache could serve a non-subscriber's chooser page to a subscriber who should have been redirected to their connector.
Sites that overrode the menu link title through core.menu.static_menu_link_overrides or a theme are unaffected. The cache_contexts key that used to sit in subscription_manager.links.menu.yml was never read by core and is gone.
Translatable labels, one source
"Join" and "Upgrade" were hard-coded strings; they are now translatable, through a new method both the menu link and the subscribe page title use:
$label = \Drupal::service('subscription_manager')->subscribeLabel($account); // TranslatableMarkup: "Upgrade" if $account owns any local subscription, else "Join".
Anything rendering that label must vary by the user cache context and depend on the subscription_list cache tag.
For developers subclassing the menu link
SubscribeMenuLink no longer calls \Drupal::currentUser() or \Drupal::service(); its constructor takes AccountInterface $currentUser and SubscriptionManagerService $subscriptionManager after the usual menu-link arguments, and core autowires them. A subclass that adds dependencies declares them the same way — a #[Autowire(service: '…')] attribute names a service that has no interface alias — and needs no create() method.