cd /news/ai-tools/chamilo-3-0-open-source-lms-with-nat… · home topics ai-tools article
[ARTICLE · art-126920] src=github.com ↗ pub= topic=ai-tools verified=true sentiment=· neutral

Chamilo 3.0 – open-source LMS with native MCP server (PAuth2.1)

Chamilo 3.0 has been released as an open-source learning management system with a native MCP server and PAuth2.1 support, according to the project's changelog. The release includes fixes across display, course, document, announcement, and learnpath modules, along with BuyCourses plugin improvements and removal of obsolete settings. The addition of a native MCP server positions the LMS to integrate with AI tooling via the Model Context Protocol.

read33 min views2 publishedSep 11, 2026
Chamilo 3.0 – open-source LMS with native MCP server (PAuth2.1)
Image: Michielbdejong (auto-discovered)

What's Changed #

- Display: Fix default home welcome visibility by [@christianbeeznest](https://github.com/christianbeeznest) in[#8182](https://github.com/chamilo/chamilo-lms/pull/8182)
- Course: Fix default home welcome visibility by [@christianbeeznest](https://github.com/christianbeeznest) in[#8184](https://github.com/chamilo/chamilo-lms/pull/8184)
- Internal: Use Request class instead of superglobals by [@AngelFQC](https://github.com/AngelFQC) in[#8186](https://github.com/chamilo/chamilo-lms/pull/8186)
- Plugin buycourses2 1 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8188](https://github.com/chamilo/chamilo-lms/pull/8188)
- Plugin: Improve BuyCourses user service flow, validation and admin UX by [@christianbeeznest](https://github.com/christianbeeznest) in[#8199](https://github.com/chamilo/chamilo-lms/pull/8199)
- Plugin: wrap all hardcoded UI strings in i18n calls across PHP and TPL files by [@christianbeeznest](https://github.com/christianbeeznest) in[#8200](https://github.com/chamilo/chamilo-lms/pull/8200)
- Plugin: Fix service-based limits and admin course access by [@christianbeeznest](https://github.com/christianbeeznest) in[#8201](https://github.com/chamilo/chamilo-lms/pull/8201)
  • Document: Restore document.users_copy_files setting in modern Documents and Personal Files by @christianbeeznest in#8202
- Admin: Restore admin-only status settings in role-based user forms by [@christianbeeznest](https://github.com/christianbeeznest) in[#8204](https://github.com/chamilo/chamilo-lms/pull/8204)
- Document: Use Symfony cache directory for temporary copy files by [@christianbeeznest](https://github.com/christianbeeznest) in[#8205](https://github.com/chamilo/chamilo-lms/pull/8205)
  • Admin: Implement career and promotion support in global agenda events (setting allow_careers_in_global_agenda) by @christianbeeznest in#8206
- Announcement: restore course_announcement_scheduled_by_date support by [@christianbeeznest](https://github.com/christianbeeznest) in[#8207](https://github.com/chamilo/chamilo-lms/pull/8207)
- Announcement: remove obsolete anonymous global visibility setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8208](https://github.com/chamilo/chamilo-lms/pull/8208)
- Migration: Remove obsolete setting hide_global_announcements_when_not… by [@christianbeeznest](https://github.com/christianbeeznest) in[#8209](https://github.com/chamilo/chamilo-lms/pull/8209)
- Settings: remove obsolete settings and legacy mappings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8210](https://github.com/chamilo/chamilo-lms/pull/8210)
- Plugin: Fix BuyCourses course access and service limit flow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8211](https://github.com/chamilo/chamilo-lms/pull/8211)
- Learnpath: Reuse canonical learning_path folder by [@christianbeeznest](https://github.com/christianbeeznest) in[#8212](https://github.com/chamilo/chamilo-lms/pull/8212)
- Internal: Avoid mkdir warning when Serializer cache already exists by [@christianbeeznest](https://github.com/christianbeeznest) in[#8214](https://github.com/chamilo/chamilo-lms/pull/8214)
- Learnpath: Disable forced SCORM debug logging by [@christianbeeznest](https://github.com/christianbeeznest) in[#8215](https://github.com/chamilo/chamilo-lms/pull/8215)
- Internal: Use course locale only for requests with course context by [@christianbeeznest](https://github.com/christianbeeznest) in[#8216](https://github.com/chamilo/chamilo-lms/pull/8216)
- User: Respect open course access setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8217](https://github.com/chamilo/chamilo-lms/pull/8217)
- Learnpath: Fix LP files tab hierarchy flag by [@christianbeeznest](https://github.com/christianbeeznest) in[#8247](https://github.com/chamilo/chamilo-lms/pull/8247)
- Internal: Wire finished reminder setting to cron command by [@christianbeeznest](https://github.com/christianbeeznest) in[#8251](https://github.com/chamilo/chamilo-lms/pull/8251)
- Internal: Restore homepage course categories setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8253](https://github.com/chamilo/chamilo-lms/pull/8253)
- Internal: Restore core editor settings support in TinyMCE by [@christianbeeznest](https://github.com/christianbeeznest) in[#8271](https://github.com/chamilo/chamilo-lms/pull/8271)
- Migration: Add V210 migrations path for 2.1 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8272](https://github.com/chamilo/chamilo-lms/pull/8272)
- Internal: Remove dead legacy redirect_after_login logic by [@christianbeeznest](https://github.com/christianbeeznest) in[#8273](https://github.com/chamilo/chamilo-lms/pull/8273)
- Dropbox: Restore dropbox mailing option in modern Vue flow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8274](https://github.com/chamilo/chamilo-lms/pull/8274)
- Exercise: Restore exercise settings behavior in legacy quiz flow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8281](https://github.com/chamilo/chamilo-lms/pull/8281)
- Forum: Restore forum settings behavior by [@christianbeeznest](https://github.com/christianbeeznest) in[#8283](https://github.com/chamilo/chamilo-lms/pull/8283)
- Learnpath: Make LP document folders collapsible by [@christianbeeznest](https://github.com/christianbeeznest) in[#8284](https://github.com/chamilo/chamilo-lms/pull/8284)
- Course: Support categorized course settings safely by [@christianbeeznest](https://github.com/christianbeeznest) in[#8288](https://github.com/chamilo/chamilo-lms/pull/8288)
- Gradebook: Restore gradebook settings behavior by [@christianbeeznest](https://github.com/christianbeeznest) in[#8289](https://github.com/chamilo/chamilo-lms/pull/8289)
- Language: Restore language settings behavior by [@christianbeeznest](https://github.com/christianbeeznest) in[#8290](https://github.com/chamilo/chamilo-lms/pull/8290)
- Internal: Restore mail settings behavior by [@christianbeeznest](https://github.com/christianbeeznest) in[#8291](https://github.com/chamilo/chamilo-lms/pull/8291)
- Message: Restore session message timeframe setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8292](https://github.com/chamilo/chamilo-lms/pull/8292)
- User: Restore password reminder and chat profile settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8293](https://github.com/chamilo/chamilo-lms/pull/8293)
- User: Restore registration settings behavior by [@christianbeeznest](https://github.com/christianbeeznest) in[#8294](https://github.com/chamilo/chamilo-lms/pull/8294)
- Internal: Restore webservice API key settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8295](https://github.com/chamilo/chamilo-lms/pull/8295)
- Internal: Restore external webservice settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8296](https://github.com/chamilo/chamilo-lms/pull/8296)
- User: Restore user workflow settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8305](https://github.com/chamilo/chamilo-lms/pull/8305)
- User: Restore skill assignment notification setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8306](https://github.com/chamilo/chamilo-lms/pull/8306)
- User: Restore skill badge notifications by [@christianbeeznest](https://github.com/christianbeeznest) in[#8307](https://github.com/chamilo/chamilo-lms/pull/8307)
- User: Restore security settings behavior by [@christianbeeznest](https://github.com/christianbeeznest) in[#8310](https://github.com/chamilo/chamilo-lms/pull/8310)
- Internal: Restore custom platform settings behavior by [@christianbeeznest](https://github.com/christianbeeznest) in[#8324](https://github.com/chamilo/chamilo-lms/pull/8324)
- Document: Consolidate API document downloads by [@christianbeeznest](https://github.com/christianbeeznest) in[#8325](https://github.com/chamilo/chamilo-lms/pull/8325)
- Session: Restore legacy session settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8327](https://github.com/chamilo/chamilo-lms/pull/8327)
- Learnpath: Restore LP availability visibility and prerequisite settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8329](https://github.com/chamilo/chamilo-lms/pull/8329)
- Learnpath: Restore SCORM legacy settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8332](https://github.com/chamilo/chamilo-lms/pull/8332)
- Learnpath: Restore legacy learning path settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8333](https://github.com/chamilo/chamilo-lms/pull/8333)
- Course: Restore per-tool course introduction by [@christianbeeznest](https://github.com/christianbeeznest) in[#8336](https://github.com/chamilo/chamilo-lms/pull/8336)
- Course: Restore tools shortcuts by [@christianbeeznest](https://github.com/christianbeeznest) in[#8337](https://github.com/chamilo/chamilo-lms/pull/8337)
- Admin: Hide disabled settings in sub-URLs by [@christianbeeznest](https://github.com/christianbeeznest) in[#8338](https://github.com/chamilo/chamilo-lms/pull/8338)
- Assignment: Implement my_courses_show_pending_work setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8339](https://github.com/chamilo/chamilo-lms/pull/8339)
- Internal: Apply webservice API key settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8340](https://github.com/chamilo/chamilo-lms/pull/8340)
- Internal: Apply session SameSite setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8341](https://github.com/chamilo/chamilo-lms/pull/8341)
- User: Apply profile address setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8342](https://github.com/chamilo/chamilo-lms/pull/8342)
- Learnpath: Apply video context menu setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8343](https://github.com/chamilo/chamilo-lms/pull/8343)
- Course: Keep course home intro always available by [@christianbeeznest](https://github.com/christianbeeznest) in[#8344](https://github.com/chamilo/chamilo-lms/pull/8344)
- Exercise: Implement pending exercise attempts list for MyCourses by [@christianbeeznest](https://github.com/christianbeeznest) in[#8345](https://github.com/chamilo/chamilo-lms/pull/8345)
- Exercise: Add keep-alive ping during exercise attempts by [@christianbeeznest](https://github.com/christianbeeznest) in[#8346](https://github.com/chamilo/chamilo-lms/pull/8346)
- Exercise: Apply session filter setting to pending tests by [@christianbeeznest](https://github.com/christianbeeznest) in[#8347](https://github.com/chamilo/chamilo-lms/pull/8347)
- Learnpath: Restore learning path flow setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8348](https://github.com/chamilo/chamilo-lms/pull/8348)
- Session: Allow base course teachers to view session assignments by [@christianbeeznest](https://github.com/christianbeeznest) in[#8349](https://github.com/chamilo/chamilo-lms/pull/8349)
- Document: Support group document quota setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8350](https://github.com/chamilo/chamilo-lms/pull/8350)
- User: Enforce prevent_multiple_simultaneous_login on Symfony login by [@christianbeeznest](https://github.com/christianbeeznest) in[#8353](https://github.com/chamilo/chamilo-lms/pull/8353)
- Course: Fix course creation capability pre-check fallback by [@christianbeeznest](https://github.com/christianbeeznest) in[#8356](https://github.com/chamilo/chamilo-lms/pull/8356)
- Course: Apply max courses per user to course creation by [@christianbeeznest](https://github.com/christianbeeznest) in[#8357](https://github.com/chamilo/chamilo-lms/pull/8357)
- Course: Improve course tool shortcuts visibility setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8358](https://github.com/chamilo/chamilo-lms/pull/8358)
- Course: Add teacher badge to course cards by [@christianbeeznest](https://github.com/christianbeeznest) in[#8359](https://github.com/chamilo/chamilo-lms/pull/8359)
- Admin: Fix tab persistence in user list by [@ywarnier](https://github.com/ywarnier) in[#8355](https://github.com/chamilo/chamilo-lms/pull/8355)
- Document: Restore cloud link support by [@christianbeeznest](https://github.com/christianbeeznest) in[#8362](https://github.com/chamilo/chamilo-lms/pull/8362)
- Document: Restore editable comments by [@christianbeeznest](https://github.com/christianbeeznest) in[#8364](https://github.com/chamilo/chamilo-lms/pull/8364)
- Auth: LDAP: enable extra field synchronisation - refs BT#22093 by [@NicoDucou](https://github.com/NicoDucou) in[#8370](https://github.com/chamilo/chamilo-lms/pull/8370)
- Auth: Ldap: enable the use of ldaps configuration -refs BT#22093 by [@NicoDucou](https://github.com/NicoDucou) in[#8371](https://github.com/chamilo/chamilo-lms/pull/8371)
- Tracking: Restore compact skill layout - refs BT#23429 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8375](https://github.com/chamilo/chamilo-lms/pull/8375)
- Plugin: Complete BuyCourses recurring services and VAT handling by [@christianbeeznest](https://github.com/christianbeeznest) in[#8374](https://github.com/chamilo/chamilo-lms/pull/8374)
- Plugin: Persist BuyCourses course creation display flag by [@christianbeeznest](https://github.com/christianbeeznest) in[#8376](https://github.com/chamilo/chamilo-lms/pull/8376)
- Internal: Prevent autofocus on sortable pagination forms - refs BT#23432 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8377](https://github.com/chamilo/chamilo-lms/pull/8377)
- Social: Fix social group images in search results by [@christianbeeznest](https://github.com/christianbeeznest) in[#8433](https://github.com/chamilo/chamilo-lms/pull/8433)
- Internal: Handle expired sessions in Tour AJAX by [@christianbeeznest](https://github.com/christianbeeznest) in[#8434](https://github.com/chamilo/chamilo-lms/pull/8434)
- Internal: Handle invalid course context in CidReqListener by [@christianbeeznest](https://github.com/christianbeeznest) in[#8435](https://github.com/chamilo/chamilo-lms/pull/8435)
- Internal: Fix quarterly statistics AJAX  by [@christianbeeznest](https://github.com/christianbeeznest) in[#8436](https://github.com/chamilo/chamilo-lms/pull/8436)
- Plugin: Adapt Zoom plugin integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8439](https://github.com/chamilo/chamilo-lms/pull/8439)
- Plugin: Adapt MaintenanceMode plugin integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8440](https://github.com/chamilo/chamilo-lms/pull/8440)
- Plugin: Improve plugin list filters by [@christianbeeznest](https://github.com/christianbeeznest) in[#8441](https://github.com/chamilo/chamilo-lms/pull/8441)
- Plugin: Adapt Redirection plugin integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8442](https://github.com/chamilo/chamilo-lms/pull/8442)
- Plugin: Add verified plugin list filter by [@christianbeeznest](https://github.com/christianbeeznest) in[#8443](https://github.com/chamilo/chamilo-lms/pull/8443)
- Learnpath: Restore AI study helper for LP documents by [@christianbeeznest](https://github.com/christianbeeznest) in[#8445](https://github.com/chamilo/chamilo-lms/pull/8445)
- Plugin: Implement TopLinks course shortcuts integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8446](https://github.com/chamilo/chamilo-lms/pull/8446)
- Plugin: Avoid BuyCourses table lookup before plugin install by [@christianbeeznest](https://github.com/christianbeeznest) in[#8447](https://github.com/chamilo/chamilo-lms/pull/8447)
- Course: Enhance AI course analyzer with lesson context by [@christianbeeznest](https://github.com/christianbeeznest) in[#8448](https://github.com/chamilo/chamilo-lms/pull/8448)
- Document: Make document autosave drafts collapsible by [@christianbeeznest](https://github.com/christianbeeznest) in[#8449](https://github.com/chamilo/chamilo-lms/pull/8449)
- Plugin: Fix Zoom course meeting invitation flow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8451](https://github.com/chamilo/chamilo-lms/pull/8451)
- Course: Improve resource language advanced settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8452](https://github.com/chamilo/chamilo-lms/pull/8452)
- Plugin: Harden ExternalNotificationConnect plugin integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8453](https://github.com/chamilo/chamilo-lms/pull/8453)
- Plugin: Adapt CourseHomeNotify to course home by [@christianbeeznest](https://github.com/christianbeeznest) in[#8456](https://github.com/chamilo/chamilo-lms/pull/8456)
- Plugin: Adapt CourseLegal course agreement flow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8458](https://github.com/chamilo/chamilo-lms/pull/8458)
- Plugin: Update Static plugin compatibility by [@christianbeeznest](https://github.com/christianbeeznest) in[#8461](https://github.com/chamilo/chamilo-lms/pull/8461)
- Plugin: Integrate ShowUserInfo plugin by [@christianbeeznest](https://github.com/christianbeeznest) in[#8466](https://github.com/chamilo/chamilo-lms/pull/8466)
- Plugin: Integrate StudentFollowUp plugin by [@christianbeeznest](https://github.com/christianbeeznest) in[#8468](https://github.com/chamilo/chamilo-lms/pull/8468)
- Plugin: Improve Learning Calendar plugin UI and agenda integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8470](https://github.com/chamilo/chamilo-lms/pull/8470)
- Plugin: Improve survey export plugins by [@christianbeeznest](https://github.com/christianbeeznest) in[#8471](https://github.com/chamilo/chamilo-lms/pull/8471)
- Plugin: Improve UserRemoteService plugin safety and UI by [@christianbeeznest](https://github.com/christianbeeznest) in[#8472](https://github.com/chamilo/chamilo-lms/pull/8472)
- Plugin: Improve MigrationMoodle plugin safety and task flow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8473](https://github.com/chamilo/chamilo-lms/pull/8473)
- Plugin: Improve EmbedRegistry plugin safety by [@christianbeeznest](https://github.com/christianbeeznest) in[#8474](https://github.com/chamilo/chamilo-lms/pull/8474)
- Plugin: Improve SearchCourse plugin integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8475](https://github.com/chamilo/chamilo-lms/pull/8475)
- Plugin: Improve Rss plugin region integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8476](https://github.com/chamilo/chamilo-lms/pull/8476)
- Plugin: Improve Dictionary plugin integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8477](https://github.com/chamilo/chamilo-lms/pull/8477)
- Plugin: Improve GoogleMaps admin integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8478](https://github.com/chamilo/chamilo-lms/pull/8478)
- Plugin: Improve BeforeLogin plugin integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8479](https://github.com/chamilo/chamilo-lms/pull/8479)
- Plugin: Improve CourseBlock course settings integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8480](https://github.com/chamilo/chamilo-lms/pull/8480)
- Plugin: Improve CustomFooter region integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8481](https://github.com/chamilo/chamilo-lms/pull/8481)
- Plugin: Improve CustomCertificate integration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8482](https://github.com/chamilo/chamilo-lms/pull/8482)
- Plugin: Improve NoSearchIndex plugin behavior by [@christianbeeznest](https://github.com/christianbeeznest) in[#8484](https://github.com/chamilo/chamilo-lms/pull/8484)
- Plugin: Fix BBB stale meeting closure by [@christianbeeznest](https://github.com/christianbeeznest) in[#8485](https://github.com/chamilo/chamilo-lms/pull/8485)
- Plugin: Improve NotebookTeacher plugin behavior by [@christianbeeznest](https://github.com/christianbeeznest) in[#8488](https://github.com/chamilo/chamilo-lms/pull/8488)
- Plugin: CStudio: Blank all unused files in plugin's vendor/jspdf lib … by [@ywarnier](https://github.com/ywarnier) in[#8489](https://github.com/chamilo/chamilo-lms/pull/8489)
- Plugin: Improve Justification plugin management by [@christianbeeznest](https://github.com/christianbeeznest) in[#8492](https://github.com/chamilo/chamilo-lms/pull/8492)
- Plugin: Improve QuestionOptionsEvaluation plugin management by [@christianbeeznest](https://github.com/christianbeeznest) in[#8493](https://github.com/chamilo/chamilo-lms/pull/8493)
  • Internal: API: Message: Replaces /api/messages/by-group/list?groupId=N endpoint with /usergroups/{usergroupId}/messages by @AngelFQC in#8454
- Plugin: Restore ExerciseSignature signing flow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8495](https://github.com/chamilo/chamilo-lms/pull/8495)
- Plugin: Fix BBB recording dates and recording links rendering by [@christianbeeznest](https://github.com/christianbeeznest) in[#8496](https://github.com/chamilo/chamilo-lms/pull/8496)
- install: Fix web installer migration flow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8498](https://github.com/chamilo/chamilo-lms/pull/8498)
- Plugin: Fix GradingElectronic gradebook export flow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8505](https://github.com/chamilo/chamilo-lms/pull/8505)
- Plugin: Fix CheckExtraFieldAuthorCompany field detection by [@christianbeeznest](https://github.com/christianbeeznest) in[#8507](https://github.com/chamilo/chamilo-lms/pull/8507)
- Plugin: Adapt CleanDeletedFiles to new version storage by [@christianbeeznest](https://github.com/christianbeeznest) in[#8511](https://github.com/chamilo/chamilo-lms/pull/8511)
- Plugin: Improve Dashboard plugin admin overview by [@christianbeeznest](https://github.com/christianbeeznest) in[#8512](https://github.com/chamilo/chamilo-lms/pull/8512)
- Plugin: Adapt ExtraMenuFromWebservice to Vue topbar by [@christianbeeznest](https://github.com/christianbeeznest) in[#8514](https://github.com/chamilo/chamilo-lms/pull/8514)
- Plugin: Adapt Mobidico launcher to new version by [@christianbeeznest](https://github.com/christianbeeznest) in[#8516](https://github.com/chamilo/chamilo-lms/pull/8516)
- Plugin: Adapt ShowRegions to rendered Chamilo 2 regions by [@christianbeeznest](https://github.com/christianbeeznest) in[#8517](https://github.com/chamilo/chamilo-lms/pull/8517)
- Plugin: Adapt HelloWorld plugin to Chamilo 2 regions by [@christianbeeznest](https://github.com/christianbeeznest) in[#8518](https://github.com/chamilo/chamilo-lms/pull/8518)
- Plugin: Adapt ExtAuth logout behavior to Chamilo 2 Vue layout by [@christianbeeznest](https://github.com/christianbeeznest) in[#8519](https://github.com/chamilo/chamilo-lms/pull/8519)
- Plugin: Apply resubscription check to admin session enrolment by [@christianbeeznest](https://github.com/christianbeeznest) in[#8521](https://github.com/chamilo/chamilo-lms/pull/8521)
- Plugin: Classify commercial and freemium plugins by [@christianbeeznest](https://github.com/christianbeeznest) in[#8522](https://github.com/chamilo/chamilo-lms/pull/8522)
- Document: Improve document editor defaults and option help by [@christianbeeznest](https://github.com/christianbeeznest) in[#8523](https://github.com/chamilo/chamilo-lms/pull/8523)
- Replace all axios calls with baseService utilities by [@AngelFQC](https://github.com/AngelFQC) in[#8506](https://github.com/chamilo/chamilo-lms/pull/8506)
- Ai helper: Add Claude AI provider support by [@christianbeeznest](https://github.com/christianbeeznest) in[#8525](https://github.com/chamilo/chamilo-lms/pull/8525)
- Plugin: Add map provider support for social locations by [@christianbeeznest](https://github.com/christianbeeznest) in[#8539](https://github.com/chamilo/chamilo-lms/pull/8539)
- Document: Fix document quota display and validation by [@christianbeeznest](https://github.com/christianbeeznest) in[#8541](https://github.com/chamilo/chamilo-lms/pull/8541)
- Tracking: Fix my space report metrics by [@christianbeeznest](https://github.com/christianbeeznest) in[#8542](https://github.com/chamilo/chamilo-lms/pull/8542)
- Plugin: Improve dashboard admin overview by [@christianbeeznest](https://github.com/christianbeeznest) in[#8543](https://github.com/chamilo/chamilo-lms/pull/8543)
- Plugin: Fix plugin commercial classifications by [@christianbeeznest](https://github.com/christianbeeznest) in[#8544](https://github.com/chamilo/chamilo-lms/pull/8544)
- Plugin: Adapt external webservice menu to sidebar by [@christianbeeznest](https://github.com/christianbeeznest) in[#8545](https://github.com/chamilo/chamilo-lms/pull/8545)
- Exercise: Fix hotspot AJAX course context by [@christianbeeznest](https://github.com/christianbeeznest) in[#8546](https://github.com/chamilo/chamilo-lms/pull/8546)
- Admin: Improve admin user authentication forms by [@christianbeeznest](https://github.com/christianbeeznest) in[#8547](https://github.com/chamilo/chamilo-lms/pull/8547)
- Admin: Always show session summary data to admins by [@christianbeeznest](https://github.com/christianbeeznest) in[#8550](https://github.com/chamilo/chamilo-lms/pull/8550)
- Forum: Migrate forum tool to Vue and API Platform by [@christianbeeznest](https://github.com/christianbeeznest) in[#8560](https://github.com/chamilo/chamilo-lms/pull/8560)
- Survey: Migrate survey tool to Vue and API by [@christianbeeznest](https://github.com/christianbeeznest) in[#8562](https://github.com/chamilo/chamilo-lms/pull/8562)
- Admin: Fix course tool visibility settings - refs BT#23501 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8565](https://github.com/chamilo/chamilo-lms/pull/8565)
- Internal: Admin: Only limit access URL management to having Global Ad… by [@NicoDucou](https://github.com/NicoDucou) in[#8572](https://github.com/chamilo/chamilo-lms/pull/8572)
- Install: Fix upgrade installer old root path input by [@christianbeeznest](https://github.com/christianbeeznest) in[#8573](https://github.com/chamilo/chamilo-lms/pull/8573)
- Security: moodle import zip by [@AngelFQC](https://github.com/AngelFQC) in[#8574](https://github.com/chamilo/chamilo-lms/pull/8574)
- Refactor: Reusable single-page PDF rendering method in PDF class by [@AngelFQC](https://github.com/AngelFQC) in[#8578](https://github.com/chamilo/chamilo-lms/pull/8578)
- Security: Restrict allowed classes in Sequence::getUnSerializeGraph() by [@AngelFQC](https://github.com/AngelFQC) in[#8579](https://github.com/chamilo/chamilo-lms/pull/8579)
- Migration: Add legacy migration support structures by [@christianbeeznest](https://github.com/christianbeeznest) in[#8581](https://github.com/chamilo/chamilo-lms/pull/8581)
- Internal: Add Ricky legacy GradingElectronic data importer by [@christianbeeznest](https://github.com/christianbeeznest) in[#8582](https://github.com/chamilo/chamilo-lms/pull/8582)
- Plugin: Add BuyCourses service copy action by [@christianbeeznest](https://github.com/christianbeeznest) in[#8586](https://github.com/chamilo/chamilo-lms/pull/8586)
- Plugin: Add BuyCourses AI course benefits by [@christianbeeznest](https://github.com/christianbeeznest) in[#8587](https://github.com/chamilo/chamilo-lms/pull/8587)
- Plugin: Add BuyCourses course creation service translations by [@christianbeeznest](https://github.com/christianbeeznest) in[#8588](https://github.com/chamilo/chamilo-lms/pull/8588)
- Plugin: Add BuyCourses service link copy action by [@christianbeeznest](https://github.com/christianbeeznest) in[#8589](https://github.com/chamilo/chamilo-lms/pull/8589)
- Plugin: Add BuyCourses monthly yearly service tabs by [@christianbeeznest](https://github.com/christianbeeznest) in[#8590](https://github.com/chamilo/chamilo-lms/pull/8590)
- Plugin: Enforce AI token limits per user by [@christianbeeznest](https://github.com/christianbeeznest) in[#8591](https://github.com/chamilo/chamilo-lms/pull/8591)
- Plugin: Fix BuyCourses student catalog sections by [@christianbeeznest](https://github.com/christianbeeznest) in[#8592](https://github.com/chamilo/chamilo-lms/pull/8592)
- Plugin: Fix BuyCourses translated HTML descriptions by [@christianbeeznest](https://github.com/christianbeeznest) in[#8596](https://github.com/chamilo/chamilo-lms/pull/8596)
- Plugin: Fix BuyCourses service availability checks by [@christianbeeznest](https://github.com/christianbeeznest) in[#8597](https://github.com/chamilo/chamilo-lms/pull/8597)
- Plugin: Fix BuyCourses purchase and course creation UI by [@christianbeeznest](https://github.com/christianbeeznest) in[#8598](https://github.com/chamilo/chamilo-lms/pull/8598)
- Plugin: Fix BuyCourses purchase and course limit bugs by [@christianbeeznest](https://github.com/christianbeeznest) in[#8601](https://github.com/chamilo/chamilo-lms/pull/8601)
- Bump codecov/codecov-action from 5 to 7 by [@dependabot](https://github.com/dependabot) [bot] in[#8559](https://github.com/chamilo/chamilo-lms/pull/8559)
- Plugin: Add BuyCourses empty catalog admin actions by [@christianbeeznest](https://github.com/christianbeeznest) in[#8603](https://github.com/chamilo/chamilo-lms/pull/8603)
- Plugin: Improve BuyCourses plugin translations by [@christianbeeznest](https://github.com/christianbeeznest) in[#8604](https://github.com/chamilo/chamilo-lms/pull/8604)
- Social: Fix personal files translated labels - refs BT#23496 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8606](https://github.com/chamilo/chamilo-lms/pull/8606)
- Display: Close sidebar menu on mobile navigation - refs BT#23519 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8611](https://github.com/chamilo/chamilo-lms/pull/8611)
- Forum: Organize state providers and processors by [@christianbeeznest](https://github.com/christianbeeznest) in[#8612](https://github.com/chamilo/chamilo-lms/pull/8612)
- Forum: Restore basic forum settings by [@christianbeeznest](https://github.com/christianbeeznest) in[#8613](https://github.com/chamilo/chamilo-lms/pull/8613)
- Forum: Improve migration legacy to vue + API by [@christianbeeznest](https://github.com/christianbeeznest) in[#8614](https://github.com/chamilo/chamilo-lms/pull/8614)
- Survey: Organize state providers and processors by [@christianbeeznest](https://github.com/christianbeeznest) in[#8615](https://github.com/chamilo/chamilo-lms/pull/8615)
- Internals: keep soft-deleted users out of the user-to-URL list by [@AngelFQC](https://github.com/AngelFQC) in[#8610](https://github.com/chamilo/chamilo-lms/pull/8610)
- Security: stored XSS via language name in admin panel by [@AngelFQC](https://github.com/AngelFQC) in[#8607](https://github.com/chamilo/chamilo-lms/pull/8607)
- Security: harden user-import XML parsing against XXE by [@AngelFQC](https://github.com/AngelFQC) in[#8609](https://github.com/chamilo/chamilo-lms/pull/8609)
- Security: add CSRF tokens to gradebook delete/lock/form actions by [@AngelFQC](https://github.com/AngelFQC) in[#8625](https://github.com/chamilo/chamilo-lms/pull/8625)
- Security: enforce CSRF token validation on state-changing admin endpoints by [@AngelFQC](https://github.com/AngelFQC) in[#8600](https://github.com/chamilo/chamilo-lms/pull/8600)
- Course: Hide empty state when sticky courses exist by [@christianbeeznest](https://github.com/christianbeeznest) in[#8628](https://github.com/chamilo/chamilo-lms/pull/8628)
- Admin: Fix admin dashboard assignment pages by [@christianbeeznest](https://github.com/christianbeeznest) in[#8629](https://github.com/chamilo/chamilo-lms/pull/8629)
- Internal: Move course report toolbar above title by [@christianbeeznest](https://github.com/christianbeeznest) in[#8630](https://github.com/chamilo/chamilo-lms/pull/8630)
- Admin: Fix admin question action links by [@christianbeeznest](https://github.com/christianbeeznest) in[#8631](https://github.com/chamilo/chamilo-lms/pull/8631)
- Admin: Fix admin question pagination and preview by [@christianbeeznest](https://github.com/christianbeeznest) in[#8632](https://github.com/chamilo/chamilo-lms/pull/8632)
- Search: Add pagination to content search results by [@christianbeeznest](https://github.com/christianbeeznest) in[#8633](https://github.com/chamilo/chamilo-lms/pull/8633)
- Search: Add Xapian pagination and restore webpack config by [@christianbeeznest](https://github.com/christianbeeznest) in[#8634](https://github.com/chamilo/chamilo-lms/pull/8634)
- Editor: Fix TinyMCE Firefox outline and spacing by [@christianbeeznest](https://github.com/christianbeeznest) in[#8635](https://github.com/chamilo/chamilo-lms/pull/8635)
- Display: Fix learner tracking profile responsive layout by [@christianbeeznest](https://github.com/christianbeeznest) in[#8637](https://github.com/chamilo/chamilo-lms/pull/8637)
- Display: Fix stable My courses sidebar  state by [@christianbeeznest](https://github.com/christianbeeznest) in[#8638](https://github.com/chamilo/chamilo-lms/pull/8638)
- Social: Fix folder label translation in personal files - refs BT#23496 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8639](https://github.com/chamilo/chamilo-lms/pull/8639)
- Display: Close login sidebar on mobile navigation - refs BT#23519 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8640](https://github.com/chamilo/chamilo-lms/pull/8640)
- Internal: Log task grading requests and disclose generated media by [@christianbeeznest](https://github.com/christianbeeznest) in[#8641](https://github.com/chamilo/chamilo-lms/pull/8641)
- Learnpath: Fix undefined payload in LP advanced access delete by [@christianbeeznest](https://github.com/christianbeeznest) in[#8642](https://github.com/chamilo/chamilo-lms/pull/8642)
- Bump the composer group across 1 directory with 5 updates by [@dependabot](https://github.com/dependabot) [bot] in[#8643](https://github.com/chamilo/chamilo-lms/pull/8643)
- Revert legacy Ricky DB migration support structures by [@christianbeeznest](https://github.com/christianbeeznest) in[#8644](https://github.com/chamilo/chamilo-lms/pull/8644)
- Security: enforce teacher-student enrollment check on student tracking page by [@AngelFQC](https://github.com/AngelFQC) in[#8602](https://github.com/chamilo/chamilo-lms/pull/8602)
- Security: stored XSS via social group discussion thread title by [@AngelFQC](https://github.com/AngelFQC) in[#8595](https://github.com/chamilo/chamilo-lms/pull/8595)
- Security: stored XSS in messages and social-group discussions via unsanitized v-html by [@AngelFQC](https://github.com/AngelFQC) in[#8594](https://github.com/chamilo/chamilo-lms/pull/8594)
- Security: Fix IDOR and mass-assignment in PushSubscription API resource by [@AngelFQC](https://github.com/AngelFQC) in[#8651](https://github.com/chamilo/chamilo-lms/pull/8651)
- Security: Path traversal + arbitrary file write via sub-language admin panel by [@AngelFQC](https://github.com/AngelFQC) in[#8652](https://github.com/chamilo/chamilo-lms/pull/8652)
- Security: Exposed test token generation endpoint enables privilege escalation by [@AngelFQC](https://github.com/AngelFQC) in[#8654](https://github.com/chamilo/chamilo-lms/pull/8654)
- Security: SSRF via mPDF/Dompdf in Wiki PDF export — route through the shared PDF class by [@AngelFQC](https://github.com/AngelFQC) in[#8593](https://github.com/chamilo/chamilo-lms/pull/8593)
- Security: Remove path-traversal-prone placeholder endpoints in FileManagerController by [@AngelFQC](https://github.com/AngelFQC) in[#8653](https://github.com/chamilo/chamilo-lms/pull/8653)
- Security: Unauthenticated Template Creation via /template/document-templates/create by [@AngelFQC](https://github.com/AngelFQC) in[#8659](https://github.com/chamilo/chamilo-lms/pull/8659)
- Security: Unauthenticated Disclosure of Private Course Template Content by [@AngelFQC](https://github.com/AngelFQC) in[#8658](https://github.com/chamilo/chamilo-lms/pull/8658)
- Security: Unauthenticated Template Deletion by [@AngelFQC](https://github.com/AngelFQC) in[#8657](https://github.com/chamilo/chamilo-lms/pull/8657)
- Fix login as admin/hr + access to sessions report as HR by [@ywarnier](https://github.com/ywarnier) in[#8663](https://github.com/chamilo/chamilo-lms/pull/8663)
- Security: Missing Source-Course Authorization in Course Maintenance Copy Endpoints by [@AngelFQC](https://github.com/AngelFQC) in[#8664](https://github.com/chamilo/chamilo-lms/pull/8664)
- Bump actions/checkout from 6 to 7 by [@dependabot](https://github.com/dependabot) [bot] in[#8649](https://github.com/chamilo/chamilo-lms/pull/8649)
- Security: Restrict Course Maintenance to teachers of the current course by [@AngelFQC](https://github.com/AngelFQC) in[#8665](https://github.com/chamilo/chamilo-lms/pull/8665)
- Security: SQL Injection in ExtraField::get_where_clause() via unescaped array filter values by [@AngelFQC](https://github.com/AngelFQC) in[#8666](https://github.com/chamilo/chamilo-lms/pull/8666)
- Survey: Harden Vue writes and polish configuration UI by [@christianbeeznest](https://github.com/christianbeeznest) in[#8668](https://github.com/chamilo/chamilo-lms/pull/8668)
- Forum: Improve Vue form reply and thread parity by [@christianbeeznest](https://github.com/christianbeeznest) in[#8669](https://github.com/chamilo/chamilo-lms/pull/8669)
- Forum: Improve default category and required errors by [@christianbeeznest](https://github.com/christianbeeznest) in[#8679](https://github.com/chamilo/chamilo-lms/pull/8679)
- Plugin: CStudio: Improve editor access and navigation by [@christianbeeznest](https://github.com/christianbeeznest) in[#8680](https://github.com/chamilo/chamilo-lms/pull/8680)
- Plugin: BuyCourses: Use Chamilo language codes for translated HTML by [@christianbeeznest](https://github.com/christianbeeznest) in[#8684](https://github.com/chamilo/chamilo-lms/pull/8684)
- Plugin: BuyCourses: Link courses to service user limits by [@christianbeeznest](https://github.com/christianbeeznest) in[#8686](https://github.com/chamilo/chamilo-lms/pull/8686)
- Fix: show correct status label for all user types in user_information by [@addow](https://github.com/addow) in[#8676](https://github.com/chamilo/chamilo-lms/pull/8676)
- Fix oauth2 invalid state retry by [@AngelFQC](https://github.com/AngelFQC) in[#8687](https://github.com/chamilo/chamilo-lms/pull/8687)
- Fix: auto-retry OAuth2 flow on invalid state instead of showing error by [@addow](https://github.com/addow) in[#8674](https://github.com/chamilo/chamilo-lms/pull/8674)
- Plugin: BuyCourses: Fix catalog labels and service states by [@christianbeeznest](https://github.com/christianbeeznest) in[#8688](https://github.com/chamilo/chamilo-lms/pull/8688)
- Plugin: BuyCourses: Improve paid course display and cleanup by [@christianbeeznest](https://github.com/christianbeeznest) in[#8691](https://github.com/chamilo/chamilo-lms/pull/8691)
- Plugin: BuyCourses: Improve selected service badge by [@christianbeeznest](https://github.com/christianbeeznest) in[#8692](https://github.com/chamilo/chamilo-lms/pull/8692)
- AI: Avoid duplicate generated image badge by [@christianbeeznest](https://github.com/christianbeeznest) in[#8693](https://github.com/chamilo/chamilo-lms/pull/8693)
- CI: Bump actions/cache from 5 to 6 by [@dependabot](https://github.com/dependabot) [bot] in[#8671](https://github.com/chamilo/chamilo-lms/pull/8671)
- Plugin: BuyCourses: Clarify upgrade pricing and duration rules by [@christianbeeznest](https://github.com/christianbeeznest) in[#8695](https://github.com/chamilo/chamilo-lms/pull/8695)
- Plugin: BuyCourses: Prefer highest active service by [@christianbeeznest](https://github.com/christianbeeznest) in[#8696](https://github.com/chamilo/chamilo-lms/pull/8696)
- Course Description: migrate legacy tool to Vue and API Platform by [@christianbeeznest](https://github.com/christianbeeznest) in[#8697](https://github.com/chamilo/chamilo-lms/pull/8697)
- BuyCourses: add service sale audit trail by [@christianbeeznest](https://github.com/christianbeeznest) in[#8701](https://github.com/chamilo/chamilo-lms/pull/8701)
- BuyCourses: add service active state by [@christianbeeznest](https://github.com/christianbeeznest) in[#8702](https://github.com/chamilo/chamilo-lms/pull/8702)
  • Internal: Fix language flipping between SPA and legacy pages + tests for CourseFromRequestHelper by @AngelFQC in#8685
- Announcement: Migrate announcements to Vue and API Platform by [@christianbeeznest](https://github.com/christianbeeznest) in[#8703](https://github.com/chamilo/chamilo-lms/pull/8703)
- Learning path: fix item deletion indexing by [@christianbeeznest](https://github.com/christianbeeznest) in[#8706](https://github.com/chamilo/chamilo-lms/pull/8706)
- Search: harden Xapian indexing failures by [@christianbeeznest](https://github.com/christianbeeznest) in[#8707](https://github.com/chamilo/chamilo-lms/pull/8707)
- Course: show course details from catalogue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8708](https://github.com/chamilo/chamilo-lms/pull/8708)
- BuyCourses: fix missing coupon code warning by [@christianbeeznest](https://github.com/christianbeeznest) in[#8709](https://github.com/chamilo/chamilo-lms/pull/8709)
- Search: add Xapian rebuild command by [@christianbeeznest](https://github.com/christianbeeznest) in[#8710](https://github.com/chamilo/chamilo-lms/pull/8710)
- BuyCourses: document recurring services cron by [@christianbeeznest](https://github.com/christianbeeznest) in[#8711](https://github.com/chamilo/chamilo-lms/pull/8711)
- Course: validate duplicate course creation by [@christianbeeznest](https://github.com/christianbeeznest) in[#8714](https://github.com/chamilo/chamilo-lms/pull/8714)
- Course Progress: complete Vue migration by [@christianbeeznest](https://github.com/christianbeeznest) in[#8715](https://github.com/chamilo/chamilo-lms/pull/8715)
- Fix repository PHP code style by [@christianbeeznest](https://github.com/christianbeeznest) in[#8716](https://github.com/chamilo/chamilo-lms/pull/8716)
- Learnpath: Migrate legacy code to vue + Api symfony by [@christianbeeznest](https://github.com/christianbeeznest) in[#8667](https://github.com/chamilo/chamilo-lms/pull/8667)
- Wiki: Migrate legacy tool to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8717](https://github.com/chamilo/chamilo-lms/pull/8717)
- Notebook: Migrate legacy tool to Vue and Symfony by [@christianbeeznest](https://github.com/christianbeeznest) in[#8719](https://github.com/chamilo/chamilo-lms/pull/8719)
- Fix ECS issues in migrated tools by [@christianbeeznest](https://github.com/christianbeeznest) in[#8720](https://github.com/chamilo/chamilo-lms/pull/8720)
- Portfolio: Migrate legacy tool to Vue and Symfony by [@christianbeeznest](https://github.com/christianbeeznest) in[#8721](https://github.com/chamilo/chamilo-lms/pull/8721)
- Learnpath: Fix post-merge builder and runtime issues by [@christianbeeznest](https://github.com/christianbeeznest) in[#8724](https://github.com/chamilo/chamilo-lms/pull/8724)
- Security: Stored XSS in course chat (sanitizer ran before Markdown) by [@AngelFQC](https://github.com/AngelFQC) in[#8727](https://github.com/chamilo/chamilo-lms/pull/8727)
- Migration: complete Ticket Vue administration and parity by [@christianbeeznest](https://github.com/christianbeeznest) in[#8731](https://github.com/chamilo/chamilo-lms/pull/8731)
- Learnpath: Fix post-migration review observations by [@christianbeeznest](https://github.com/christianbeeznest) in[#8732](https://github.com/chamilo/chamilo-lms/pull/8732)
- Learning paths: Report SCORM upload limit errors by [@christianbeeznest](https://github.com/christianbeeznest) in[#8744](https://github.com/chamilo/chamilo-lms/pull/8744)
- Exercise: Fix numeric string score formatting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8745](https://github.com/chamilo/chamilo-lms/pull/8745)
- Surveys: Expose invitation learning path context by [@christianbeeznest](https://github.com/christianbeeznest) in[#8746](https://github.com/chamilo/chamilo-lms/pull/8746)
- API: Support JWT access for Chamilo Mobile by [@christianbeeznest](https://github.com/christianbeeznest) in[#8747](https://github.com/chamilo/chamilo-lms/pull/8747)
- API: support JWT learning path runtime writes by [@christianbeeznest](https://github.com/christianbeeznest) in[#8748](https://github.com/chamilo/chamilo-lms/pull/8748)
- Migration: add normalized LP completion fields - refs BT#23461 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8646](https://github.com/chamilo/chamilo-lms/pull/8646)
- Sf7 ap4 migration by [@AngelFQC](https://github.com/AngelFQC) in[#8725](https://github.com/chamilo/chamilo-lms/pull/8725)
- Fix CI for php-8.3 + s7 + ap4 by [@AngelFQC](https://github.com/AngelFQC) in[#8749](https://github.com/chamilo/chamilo-lms/pull/8749)
- Learnpath: Migrate learning path final item runtime by [@christianbeeznest](https://github.com/christianbeeznest) in[#8750](https://github.com/chamilo/chamilo-lms/pull/8750)
- Fix Symfony container validation errors by [@christianbeeznest](https://github.com/christianbeeznest) in[#8751](https://github.com/chamilo/chamilo-lms/pull/8751)
- Security: Add File Integrity Monitoring page by [@ywarnier](https://github.com/ywarnier) in[#8752](https://github.com/chamilo/chamilo-lms/pull/8752)
- Internal: Apply ECS formatting to learning path final item by [@christianbeeznest](https://github.com/christianbeeznest) in[#8753](https://github.com/chamilo/chamilo-lms/pull/8753)
- Internal: Use AccessDecisionManager instead of Security::isGranted in voters by [@AngelFQC](https://github.com/AngelFQC) in[#8756](https://github.com/chamilo/chamilo-lms/pull/8756)
- Learnpath: Fix certificate images in PDF export by [@christianbeeznest](https://github.com/christianbeeznest) in[#8757](https://github.com/chamilo/chamilo-lms/pull/8757)
- Internal: Remove legacy admin table by [@christianbeeznest](https://github.com/christianbeeznest) in[#8759](https://github.com/chamilo/chamilo-lms/pull/8759)
- Course: Restore course home tools and shortcuts by [@christianbeeznest](https://github.com/christianbeeznest) in[#8762](https://github.com/chamilo/chamilo-lms/pull/8762)
- Learnpath: Clarify learning path user access modes by [@christianbeeznest](https://github.com/christianbeeznest) in[#8763](https://github.com/chamilo/chamilo-lms/pull/8763)
- Internal: Fix stale User admin association by [@christianbeeznest](https://github.com/christianbeeznest) in[#8767](https://github.com/chamilo/chamilo-lms/pull/8767)
- Internal: migrating PUT operations to PATCH by [@AngelFQC](https://github.com/AngelFQC) in[#8766](https://github.com/chamilo/chamilo-lms/pull/8766)
- MCP: add course authoring and review workflow by [@christianbeeznest](https://github.com/christianbeeznest) in[#8770](https://github.com/chamilo/chamilo-lms/pull/8770)
- Exercise: Migrate legacy exercise tool to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8580](https://github.com/chamilo/chamilo-lms/pull/8580)
- Course: restore add teachers option mapping by [@christianbeeznest](https://github.com/christianbeeznest) in[#8773](https://github.com/chamilo/chamilo-lms/pull/8773)
- Mobile: add FCM device registration API by [@christianbeeznest](https://github.com/christianbeeznest) in[#8774](https://github.com/chamilo/chamilo-lms/pull/8774)
- Mobile: integrate messaging and assignment APIs by [@christianbeeznest](https://github.com/christianbeeznest) in[#8775](https://github.com/chamilo/chamilo-lms/pull/8775)
- Upgrade Doctrine ORM to 3.x ([#8723](https://github.com/chamilo/chamilo-lms/issues/8723) ) by[@AngelFQC](https://github.com/AngelFQC) in[#8772](https://github.com/chamilo/chamilo-lms/pull/8772)
- Ticket: Fix ticket assignee search and file information by [@christianbeeznest](https://github.com/christianbeeznest) in[#8781](https://github.com/chamilo/chamilo-lms/pull/8781)
- MCP: Add full OAuth2.1 server feature to enable auto-connect from MCP… by [@ywarnier](https://github.com/ywarnier) in[#8780](https://github.com/chamilo/chamilo-lms/pull/8780)
- Internal: Add resource language visibility setting by [@christianbeeznest](https://github.com/christianbeeznest) in[#8782](https://github.com/chamilo/chamilo-lms/pull/8782)
- Migration: support long resource titles by [@christianbeeznest](https://github.com/christianbeeznest) in[#8786](https://github.com/chamilo/chamilo-lms/pull/8786)
- MCP: complete follow-up tool improvements by [@christianbeeznest](https://github.com/christianbeeznest) in[#8787](https://github.com/chamilo/chamilo-lms/pull/8787)
- Migration: prepare long resource titles in V200 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8788](https://github.com/chamilo/chamilo-lms/pull/8788)
- Migration: add safe Ricky certificate processing  by [@christianbeeznest](https://github.com/christianbeeznest) in[#8789](https://github.com/chamilo/chamilo-lms/pull/8789)
  • Migration: Fix Ricky exercise runtime and restore quiz question/answer relations - refs BT#23466 by @christianbeeznest in#8790
- Refactor: remove client-specific migration identifiers by [@christianbeeznest](https://github.com/christianbeeznest) in[#8791](https://github.com/chamilo/chamilo-lms/pull/8791)
- Security: add session expiration warning - refs BT#23459 by [@christianbeeznest](https://github.com/christianbeeznest) in[#8795](https://github.com/chamilo/chamilo-lms/pull/8795)
- Security: MessageAttachment API item GET missing message-ownership check (IDOR) by [@AngelFQC](https://github.com/AngelFQC) in[#8794](https://github.com/chamilo/chamilo-lms/pull/8794)
- Security: make session expiration warning configurable by [@christianbeeznest](https://github.com/christianbeeznest) in[#8797](https://github.com/chamilo/chamilo-lms/pull/8797)
- Migration: remove audited quiz repair migrations by [@christianbeeznest](https://github.com/christianbeeznest) in[#8800](https://github.com/chamilo/chamilo-lms/pull/8800)
- Security: predictable password reset / email confirmation tokens via api_get_unique_id() by [@AngelFQC](https://github.com/AngelFQC) in[#8793](https://github.com/chamilo/chamilo-lms/pull/8793)
- Resource file deletion via delete_variant by [@AngelFQC](https://github.com/AngelFQC) in[#8726](https://github.com/chamilo/chamilo-lms/pull/8726)
- Security: Authenticated arbitrary resource file read via mismatched resourceFileId by [@AngelFQC](https://github.com/AngelFQC) in[#8728](https://github.com/chamilo/chamilo-lms/pull/8728)
- Exercise: honor category matrix question limits by [@christianbeeznest](https://github.com/christianbeeznest) in[#8802](https://github.com/chamilo/chamilo-lms/pull/8802)
- Learning path: expose authorized SCORM runtime packages by [@christianbeeznest](https://github.com/christianbeeznest) in[#8809](https://github.com/chamilo/chamilo-lms/pull/8809)
- Learning path: allow ZIP output for SCORM runtime packages by [@christianbeeznest](https://github.com/christianbeeznest) in[#8810](https://github.com/chamilo/chamilo-lms/pull/8810)
- Security: Stored XSS via inline HTML delivery of social post attachments by [@AngelFQC](https://github.com/AngelFQC) in[#8808](https://github.com/chamilo/chamilo-lms/pull/8808)
- Security: Missing authorization on ContactCategory CRUD routes by [@AngelFQC](https://github.com/AngelFQC) in[#8807](https://github.com/chamilo/chamilo-lms/pull/8807)
- Ticket: restore teacher courses and course context by [@christianbeeznest](https://github.com/christianbeeznest) in[#8812](https://github.com/chamilo/chamilo-lms/pull/8812)
- Course: Migrate course users tool to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8813](https://github.com/chamilo/chamilo-lms/pull/8813)
- User: Migrate course sessions tool to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8815](https://github.com/chamilo/chamilo-lms/pull/8815)
- User: Migrate course classes tool to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8814](https://github.com/chamilo/chamilo-lms/pull/8814)
- Group: Migrate course groups tool to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8816](https://github.com/chamilo/chamilo-lms/pull/8816)
  • API Platform: read course context from CidReqHelper and declare cid/sid/gid in the operations (LearningPath, Portfolio, Forum, CourseInvitation, Ai, CalendarEvent) by @AngelFQC in#8818
- Course: Migrate course settings tool to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8820](https://github.com/chamilo/chamilo-lms/pull/8820)
- Admin: Migrate global question bank to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8821](https://github.com/chamilo/chamilo-lms/pull/8821)
- Course: Fix password-protected course entry test by [@christianbeeznest](https://github.com/christianbeeznest) in[#8764](https://github.com/chamilo/chamilo-lms/pull/8764)
  • Settings: Add assignment download fullname option - refs #8286 by@christianbeeznest in#8823
  • [Needs DB change before merging] Work: #add parameter to add user fullname in submission download indi… by @NicoDucou in#8285
- CI: fix special case behat tests and complete with test for existing … by [@NicoDucou](https://github.com/NicoDucou) in[#8825](https://github.com/chamilo/chamilo-lms/pull/8825)
- Security: Skip unregistered roles in ResourceAclHelper instead of crashing by [@addow](https://github.com/addow) in[#8735](https://github.com/chamilo/chamilo-lms/pull/8735)
- Fix six export endpoints returning HTTP 500 after the CidReqHelper migration by [@AngelFQC](https://github.com/AngelFQC) in[#8826](https://github.com/chamilo/chamilo-lms/pull/8826)
  • Bump guzzlehttp/guzzle from 7.14.2 to 7.15.3 in the composer group across 1 directory by @dependabot [bot] in#8827
- Gradebook: Add customizable grading modes and forum participation scoring by [@AngelFQC](https://github.com/AngelFQC) in[#8583](https://github.com/chamilo/chamilo-lms/pull/8583)
- Course: Migrate course reporting tool to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8828](https://github.com/chamilo/chamilo-lms/pull/8828)
- Admin: Fix document upload skip setting type by [@christianbeeznest](https://github.com/christianbeeznest) in[#8829](https://github.com/chamilo/chamilo-lms/pull/8829)
- CI: Replace Behat with Playwright by [@ywarnier](https://github.com/ywarnier) in[#8796](https://github.com/chamilo/chamilo-lms/pull/8796)
- Reporting: Migrate global reporting suite to Vue by [@christianbeeznest](https://github.com/christianbeeznest) in[#8838](https://github.com/chamilo/chamilo-lms/pull/8838)
- Flushfix2 by [@ywarnier](https://github.com/ywarnier) in[#8836](https://github.com/chamilo/chamilo-lms/pull/8836)
- Internal: Write resource tracking events inside the flush transaction by [@AngelFQC](https://github.com/AngelFQC) in[#8840](https://github.com/chamilo/chamilo-lms/pull/8840)
- Internal: Fix unnecessary plugin requests by [@christianbeeznest](https://github.com/christianbeeznest) in[#8842](https://github.com/chamilo/chamilo-lms/pull/8842)
- Survey: Improve survey API error messages by [@christianbeeznest](https://github.com/christianbeeznest) in[#8844](https://github.com/chamilo/chamilo-lms/pull/8844)
- Editor: Hide personal files in course file manager by [@christianbeeznest](https://github.com/christianbeeznest) in[#8847](https://github.com/chamilo/chamilo-lms/pull/8847)
- Editor: Fix tiny filemanager navigation by [@christianbeeznest](https://github.com/christianbeeznest) in[#8848](https://github.com/chamilo/chamilo-lms/pull/8848)
- User: Fix reporting navigation for students by [@christianbeeznest](https://github.com/christianbeeznest) in[#8849](https://github.com/chamilo/chamilo-lms/pull/8849)
- Document: Fix learning paths folder access in documents by [@christianbeeznest](https://github.com/christianbeeznest) in[#8850](https://github.com/chamilo/chamilo-lms/pull/8850)

New Contributors #

- [@krista445](https://github.com/krista445) made their first contribution in[https://github.com/chamilo/chamilo-lms/pull/8843](https://github.com/chamilo/chamilo-lms/pull/8843)
- [@darkdi](https://github.com/darkdi) made their first contribution in[https://github.com/chamilo/chamilo-lms/pull/8991](https://github.com/chamilo/chamilo-lms/pull/8991)

Full Changelog: v2.0.0...v3.0.0

── more in #ai-tools 4 stories · sorted by recency
── more on @chamilo 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/chamilo-3-0-open-sou…] indexed:0 read:33min 2026-09-11 ·