v2.0.0 Alpha 2
Pre-releaseThis is an alpha release, not meant for production use, only for testing and contributing to the development of Chamilo 2.
Visual design is not final.
Database structure should be frozen until Chamilo 2.0 stable 🤞, so external developers are welcome to start contributing extensions to current feature set while using the existing database structure or adding to it through plugins.
The following is an automatically-generated changelog. For a slightly better human-readable changelog, please check public/documentation/changelog.html inside the package, or load "/documentation/changelog.html" in your browser once you have configured it.
Please refer to the install process in README.md (Chamilo's main project page on Github) for installing. This version still requires Redis (or similar) for sessions management.
What's Changed
- Internal: Fix tool translations in course view - refs BT#21888 by @christianbeeznest in #5689
- Internal: Fix subfolder navigation, file display, and thumbnail consistency in File Manager - refs BT#21647 by @christianbeeznest in #5690
- Internal: Fix user-selected locale in registration email and confirmation message - refs BT#21596 by @christianbeeznest in #5688
- Social: Fix friends list, update requests, add notifications - refs BT#21101 by @christianbeeznest in #5692
- Internal: Fix icon alignment in lesson items - refs BT#21588 by @christianbeeznest in #5693
- Display: Fix duplicated app container + remove unnecessary from_vue value by @AngelFQC in #5691
- Message: Fix message status update on deletion for sender and receiver - refs BT#21887 by @christianbeeznest in #5695
- Message: Fix message read/unread update - refs BT#21902 by @christianbeeznest in #5701
- Internal: Add CSS reset for TinyMCE editor content - refs BT#21876 by @christianbeeznest in #5696
- Internal: Fix language selection for user registration notifications - refs BT#21751 by @christianbeeznest in #5699
- Internal: Add missing sender entries in message_rel_user migration - refs BT#21887 by @christianbeeznest in #5700
- Course: Filter courses by access URL if multiple URLs enabled by @christianbeeznest in #5694
- Internal: Improve font between TinyMCE editor and page view - refs BT#21876 by @christianbeeznest in #5703
- Internal: Fix missing course association in CourseRelUser by @christianbeeznest in #5704
- Message: Fix missing sender records in message_rel_user for legacy message sends - refs BT#21887 by @christianbeeznest in #5705
- Internal: Ensure consistent font between TinyMCE editor and course home page - refs BT#21876 by @christianbeeznest in #5707
- Internal: Fix error when importing gradebook in session course addition - refs BT#21911 by @christianbeeznest in #5708
- Internal: Fix duplicate entry error in session_rel_user table - refs BT#21913 by @christianbeeznest in #5709
- Message: Refactor message deletion and status update logic with entity listeners - refs BT#21887 by @christianbeeznest in #5710
- Internal: Update session course permissions and visibility indicators - refs BT#21604 by @christianbeeznest in #5698
- Gradebook: Remove user_id from gradebook tables, ensure event tracking - refs BT#21911 by @christianbeeznest in #5718
- Internal: Add migration file to remove user in gradebook links and evaluations. by @christianbeeznest in #5719
- Internal: Add course settings permission and improve table layout - refs #5644 by @christianbeeznest in #5723
- Forum: Fix forum visibility issue for course session in student view - refs BT#21926 by @christianbeeznest in #5724
- Internal: Fix email notification for student boss in follow-up messages - refs BT#21924 by @christianbeeznest in #5726
- Course: Fix non-authenticated course 'about' page error and add subscription validation - refs BT#21805 by @christianbeeznest in #5727
- Session: Integrated Asset URL Handling for API Image Display - refs BT#21551 by @christianbeeznest in #5728
- Gradebook: Fix undefined user_id in Evaluation for edit - refs BT#21911 by @christianbeeznest in #5733
- Internal: Fix ImageURL Handling for Session Entity by @christianbeeznest in #5735
- Internal: Fix Coach Assignment Logic in Course Session by @christianbeeznest in #5736
- Internal: Fix session visibility and assignment import issues - refs BT#21604 by @christianbeeznest in #5737
- Internal: Fix course visibility in My Sessions page - refs BT#21604 by @christianbeeznest in #5738
- Internal: Fix chat emoji handling and user ID references - refs #5712 by @christianbeeznest in #5739
- Internal: Improve user creation and update logic for CSV sync script - refs BT#21895 by @christianbeeznest in #5742
- Social: Hide social groups menu item based on config setting - refs BT#21572 by @christianbeeznest in #5745
- Social: Replace text field with TinyMCE editor for post creation - refs BT#21938 by @christianbeeznest in #5746
- Internal: Fix cursor visibility in TinyMCE on Firefox - refs BT#21943 by @christianbeeznest in #5747
- Internal: Fix file manager pagination and tab visibility issues - refs BT#21647 by @christianbeeznest in #5748
- Internal: Fix SQL query error in user language report and address missing graphs issue - refs BT#21957 by @christianbeeznest in #5750
- Migration: Check schema differences post-migration - refs BT#20968 by @christianbeeznest in #5720
- Internal: Set default false for ExtraField boolean fields by @christianbeeznest in #5754
- Internal: Set default visibilty true some extrafields required by @christianbeeznest in #5755
- Internal: Migrate and improve settings from configuration.php to .env and hosting_limits.yml - refs #5702 by @christianbeeznest in #5756
- OAuth2 by @AngelFQC in #5753
- Internal: Add variable settings to .env.dist and plugin.yaml import - refs #5316 by @christianbeeznest in #5759
- Internal: Improve plugin.yaml parameter by @christianbeeznest in #5760
- Internal: Rename hosting_limits.yml and change default value by @christianbeeznest in #5761
- Internal: Add new variables from old configuration to .env for install by @christianbeeznest in #5762
- Internal: Refactor global.inc.php for CLI compatibility by @christianbeeznest in #5768
- Internal: Fix foreign key constraint on user deletion by @christianbeeznest in #5779
- Internal: Improve migration process from install page by @christianbeeznest in #5771
- Migration: Fix issue with foreign key and index removal by @christianbeeznest in #5782
- Internal: Fix CLI error when retrieving settings with api_get_setting - refs BT#21987 by @christianbeeznest in #5788
- Internal: Fix date and time format in datepickers by locale - refs BT#21592 by @christianbeeznest in #5789
- Revert "Internal: Fix CLI error when retrieving settings with api_get_setting - refs BT#21987" by @AngelFQC in #5791
- Include session when running cli by @AngelFQC in #5790
- Internal: Enhance tables and charts: spacing, alignment, titles, Excel export - refs BT#21957 by @christianbeeznest in #5792
- Internal: Align table headers and data to the left for stats page - refs BT#21957 by @christianbeeznest in #5794
- Internal: Add TinyMCE and Uppy localization support - refs BT#21979 by @christianbeeznest in #5793
- Internal: Fix search placeholder translation issue - refs BT#22000 by @christianbeeznest in #5797
- Internal: Fix broken user list page in class administration - refs #5721 by @christianbeeznest in #5799
- Admin: Add breadcrumb to colors configuration page - refs #5715 by @christianbeeznest in #5807
- Course: Improve course access and button labels in course catalog - refs #1402 by @christianbeeznest in #5806
- Internal: Add new user registration report with date range and creator stats - refs #3002 by @christianbeeznest in #5802
- Learnpath: Add recalculate score for LP item view with exercises - refs #2960 by @christianbeeznest in #5803
- Agenda: Add clickable course links in agenda events - refs #3452 by @christianbeeznest in #5805
- Documents: Fix prevent empty page load for non-previewable document links - refs #3540 by @christianbeeznest in #5804
- Migration: Update old CKEditor image paths and convert .gif to .png in content - refs BT#22042 by @christianbeeznest in #5817
- Exercise: Improve score model display and styling in quiz results - refs #3530 by @christianbeeznest in #5819
- Internal: Fix missing translations in disable_user_conditions script - refs BT#22050 by @christianbeeznest in #5824
- Internal: Add ticket_rel_user entity and migration by @christianbeeznest in #5827
- Migration: Fix migration to update ckeditor image paths in lesson documents - refs BT#22042 by @christianbeeznest in #5837
- Migration: Handle missing users in migration by assigning files to fallback_user - refs BT#22039 by @christianbeeznest in #5818
- Internal: Fix PDF export formatting and encoding issues for exercise results - refs BT#22053 by @christianbeeznest in #5833
- Migration: Assign fallback user to missing files and review HTML paths - refs BT#22039 by @christianbeeznest in #5838
- Migration: Fix URL replacement for files with spaces in titles - refs BT#22039 by @christianbeeznest in #5841
- Session: Allow scheduled announcements to session users by @christianbeeznest in #5843
- Migration: Adds a fallback user to the user table before the migration Version20230720143000 by @christianbeeznest in #5845
- Session: Add student boss notification on user inscription and new session checkbox field - refs BT#22055 by @christianbeeznest in #5828
- Fix URL pattern matching for cidReq, sid, and gid in migration by @christianbeeznest in #5846
- Internal: Migration for Hubert (Grenoble) - Peer assessment, autogroups, and LP updates by @christianbeeznest in #5834
- Update document and link URLs and replace old legacy paths with new resource paths by @christianbeeznest in #5848
- Internal: Adapt cron scripts to Chamilo 2 with symfony by @christianbeeznest in #5856
- Exercise: Fix Excel quiz import and exercise creation issues - refs BT#22106 by @christianbeeznest in #5857
- Internal: Fix HTML structure warnings in Vue templates by @christianbeeznest in #5858
- Intenal: Fix XLSX export generation using PHPSpreadsheet - refs BT#21957 by @christianbeeznest in #5881
- Internal: Add translated confirmation texts for delete action - refs BT#22121 by @christianbeeznest in #5882
- Message: Improve mobile messaging layout - refs BT#22119 by @christianbeeznest in #5868
- Message: Fix notification title language for recipient - refs BT#22050 by @christianbeeznest in #5879
- Exercise: Fix hotspot question zone selection and image clickability - refs BT#22145 by @christianbeeznest in #5889
- Internal: Fix table width in TinyMCE - refs BT#22147 by @christianbeeznest in #5890
- Migration: Ensure resource node and ResourceFile creation for CQuizQuestion with picture - refs BT#22145 by @christianbeeznest in #5891
- Internal: Fix role check in SendEventRemindersCommand - refs BT#22151 by @christianbeeznest in #5892
- Internal: Enhance PDF generation: icon replacement, table alignment, and response markers - refs BT#22053 by @christianbeeznest in #5893
- Internal: Add group_category_work_id to c_student_publication table by @christianbeeznest in #5897
- Internal: Fix URL handling in notification links for CLI script - refs BT#22050 by @christianbeeznest in #5896
- Message: Implement filter for soft-deleted messages and sync pagination - refs BT#22141 by @christianbeeznest in #5894
- Internal: Fix theme logo loading in CLI email notifications - refs BT#22050 by @christianbeeznest in #5898
- Internal: Fix calendar localization and usability issues in event creation and editing - refs BT#22156 by @christianbeeznest in #5895
- Exercise: Fix left edge cutoff for image and zone list display - refs BT#22145 by @christianbeeznest in #5900
- Internal: Fix event reminder notification issues in CLI command - refs BT#22151 by @christianbeeznest in #5906
- Internal: Fix button positioning below image in hotspot exercise - refs BT#22145 by @christianbeeznest in #5908
- Internal: Fix reminder sent status update logic - refs BT#22151 by @christianbeeznest in #5909
- User: Fix deleteUser icon visibility and batch action language - refs BT#22161 by @christianbeeznest in #5901
- Calendar: Simplify reminder message formatting - refs BT#22151 by @christianbeeznest in #5913
- Revert reminder message formatting simplification by @christianbeeznest in #5914
- Documents: Enable document move icon in actions column - refs BT#22165 by @christianbeeznest in #5919
- Internal: Fix access to public course documents for authenticated users - refs BT#22191 by @christianbeeznest in #5922
- Documents: Add hover titles to DataTable action icons - refs BT#22165 by @christianbeeznest in #5924
- Internal: Filter student count in session status update script - refs BT#22197 by @christianbeeznest in #5927
- Internal: Fix 500 error on legacy pages for unauthenticated access; redirect to login - refs BT#22174 by @christianbeeznest in #5923
- Message: Add state provider to optimize message search - refs BT#22201 by @christianbeeznest in #5936
- Internal: Fix duplicated tools in c_tool table, keep only course-based tools - refs BT#22208 by @christianbeeznest in #5937
- Internal: Fix: Show Symfony debug panel in dev mode for legacy pages. by @christianbeeznest in #5939
- Bump codecov/codecov-action from 4 to 5 by @dependabot in #5932
- Internal: Implement LP progress reminder functionality from Chamilo 1.11.x in Chamilo 2 - refs BT#22063 by @christianbeeznest in #5832
- Course: Implement infinite scroll to load more than 30 courses - refs BT#22105 by @christianbeeznest in #5865
- User: Hide Registration link and button based on allow_registration setting - refs BT#22225 by @christianbeeznest in #5942
- Course: Implement document auto-launch and notification for students in course home - refs BT#22103 by @christianbeeznest in #5859
- Internal: Fix ReferenceError useUserSessionSubscription is not defined by @christianbeeznest in #5943
- Internal: Optimize session reminders handling and type determination - refs BT#22151 by @christianbeeznest in #5944
- Learnpath: Make lp_author field optional and save correctly by @christianbeeznest in #5945
- Internal: Fix translations for event reminders based on user locale - refs BT#22151 by @christianbeeznest in #5946
- Session: Add batch session export to CSV - refs BT#22096 by @christianbeeznest in #5853
- Platform: Add visibility settings for main menu and topbar entries - refs BT#22243 by @christianbeeznest in #5953
- Migration: Fix resource migration and file handling for course documents - refs BT#22199 by @christianbeeznest in #5955
- Exercise: Fix broken presentation when editing exercises with more than 100 questions - refs BT#22237 by @christianbeeznest in #5954
- Minor: Used correct path for resources files by @christianbeeznest in #5964
- Internal: Fix course template selection and error handling in settings management - refs BT#22246 by @christianbeeznest in #5965
- Statistics: Fix errors and improve data handling in admin reports - refs BT#22248 by @christianbeeznest in #5966
- SSO: Start implementing Azure authentication by @AngelFQC in #5974
- Internal: Fix menu item translations for Course Maintenance and Settings - refs BT#22256 by @christianbeeznest in #5978
- Course: Fix category list actions, reorder on moveUp, export CSV error - refs BT#22253 by @christianbeeznest in #5979
- Course: Fix undefined 'name' key error in course category edit - refs BT#22252 by @christianbeeznest in #5980
- Course: Show all eligible users in student enrollment list - refs BT#22251 by @christianbeeznest in #5981
- Course: Fix course tool visibility based on active_tools_on_create setting - refs BT#22250 by @christianbeeznest in #5982
- Internal: Fix incorrect link in admin page for company reports - refs BT#22249 by @christianbeeznest in #5983
- User: Fix usergroup table loading and form updates - refs BT#22277 by @christianbeeznest in #5984
- Internal: Add token validation system initial implementation - refs #5959 by @christianbeeznest in #5963
- Ticket: Add follower system with notifications and subscription management - refs BT#22281 by @christianbeeznest in #5987
- Exercise: Make comments optional in Global Multiple Answer - refs BT#22295 by @christianbeeznest in #5997
- Course: Remove obsolete 'Allow tests auto-launch' parameter and simplify logic - refs BT#22104 by @christianbeeznest in #5996
- Session: Fix duplicate entry error in session import - refs BT#22278 by @christianbeeznest in #5999
- Message: Convert relative links to absolute in email content - refs BT#22284 by @christianbeeznest in #6002
- Ticket: Fix subscribe ticket creator and skip unsubscribed notifications - refs BT#22281 by @christianbeeznest in #6000
- User: Fix and optimize user deletion logic - refs BT#22215 by @christianbeeznest in #6008
- Migration: Fix document path replacement by filtering with course ID - refs BT#22199 by @christianbeeznest in #6006
- Internal: Optimized user deletion for message cleanup - refs BT#22215 by @christianbeeznest in #6014
- User: Improve profile form, visibility, editability, and extra fields handling - refs BT#22325 by @christianbeeznest in #6020
- Bump nanoid from 3.3.7 to 3.3.8 by @dependabot in #5960
- Bump cross-spawn from 7.0.3 to 7.0.6 by @dependabot in #5935
- Exercise: Add export attempts results to PDF - refs #3320 by @christianbeeznest in #6024
- Exercise: Add multi-delete with checkboxes in reporting page - refs #3625 by @christianbeeznest in #6027
- Ticket: Replace Trash Icon with Forum Subscription Icon - refs BT#22281 by @christianbeeznest in #6032
- Trackin: Add quarterly reports to admin stats page (import from 1.11.x) - refs BT#16108 by @ywarnier in #6042
- User: Update last_login on user login by @christianbeeznest in #6054
- User: Fix settings update, lang filter, profile form by @christianbeeznest in #6057
- Internal: Remove enabled_text2audio & force enable_record_audio active by @christianbeeznest in #6065
- Internal: Improve course/sessions loading page, placeholders & overlay by @christianbeeznest in #6066
- Internal: Hide disabled course tools in student view by @christianbeeznest in #6068
- User: Add ordering logic for courses and sessions list - refs #1655 by @christianbeeznest in #6036
- Internal: Fix language terms and translations by @christianbeeznest in #6069
- Internal: Fix language terms and translations by @christianbeeznest in #6072
- Internal: Add security fixes from 1.11.x by @christianbeeznest in #6079
- User: Remove user.registration_date #6045 by @christianbeeznest in #6059
- Attendance: Improve attendance tool with Vue & Symfony integration - refs #6048 by @christianbeeznest in #6053
- Internal: Exclude course_homepage from session tools removal in migration - refs BT#22208 by @christianbeeznest in #6099
- Internal: Add ON DELETE CASCADE to skill_rel_user_comment foreign key - refs BT#22422 by @christianbeeznest in #6095
- Internal: Fix session introduction links with auto-update button - refs BT#22386 by @christianbeeznest in #6098
- Auth: Extend the user.auth_source field by @AngelFQC in #6100
- Message: Add optional email notifications for user subscriptions - refs #3398 by @christianbeeznest in #5886
- Internal: AI Helpers implementation in exercises questions - refs #6044 by @christianbeeznest in #6087
- Internal: Minor, remove log message. by @christianbeeznest in #6112
- Internal: Set default visibility and editability for migrated extra fields - refs #6106 by @christianbeeznest in #6113
- Internal: Disable Videoconference & Diagnostics from default sidebar menu by @christianbeeznest in #6114
- Internal: Add session replication, reinscription logic, and child session hierarchy for course expiration - refs BT#22057 by @christianbeeznest in #5831
- Session: Fix event editing permissions in course sessions - refs BT#22478 by @christianbeeznest in #6123
- Internal: Hide Videoconference section if empty by @christianbeeznest in #6131
- Internal: Fix AI provider selection in Aiken Generator - refs #6044 by @christianbeeznest in #6132
- Security: Fix pattern to remove on* attributes from HTML tags by @christianbeeznest in #6136
- Extrafield: Fix field options default value after installation - refs #6138 by @christianbeeznest in #6140
- Internal: Fixes to skills assignment - refs #6063 by @christianbeeznest in #6115
- Internal: Fix FileManager upload issue in TinyMCE integration - refs BT#22496 by @christianbeeznest in #6143
- Internal: Add conference tracking tables: meetings, recordings, and activities - refs #4195 by @christianbeeznest in #6124
- Attendance: Add duration field to attendance event form and backend storage - refs #6077 by @christianbeeznest in #6147
- Attendance: Add setting to toggle multi-level attendance - refs #6048 by @christianbeeznest in #6148
- Internal: Fix AI Learning Path order, quizzes now follow chapters correctly - refs #6044 by @christianbeeznest in #6149
- Bump @babel/runtime from 7.26.0 to 7.26.10 by @dependabot in #6151
- Replacing hooks with event subscribers by @AngelFQC in #6127
- Skill: Fix redirect and success message in skill assignment - refs #6063 by @christianbeeznest in #6155
- Internal: Fix duplicate route name issue in personalfile by @christianbeeznest in #6156
- Gradebook: Add min_score validation and highlight unmet scores in gradebook - refs #6049 by @christianbeeznest in #6058
- Skill: Make sub-skill auto-loading optional in manual skill assignment - refs #6158 by @christianbeeznest in #6160
- Documents: Add replace document functionality - refs #5957 by @christianbeeznest in #6022
- Exercise: Add pending corrections indicator to exercise list view - refs #3480 by @christianbeeznest in #6034
- Documents: Add batch download with ZIP support - refs #3197 by @christianbeeznest in #6035
- Course: Add custom image support for course links in homepage tools - refs #2863 by @christianbeeznest in #6039
- Session: Ensure complete session data cleanup with cascade and explicit deletes - refs #2043 by @christianbeeznest in #6038
- Admin: Add course/session report with links to tools - refs #2034 by @christianbeeznest in #6037
- Group: fix new group category creation by @eristich in #6055
- Learnpath: Enable survey access in LP without invitation - refs #5713 by @christianbeeznest in #5766
- User: Add TOTP 2FA authentication - refs #4431 by @christianbeeznest in #5836
- Internal: Implement catalogue filters and toggle icon for courses - refs #6154 by @christianbeeznest in #6159
- Fix Grammar and Clarity Issues in CONTRIBUTING.md and CODE_OF_CONDUCT.md by @DeepikaReddy0717 in #6111
- Language: Use parent ISO code + self ID for new sub languages by @AngelFQC in #6016
- Internal: Fix vote handling & course ranking updates by @christianbeeznest in #6073
- Internal: Fix alias conflict on course join in CourseRelUserExtension by @christianbeeznest in #6165
- Internal: Fix install issues in some plugins by @christianbeeznest in #6166
- Plugin: Refactor BBB to use new conference tables - refs #6153 by @christianbeeznest in #6161
- Internal: Fix plugin settings retrieval by @christianbeeznest in #6167
- Internal: Rename hosting_limits.yaml to settings_overrides.yaml by @AngelFQC in #6164
- Internal: Hide password fields in admin registration email - refs BT#22521 by @christianbeeznest in #6169
- Internal: Minor, support mixed values in Plugin::get() by @christianbeeznest in #6171
- Internal: Remove unused ai_helper plugin after AI integration by @christianbeeznest in #6172
- Internal: Fix missing translation function in StickyCourses by @christianbeeznest in #6173
- Prevent cross site scripting new_ticket.php by @LudiscapeXApi in #5904
- Course: Fix search form to use cid/sid/gid instead of cidReq in user tool by @christianbeeznest in #6175
- Exercise: Fix LP item view score recalculation on exercise update - refs #2960 by @christianbeeznest in #6176
- Internal: Fix LP iframe showing login page when session expires - refs #1765 by @christianbeeznest in #6177
- Internal: Implement LoggingExecutor for GraphQL error reporting by @christianbeeznest in #6178
- Internal: Add custom API endpoints to create users and sessions with related data - refs BT#22527 by @christianbeeznest in #6181
- Migration: Migrate C1 registration intro to CMS Page in C2 - refs BT#22529 by @christianbeeznest in #6182
- Exercise: Use c_quiz_rel_question.destination for success/failure navigation - refs #6180 by @christianbeeznest in #6184
- Webservice: Improve session creation to support all fields - refs BT#22527 by @christianbeeznest in #6187
- Learnpath: Fix asset streaming error in LP viewer - refs BT#22537 by @christianbeeznest in #6189
- Internal: Refactor setting labels to use dynamic values by @christianbeeznest in #6190
- Internal: Add setting titles and comments for multiple config categories by @christianbeeznest in #6191
- Session: Fix SQL error when session title contains apostrophe - refs BT#22546 by @christianbeeznest in #6192
- Ticket: Access URL integration and ticket module refactoring by @christianbeeznest in #6194
- Internal: Settings cleanup and title fixes by @christianbeeznest in #6196
- Internal: Hide internal settings from settings form and search results by @christianbeeznest in #6197
New Contributors
- @eristich made their first contribution in #6055
- @DeepikaReddy0717 made their first contribution in #6111
Full Changelog: v2.0.0-alpha.1...v2.0.0-alpha.2