Commit Graph

69 Commits

Author SHA1 Message Date
Torsten Schulz (local)
4f548565ec feat(bisaya-course): enhance lesson structure and didactics integration
- Added an auto-incrementing primary key to the UserHouse model for improved database management.
- Integrated new didactics fragments from the Bisaya course plan, including relationship anchor didactics and lessons for enhanced curriculum depth.
- Updated lesson retrieval logic to utilize planned lesson titles, improving the accuracy of didactics resolution.
- Refactored course content generation scripts to incorporate new didactics, ensuring a comprehensive learning experience for users.
2026-04-17 11:08:12 +02:00
Torsten Schulz (local)
3a361caa1c feat(bisaya-course): add new didactics fragments for everyday conversations
- Introduced new didactics fragments for "Alltagsgespräche - Teil 1" and "Alltagsgespräche - Teil 2," including learning goals, core patterns, speaking prompts, and practical tasks to enhance conversational skills in Bisaya.
- Updated the lesson structure to incorporate these new fragments, improving the overall curriculum and providing learners with more comprehensive resources for everyday interactions.
2026-04-17 10:52:39 +02:00
Torsten Schulz (local)
402efac897 feat(bisaya-course, vocabService): expand numerical didactics and enhance lesson progress serialization
- Added new glosses for the numbers sixty, seventy, and eighty in the Bisaya didactics, enriching the numerical curriculum.
- Updated the _serializeLessonProgress method to include an options parameter for suppressing lesson review due notifications based on SRS item status.
- Introduced a new method to check for due SRS items, improving the handling of lesson progress and review scheduling.
2026-04-17 09:30:36 +02:00
Torsten Schulz (local)
022b8297b6 feat(vocabService, VocabPracticeDialog, VocabLessonView): enhance vocabulary handling and exposure tracking
- Updated vocabService to merge extracted vocabularies and improve handling of learning and reference pairs.
- Introduced normalization and exposure tracking in VocabPracticeDialog to ensure diverse and underexposed vocabulary practice.
- Enhanced VocabLessonView with methods to identify underexposed vocabularies and adjust selection logic for improved learning outcomes.
- Implemented new constants for minimum exposure requirements to optimize vocabulary training sessions.
2026-04-17 08:58:50 +02:00
Torsten Schulz (local)
4063127942 feat(bisaya-course): expand numerical didactics with additional glosses
- Added new glosses for numbers in Bisaya, enhancing the didactics for numerical lessons.
- Included translations for numbers 4 to 19, improving the comprehensiveness of the numerical curriculum.
- Updated the lesson structure to support the expanded vocabulary, ensuring a richer learning experience.
2026-04-17 08:21:02 +02:00
Torsten Schulz (local)
8c30f0ff54 feat(bisaya-course): add didactics fragments for "Haus & Familie" lessons
- Introduced comprehensive didactics snippets for the "Haus & Familie" lesson, including learning goals, core patterns, grammar focus, speaking prompts, and practical tasks.
- Updated the lesson retrieval logic to incorporate these new fragments as a fallback for core patterns, enhancing the robustness of lesson content delivery.
- Modified the vocab service to utilize the new didactics fragments, ensuring a seamless integration into the existing lesson structure.
2026-04-16 22:44:57 +02:00
Torsten Schulz (local)
5ca2817c82 feat(bisaya-course): update lesson retrieval and didactics processing
- Refactored the lesson retrieval logic to include lesson number and title in the query, improving data handling.
- Updated the didactics processing to utilize a lesson-like object instead of fetching lessons by primary key, enhancing performance.
- Improved error handling and ensured proper closure of the database connection after execution.
2026-04-16 22:36:15 +02:00
Torsten Schulz (local)
515fd8c5eb feat(bisaya-course): add new exercises for situational role plays and enhance lesson normalization
- Introduced a new section titled "Rollenspiele - echte Situationen" with multiple exercises focusing on real-life scenarios in Bisaya, including multiple-choice, gap-fill, and transformation tasks.
- Implemented a normalization function for lesson titles to improve matching accuracy and facilitate the rebuilding of placeholder lessons.
- Updated the course content generation logic to replace outdated exercises with new ones based on normalized titles, ensuring a more relevant learning experience.
2026-04-16 22:28:10 +02:00
Torsten Schulz (local)
f14a7ab674 feat(bisaya-course): add new lesson and update course creation logic
- Introduced a new lesson titled "Zahlen & Preise" to enhance the numerical curriculum in Bisaya.
- Updated the course creation logic to check for existing "Familien"-Bisaya courses, ensuring idempotency in course creation.
- Enhanced the lesson didactics by mapping legacy titles to current lesson keys, improving data consistency.
- Adjusted the course generation script to limit Bisaya courses to German-speaking learners only, streamlining course offerings.
2026-04-16 22:16:23 +02:00
Torsten Schulz (local)
b586fcb708 feat(bisaya-course): enhance numerical lessons with expanded content
- Updated lessons on numbers to include detailed sections for "Zahlen 1–20," "Zahlen: Zehner," "Zahlen: Hunderter," and "Zahlen: Tausender," focusing on foundational numerical concepts in Bisaya.
- Introduced various exercise types such as multiple-choice, gap-fill, and transformation tasks to improve learner engagement and comprehension of numerical expressions.
- Enhanced didactics with clear learning goals, core patterns, grammar focus, speaking prompts, and practical tasks to support effective learning.
- Added review lessons to reinforce key concepts and ensure continuity in learning progression.
2026-04-16 21:55:05 +02:00
Torsten Schulz (local)
eba98dde1d fix(bisaya-course): update alternatives for transformation exercise
- Modified the alternatives for a transformation exercise to include additional variations, enhancing the response options for learners.
- Updated the vocabulary service to incorporate both primary and alternative answers, improving the accuracy of answer validation during exercises.
2026-04-16 16:42:48 +02:00
Torsten Schulz (local)
98ab31bc78 feat(bisaya-course): expand lessons on shopping, prices, and numbers
- Added new lessons titled "Einkaufen & Preise" and "Zahlen & Preise" with various exercises focusing on shopping vocabulary and numerical expressions in Bisaya.
- Introduced multiple exercise types including multiple-choice, gap-fill, and transformation tasks to enhance learner engagement and understanding of practical language use in market contexts.
- Updated didactics to include learning goals, core patterns, grammar focus, speaking prompts, and practical tasks related to shopping dialogues and numerical comprehension.
- Included a review lesson "Woche 2 - Wiederholung" to reinforce key concepts from previous lessons, ensuring comprehensive learning continuity.
- Enhanced vocabulary testing with a new "Woche 2 - Vokabeltest" to assess retention of key terms and phrases.
2026-04-16 16:25:47 +02:00
Torsten Schulz (local)
99d011dd92 feat(bisaya-course): add new lesson on time and date concepts
- Introduced a new lesson titled "Zeit & Datum" with multiple exercises focusing on recognizing and using key time-related vocabulary in Bisaya.
- Added various exercise types including multiple-choice, gap-fill, and transformation tasks to enhance learner engagement and understanding of temporal expressions.
- Updated didactics to include learning goals, core patterns, grammar focus, speaking prompts, and practical tasks related to time markers and simple date questions.
2026-04-16 16:09:10 +02:00
Torsten Schulz (local)
a18d6d62b5 feat(bisaya-course): update gap-fill exercise structure and instructions
- Changed exercise type from 'pattern_drill' to 'gap_fill' for improved clarity and engagement.
- Revised instructions to specify the use of the verb "adto" across different tenses, enhancing learner guidance.
- Updated question data format to include gaps for each tense, streamlining the exercise layout.
- Adjusted answer data to reflect the new gap-fill structure, ensuring consistency in exercise responses.
- Enhanced explanation to clarify the focus on tense variations with the verb "adto," improving educational value.
2026-04-16 15:06:17 +02:00
Torsten Schulz (local)
271ecca9f6 feat(bisaya-course): enhance lesson content for temporal grammar and exercises
- Updated learning goals to emphasize distinguishing between past, present, and future in everyday sentences.
- Revised core patterns to include specific examples for each tense, improving clarity and context for learners.
- Expanded grammar focus sections to provide detailed explanations of time markers and their usage.
- Introduced new exercises for practicing grammar focus, including multiple-choice questions and transformation tasks, enhancing student engagement with temporal aspects of the language.
- Updated speaking prompts and practical tasks to reflect the new content structure, ensuring a comprehensive learning experience.
2026-04-15 13:25:15 +02:00
Torsten Schulz (local)
24777018f0 feat(bisaya-course): enhance grammar focus and drills for lesson content
- Added functions to normalize and build grammar curriculum focus entries, improving the structure and clarity of grammar lessons.
- Implemented logic to merge existing grammar focus with newly defined curriculum focus, ensuring comprehensive coverage of key grammar points.
- Introduced new drills for practicing past and future tense constructions, enhancing student engagement and understanding of temporal aspects in Bisaya.
- Updated the `createBisayaCourseContent` function to incorporate these enhancements, ensuring lessons are enriched with relevant grammar exercises.
2026-04-15 11:52:53 +02:00
Torsten Schulz (local)
5c6ba2f5da feat(bisaya-course): update exercise content for market-related vocabulary
- Changed the exercise question and answer to focus on market-related scenarios, replacing previous church-related content.
- Updated the explanation to align with the new vocabulary introduced in this lesson, enhancing contextual learning for students.
2026-04-15 11:49:50 +02:00
Torsten Schulz (local)
a44a35d92c feat(bisaya-course): implement core pattern extraction and merging for exercises
- Added functions to derive core patterns from various exercise types, including gap-fill, transformation, and multiple-choice.
- Implemented logic to merge derived core patterns with existing lesson patterns, ensuring a minimum count for effective lesson content.
- Enhanced the `createBisayaCourseContent` function to update lessons with merged core patterns and provide detailed logging based on the VOCAB_STRICT_AUDIT environment variable.
2026-04-15 11:12:18 +02:00
Torsten Schulz (local)
336d888dbe feat(bisaya-course): add new lessons for everyday conversations
- Introduced two new lessons: 'Alltagsgespräche - Teil 1' and 'Alltagsgespräche - Teil 2'.
- Each lesson includes learning goals, core patterns, speaking prompts, and practical tasks to enhance conversational skills in everyday contexts.
- Updated the lesson structure to support these additions, ensuring a comprehensive learning experience.
2026-04-15 11:09:14 +02:00
Torsten Schulz (local)
0499b23ced feat(bisaya-course): enhance gap-fill exercise processing and validation
- Added `buildCorePatternGlossLookup` to create a mapping of core patterns for improved hint sanitization.
- Implemented `sanitizeGapFillHintText` to validate and replace hints based on answer word count and gloss availability, generating fixes and warnings as needed.
- Updated `sanitizeExerciseForConsistency` to incorporate new sanitization logic for gap-fill exercises, ensuring consistent exercise data handling.
- Enhanced logging in `createBisayaCourseContent` to provide detailed feedback on exercise processing and validation outcomes.
2026-04-14 15:33:00 +02:00
Torsten Schulz (local)
4b0b4d42f1 feat(bisaya-course): add word count validation and exercise audit warnings
- Introduced a `countWords` function to calculate the number of words in a given text.
- Added `collectExerciseAuditWarnings` function to generate warnings for gap-fill exercises with potentially misleading hints.
- Updated the `createBisayaCourseContent` function to log audit warnings when the VOCAB_STRICT_AUDIT environment variable is set, enhancing the validation process for exercise content.
2026-04-14 15:30:58 +02:00
Torsten Schulz (local)
a4f3fba744 feat(bisaya-course): refine exercises and instructions for improved learning experience
- Updated exercise titles and instructions to enhance clarity and focus on specific learning objectives.
- Modified question data and answer options to better align with the lesson's vocabulary and context.
- Improved explanations to provide clearer guidance on language usage and learning goals, fostering better comprehension for learners.
2026-04-09 17:49:50 +02:00
Torsten Schulz (local)
55d323867b feat(bisaya-course): add new exercises to enhance Bisaya language learning
- Introduced multiple-choice and transformation exercises focused on common phrases and vocabulary, including translations and contextual usage.
- Expanded the curriculum with practical tasks that encourage conversational skills and comprehension in various scenarios.
- Enhanced existing exercises with clear instructions and explanations to improve user engagement and learning outcomes.
2026-04-09 17:23:20 +02:00
Torsten Schulz (local)
3a056f74dd feat(bisaya-course): expand 'Haus & Familie' lesson with new vocabulary and exercises
- Added comprehensive learning goals, core patterns, grammar focus, speaking prompts, and practical tasks for the 'Haus & Familie' lesson, enhancing the curriculum for better language acquisition.
- Updated exercise content to include multiple-choice questions and gap-fill tasks related to household vocabulary, improving user engagement and learning outcomes.
- Enhanced localization for the lesson description and vocabulary, ensuring clarity and consistency across the learning platform.
2026-04-09 17:19:02 +02:00
Torsten Schulz (local)
3119d32e57 refactor(exercises): standardize answer language handling across exercise scripts
- Introduced a mechanism to infer answer language based on question phrasing in multiple exercise scripts, enhancing consistency in exercise data.
- Updated question formats to clarify the intent of exercises, improving user understanding and engagement.
- Streamlined the code for better maintainability and clarity in exercise generation processes.
2026-04-07 14:32:44 +02:00
Torsten Schulz (local)
962a9d0513 feat(vocab): enhance vocabulary exercises and localization support
- Updated core patterns in BISAYA_PHASE5_DIDACTICS to include gloss translations for better understanding.
- Refactored vocabulary exercise generation in update-food-care-exercises.js to improve randomization and user engagement.
- Added new exercise types and improved question structures for vocabulary lessons, enhancing the learning experience.
- Enhanced localization files for German, English, and Spanish to support new exercise features and improve user guidance.
- Updated VocabLessonView to incorporate sequential navigation for exercises, providing a more structured learning flow.
2026-04-07 09:09:43 +02:00
Torsten Schulz (local)
a15ff1cb15 feat(bisaya-course): add family vocabulary and exercises for relatives
- Introduced new content for the 'Familie - Verwandte & Stieffamilie' lesson, including learning goals, core patterns, grammar focus, speaking prompts, and practical tasks.
- Added multiple-choice and gap-fill exercises related to family vocabulary, enhancing the learning experience for users.
- Updated course content to reflect the new lesson and exercises, ensuring comprehensive coverage of family-related terms in Bisaya.
2026-04-02 09:31:46 +02:00
Torsten Schulz (local)
92a8c3ff62 feat(vocab): implement user vocab lesson progress reset functionality
- Added `resetUserVocabLessonProgress` method in `AdminController` to allow admins to reset a user's progress for a specific vocab lesson.
- Introduced corresponding route in `adminRouter` for the new reset functionality.
- Enhanced `VocabService` with methods to purge lesson progress for users, ensuring that only the specified lesson's progress is affected.
- Updated UI components in `UsersView` to facilitate the selection of courses and lessons for resetting progress, including confirmation dialogs and loading states.
- Added localization support for the new reset functionality across multiple languages.
- Implemented reset functionality in `VocabLessonView` for users to reset their own lesson progress.
2026-04-02 08:25:56 +02:00
Torsten Schulz (local)
b1db5a42e8 refactor(bisaya-course): enhance pedagogy logic for German lessons
- Updated the `getGermanForBisayaLessonPedagogy` function to include lesson titles for improved didactic mode determination, specifically adding support for 'contrast_training'.
- Modified multiple scripts to utilize the updated pedagogy function, ensuring consistent application of the new logic across various course phases.
- Enhanced the VocabService to recognize and handle 'contrast_training' as a didactic mode, improving lesson management and user experience.
- Updated UI components to reflect the new didactic mode, ensuring clarity in lesson presentation.
2026-04-01 15:52:53 +02:00
Torsten Schulz (local)
78424d1def feat(bisaya-course): expand lesson didactics with new topics and detailed grammar focus
- Added new lesson topics including 'Überlebenssätze - Teil 1', 'Familien-Gespräche', 'Gefühle & Zuneigung', and 'Überlebenssätze - Teil 2' to enhance the curriculum.
- Updated existing lessons with more detailed learning goals, core patterns, grammar focus, speaking prompts, and practical tasks to improve learner engagement and comprehension.
- Refactored core patterns to include glosses for better understanding of vocabulary context.
- Enhanced the structure of lesson didactics to provide a more comprehensive learning experience for users.
2026-04-01 14:30:31 +02:00
Torsten Schulz (local)
f4e588f42d feat(vocab): integrate fallback core patterns and enhance vocabulary display in VocabLessonView
- Added a new method in VocabService to merge core pattern glosses with fallback patterns, improving vocabulary clarity and consistency.
- Updated VocabLessonView to utilize the merged core patterns, ensuring a comprehensive vocabulary overview for users.
- Refactored vocabulary handling logic to enhance user experience during vocabulary lessons, including improved display of lesson vocabulary.
2026-04-01 09:58:32 +02:00
Torsten Schulz (local)
5445db0de7 feat(bisaya-course): restructure core patterns and enhance vocabulary preparation
- Updated core patterns in various scripts to use an object format with target phrases and glosses, improving clarity and usability for learners.
- Enhanced the VocabService to normalize core pattern entries, ensuring consistent handling of vocabulary data.
- Introduced new vocabulary preparation steps in the VocabLessonView, guiding users through active review processes before engaging with the vocabulary trainer.
- Added localization support for new vocabulary preparation hints and instructions in multiple languages, enhancing user experience across the application.
2026-04-01 08:12:57 +02:00
Torsten Schulz (local)
c33ccfcdc8 feat(bisaya-course): enhance German course content and localization support
- Updated the create-german-for-bisaya-course-content.js script to improve lesson pattern retrieval by introducing a new function for generating a lesson pattern pool.
- Added new exercises for various topics including 'Wohnung & Nachbarn', 'Besuch empfangen', 'Arzt, Apotheke, Termin', and 'Amt, Dokumente, Anmeldung', enhancing practical language skills for learners.
- Improved localization by integrating translation keys for various UI elements and error messages across multiple components, ensuring a consistent user experience in both German and Bisaya.
- Enhanced the main.js file to recognize Bisaya language preferences in browser settings, improving accessibility for users.
2026-03-31 17:40:03 +02:00
Torsten Schulz (local)
c1a3da4efb feat(bisaya-course): update German course creation script to support default owner retrieval
- Modified the create-german-for-bisaya-course.js script to allow optional ownerHashedId parameter.
- Implemented a new function to find a default owner ('system' or 'admin') if no ownerHashedId is provided.
- Updated documentation to reflect the change in usage for the script.
2026-03-31 11:42:23 +02:00
Torsten Schulz (local)
9f60ceb332 feat(falukant): add age information to lovers in family view
- Updated FalukantService to include age details for partners in relationships.
- Added translations for 'age' in English, German, and Spanish localization files.
- Enhanced FamilyView component to display age information for lovers and candidates, improving user experience.
2026-03-31 11:36:12 +02:00
Torsten Schulz (local)
4b1e5a9c8a feat(bisaya-course): enhance evening and sleep routines in course content
- Updated the Bisaya course to include new evening greetings and sleep-related phrases in core patterns.
- Added multiple exercises focusing on recognizing and using these phrases, improving practical language skills for learners.
- Expanded lesson didactics to incorporate prompts for evening and sleep routines, enriching the overall learning experience.
2026-03-31 10:13:12 +02:00
Torsten Schulz (local)
96eb83f2bd feat(bisaya-course): enhance evening greetings and sleep-related exercises
- Updated core patterns to include evening greetings and sleep phrases in the Bisaya course content.
- Added new exercises focusing on recognizing and using evening greetings and sleep wishes, enhancing practical language use for learners.
- Expanded lesson didactics to incorporate evening and sleep-related conversational prompts, improving the overall learning experience.
2026-03-31 09:39:46 +02:00
Torsten Schulz (local)
a1c1edd37a feat(bisaya-course): expand exercises for shopping, neighborhood visits, conflict resolution, and free speaking
- Added new exercises in multiple-choice, gap-fill, and situational response formats for categories including 'Einkaufen vertiefen', 'Nachbarschaft & Besuche', 'Rollenspiel - Konflikt und Hilfe', and 'Freies Sprechen - Alltag ohne Stütze'.
- Each exercise includes detailed instructions, question data, answer data, and explanations to enhance the learning experience for Bisaya language learners.
- Focused on practical scenarios to improve conversational skills and vocabulary retention.
2026-03-31 09:04:24 +02:00
Torsten Schulz (local)
0198b23617 feat(bisaya-course): add new exercises for various everyday scenarios
- Introduced multiple-choice, gap-fill, and situational response exercises across several categories including 'Besuch & Gastfreundschaft', 'Gesundheit im Alltag', 'Unterwegs & Transport', 'Kinder im Alltag', and 'Arzt & Termin'.
- Each category includes detailed instructions, question data, answer data, and explanations to enhance learning experiences.
- Expanded the vocabulary and situational context for learners to practice real-life interactions in Bisaya.
2026-03-31 08:56:36 +02:00
Torsten Schulz (local)
9653a0021b feat(admin): add potential fathers retrieval for character management
- Implemented a new method in AdminService to fetch potential fathers for a given character based on existing relationships.
- Updated AdminController to expose this functionality via a new API endpoint.
- Enhanced adminRouter to include the route for retrieving potential fathers.
- Modified frontend components to allow selection of potential fathers during pregnancy and birth management.
- Updated internationalization files to include new translation keys related to father selection.
2026-03-31 08:50:56 +02:00
Torsten Schulz (local)
06dc61e37a feat(vocab): add vocab distractor pool functionality
- Implemented a new endpoint to retrieve a pool of distractors for vocabulary exercises based on prior lessons.
- Updated the VocabController and VocabRouter to include the new getVocabDistractorPool method.
- Enhanced VocabService to classify questions and gather distractors from previous lessons.
- Modified VocabLessonView to fetch and utilize the distractor pool for multiple-choice exercises, improving the learning experience.
2026-03-30 15:13:10 +02:00
Torsten Schulz (local)
3ba34d2581 Enhance Bisaya course content by refining existing exercises and adding a new exercise for recognizing farewells: Update questions for clarity and introduce a new exercise focused on the meaning of "Babay," improving the overall learning experience for users. 2026-03-25 16:33:05 +01:00
Torsten Schulz (local)
d02e4f124f Enhance Bisaya course content with new greetings and farewells: Add exercises for recognizing and practicing morning greetings and farewells in Bisaya. Update lesson didactics to include new learning goals, core patterns, and speaking prompts related to greetings and farewells, improving the overall learning experience. 2026-03-25 16:28:29 +01:00
Torsten Schulz (local)
b0d5901fe0 Refactor bisaya course progress reset logic: Replace raw SQL queries with Sequelize ORM methods for fetching lesson and exercise IDs. This improves code readability and maintainability while ensuring consistent database interactions. 2026-03-25 16:13:05 +01:00
Torsten Schulz (local)
3aae63d25d Improve exercise type validation and encryption in settings service: Enhance error handling for exercise type name checks in both create-bisaya-course-content and update-week1-bisaya-exercises scripts. Implement encryption for API keys and user settings in settingsService, ensuring sensitive data is securely stored. Update localization files to include new terms related to model patterns in English, German, and Spanish. 2026-03-25 16:09:04 +01:00
Torsten Schulz (local)
6e36ff1a6f Add language assistant settings and related features: Introduce new routes and controller methods for managing language assistant settings, including retrieval and saving of LLM configurations. Update navigation structure to include language assistant options. Enhance vocab course model to support additional learning attributes such as learning goals and core patterns. Update SQL scripts to reflect new database schema changes for vocab courses. Improve localization for language assistant settings in German and English. 2026-03-25 15:53:49 +01:00
Torsten Schulz (local)
048ed6167f Update environment configuration and enhance logging: Add support for loading a local .env file and improve logging behavior based on QUIET_ENV_LOGS settings. Introduce new diagnostic scripts in package.json for town worth and money flow analysis. Adjust production cost calculations in FalukantService to align with updated pricing logic and enhance product initialization parameters. 2026-03-25 13:23:51 +01:00
Torsten Schulz (local)
b6eea313d7 Add Bisaya course content for 'Ort & Richtung' and 'Alltagsgespräche - Teil 2' lessons: Introduce multiple-choice, gap-fill, and transformation exercises focusing on location and everyday conversation vocabulary, complete with translations and explanations. 2026-03-05 13:28:08 +01:00
Torsten Schulz (local)
f5e5918615 Add Bisaya course content for 'Haus & Familie' lesson: Introduce multiple-choice and gap-fill exercises for vocabulary related to house and family terms, including translations and explanations. Update lesson tracking to include the new lesson in the course content. 2026-03-05 13:23:56 +01:00
Torsten Schulz (local)
0923331ba4 Add multiple-choice and gap-fill exercises for everyday conversations in Bisaya: Introduced new exercises focusing on common phrases and their meanings, enhancing language learning resources. Updated lesson duration for 'Alltagsgespräche - Teil 1' to 25 minutes for better engagement. 2026-02-05 23:42:17 +01:00