rebrand: Workavia Calendar

User-facing strings:
- "Twake Calendar" -> "Workavia Calendar" in 4 locales (en/fr/ru/vi)
- public/index.html <title>
- public/manifest.appdata (name + short_name)
- VALARM description string (sent to participants in iCal)

Defaults / neutralization:
- Video conference fallback URL: meet.linagora.com -> meet.jit.si
  (still overridable via window.VIDEO_CONFERENCE_BASE_URL or .env.js)

Kept intact (design system / non user-facing):
- @linagora/twake-mui package + TwakeMuiThemeProvider class
  (primary colors preserved per requirement)
- public/calendar.svg, app-*.svg icons (no embedded text)
This commit is contained in:
stanig2106
2026-04-29 18:18:34 +02:00
parent d16e7941ad
commit fe15fc076a
8 changed files with 13 additions and 13 deletions
+1 -1
View File
@@ -18,7 +18,7 @@
--> -->
<link rel="stylesheet" href="<%= assetPrefix %>/fonts/fonts.css" /> <link rel="stylesheet" href="<%= assetPrefix %>/fonts/fonts.css" />
<title>Twake Calendar</title> <title>Workavia Calendar</title>
<script src="<%= assetPrefix %>/.env.js"></script> <script src="<%= assetPrefix %>/.env.js"></script>
<script src="<%= assetPrefix %>/appList.js"></script> <script src="<%= assetPrefix %>/appList.js"></script>
</head> </head>
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"short_name": "Twake Calendar", "short_name": "Workavia Calendar",
"name": "Twake Calendar App", "name": "Workavia Calendar",
"icons": [ "icons": [
{ {
"src": "favicon.ico", "src": "favicon.ico",
+1 -1
View File
@@ -41,7 +41,7 @@ export function makeVevent(
'description', 'description',
{}, {},
'text', 'text',
'This is an automatic alarm sent by Twake Calendar' 'This is an automatic alarm sent by Workavia Calendar'
] ]
] ]
vevent.push([['valarm', valarm]]) vevent.push([['valarm', valarm]])
+2 -2
View File
@@ -268,7 +268,7 @@
"notifications": "Notifications", "notifications": "Notifications",
"sync": "Sync", "sync": "Sync",
"language": "Language", "language": "Language",
"languageDescription": "This will be the language used in your Twake Calendar", "languageDescription": "This will be the language used in your Workavia Calendar",
"languageSelector": "Language selector", "languageSelector": "Language selector",
"languageUpdateError": "Failed to update language", "languageUpdateError": "Failed to update language",
"timeZone": "Timezone", "timeZone": "Timezone",
@@ -402,7 +402,7 @@
}, },
"mobile": { "mobile": {
"comingSoon": { "comingSoon": {
"subtitle": "Please open Twake Calendar on a desktop to enjoy all features. A fully optimized mobile version is coming soon.", "subtitle": "Please open Workavia Calendar on a desktop to enjoy all features. A fully optimized mobile version is coming soon.",
"title": "Mobile version coming soon" "title": "Mobile version coming soon"
} }
}, },
+2 -2
View File
@@ -269,7 +269,7 @@
"notifications": "Notifications", "notifications": "Notifications",
"sync": "Synchronisation", "sync": "Synchronisation",
"language": "Langue", "language": "Langue",
"languageDescription": "Ce sera la langue utilisée dans votre Twake Calendar", "languageDescription": "Ce sera la langue utilisée dans votre Workavia Calendar",
"languageSelector": "Sélecteur de langue", "languageSelector": "Sélecteur de langue",
"languageUpdateError": "Échec de la mise à jour de la langue", "languageUpdateError": "Échec de la mise à jour de la langue",
"timeZone": "Fuseau horaire", "timeZone": "Fuseau horaire",
@@ -403,7 +403,7 @@
}, },
"mobile": { "mobile": {
"comingSoon": { "comingSoon": {
"subtitle": "Veuillez ouvrir Twake Calendar sur un ordinateur pour profiter de toutes les fonctionnalités. Une version mobile optimisée arrive bientôt.", "subtitle": "Veuillez ouvrir Workavia Calendar sur un ordinateur pour profiter de toutes les fonctionnalités. Une version mobile optimisée arrive bientôt.",
"title": "Version mobile bientôt disponible" "title": "Version mobile bientôt disponible"
} }
}, },
+2 -2
View File
@@ -269,7 +269,7 @@
"notifications": "Уведомления", "notifications": "Уведомления",
"sync": "Синхронизация", "sync": "Синхронизация",
"language": "Язык", "language": "Язык",
"languageDescription": "Это будет язык, используемый в вашем Twake Calendar", "languageDescription": "Это будет язык, используемый в вашем Workavia Calendar",
"languageSelector": "Выбор языка", "languageSelector": "Выбор языка",
"languageUpdateError": "Не удалось обновить язык", "languageUpdateError": "Не удалось обновить язык",
"timeZone": "Часовой пояс", "timeZone": "Часовой пояс",
@@ -403,7 +403,7 @@
}, },
"mobile": { "mobile": {
"comingSoon": { "comingSoon": {
"subtitle": "Пожалуйста, откройте Twake Calendar на компьютере, чтобы воспользоваться всеми функциями. Полностью оптимизированная мобильная версия скоро появится.", "subtitle": "Пожалуйста, откройте Workavia Calendar на компьютере, чтобы воспользоваться всеми функциями. Полностью оптимизированная мобильная версия скоро появится.",
"title": "Мобильная версия скоро будет доступна" "title": "Мобильная версия скоро будет доступна"
} }
}, },
+2 -2
View File
@@ -267,7 +267,7 @@
"notifications": "Thông báo", "notifications": "Thông báo",
"sync": "Đồng bộ", "sync": "Đồng bộ",
"language": "Ngôn ngữ", "language": "Ngôn ngữ",
"languageDescription": "Đây sẽ là ngôn ngữ được sử dụng trong Twake Calendar của bạn", "languageDescription": "Đây sẽ là ngôn ngữ được sử dụng trong Workavia Calendar của bạn",
"languageSelector": "Chọn ngôn ngữ", "languageSelector": "Chọn ngôn ngữ",
"languageUpdateError": "Không cập nhật được ngôn ngữ", "languageUpdateError": "Không cập nhật được ngôn ngữ",
"timeZone": "Múi giờ", "timeZone": "Múi giờ",
@@ -401,7 +401,7 @@
}, },
"mobile": { "mobile": {
"comingSoon": { "comingSoon": {
"subtitle": "Vui lòng mở Twake Calendar trên máy tính để sử dụng đầy đủ tính năng. Phiên bản di động được tối ưu hóa hoàn toàn sẽ sớm ra mắt.", "subtitle": "Vui lòng mở Workavia Calendar trên máy tính để sử dụng đầy đủ tính năng. Phiên bản di động được tối ưu hóa hoàn toàn sẽ sớm ra mắt.",
"title": "Phiên bản di động sắp ra mắt" "title": "Phiên bản di động sắp ra mắt"
} }
}, },
+1 -1
View File
@@ -25,7 +25,7 @@ export function generateMeetingId(): string {
*/ */
export function generateMeetingLink(baseUrl?: string): string { export function generateMeetingLink(baseUrl?: string): string {
const base = const base =
baseUrl || window.VIDEO_CONFERENCE_BASE_URL || 'https://meet.linagora.com' baseUrl || window.VIDEO_CONFERENCE_BASE_URL || 'https://meet.jit.si'
const meetingId = generateMeetingId() const meetingId = generateMeetingId()
return `${base}/${meetingId}` return `${base}/${meetingId}`
} }