Commit Graph

131 Commits

Author SHA1 Message Date
Torsten Schulz (local)
1131540414 feat(vocabLesson): enhance input handling for gap-fill exercises
- Added functionality to manage Enter key events for gap-fill and single input fields, improving user experience during exercises.
- Introduced methods `onGapInputEnter` and `onSingleInputEnter` to streamline answer checking and navigation between input fields.
- Updated input elements with refs for better focus management, ensuring a smoother interaction flow for users.
2026-04-16 14:55:43 +02:00
Torsten Schulz (local)
b61a73aa09 feat(vocabLesson): add detailed review section for failed chapter exams
- Introduced a new review section that displays questions, user answers, and correct answers for failed chapter exams.
- Added localization entries for the review section in multiple languages, enhancing user experience and understanding of mistakes.
- Implemented logic to format and present failed exam details, improving feedback for learners.
2026-04-15 14:02:34 +02:00
Torsten Schulz (local)
26a4e84e1d fix(vocabLesson): improve answer validation logic for gap fill exercises
- Enhanced the answer validation process by introducing checks for native word and answer text, ensuring they are trimmed and compared correctly.
- Added logic to identify likely fragment mismatches based on sentence structure and word count, preventing incorrect answer submissions.
- Updated debug logging to provide clearer insights into the validation process, improving maintainability and debugging capabilities.
2026-04-14 14:57:54 +02:00
Torsten Schulz (local)
46d192ca47 removed double question 2026-04-13 11:27:06 +02:00
Torsten Schulz (local)
8a70f3ba96 feat(vocab): implement pagination and localization for vocabulary dictionaries
- Added pagination functionality to the vocabulary dictionary views, allowing users to navigate through results efficiently.
- Introduced a new method `_parseDictionaryPaging` in `VocabService` to handle pagination parameters.
- Updated `getLanguageDictionary` and `getCourseDictionary` methods to return pagination details alongside results.
- Enhanced the `VocabDictionaryView` component with pagination controls and updated UI for better user experience.
- Added localization entries for pagination in Cebuano, German, English, Spanish, and French, ensuring a consistent user experience across languages.
2026-04-10 14:35:50 +02:00
Torsten Schulz (local)
0bea72b2d4 feat(vocab-lesson): implement pagination for vocabulary overview in lesson view
- Added pagination functionality to the vocabulary overview in the VocabLessonView component, allowing users to navigate through vocabulary items more efficiently.
- Introduced new localization entries for pagination controls in Cebuano, German, English, Spanish, and French, ensuring a consistent user experience across languages.
- Enhanced the UI with buttons for previous and next navigation, improving accessibility and usability of the vocabulary list.
2026-04-10 14:26:01 +02:00
Torsten Schulz (local)
5d44e75985 feat(i18n, frontend): enhance course planning with optional steps and localization updates
- Added a new section for optional learning steps in the course planning UI, allowing users to engage with additional content when no mandatory tasks are due.
- Updated localization files for Cebuano, German, English, Spanish, and French to reflect changes in course planning instructions and titles, ensuring clarity and consistency across languages.
- Improved pedagogical logic for lesson recommendations, focusing on cognitive load and spaced repetition principles to enhance user learning experience.
2026-04-10 13:33:25 +02:00
Torsten Schulz (local)
ca1f045f4b feat(vocab): add language and course dictionary endpoints and UI components
- Implemented `getLanguageDictionary` and `getCourseDictionary` methods in the VocabService to retrieve vocabulary entries filtered by search terms.
- Updated VocabController and vocabRouter to include new routes for accessing language and course dictionaries.
- Enhanced frontend components to navigate to the new dictionary views, including buttons in VocabCourseView and VocabLanguageView.
- Added localization entries for the dictionary feature in multiple languages, ensuring a consistent user experience across the platform.
2026-04-10 13:08:18 +02:00
Torsten Schulz (local)
18490005ca feat(vocab-lesson): enhance exercise navigation and randomization logic
- Improved the exercise progression logic to automatically advance only on correct answers, ensuring better user feedback during learning.
- Added a new method to shuffle multiple-choice options display order when distractor replacement is not applicable, enhancing the exercise experience.
- Updated the build process for randomized options to include both randomization from a pool and display order shuffling, improving overall engagement and learning outcomes.
2026-04-09 17:57:51 +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)
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)
a545774f25 refactor(vocab): enhance token weight handling in VocabLessonView
- Introduced a new mechanism for calculating token weights based on core patterns and important vocabulary, improving the accuracy of target-gloss pair orientation.
- Replaced the previous hint logic with a more robust token-based scoring system, enhancing the quality of vocabulary item representation.
- Streamlined the code for better maintainability and clarity in vocabulary preparation processes.
2026-04-07 11:32:14 +02:00
Torsten Schulz (local)
a18b3580d8 refactor(vocab): update vocabulary label handling in VocabLessonView
- Replaced computed properties for current vocabulary preparation labels with direct references to new properties, enhancing clarity and maintainability.
- Improved the logic for populating native and target hints, ensuring accurate representation of vocabulary items.
- Removed outdated label swapping logic, streamlining the code and focusing on course-specific language names for better user experience.
2026-04-07 11:22:22 +02:00
Torsten Schulz (local)
562838fa15 feat(vocab): add course language name handling in VocabLessonView
- Introduced new properties for course language names to enhance clarity in vocabulary preparation.
- Implemented a method to load course language names from the API, improving localization and user experience.
- Updated label logic to utilize course-specific language names, ensuring accurate representation in vocabulary lessons.
2026-04-07 10:29:28 +02:00
Torsten Schulz (local)
06ca5eed97 feat(vocab): refine vocabulary label logic in VocabLessonView
- Introduced computed properties for current vocabulary preparation labels, enhancing clarity and localization.
- Updated label handling to dynamically adjust based on the context of target and gloss items, improving user experience.
- Enhanced the logic for determining when to swap labels, ensuring accurate representation of vocabulary items for better learning outcomes.
2026-04-07 10:22:36 +02:00
Torsten Schulz (local)
e8faeeb008 feat(vocab): enhance vocabulary label handling in VocabLessonView
- Refactored VocabLessonView to utilize computed properties for vocabulary preparation labels, improving localization and maintainability.
- Updated the logic for target and gloss labels to prioritize course-specific language names, enhancing user experience and clarity in vocabulary presentation.
- Improved the orientation logic for target-gloss pairs to ensure accurate representation of vocabulary items, contributing to better learning outcomes.
2026-04-07 10:07:54 +02:00
Torsten Schulz (local)
49892f0fc6 feat(vocab): improve vocabulary preparation logic in VocabLessonView
- Refactored prepItems method to ensure only valid target-gloss pairs are included, enhancing the quality of vocabulary preparation.
- Introduced a mechanism to limit the output to a maximum of 30 unique pairs, improving the compactness of the preparation round.
- Enhanced handling of core patterns and extracted vocabulary to prioritize high-quality learning materials.
2026-04-07 09:58:33 +02:00
Torsten Schulz (local)
0909d1047d feat(vocab): update course today plan localization and UI logic
- Added new localization strings for scenarios with no due reviews in German, English, and Spanish, enhancing user guidance.
- Updated VocabCourseView to conditionally display the appropriate introduction message based on the presence of due reviews, improving clarity in the course flow.
2026-04-07 09:55:01 +02:00
Torsten Schulz (local)
9f498df87e feat(vocab): enhance feedback acknowledgment and localization in vocabulary lessons
- Added acknowledgment messages for exercise reinforcement in German, English, and Spanish localization files to improve user guidance.
- Updated VocabLessonView to include a feedback acknowledgment button, enhancing user interaction after answering questions.
- Implemented logic to track feedback acknowledgment state, improving the flow of lesson reviews and user experience.
2026-04-07 09:47:45 +02:00
Torsten Schulz (local)
e4450405cd feat(vocab): add lesson review functionality and update navigation
- Introduced VocabLessonReviewView for reviewing lessons within the vocabulary course structure.
- Updated routing in socialRoutes.js to include a new path for lesson reviews, ensuring authenticated access.
- Modified VocabCourseView to change the lesson button click behavior to navigate to the review view, enhancing user flow.
- Added a new method to handle lesson review navigation, improving the overall user experience in the vocabulary section.
2026-04-07 09:38:00 +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)
5ad8ef434a refactor(vocabService, VocabLessonView): unify answer language classification for multiple-choice questions
- Renamed and refactored the method for classifying answer languages in multiple-choice questions from _classifyMcQuestionSide to _resolveMcAnswerSide for clarity and consistency.
- Updated the logic to classify answer languages based on questionData.answerLanguage and answerLanguageId, improving accuracy in determining the correct language context.
- Adjusted VocabLessonView to utilize the new classification method, ensuring alignment with backend changes and enhancing the handling of distractor options based on answer language.
- Enhanced documentation to clarify the expected input and output for the new method, improving maintainability and understanding of the codebase.
2026-04-07 08:34:19 +02:00
Torsten Schulz (local)
7ff5e9af52 feat(political-office): enhance political office benefits and salary computation
- Added a new hierarchyLevel field to PoliticalOfficeType for better categorization of political roles.
- Updated computePoliticalDailySalaryPayout function to incorporate hierarchy level in salary calculations, allowing for more dynamic salary adjustments based on office rank.
- Modified SQL scripts to reflect changes in political office benefits, ensuring compatibility with the new salary structure.
- Enhanced localization files to support updated benefit descriptions and salary formats across multiple languages.
- Improved UI components to display the new salary calculations and benefits accurately in the PoliticsView.
2026-04-02 16:49:18 +02:00
Torsten Schulz (local)
b3191e534d feat(vocab): enhance vocabService and VocabLessonView for improved exercise handling
- Updated VocabService to include validation for synthetic exercise IDs and added methods for generating multiple-choice exercises based on chapter lexemes.
- Implemented a seeded shuffle function to randomize distractor options in multiple-choice questions, ensuring varied user experiences.
- Modified VocabLessonView to adjust target calculations for lesson goals and unlock attempts, increasing the maximum limits for better flexibility in user progress tracking.
2026-04-02 14:23:21 +02:00
Torsten Schulz (local)
676ef97d08 feat(localization): enhance course progress and review messaging across multiple languages
- Added new confirmation titles and messages for resetting and marking lessons as complete in admin and user interfaces.
- Expanded course flow and review scheduling messages to improve clarity and user guidance in Cebuano, German, Spanish, and English.
- Introduced a new section in the VocabCourseView to display today's recommended steps for users, enhancing the learning experience.
- Updated localization files to ensure consistent messaging and improved user engagement across all supported languages.
2026-04-02 13:49:59 +02:00
Torsten Schulz (local)
d3c8ec2ed2 feat(vocab): enhance lesson progress tracking and review scheduling
- Updated VocabService to include lessonId and lessonNumber in progress data, improving tracking accuracy.
- Modified getLessonProgress and lastProgressTouch methods to accept lesson parameters, enhancing flexibility in progress retrieval.
- Implemented formatReviewBadgeSchedule method to manage review scheduling notifications, providing clearer user feedback.
- Updated VocabCourseView to reflect changes in lesson progress handling, ensuring accurate display of review statuses and due dates.
- Expanded localization for review scheduling messages across multiple languages, enhancing user experience.
2026-04-02 13:27:24 +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)
6ad66da836 feat(localization): expand language support and enhance UI for user settings
- Added support for additional UI locales including Cebuano and Spanish, improving accessibility for a broader user base.
- Updated language selection components in the AppHeader and SettingsWidget to reflect new language options, enhancing user experience.
- Enhanced localization of various UI elements across components, ensuring consistent language representation and improved user engagement.
- Implemented logic to synchronize user language preferences with backend settings, providing a seamless experience when changing languages.
2026-04-02 07:54:44 +02:00
Torsten Schulz (local)
30906e0dc3 feat(vocab): implement scheduled review management in VocabService and UI updates
- Added methods in VocabService to handle scheduled review states, including normalization of review dates and management of review stages.
- Enhanced lesson state management to support review scheduling, improving the learning process for users.
- Updated VocabCourseView and VocabLessonView to display review statuses and due dates, providing clearer feedback on lesson progress and review requirements.
- Introduced new UI elements to indicate review status, enhancing user engagement and understanding of lesson timelines.
2026-04-01 16:03:42 +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)
154d6f23e9 refactor(vocab): unify text normalization across VocabService and VocabPracticeDialog
- Enhanced text normalization methods in VocabService and VocabPracticeDialog to include normalization and improved regex for punctuation and symbols, ensuring consistent text handling.
- This update streamlines the normalization process, contributing to better user input processing and overall application reliability.
2026-04-01 15:24:22 +02:00
Torsten Schulz (local)
a52fcfcf01 refactor(vocab): improve text normalization consistency in VocabService and VocabLessonView
- Enhanced text normalization methods in both VocabService and VocabLessonView to include an additional trim operation, ensuring leading and trailing spaces are removed.
- This change improves the consistency and accuracy of text handling across the application, contributing to better user input processing.
2026-04-01 15:09:15 +02:00
Torsten Schulz (local)
6ca11856c6 refactor(vocab): standardize text normalization methods in VocabService and VocabLessonView
- Updated text normalization logic in VocabService to use a regex that replaces punctuation with spaces, improving text handling consistency.
- Refactored VocabLessonView to utilize the new normalization method for comparable text, enhancing the accuracy of user input processing.
- Ensured both components now share a unified approach to text normalization, streamlining code and improving maintainability.
2026-04-01 14:56:39 +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)
31f560ed3f feat(vocab): implement repeat queue management in VocabService and VocabLessonView
- Added a new method in VocabService to sanitize and manage a repeat queue for vocabulary items, enhancing the learning process.
- Updated VocabLessonView to incorporate repeat queue functionality, allowing for better tracking of vocabulary that needs review.
- Refactored existing logic to ensure seamless integration of repeat queue features, improving user experience during vocabulary lessons.
2026-04-01 14:06:34 +02:00
Torsten Schulz (local)
1dbbe7d1b3 feat(vocab): enhance lesson state management and persistence in VocabLessonView
- Added a new JSONB field `lessonState` to the VocabCourseProgress model to store detailed lesson state information.
- Implemented methods in VocabService for sanitizing and serializing lesson state, ensuring robust data handling.
- Updated VocabLessonView to manage lesson state persistence, including local storage and server synchronization, improving user experience during vocabulary lessons.
- Introduced mechanisms for exporting and normalizing exercise answers, enhancing the accuracy of saved progress.
2026-04-01 11:16:56 +02:00
Torsten Schulz (local)
0968aefde8 feat(vocab): add grammar explanations to VocabLessonView and enhance localization
- Introduced new sections for grammar explanations in VocabLessonView, providing users with contextual insights during vocabulary lessons.
- Added localization keys in German, English, and Spanish for the new grammar explanation titles and introductions, improving user guidance across languages.
- Updated styles for the grammar explanation section to enhance visual clarity and user experience.
2026-04-01 10:22:53 +02:00
Torsten Schulz (local)
3b7591914a feat(i18n, vocab): enhance localization and vocabulary preparation in VocabLessonView
- Added new localization keys in German, English, and Spanish for exercise flow, progress, and learning path instructions, improving user guidance across languages.
- Updated VocabLessonView to incorporate these new keys, enhancing the clarity of vocabulary preparation steps and overall user experience during lessons.
- Refactored the layout to better present the learning path and vocabulary preparation stages, ensuring a more cohesive and informative interface.
2026-04-01 10:21:13 +02:00
Torsten Schulz (local)
6f15424641 feat(i18n): add new localization keys for lesson details and deepening sections
- Introduced new localization strings in German, English, and Spanish for lesson detail toggles and deepening sections, enhancing user experience across multiple languages.
- Updated VocabLessonView to incorporate these new localization keys, improving the clarity and accessibility of lesson information for users.
2026-04-01 10:05:37 +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)
b77072fb8a feat(vocab): enrich core patterns with glosses in VocabService and VocabLessonView
- Implemented a new method in VocabService to enhance core patterns with glosses derived from extracted vocabulary, improving the clarity of vocabulary entries.
- Updated the VocabLessonView to utilize the enriched core patterns, ensuring that glosses are displayed alongside vocabulary targets for better user comprehension.
- Refactored vocabulary preparation logic to integrate glosses seamlessly, enhancing the overall user experience during vocabulary lessons.
2026-04-01 09:40:33 +02:00
Torsten Schulz (local)
911a037a33 feat(vocab-prep): implement enhanced vocabulary preparation steps in VocabLessonView
- Introduced a structured vocabulary preparation process with two review stages before engaging with the vocabulary trainer.
- Added localization support for new vocabulary preparation messages in German, English, and Spanish, improving accessibility for users.
- Updated the VocabLessonView component to display current progress and next steps during vocabulary preparation, enhancing user guidance.
- Refactored related logic to manage preparation stages and item navigation effectively.
2026-04-01 08:58:36 +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)
345a9fe08d refactor(VocabLessonView): combine lesson description and learning goals into a single component
- Merged the lesson description and learning goals sections into a unified block for improved layout and readability.
- Updated styles to enhance the visual presentation of the combined content, ensuring a more cohesive user experience.
2026-04-01 08:06:06 +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)
fd3e7099f8 feat(vocab): add lesson and completed lesson vocab pool endpoints
- Implemented new endpoints in VocabController for retrieving vocab pools based on lessons and completed lessons.
- Updated vocabRouter to include routes for accessing lesson vocab pools and completed lesson vocab pools.
- Enhanced VocabService with methods to extract vocab from exercises and lesson didactics, improving vocabulary retrieval for users.
- Modified VocabPracticeDialog and VocabCourseView components to support new vocab pool functionalities, enhancing user experience in vocabulary practice.
2026-03-31 11:59:48 +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)
d2be12cbb8 fix(i18n): correct translation directions in socialnetwork.json files
- Updated translation keys in German, English, and Spanish localization files to accurately reflect the intended language direction for vocabulary translation.
- Adjusted the `translateTo` and `translateFrom` keys to ensure consistency across all language files.
2026-03-30 16:03:23 +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