Merge pull request #4852 from pangeachat/4831-add-request-regeneration-button-to-latest-bot-message

feat: add button to regenerate latest bot message
This commit is contained in:
ggurdin 2025-12-15 13:13:30 -05:00 committed by GitHub
commit c3f6682fca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
58 changed files with 642 additions and 54 deletions

View file

@ -1,6 +1,6 @@
{
"@@locale": "ar",
"@@last_modified": "2025-12-15 12:08:55.118158",
"@@last_modified": "2025-12-15 13:10:00.150906",
"about": "حول",
"@about": {
"type": "String",
@ -10908,5 +10908,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "طلب إعادة التوليد",
"optionalRegenerateReason": "(اختياري) السبب",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1915,7 +1915,7 @@
"playWithAI": "Пакуль гуляйце з ШІ",
"courseStartDesc": "Pangea Bot гатовы да працы ў любы час!\n\n...але навучанне лепш з сябрамі!",
"@@locale": "be",
"@@last_modified": "2025-12-15 12:08:42.207839",
"@@last_modified": "2025-12-15 13:09:51.707905",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11790,5 +11790,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Запытаць рэгенерацыю",
"optionalRegenerateReason": "(Неабавязкова) Прычына",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:09:08.421474",
"@@last_modified": "2025-12-15 13:10:11.203206",
"about": "সম্পর্কে",
"@about": {
"type": "String",
@ -11795,5 +11795,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "পুনর্জন্মের জন্য অনুরোধ করুন",
"optionalRegenerateReason": "(ঐচ্ছিক) কারণ",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4282,7 +4282,7 @@
"joinPublicTrip": "མི་ཚེས་ལ་ལོག་འབད།",
"startOwnTrip": "ངེད་རང་གི་ལོག་ལ་སྦྱོར་བཅོས།",
"@@locale": "bo",
"@@last_modified": "2025-12-15 12:09:05.659457",
"@@last_modified": "2025-12-15 13:10:08.949661",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -10445,5 +10445,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Begär regenerering",
"optionalRegenerateReason": "(Valfritt) Orsak",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:43.538573",
"@@last_modified": "2025-12-15 13:09:52.878217",
"about": "Quant a",
"@about": {
"type": "String",
@ -10715,5 +10715,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Sol·licitar regeneració",
"optionalRegenerateReason": "(Opcional) Motiu",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "cs",
"@@last_modified": "2025-12-15 12:08:39.446987",
"@@last_modified": "2025-12-15 13:09:49.179864",
"about": "O aplikaci",
"@about": {
"type": "String",
@ -11298,5 +11298,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Žádat o regeneraci",
"optionalRegenerateReason": "(Volitelné) Důvod",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1934,7 +1934,7 @@
"playWithAI": "Leg med AI for nu",
"courseStartDesc": "Pangea Bot er klar til at starte når som helst!\n\n...men læring er bedre med venner!",
"@@locale": "da",
"@@last_modified": "2025-12-15 12:08:11.060625",
"@@last_modified": "2025-12-15 13:09:27.476427",
"@aboutHomeserver": {
"type": "String",
"placeholders": {
@ -11752,5 +11752,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Anmod om regenerering",
"optionalRegenerateReason": "(Valgfri) Årsag",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "de",
"@@last_modified": "2025-12-15 12:08:31.951599",
"@@last_modified": "2025-12-15 13:09:43.173559",
"alwaysUse24HourFormat": "true",
"@alwaysUse24HourFormat": {
"description": "Set to true to always display time of day in 24 hour format."
@ -10698,5 +10698,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Anforderung der Regeneration",
"optionalRegenerateReason": "(Optional) Grund",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4460,7 +4460,7 @@
"playWithAI": "Παίξτε με την Τεχνητή Νοημοσύνη προς το παρόν",
"courseStartDesc": "Ο Pangea Bot είναι έτοιμος να ξεκινήσει οποιαδήποτε στιγμή!\n\n...αλλά η μάθηση είναι καλύτερη με φίλους!",
"@@locale": "el",
"@@last_modified": "2025-12-15 12:09:15.177117",
"@@last_modified": "2025-12-15 13:10:16.812716",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11749,5 +11749,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Αίτημα αναγέννησης",
"optionalRegenerateReason": "(Προαιρετικό) Λόγος",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -5000,5 +5000,7 @@
"courseParticipantTooltip": "This is everybody in this course. Click on any users avatar and “start conversation” to send a DM.",
"chatParticipantTooltip": "This is everybody in this chat. Click on any users avatar and “start conversation” to send a DM.",
"inOngoingActivity": "You have an ongoing activity!",
"vocabEmoji": "Vocab emoji"
"vocabEmoji": "Vocab emoji",
"requestRegeneration": "Request regeneration",
"optionalRegenerateReason": "(Optional) Reason"
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:09:19.885781",
"@@last_modified": "2025-12-15 13:10:20.520198",
"about": "Prio",
"@about": {
"type": "String",
@ -11780,5 +11780,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Petu regeneradon",
"optionalRegenerateReason": "(Opcie) Kialo",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "es",
"@@last_modified": "2025-12-15 12:08:02.767004",
"@@last_modified": "2025-12-15 13:09:22.556485",
"about": "Acerca de",
"@about": {
"type": "String",
@ -7925,5 +7925,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Solicitar regeneración",
"optionalRegenerateReason": "(Opcional) Razón",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "et",
"@@last_modified": "2025-12-15 12:08:29.165916",
"@@last_modified": "2025-12-15 13:09:41.916204",
"about": "Rakenduse teave",
"@about": {
"type": "String",
@ -10962,5 +10962,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Küsi regeneratsiooni",
"optionalRegenerateReason": "(Valikuline) Põhjus",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "eu",
"@@last_modified": "2025-12-15 12:08:25.715230",
"@@last_modified": "2025-12-15 13:09:39.405643",
"about": "Honi buruz",
"@about": {
"type": "String",
@ -10691,5 +10691,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Eskaera berritzea",
"optionalRegenerateReason": "(Aukerakoa) Arrazoia",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:09:09.425648",
"@@last_modified": "2025-12-15 13:10:12.289964",
"repeatPassword": "تکرار رمزعبور",
"@repeatPassword": {},
"about": "درباره",
@ -11423,5 +11423,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "درخواست تجدید",
"optionalRegenerateReason": "(اختیاری) دلیل",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4013,7 +4013,7 @@
"playWithAI": "Leiki tekoälyn kanssa nyt",
"courseStartDesc": "Pangea Bot on valmis milloin tahansa!\n\n...mutta oppiminen on parempaa ystävien kanssa!",
"@@locale": "fi",
"@@last_modified": "2025-12-15 12:08:09.660013",
"@@last_modified": "2025-12-15 13:09:25.461324",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11314,5 +11314,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Pyydä uudelleensyntymää",
"optionalRegenerateReason": "(Valinnainen) Syynä",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -2791,7 +2791,7 @@
"selectAll": "Piliin lahat",
"deselectAll": "Huwag piliin lahat",
"@@locale": "fil",
"@@last_modified": "2025-12-15 12:08:49.579904",
"@@last_modified": "2025-12-15 13:09:57.098421",
"@setCustomPermissionLevel": {
"type": "String",
"placeholders": {}
@ -11667,5 +11667,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Humiling ng muling pagbuo",
"optionalRegenerateReason": "(Opsyonal) Dahilan",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "fr",
"@@last_modified": "2025-12-15 12:09:27.334083",
"@@last_modified": "2025-12-15 13:10:26.870783",
"about": "À propos",
"@about": {
"type": "String",
@ -11015,5 +11015,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Demander une régénération",
"optionalRegenerateReason": "(Optionnel) Raison",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4521,7 +4521,7 @@
"playWithAI": "Imir le AI faoi láthair",
"courseStartDesc": "Tá Bot Pangea réidh chun dul am ar bith!\n\n...ach is fearr foghlaim le cairde!",
"@@locale": "ga",
"@@last_modified": "2025-12-15 12:09:25.820630",
"@@last_modified": "2025-12-15 13:10:25.578909",
"@customReaction": {
"type": "String",
"placeholders": {}
@ -10689,5 +10689,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Iarr ar athghiniúint",
"optionalRegenerateReason": "(Roghnach) Cúis",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "gl",
"@@last_modified": "2025-12-15 12:08:05.415824",
"@@last_modified": "2025-12-15 13:09:24.082576",
"about": "Acerca de",
"@about": {
"type": "String",
@ -10688,5 +10688,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Solicitar rexeneración",
"optionalRegenerateReason": "(Opcional) Razón",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:22.241555",
"@@last_modified": "2025-12-15 13:09:36.374126",
"about": "אודות",
"@about": {
"type": "String",
@ -11740,5 +11740,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "בקש חידוש",
"optionalRegenerateReason": "(אופציונלי) סיבה",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4487,7 +4487,7 @@
"playWithAI": "अभी के लिए एआई के साथ खेलें",
"courseStartDesc": "पैंजिया बॉट कभी भी जाने के लिए तैयार है!\n\n...लेकिन दोस्तों के साथ सीखना बेहतर है!",
"@@locale": "hi",
"@@last_modified": "2025-12-15 12:09:18.418962",
"@@last_modified": "2025-12-15 13:10:19.180543",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11776,5 +11776,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "पुनर्जनन का अनुरोध करें",
"optionalRegenerateReason": "(वैकल्पिक) कारण",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "hr",
"@@last_modified": "2025-12-15 12:08:20.497984",
"@@last_modified": "2025-12-15 13:09:35.275706",
"about": "Informacije",
"@about": {
"type": "String",
@ -11063,5 +11063,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Zatraži regeneraciju",
"optionalRegenerateReason": "(Opcionalno) Razlog",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "hu",
"@@last_modified": "2025-12-15 12:08:12.316889",
"@@last_modified": "2025-12-15 13:09:28.639253",
"about": "Névjegy",
"@about": {
"type": "String",
@ -10692,5 +10692,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Regenerálás kérése",
"optionalRegenerateReason": "(Opcionális) Indok",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1962,7 +1962,7 @@
"playWithAI": "Joca con le IA pro ora",
"courseStartDesc": "Pangea Bot es preste a comenzar a qualunque momento!\n\n...ma apprender es melior con amicos!",
"@@locale": "ia",
"@@last_modified": "2025-12-15 12:08:23.429617",
"@@last_modified": "2025-12-15 13:09:37.510659",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11769,5 +11769,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Petició de regeneració",
"optionalRegenerateReason": "(Opcional) Motiu",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:14.523338",
"@@last_modified": "2025-12-15 13:09:30.033862",
"setAsCanonicalAlias": "Atur sebagai alias utama",
"@setAsCanonicalAlias": {
"type": "String",
@ -10682,5 +10682,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Permintaan regenerasi",
"optionalRegenerateReason": "(Opsional) Alasan",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4376,7 +4376,7 @@
"playWithAI": "Joca con AI pro ora",
"courseStartDesc": "Pangea Bot es preste a partir a qualunque momento!\n\n...ma apprender es melior con amicos!",
"@@locale": "ie",
"@@last_modified": "2025-12-15 12:08:18.858371",
"@@last_modified": "2025-12-15 13:09:34.373708",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11665,5 +11665,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "D'iarr athghiniú",
"optionalRegenerateReason": "(Roghnach) Cúis",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:36.478690",
"@@last_modified": "2025-12-15 13:09:46.808373",
"about": "Informazioni",
"@about": {
"type": "String",
@ -10694,5 +10694,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Richiedi rigenerazione",
"optionalRegenerateReason": "(Facoltativo) Motivo",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "ja",
"@@last_modified": "2025-12-15 12:09:16.362955",
"@@last_modified": "2025-12-15 13:10:17.963932",
"about": "このアプリについて",
"@about": {
"type": "String",
@ -11481,5 +11481,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "再生成をリクエスト",
"optionalRegenerateReason": "(オプション) 理由",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -2598,7 +2598,7 @@
"playWithAI": "ამ დროისთვის ითამაშეთ AI-თან",
"courseStartDesc": "Pangea Bot მზადაა ნებისმიერ დროს გასასვლელად!\n\n...მაგრამ სწავლა უკეთესია მეგობრებთან ერთად!",
"@@locale": "ka",
"@@last_modified": "2025-12-15 12:09:23.154694",
"@@last_modified": "2025-12-15 13:10:22.979686",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11721,5 +11721,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "მოთხოვნა რეგენერაციისთვის",
"optionalRegenerateReason": "(Optional) მიზეზი",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:01.209019",
"@@last_modified": "2025-12-15 13:09:21.214976",
"about": "소개",
"@about": {
"type": "String",
@ -10799,5 +10799,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "재생 요청",
"optionalRegenerateReason": "(선택 사항) 이유",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -3865,7 +3865,7 @@
"playWithAI": "Žaiskite su dirbtiniu intelektu dabar",
"courseStartDesc": "Pangea botas pasiruošęs bet kada pradėti!\n\n...bet mokymasis yra geresnis su draugais!",
"@@locale": "lt",
"@@last_modified": "2025-12-15 12:08:59.917763",
"@@last_modified": "2025-12-15 13:10:04.199235",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11496,5 +11496,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Prašyti regeneracijos",
"optionalRegenerateReason": "(Pasirinktinai) Priežastis",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4486,7 +4486,7 @@
"playWithAI": "Tagad spēlējiet ar AI",
"courseStartDesc": "Pangea bots ir gatavs jebkurā laikā!\n\n...bet mācīties ir labāk ar draugiem!",
"@@locale": "lv",
"@@last_modified": "2025-12-15 12:08:53.570594",
"@@last_modified": "2025-12-15 13:09:58.402497",
"analyticsInactiveTitle": "Pieprasījumi neaktīviem lietotājiem nevar tikt nosūtīti",
"analyticsInactiveDesc": "Neaktīvi lietotāji, kuri nav pieteikušies kopš šīs funkcijas ieviešanas, neredzēs jūsu pieprasījumu.\n\nPieprasījuma poga parādīsies, kad viņi atgriezīsies. Jūs varat atkārtoti nosūtīt pieprasījumu vēlāk, noklikšķinot uz pieprasījuma pogas viņu vārdā, kad tā būs pieejama.",
"accessRequestedTitle": "Pieprasījums piekļūt analītikai",
@ -10677,5 +10677,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Pieprasīt regenerāciju",
"optionalRegenerateReason": "(Nepieciešams) Iemesls",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:40.670855",
"@@last_modified": "2025-12-15 13:09:50.414856",
"about": "Om",
"@about": {
"type": "String",
@ -11784,5 +11784,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Be om regenerering",
"optionalRegenerateReason": "(Valgfritt) Årsak",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:09:04.003380",
"@@last_modified": "2025-12-15 13:10:08.027282",
"about": "Over ons",
"@about": {
"type": "String",
@ -10691,5 +10691,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Vraag regeneratie aan",
"optionalRegenerateReason": "(Optioneel) Reden",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "pl",
"@@last_modified": "2025-12-15 12:09:12.410471",
"@@last_modified": "2025-12-15 13:10:13.564120",
"about": "O aplikacji",
"@about": {
"type": "String",
@ -10689,5 +10689,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Poproś o regenerację",
"optionalRegenerateReason": "(Opcjonalne) Powód",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:27.053836",
"@@last_modified": "2025-12-15 13:09:40.663100",
"copiedToClipboard": "Copiada para a área de transferência",
"@copiedToClipboard": {
"type": "String",
@ -11791,5 +11791,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Solicitar regeneração",
"optionalRegenerateReason": "(Opcional) Motivo",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:24.622046",
"@@last_modified": "2025-12-15 13:09:38.322859",
"about": "Sobre",
"@about": {
"type": "String",
@ -11049,5 +11049,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Solicitar regeneração",
"optionalRegenerateReason": "(Opcional) Motivo",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -3335,7 +3335,7 @@
"selectAll": "Selecionar tudo",
"deselectAll": "Desmarcar tudo",
"@@locale": "pt_PT",
"@@last_modified": "2025-12-15 12:08:45.986778",
"@@last_modified": "2025-12-15 13:09:54.999629",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11720,5 +11720,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Solicitar regeneração",
"optionalRegenerateReason": "(Opcional) Motivo",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:15.866680",
"@@last_modified": "2025-12-15 13:09:31.920399",
"about": "Despre",
"@about": {
"type": "String",
@ -11426,5 +11426,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Solicita regenerarea",
"optionalRegenerateReason": "(Opțional) Motiv",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "ru",
"@@last_modified": "2025-12-15 12:09:21.331850",
"@@last_modified": "2025-12-15 13:10:22.056511",
"about": "О проекте",
"@about": {
"type": "String",
@ -10796,5 +10796,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Запросить регенерацию",
"optionalRegenerateReason": "(Необязательно) Причина",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "sk",
"@@last_modified": "2025-12-15 12:08:17.592692",
"@@last_modified": "2025-12-15 13:09:33.330473",
"about": "O aplikácii",
"@about": {
"type": "String",
@ -11775,5 +11775,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Požiadať o regeneráciu",
"optionalRegenerateReason": "(Voliteľné) Dôvod",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -2468,7 +2468,7 @@
"playWithAI": "Za zdaj igrajte z AI-jem",
"courseStartDesc": "Pangea Bot je pripravljen kadarkoli!\n\n...ampak je bolje učiti se s prijatelji!",
"@@locale": "sl",
"@@last_modified": "2025-12-15 12:08:33.099168",
"@@last_modified": "2025-12-15 13:09:44.475627",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11772,5 +11772,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Zahtevaj regeneracijo",
"optionalRegenerateReason": "(Neobvezno) Razlog",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:09:24.388934",
"@@last_modified": "2025-12-15 13:10:24.291700",
"about": "О програму",
"@about": {
"type": "String",
@ -11793,5 +11793,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Zatraži regeneraciju",
"optionalRegenerateReason": "(Opcionalno) Razlog",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:09:13.720212",
"@@last_modified": "2025-12-15 13:10:15.788663",
"about": "Om",
"@about": {
"type": "String",
@ -11169,5 +11169,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Begär regenerering",
"optionalRegenerateReason": "(Valfritt) Orsak",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:09:02.883580",
"@@last_modified": "2025-12-15 13:10:06.701558",
"acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது",
"@acceptedTheInvitation": {
"type": "String",
@ -10915,5 +10915,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "மறுசீரமைப்பை கோருங்கள்",
"optionalRegenerateReason": "(விருப்பம்) காரணம்",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1924,7 +1924,7 @@
"playWithAI": "ఇప్పుడే AI తో ఆడండి",
"courseStartDesc": "పాంజియా బాట్ ఎప్పుడైనా సిద్ధంగా ఉంటుంది!\n\n...కానీ స్నేహితులతో నేర్చుకోవడం మెరుగైనది!",
"@@locale": "te",
"@@last_modified": "2025-12-15 12:08:58.244462",
"@@last_modified": "2025-12-15 13:10:02.606443",
"@setCustomPermissionLevel": {
"type": "String",
"placeholders": {}
@ -11780,5 +11780,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "పునఃసృష్టి అభ్యర్థించండి",
"optionalRegenerateReason": "(ఐచ్ఛికం) కారణం",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -4460,7 +4460,7 @@
"playWithAI": "เล่นกับ AI ชั่วคราว",
"courseStartDesc": "Pangea Bot พร้อมที่จะเริ่มต้นได้ทุกเมื่อ!\n\n...แต่การเรียนรู้ดีกว่ากับเพื่อน!",
"@@locale": "th",
"@@last_modified": "2025-12-15 12:08:44.865189",
"@@last_modified": "2025-12-15 13:09:53.958347",
"@alwaysUse24HourFormat": {
"type": "String",
"placeholders": {}
@ -11749,5 +11749,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "ขอการสร้างใหม่",
"optionalRegenerateReason": "(ไม่บังคับ) เหตุผล",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "tr",
"@@last_modified": "2025-12-15 12:08:56.126544",
"@@last_modified": "2025-12-15 13:10:01.271793",
"about": "Hakkında",
"@about": {
"type": "String",
@ -10913,5 +10913,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Yeniden oluşturma talep et",
"optionalRegenerateReason": "(Opsiyonel) Sebep",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "uk",
"@@last_modified": "2025-12-15 12:08:37.892592",
"@@last_modified": "2025-12-15 13:09:47.980810",
"about": "Про застосунок",
"@about": {
"type": "String",
@ -10685,5 +10685,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Запит на регенерацію",
"optionalRegenerateReason": "(Необов'язково) Причина",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:09:01.141337",
"@@last_modified": "2025-12-15 13:10:05.261556",
"about": "Giới thiệu",
"@about": {
"type": "String",
@ -6261,5 +6261,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "Yêu cầu tái tạo",
"optionalRegenerateReason": "(Tùy chọn) Lý do",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1860,7 +1860,7 @@
"selectAll": "全選",
"deselectAll": "取消全選",
"@@locale": "yue",
"@@last_modified": "2025-12-15 12:08:35.097898",
"@@last_modified": "2025-12-15 13:09:45.810126",
"@ignoreUser": {
"type": "String",
"placeholders": {}
@ -11782,5 +11782,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "請求再生",
"optionalRegenerateReason": "(可選) 原因",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,6 +1,6 @@
{
"@@locale": "zh",
"@@last_modified": "2025-12-15 12:09:06.977362",
"@@last_modified": "2025-12-15 13:10:10.038504",
"about": "关于",
"@about": {
"type": "String",
@ -10682,5 +10682,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "请求再生",
"optionalRegenerateReason": "(可选) 原因",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -1,5 +1,5 @@
{
"@@last_modified": "2025-12-15 12:08:47.738143",
"@@last_modified": "2025-12-15 13:09:56.043510",
"about": "關於",
"@about": {
"type": "String",
@ -10689,5 +10689,15 @@
"@vocabEmoji": {
"type": "String",
"placeholders": {}
},
"requestRegeneration": "請求再生",
"optionalRegenerateReason": "(選填) 原因",
"@requestRegeneration": {
"type": "String",
"placeholders": {}
},
"@optionalRegenerateReason": {
"type": "String",
"placeholders": {}
}
}

View file

@ -50,6 +50,7 @@ import 'package:fluffychat/pangea/common/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
import 'package:fluffychat/pangea/common/utils/firebase_analytics.dart';
import 'package:fluffychat/pangea/common/utils/overlay.dart';
import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart';
import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart';
import 'package:fluffychat/pangea/events/extensions/pangea_event_extension.dart';
import 'package:fluffychat/pangea/events/models/pangea_token_model.dart';
@ -1960,6 +1961,16 @@ class ChatController extends State<ChatPageWithRoom>
)
?.eventId;
String? get refreshEventID => timeline!.events
.firstWhereOrNull(
(event) =>
event.isVisibleInGui &&
event.senderId != room.client.userID &&
event.senderId == BotName.byEnvironment &&
!event.redacted,
)
?.eventId;
final StreamController<String> showToolbarStream =
StreamController.broadcast();
@ -2336,6 +2347,33 @@ class ChatController extends State<ChatPageWithRoom>
parentSpaceId != null ? '/rooms/spaces/$parentSpaceId' : '/rooms',
);
}
Future<void> requestRegeneration(String eventId) async {
final reason = await showTextInputDialog(
context: context,
title: L10n.of(context).requestRegeneration,
hintText: L10n.of(context).optionalRegenerateReason,
autoSubmit: true,
maxLines: 5,
);
if (reason == null) return;
await showFutureLoadingDialog(
context: context,
future: () => room.sendEvent(
{
"m.relates_to": {
"rel_type": PangeaEventTypes.regenerationRequest,
"event_id": eventId,
},
PangeaEventTypes.regenerationRequest: {
"reason": reason,
},
},
type: PangeaEventTypes.regenerationRequest,
),
);
}
// Pangea#
late final ValueNotifier<bool> _displayChatDetailsColumn;

View file

@ -167,6 +167,7 @@ class ChatEventList extends StatelessWidget {
// #Pangea
controller: controller,
isButton: event.eventId == controller.buttonEventID,
canRefresh: event.eventId == controller.refreshEventID,
// Pangea#
selected: controller.selectedEvents
.any((e) => e.eventId == event.eventId),

View file

@ -52,6 +52,7 @@ class Message extends StatelessWidget {
// #Pangea
final ChatController controller;
final bool isButton;
final bool canRefresh;
// Pangea#
const Message(
@ -78,6 +79,7 @@ class Message extends StatelessWidget {
// #Pangea
required this.controller,
this.isButton = false,
this.canRefresh = false,
// Pangea#
super.key,
});
@ -1034,6 +1036,19 @@ class Message extends StatelessWidget {
],
),
),
if (canRefresh)
Padding(
padding: const EdgeInsets.all(16.0),
child: IconButton(
tooltip: L10n.of(context)
.requestRegeneration,
icon: const Icon(
Icons.refresh_outlined,
),
onPressed: () => controller
.requestRegeneration(event.eventId),
),
),
],
),
],

View file

@ -56,4 +56,6 @@ class PangeaEventTypes {
static const courseChatList = "pangea.course_chat_list";
static const analyticsSettings = "pangea.analytics_settings";
static const regenerationRequest = "pangea.regeneration_request";
}