diff --git a/src/common/constants.js b/src/common/constants.js
index d06becc..c3c85f1 100644
--- a/src/common/constants.js
+++ b/src/common/constants.js
@@ -72,4 +72,5 @@ export const DEFAULT_CASCADE_PARAMS = {
export const ALL = '*';
export const URL_REGISTRY_DOC_LINK = 'https://docs.openconceptlab.org/en/latest/oclapi/apireference/urlregistry.html'
export const MATCHING_ALGORITHMS_DOC_LINK = 'https://docs.openconceptlab.org/en/latest/oclmap/matching-algorithms.html'
-export const MAPPER_ANNOUNCEMENT_URL = 'https://openconceptlab.org/blog/letter-to-the-ocl-community?utm_source=oclmap&utm_medium=banner&utm_campaign=preview_launch'
+export const MAPPER_ANNOUNCEMENT_LETTER_URL = 'https://openconceptlab.org/blog/letter-to-the-ocl-community?utm_source=oclmap&utm_medium=banner&utm_campaign=subscription_dates'
+export const MAPPER_ANNOUNCEMENT_PRICING_URL = 'https://openconceptlab.org/pricing?utm_source=oclmap&utm_medium=banner&utm_campaign=subscription_dates'
diff --git a/src/components/app/AnnouncementBanner.jsx b/src/components/app/AnnouncementBanner.jsx
index 1b14647..e97a08a 100644
--- a/src/components/app/AnnouncementBanner.jsx
+++ b/src/components/app/AnnouncementBanner.jsx
@@ -6,14 +6,20 @@ import Link from '@mui/material/Link';
import Typography from '@mui/material/Typography';
import CampaignOutlinedIcon from '@mui/icons-material/CampaignOutlined';
import CloseIcon from '@mui/icons-material/Close';
-import { MAPPER_ANNOUNCEMENT_URL } from '../../common/constants';
+import { MAPPER_ANNOUNCEMENT_LETTER_URL, MAPPER_ANNOUNCEMENT_PRICING_URL } from '../../common/constants';
// OCL Online-wide announcement strip, fixed above the app bar and styled like
// the community site's AnnouncementBanner, so it reads as sitting above the
// tool rather than inside it. Same component in TBv3 and TBv2. Update
// announcement.* in the locale bundles (and bump ANNOUNCEMENT_ID) to re-show a
// new announcement to visitors who dismissed a previous one.
-const ANNOUNCEMENT_ID = 'mapper-public-preview-2026-09-v2';
+const ANNOUNCEMENT_ID = 'subscription-dates-2026-10';
+
+// Shown after announcement.text in this order, separated by a middle dot.
+const ANNOUNCEMENT_LINKS = [
+ { labelKey: 'announcement.link_label', href: MAPPER_ANNOUNCEMENT_LETTER_URL },
+ { labelKey: 'announcement.pricing_link_label', href: MAPPER_ANNOUNCEMENT_PRICING_URL },
+];
const DISMISSED_KEY = 'announcementDismissed';
@@ -95,10 +101,15 @@ const AnnouncementBanner = () => {
{t('announcement.title')}
- {t('announcement.text')}{' '}
-
- {t('announcement.link_label')}
-
+ {t('announcement.text')}
+ {ANNOUNCEMENT_LINKS.map(({ labelKey, href }, i) => (
+
+ {i ? ' · ' : ' '}
+
+ {t(labelKey)}
+
+
+ ))}
diff --git a/src/i18n/locales/en/translations.json b/src/i18n/locales/en/translations.json
index 7a089db..7e59445 100644
--- a/src/i18n/locales/en/translations.json
+++ b/src/i18n/locales/en/translations.json
@@ -775,9 +775,10 @@
},
"unknown_error": "Unknown error",
"announcement": {
- "title": "Welcome to the public preview of the OCL Mapper!",
- "text": "Try it now, ahead of the full release coming soon.",
+ "title": "Subscriptions open November 1.",
+ "text": "Existing accounts using premium features have a grace period until December 1.",
"link_label": "Learn more",
+ "pricing_link_label": "See pricing",
"dismiss": "Dismiss"
},
"quota": {
diff --git a/src/i18n/locales/es/translations.json b/src/i18n/locales/es/translations.json
index bc856db..d2d21e8 100644
--- a/src/i18n/locales/es/translations.json
+++ b/src/i18n/locales/es/translations.json
@@ -769,9 +769,10 @@
},
"unknown_error": "Error desconocido",
"announcement": {
- "title": "¡Te damos la bienvenida a la vista previa pública de OCL Mapper!",
- "text": "Pruébalo ahora, antes del lanzamiento completo que llegará pronto.",
+ "title": "Las suscripciones abren el 1 de noviembre.",
+ "text": "Las cuentas existentes que usan funciones premium tienen un periodo de gracia hasta el 1 de diciembre.",
"link_label": "Más información",
+ "pricing_link_label": "Ver precios",
"dismiss": "Descartar"
},
"quota": {
diff --git a/src/i18n/locales/zh/translations.json b/src/i18n/locales/zh/translations.json
index a835a20..fcb6e14 100644
--- a/src/i18n/locales/zh/translations.json
+++ b/src/i18n/locales/zh/translations.json
@@ -767,9 +767,10 @@
},
"unknown_error": "未知错误",
"announcement": {
- "title": "欢迎体验 OCL Mapper 公开预览版!",
- "text": "正式版即将推出,现在就来抢先试用吧。",
+ "title": "订阅将于 11 月 1 日开放。",
+ "text": "使用高级功能的现有账户可享受宽限期至 12 月 1 日。",
"link_label": "了解更多",
+ "pricing_link_label": "查看价格",
"dismiss": "关闭"
},
"quota": {