Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
569 commits
Select commit Hold shift + click to select a range
f4e511e
Revert "Bump symfony/serializer from 7.3.3 to 7.3.4 (#333)"
erseco Oct 6, 2025
183fb81
Revert "Bump symfony/serializer from 7.3.3 to 7.3.4 (#333)" (#344)
eXeLearningProject Oct 6, 2025
290a474
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 6, 2025
b9cdb38
Bump actions/setup-python from 5 to 6 (#352)
dependabot[bot] Oct 7, 2025
95ffecd
Bump actions/checkout from 4 to 5 (#354)
dependabot[bot] Oct 7, 2025
a698207
Bump peter-evans/dockerhub-description from 4 to 5 (#355)
dependabot[bot] Oct 7, 2025
268d2ee
Bump api-platform/core from 4.2.0 to 4.2.1 (#356)
dependabot[bot] Oct 7, 2025
21c5f1b
Bump brianium/paratest from 7.13.0 to 7.14.1 (#357)
dependabot[bot] Oct 7, 2025
fbfc5ba
Bump actions/upload-pages-artifact from 3 to 4 (#353)
dependabot[bot] Oct 7, 2025
3af8f5b
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 7, 2025
e9cd000
Feature/winget and chocolatey publishing (#339)
erseco Oct 7, 2025
fd445a0
Bump symfony/translation from 7.3.3 to 7.3.4 (#358)
dependabot[bot] Oct 7, 2025
901da79
Bump symfony/framework-bundle from 7.3.3 to 7.3.4 (#359)
dependabot[bot] Oct 7, 2025
a67d953
Fix: Serializer integration and request body hydration to prevent dat…
erseco Oct 7, 2025
01c51a4
Bump symfony/twig-bundle from 7.3.2 to 7.3.4 (#360)
dependabot[bot] Oct 7, 2025
9bc9f13
24 sign installers (#350)
erseco Oct 8, 2025
6a6871d
Fix indentation in create-user command (#367)
erseco Oct 8, 2025
cc38e3b
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 8, 2025
84d565d
Added some options to improve performance on sqlite (#363)
erseco Oct 9, 2025
6db24b7
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 9, 2025
d99ef5e
Fix publish in Moodle and improve error messages (#368)
pabloamayab Oct 9, 2025
ab21433
Fixed ?q=/workarea parameter, so now CAS works with BASE_PATH (#373)
erseco Oct 9, 2025
ac4a70d
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 9, 2025
43379d0
New user interface, including collaborative edition.
JMTomasZafra Oct 9, 2025
d1e4553
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 9, 2025
b5640b1
New iDevices styles and icons (#377)
mnarvaezm Oct 10, 2025
ce897b6
Update logo image source in README.md (#388)
erseco Oct 10, 2025
6b4d906
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 10, 2025
6bcda10
Hotfix/fix pragma on test and deprecation (#378)
erseco Oct 10, 2025
96a58dd
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 10, 2025
0d2a9ff
Hotfix/Add active polling for eXeLearning.exe after NSIS install to a…
erseco Oct 10, 2025
1052984
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 10, 2025
96b3da7
interface bugs fixed (#382)
JMTomasZafra Oct 12, 2025
f692344
286 prepare v300 beta7 release (#395)
ignaciogros Oct 12, 2025
807cc16
fix new issues in the presentation (#398)
JMTomasZafra Oct 15, 2025
7a2fcaa
new base themes (#407)
JMTomasZafra Oct 15, 2025
e7b5564
Hotfix/fix php errors new interface (#384)
erseco Oct 15, 2025
5f72355
Hotfix/fix js errors new interface (#386)
erseco Oct 15, 2025
204fb75
347 tmp files cleanup (#374)
erseco Oct 15, 2025
f964dde
Feature/Restrict guest login endpoint to authorized sources to avoid …
erseco Oct 15, 2025
eba696a
Hotfix/reduce mercure and app log output (#385)
erseco Oct 15, 2025
fcb038c
Bump github/codeql-action from 3 to 4 (#401)
dependabot[bot] Oct 15, 2025
8546876
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 15, 2025
dc39fcb
Bump node from 20-alpine to 24-alpine (#400)
dependabot[bot] Oct 15, 2025
845a009
Bump dama/doctrine-test-bundle from 8.3.1 to 8.4.0 (#402)
dependabot[bot] Oct 15, 2025
d23e7bb
Bump phpunit/phpunit from 12.4.0 to 12.4.1 (#403)
dependabot[bot] Oct 15, 2025
b19a620
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 15, 2025
30cd5ae
Bump symfony/mailer from 7.3.3 to 7.3.4 (#406)
dependabot[bot] Oct 15, 2025
531a55d
Hotfix/fix public permissions (#411)
erseco Oct 15, 2025
873b4cf
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 15, 2025
9c25b5f
399 update logo and favicons (#413)
ignaciogros Oct 15, 2025
af57d24
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 15, 2025
4775de1
Hotfix/fix exe elp icns (#414)
erseco Oct 15, 2025
6830af7
Hotfix/fix chocolatey publishing (#412)
erseco Oct 15, 2025
eecff2c
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 15, 2025
6ce62ca
Bump rector/rector from 2.1.7 to 2.2.3 (#404)
dependabot[bot] Oct 15, 2025
79f9b81
Change loading page logo and activity indicator. Delete unused video.…
ignaciogros Oct 15, 2025
13c954b
Bump liip/imagine-bundle from 2.14.0 to 2.15.0 (#405)
dependabot[bot] Oct 15, 2025
75b0d1e
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 15, 2025
a24160d
397 code not updated after installing new version on windows (#420)
erseco Oct 15, 2025
a79f08b
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 15, 2025
6bc3013
Added css generation in Makefile and pipeline (#421)
erseco Oct 15, 2025
702ce25
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 15, 2025
43655e7
Feature/add data testid attributes (#387)
erseco Oct 16, 2025
f86749f
Refactor E2E tests with factories, real-time improvements, and cleane…
erseco Oct 16, 2025
094af7a
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 16, 2025
2ad720a
Update of iDevices (#424)
mnarvaezm Oct 16, 2025
e0bb4c9
Hotfix/set correct permissions (#427)
erseco Oct 16, 2025
5c8eddb
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 16, 2025
52bdba4
Hotfix/remove main css (#429)
erseco Oct 16, 2025
f65610e
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 16, 2025
51ec1bc
Feature/use initials in gravatar (#375)
erseco Oct 16, 2025
c44ea5c
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 16, 2025
2aa23dd
Set /bin/ash as default shell with error handling (#383)
erseco Oct 16, 2025
4abd684
430 prepare v300 beta8 release (#432)
ignaciogros Oct 16, 2025
0db27c6
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 16, 2025
c1ea894
Hotfix/generate css on package (#436)
erseco Oct 16, 2025
3e6a61d
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 16, 2025
9660c7d
Hotfix/generate css on package 2 (#438)
erseco Oct 17, 2025
1398450
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 17, 2025
82b5243
Delete "Test" style and recover the new styles. (#444)
ignaciogros Oct 17, 2025
0a67de6
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 17, 2025
59cde18
Hotfix/allow auto updates (#443)
erseco Oct 17, 2025
60a419a
Hotfix/readme links (#441)
erseco Oct 17, 2025
8edf9ac
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 17, 2025
62370b2
Uncomment test because new code fix #370 (#439)
erseco Oct 17, 2025
cebf4ed
Hotfix/install deb dependencies on test (#450)
erseco Oct 18, 2025
e3c2db1
iDevices games: new score bar icons (#449)
mnarvaezm Oct 18, 2025
bb31031
447 problems in exe 30 beta 8 in windows installation (#448)
erseco Oct 18, 2025
18b2876
Removed deprecations (#431)
erseco Oct 18, 2025
a06ee50
Hotfix/fix chocolatey publishing (#446)
erseco Oct 18, 2025
292e7dc
Hotfix/realtime node test (#440)
erseco Oct 18, 2025
a58ecfa
Feature/print (#425)
erseco Oct 18, 2025
34714de
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 18, 2025
10515f5
Hotfix/increse e2e test time (#452)
erseco Oct 18, 2025
15483cf
Feature/Playwright Collaborative Test (#393)
erseco Oct 18, 2025
abcb49a
428 language files revision (#453)
ignaciogros Oct 19, 2025
6e66940
Feature/Implement session expiration detection and automatic login re…
erseco Oct 19, 2025
80a5bc9
434 prepare rc1 release (#454)
ignaciogros Oct 19, 2025
817ea9a
Delete "Test" style and recover the new styles. (#456)
ignaciogros Oct 19, 2025
8076eab
Enhance project and session management to support multiple open docum…
erseco Oct 19, 2025
d5b2261
200 untranslated strings in imslrmxml (#426)
Ivan0886 Oct 20, 2025
ec457b4
Revert "Enhance project and session management to support multiple op…
eXeLearningProject Oct 20, 2025
fe9cc50
fixes after second review (#469)
JMTomasZafra Oct 20, 2025
de6e245
Strengthen .form-check/.form-check-input and periodic table styles to…
mnarvaezm Oct 20, 2025
344f781
Interactive video: resolve unparseable JSON character issue (issue 39…
mnarvaezm Oct 20, 2025
7825008
Fix #468 - Resources and links reports. Can't download CSV.
ignaciogros Oct 20, 2025
698d858
Merge pull request #473 from exelearning/468-resources-and-links-repo…
ignaciogros Oct 20, 2025
7edd0a6
fixes for revision iii (#471)
JMTomasZafra Oct 20, 2025
f421a88
Bump node from 24-alpine to 25-alpine
dependabot[bot] Oct 20, 2025
b50cd15
Bump symfony/phpunit-bridge from 7.3.3 to 7.3.4 (#475)
dependabot[bot] Oct 21, 2025
34df5cf
Bump symfony/http-client from 7.3.3 to 7.3.4 (#476)
dependabot[bot] Oct 21, 2025
0289400
Bump symfony/runtime from 7.3.1 to 7.3.4 (#477)
dependabot[bot] Oct 21, 2025
c5361a9
Bump symfony/web-profiler-bundle from 7.3.3 to 7.3.4 (#479)
dependabot[bot] Oct 21, 2025
749013a
True or false: resolve save/cancel JS issue and fix error when closi…
mnarvaezm Oct 21, 2025
a92fdd7
Bump symfony/form from 7.3.3 to 7.3.4 (#478)
dependabot[bot] Oct 21, 2025
eb7e45b
Bump actions/setup-node from 5 to 6 (#480)
dependabot[bot] Oct 21, 2025
f9d8f8b
Merge branch 'main' into dependabot/docker_compose/node-25-alpine
ignaciogros Oct 21, 2025
6fd94c9
Merge pull request #481 from exelearning/dependabot/docker_compose/no…
ignaciogros Oct 21, 2025
1543710
Fix shareUrl (#487)
erseco Oct 21, 2025
5043c31
Hotfix/fix windows installer (#486)
erseco Oct 21, 2025
e83685a
Switches instead of checkboxes (New) (#484)
mnarvaezm Oct 21, 2025
d197921
Hotfix/remove portable build (#491)
erseco Oct 21, 2025
f67e444
472 prepare rc2 release (#492)
ignaciogros Oct 21, 2025
47e7896
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 21, 2025
f113455
472 prepare rc2 release (#494)
ignaciogros Oct 21, 2025
84dab4c
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 21, 2025
bf24ea0
Feature/mac app notarization (#495)
erseco Oct 21, 2025
c44e139
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 21, 2025
67229a8
Feature/mac app notarization (2) (#497)
erseco Oct 22, 2025
13ebc49
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 22, 2025
f896d29
Fix median calculation when applying a rubric. (#500)
ignaciogros Oct 22, 2025
a042a1f
Fix error when there's more than one UDL in a page. (#502)
ignaciogros Oct 22, 2025
00742fd
498 change elp extension (#501)
erseco Oct 22, 2025
ae7ced7
419 you can put an idevice before the box title (#503)
ignaciogros Oct 22, 2025
017707b
Merge branch 'main' of github.com:exelearning/exelearning
erseco Oct 22, 2025
bd14ca9
Restore fixture tema-10-ejemplo.elp to previous state
erseco Oct 22, 2025
1061f2c
493 prepare rc3 release (#504)
ignaciogros Oct 22, 2025
f8ec7c5
Merge branch 'main' into hotfix/revert-fixture
ignaciogros Oct 22, 2025
806693d
Merge pull request #506 from exelearning/hotfix/revert-fixture
ignaciogros Oct 22, 2025
d56ad22
Fix repo and public key (#511)
erseco Oct 23, 2025
a43085b
Progress report: sort iDevices by block order on each page (#509)
mnarvaezm Oct 23, 2025
dd4678a
Fix update and windows 10 vc++ runtime requirement (#512)
erseco Oct 23, 2025
90bb935
Insert imported iDevice/block into current page (#513)
mnarvaezm Oct 23, 2025
f06b4fb
EU and GL translations (#515)
ignaciogros Oct 23, 2025
6ae6568
Exclude data-idevice-json-data and data-idevice-template attributes …
mnarvaezm Oct 23, 2025
2bacabb
fix: Allow rendering MathJax when previewing and printing (#510)
lrlopez Oct 23, 2025
72b8322
Fix visibility issues for blocks and iDevices in export (#517)
pabloamayab Oct 23, 2025
18b380b
214 minify idevice option (#518)
ignaciogros Oct 23, 2025
df5a351
Hotfix/fix update and windows 10 2 (#520)
erseco Oct 23, 2025
c69102d
Prepare RC4 (#522)
ignaciogros Oct 23, 2025
153907d
Removed iDevices JSON dependency on the HTML attribute id-resource. …
mnarvaezm Oct 24, 2025
cf4f9a1
Fix: Correct file naming on export (#528)
franmate Oct 24, 2025
c1ac153
Add decimal number support in Math Problems domains and global time s…
mnarvaezm Oct 24, 2025
fc7ba90
519 missing confirmation before closing a project (#530)
pabloamayab Oct 24, 2025
a52edf9
CA translation, by Departament d'Educació i Formació Professional. Ge…
ignaciogros Oct 24, 2025
36df39f
Internal links are not working in exe (#547)
franmate Oct 26, 2025
1041461
527 error in previewing content in offline application with emoticons…
franmate Oct 26, 2025
2e600e5
Initialize FX effects on Text iDevice save. (#544)
mnarvaezm Oct 26, 2025
a628b4e
526 prepare rc5 release (#548)
ignaciogros Oct 26, 2025
fab40ab
Fix the .elpx extension on save as dialog (#551)
erseco Oct 27, 2025
219322a
Mapa translations (#554)
mnarvaezm Oct 27, 2025
2618653
Local windows installer sign and autoupdate fix (#550)
erseco Oct 27, 2025
41184e5
Better save in block/idevices in electron app. Fix #539 (#552)
erseco Oct 27, 2025
076babd
Fix multiple toast notifications appearing after editing the project …
mnarvaezm Oct 27, 2025
00b84b0
549 prepare rc5 release ii (#558)
ignaciogros Oct 27, 2025
02cc45c
ChangeLog revision. (#559)
ignaciogros Oct 27, 2025
c114aa4
Initial import elp version. fix #537 (#553)
erseco Oct 27, 2025
70036e1
Bump symfony/security-bundle from 7.3.3 to 7.3.4 (#561)
dependabot[bot] Oct 27, 2025
d8c4bee
Bump doctrine/doctrine-migrations-bundle from 3.4.2 to 3.5.0 (#562)
dependabot[bot] Oct 27, 2025
be587bf
Bump actions/download-artifact from 5 to 6 (#564)
dependabot[bot] Oct 27, 2025
f30e4a7
Bump actions/upload-artifact from 4 to 5 (#566)
dependabot[bot] Oct 27, 2025
b03dd6c
Bump rector/rector from 2.2.3 to 2.2.6 (#567)
dependabot[bot] Oct 27, 2025
d51bcb2
Bump brianium/paratest from 7.14.1 to 7.14.2 (#568)
dependabot[bot] Oct 28, 2025
743ce26
Fix Windows filepath compatibility in iDevices and filemanager (#569)
mnarvaezm Oct 28, 2025
f30a722
560 prepare rc6 release (#570)
ignaciogros Oct 28, 2025
e2e2514
Update ChangeLog
eXeLearningProject Oct 28, 2025
4996381
571 prepare v300 release (#572)
ignaciogros Oct 28, 2025
54be7fc
Update package.json
eXeLearningProject Oct 28, 2025
bd90bda
Add support for multimedia source extraction in OdeXmlUtil (#577)
pabloamayab Oct 30, 2025
516a2e8
Feature/publish homebrew cask (#496)
erseco Nov 2, 2025
d8e6a08
Add tikismaker experimental branch (#591)
erseco Nov 2, 2025
0ca971f
iDevice and box title simultaneous edition. (#580)
ignaciogros Nov 2, 2025
4478c29
Style review and documentation (#582)
ignaciogros Nov 2, 2025
dbc493e
Fix the .elpx extension on save as dialog (#598)
erseco Nov 4, 2025
39b2734
Add a custom temporary email (#597)
erseco Nov 4, 2025
23a2c10
Bump electron from 38.5.0 to 39.0.0 (#599)
dependabot[bot] Nov 4, 2025
c868d97
Bump symfony/yaml from 7.3.3 to 7.3.5 (#601)
dependabot[bot] Nov 4, 2025
27dff65
Bump symfony/console from 7.3.4 to 7.3.5 (#602)
dependabot[bot] Nov 4, 2025
eede302
Bump symfony/serializer from 7.3.4 to 7.3.5 (#603)
dependabot[bot] Nov 4, 2025
db5d9c7
Bump symfony/debug-bundle from 7.3.4 to 7.3.5 (#604)
dependabot[bot] Nov 4, 2025
3ccb096
Multiple Word Search iDevice instances per page + validations and fal…
mnarvaezm Nov 4, 2025
4ab89ba
606 review styles file names (#609)
ignaciogros Nov 4, 2025
8644368
Add default profile image if no internet connection (#592)
erseco Nov 4, 2025
afb881f
dd page highlight property for navigation menus (#615)
mnarvaezm Nov 5, 2025
6a9e71d
Fix JavaScript formatting of iDevices and update translations (#612)
mnarvaezm Nov 5, 2025
17366f2
Removed some deprecations (#616)
erseco Nov 5, 2025
b0afc74
Increased the default minimum values (#620)
erseco Nov 5, 2025
159fa80
Push docker image on tikismaker (#624)
erseco Nov 5, 2025
fba63d6
Add progress dialog for uploads (#619)
erseco Nov 5, 2025
7000185
Add support for opening editable EPUB files (#610)
pabloamayab Nov 5, 2025
ef1cf24
Fix metadata error en profiler when using mariadb and new make.bat fo…
erseco Nov 6, 2025
7d1a528
Add eXeVersion to export structure (#626)
pabloamayab Nov 6, 2025
8577b3f
Bump doctrine/doctrine-bundle from 2.18.0 to 3.0.0 (#600)
dependabot[bot] Nov 6, 2025
a05e1bf
Some improvements for binded dirs on win (#617)
erseco Nov 7, 2025
d4d51e4
584 feature add new from template option to create projects from pred…
erseco Nov 9, 2025
72af7a6
Fixed file open (#637)
erseco Nov 9, 2025
f9e5696
Upgrade base image to erseco/alpine-php-webserver:3.22.2 + PHP/Symfon…
erseco Nov 9, 2025
dd172f7
Add progress dialog for imports (#632)
erseco Nov 9, 2025
a10167c
Improve crossword performance and word placement (#630)
mnarvaezm Nov 9, 2025
8e077b4
629 display epub files in the openimport windows (#638)
ignaciogros Nov 9, 2025
e7c00bc
Add page subtitle and hide title option to page settings (#625)
mnarvaezm Nov 9, 2025
3f69830
Feature: Add support for converting old .elp files via rest api v2, a…
erseco Nov 9, 2025
a5f6946
640 translations revision and cleanup (#642)
ignaciogros Nov 9, 2025
bf2d0bf
Upgraded proxy settings (#633)
erseco Nov 10, 2025
59c21f2
Added automatic Portuguese, Romanian, Basque and Esperanto translatio…
erseco Nov 10, 2025
1a77ff0
Allow `text/xml` files (like .gpx files). (#646)
ignaciogros Nov 10, 2025
e5a64b0
Added support for gltf files (#647)
erseco Nov 10, 2025
7cbe4c3
608 unexpected error importing file (#618)
erseco Nov 10, 2025
4e6fd17
Remove the "Include a copy of the source file" preference. (#650)
ignaciogros Nov 10, 2025
47a9f50
Mermaid diagrams rendering support via TinyMCE plugin (#545)
lrlopez Nov 10, 2025
4cf7a2a
Bump symfony/css-selector from 7.3.0 to 7.3.6 (#653)
dependabot[bot] Nov 11, 2025
7e7e8e7
Bump friendsofphp/php-cs-fixer from 3.88.2 to 3.89.2 (#654)
dependabot[bot] Nov 11, 2025
39f6031
Bump symfony/validator from 7.3.4 to 7.3.6 (#655)
dependabot[bot] Nov 11, 2025
c95451b
Bump symfony/intl from 7.3.4 to 7.3.5 (#656)
dependabot[bot] Nov 11, 2025
92211d2
Bump doctrine/orm from 3.5.2 to 3.5.3 (#657)
dependabot[bot] Nov 11, 2025
f1ede4b
651 add lrlopezs mermaid plugin for tinymce (#652)
ignaciogros Nov 11, 2025
a236adf
Adding default values to setup users and online by default (#659)
erseco Nov 13, 2025
ba4b965
Bump symfony/http-foundation in the composer group across 1 directory…
dependabot[bot] Nov 13, 2025
19ab907
Allow EPUB files as valid extensions for import and consider packages…
pabloamayab Nov 13, 2025
e0c0fe8
Revert "Allow EPUB files as valid extensions for import and consider …
pabloamayab Nov 13, 2025
ca659a7
622 prepare v301 release (I) (#666)
ignaciogros Nov 14, 2025
71b9423
Fix assets on nginx proxy (#669)
erseco Nov 15, 2025
f1c9d4e
Add comprehensive Symfony to NestJS migration plan
claude Nov 15, 2025
881ebdb
Update migration plan based on real architecture analysis
claude Nov 15, 2025
cb7f1dd
Add comprehensive architecture definition prompt for AI agent
claude Nov 15, 2025
253ee36
initial node migration
erseco Nov 16, 2025
61addec
Continue with the migration
erseco Nov 16, 2025
37d3bc7
Backup
erseco Nov 16, 2025
ee4bf81
Initial nestjs migration
erseco Nov 16, 2025
8d43c2f
Initial nestjs migration
erseco Nov 16, 2025
dae8f43
Initial nestjs migration
erseco Nov 16, 2025
e3ecbc9
Initial nestjs migration
erseco Nov 16, 2025
7fbd0f1
Initial nestjs migration
erseco Nov 16, 2025
a4b14aa
Initial nestjs migration
erseco Nov 16, 2025
10df1a7
improved windows deploy
erseco Nov 16, 2025
603fe90
improved windows deploy
erseco Nov 16, 2025
6805126
improved windows deploy
erseco Nov 16, 2025
1f2ebc1
improved windows deploy
erseco Nov 16, 2025
cb7b6df
feat: Migrate Symfony commands to NestJS
google-labs-jules[bot] Nov 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
829 changes: 829 additions & 0 deletions .buildpath

Large diffs are not rendered by default.

119 changes: 119 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# Dependencies
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# package-lock.json is needed for npm ci in Docker build

# Build outputs (will be generated during Docker build)
dist/
build/
*.tsbuildinfo

# Development files
# NOTE: src/ and tsconfig.json are needed for building inside Docker
test/
tests/
*.test.ts
*.spec.ts
*.test.js
*.spec.js
.vscode/
.idea/
.settings/
*.swp
*.swo
*~

# Version control
.git/
.gitignore
.gitattributes

# CI/CD
.github/
.gitlab-ci.yml
.travis.yml

# Environment files (use build args instead)
.env
.env.*
!.env.dist

# Documentation
README.md
CHANGELOG.md
LICENSE
*.md
doc/
docs/

# Docker files (not needed inside the image)
Dockerfile*
.dockerignore
docker-compose*.yml

# Testing and coverage
coverage/
.nyc_output/
e2e_screenshots/
playwright-report/
test-results/

# Logs
logs/
*.log
nest-server.log

# OS files
.DS_Store
.AppleDouble
.LSOverride
Thumbs.db

# Electron and desktop app files (not needed for server)
packaging/
main.js
preload.js
*.dmg
*.pkg
*.deb
*.rpm
*.AppImage

# Symfony legacy (if running NestJS only)
symfony_legacy/

# Temporary files
tmp/
temp/
*.tmp
.cache/

# Database files (use external volumes)
*.db
*.sqlite
*.sqlite3
data/
data_database/
data_persistent/

# IDE and editor configs
.editorconfig
.eslintrc*
.prettierrc*
# NOTE: tsconfig.json is needed for TypeScript compilation in Docker
jest.config.js
nest-cli.json

# Aider AI files
.aider*

# Proxy server (development only)
proxy-server.js

# Scripts that are not needed in production
start-migration-dev.sh
*.sh
Makefile
release/
240 changes: 240 additions & 0 deletions .env.dist
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
# This file (.env.dist) is an example template for the environment variables required by the application.
# The .env file is not versioned in the repository and should be created by duplicating this file.
# To use it, copy this file as .env and define the appropriate values.
# The environment variables defined in .env will be automatically loaded by Docker Compose.

###> symfony/framework-bundle ###
APP_ENV=prod
APP_DEBUG=0
APP_SECRET=CHANGE_THIS_TO_A_SECRET
APP_PORT=8080
APP_ONLINE_MODE=1
XDEBUG_MODE=off # You can enable it by changing to "debug", "off" to leave it disabled
XDEBUG_CONFIG="client_host=host.docker.internal"

# Configure the BASE_PATH for subdirectory installation.
# Leave it empty if you want to use the root directory.
# IMPORTANT: Do not end with a slash (/).
# Examples:
# BASE_PATH= (installation at root)
# BASE_PATH=/exelearning
# BASE_PATH=/web/exelearning
BASE_PATH=

# Allow users to import/install styles
ONLINE_THEMES_INSTALL=0

# Allow users to import/install iDevices
ONLINE_IDEVICES_INSTALL=0

# Test user data
TEST_USER_EMAIL=user@exelearning.net
TEST_USER_USERNAME=user
TEST_USER_PASSWORD=1234

###> Authentication Configuration ###
# Available modes (comma-separated):
# - "none": Offline mode (no authentication)
# - "password": Traditional username/password login
# - "cas": CAS authentication
# - "openid": OpenID Connect authentication
# - "guest": Guest access — creates a temporary user, no login required
# Examples:
# APP_AUTH_METHODS=none
# APP_AUTH_METHODS=password,cas
APP_AUTH_METHODS=password,cas,openid,guest

# Automatically create users when authenticating with CAS/OpenID (true/false)
AUTH_CREATE_USERS=true
# Domain used when generating temporary emails for CAS/OpenID users without one
# Leave empty to use the default value (domain.local)
AUTH_TEMP_EMAIL_DOMAIN=domain.local

###> CAS Configuration (required if using CAS) ###
# Test server: https://casserverpac4j.herokuapp.com
CAS_URL=https://casserverpac4j.herokuapp.com
CAS_VALIDATE_PATH=/p3/serviceValidate
CAS_LOGIN_PATH=/login
CAS_LOGOUT_PATH=/logout

###> OpenID Connect Configuration (required if using OpenID) ###
# Test server: https://demo.duendesoftware.com
OIDC_ISSUER=https://demo.duendesoftware.com
OIDC_AUTHORIZATION_ENDPOINT=https://demo.duendesoftware.com/connect/authorize
OIDC_TOKEN_ENDPOINT=https://demo.duendesoftware.com/connect/token
OIDC_USERINFO_ENDPOINT=https://demo.duendesoftware.com/connect/userinfo
OIDC_SCOPE="openid email"
OIDC_CLIENT_ID=interactive.confidential
OIDC_CLIENT_SECRET=secret

## Sample Google Oauth values
# OIDC_ISSUER=https://accounts.google.com
# OIDC_AUTHORIZATION_ENDPOINT=https://accounts.google.com/o/oauth2/v2/auth
# OIDC_TOKEN_ENDPOINT=https://oauth2.googleapis.com/token
# OIDC_USERINFO_ENDPOINT=https://openidconnect.googleapis.com/v1/userinfo
# OIDC_SCOPE="openid email"
# OIDC_CLIENT_ID=PLEASE_CHANGEME
# OIDC_CLIENT_SECRET=PLEASE_CHANGEME

###< Authentication Configuration ###

###> API JWT (local Bearer tokens) ###
# Secret for locally signed JWTs accepted by the API
API_JWT_SECRET=dev_secret_change_me
# Optional issuer and audience checks
# API_JWT_ISSUER=exelearning
# API_JWT_AUDIENCE=exelearning_clients
###< API JWT (local Bearer tokens) ###

###> symfony/framework-bundle ###
# See: https://symfony.com/doc/7.3/deployment/proxies.html
# ATTENTION: if the app is behind an SSL reverse proxy, set the proxies below.
# Use 'private_ranges' to cover common private CIDRs and include REMOTE_ADDR
# so the node directly in front of PHP is trusted too.
TRUSTED_PROXIES=private_ranges,REMOTE_ADDR

# Comma-separated trusted headers. Keep x-forwarded-proto to detect HTTPS,
# but REMOVE it if your proxy cannot be fully trusted (prevents protocol spoofing).
# If your proxy uses the standard Forwarded header, set TRUSTED_HEADERS=forwarded
TRUSTED_HEADERS=x-forwarded-for,x-forwarded-host,x-forwarded-proto,x-forwarded-port,x-forwarded-prefix
###< symfony/framework-bundle ###

###> symfony/mailer ###
# MAILER_DSN=smtp://localhost
###< symfony/mailer ###

###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html
# IMPORTANT: You must configure your database server version, either here or in config/packages/doctrine.yaml
# SQLite configuration (default)
DB_DRIVER=pdo_sqlite
DB_HOST=
DB_PORT=
DB_NAME=
DB_USER=
DB_PASSWORD=
DB_CHARSET=
DB_SERVER_VERSION=3.32
DB_PATH=data/exelearning.db

# MySQL configuration
# DB_DRIVER=pdo_mysql
# DB_HOST=db
# DB_PORT=3306
# DB_NAME=exelearning
# DB_USER=root
# DB_PASSWORD=secret
# DB_CHARSET=utf8mb4
# DB_SERVER_VERSION=8.0
# DB_PATH=

# PostgreSQL configuration
# DB_DRIVER=pdo_pgsql
# DB_HOST=db
# DB_PORT=5432
# DB_NAME=exelearning
# DB_USER=myuser
# DB_PASSWORD=mypassword
# DB_CHARSET=utf8
# DB_SERVER_VERSION=13
# DB_PATH=
###< doctrine/doctrine-bundle ###

###> Files, cache, and logs directories ###
FILES_DIR=""
CACHE_DIR=""
LOG_DIR=""
TMP_CLEANUP_KEY=
###< Files, cache, and logs directories ###

###> User Storage and File Upload Limits ###
# Maximum disk space per user in MB
USER_STORAGE_MAX_DISK_SPACE=1024

# Whether autosaved files count towards user storage quota (true/false)
COUNT_USER_AUTOSAVE_SPACE_ODE_FILES=true

# Maximum file upload size in MB (application level)
# This limit will be compared with PHP limits (upload_max_filesize, post_max_size, memory_limit)
# The most restrictive limit will be enforced
FILE_UPLOAD_MAX_SIZE=256
###< User Storage and File Upload Limits ###

###> Autosave Configuration ###
# Time interval for autosave in seconds
PERMANENT_SAVE_AUTOSAVE_TIME_INTERVAL=600

# Maximum number of autosaved files to maintain
PERMANENT_SAVE_AUTOSAVE_MAX_NUMBER_OF_FILES=10

# Enable/disable autosave functionality (true/false)
AUTOSAVE_ODE_FILES_FUNCTION=true
###< Autosave Configuration ###

###> Application Features ###
# Enable/disable version control (true/false)
VERSION_CONTROL=true

# Number of recent ODE files to show
USER_RECENT_ODE_FILES_AMOUNT=3

# Collaborative blocking level: "page" blocks entire pages, "idevice" blocks individual devices
COLLABORATIVE_BLOCK_LEVEL=idevice
###< Application Features ###

###> Google ###
GOOGLE_CLIENT_ID=example.com.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=example.com
###< Google ###

###> Dropbox ###
DROPBOX_CLIENT_ID=example.com
DROPBOX_CLIENT_SECRET=example.com
###< Dropbox ###

###> openEQUELLA ###
OPENEQUELLA_CLIENT_ID=example.com
OPENEQUELLA_CLIENT_SECRET=example.com
###< openEQUELLA ###

###> Multiple Platform Providers Configuration ###
# Support for multiple educational platform providers (e.g., Moodle, Moodle Workplace, Others etc.)
# Each provider needs a URL, token, and unique identifier
# Use comma-separated values with positional mapping (same order for all three variables)

# Provider URLs - base URLs for each platform
# Example: PROVIDER_URLS=https://moodle_lms.com,https://moodle_workplace.example.com,https://custom_lms.example.com
PROVIDER_URLS=

# Provider tokens - authentication tokens/secrets for each platform
# Example: PROVIDER_TOKENS=moodle_lms_token,workplace_token,custom_lms_token
PROVIDER_TOKENS=

# Provider IDs - unique identifiers for each platform
# Example: PROVIDER_IDS=moodlelms,workplace,custommoodle
PROVIDER_IDS=

# Default provider fallback settings
DEFAULT_PROVIDER_URL=
DEFAULT_PROVIDER_TOKEN=
DEFAULT_PROVIDER_ID=
###< Multiple Platform Providers Configuration ###

###> symfony/mercure-bundle ###
# See https://symfony.com/doc/current/mercure.html#configuration
#
# Internal Mercure hub URL used by Symfony to publish updates.
# Can't be left blank, passed to mercure.yaml in compile time
MERCURE_URL=http://localhost:8080/.well-known/mercure
#
# Public URL of the Mercure hub used by the browser to connect via SSE.
# If left blank, the app will fallback to the current public host + '/.well-known/mercure'.
MERCURE_PUBLIC_URL=
#
# Example if using separate internal and public URLs:
# MERCURE_URL=http://mercure/.well-known/mercure
# MERCURE_PUBLIC_URL=https://example.com/.well-known/mercure
#
# The secret used to sign JWTs (JSON Web Tokens).
MERCURE_JWT_SECRET_KEY="!ChangeThisMercureHubJWTSecretKey!"
###< symfony/mercure-bundle ###
32 changes: 32 additions & 0 deletions .env.nest
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# NestJS Configuration
NODE_ENV=development
NEST_PORT=3000

# File Storage (override parent .env for macOS compatibility)
FILES_DIR=/tmp/exelearning-files
PUBLIC_DIR=./public

# Database configuration (matching Symfony)
DB_DRIVER=pdo_sqlite
DB_HOST=
DB_PORT=
DB_NAME=
DB_USER=
DB_PASSWORD=
DB_PATH=/tmp/exelearning-nestjs-blgWzZ/exelearning.db

# JWT Configuration
JWT_SECRET=nestjs-secret-key

# WebSocket Configuration
WEBSOCKET_URL=ws://localhost:3000
WEBSOCKET_PORT=3000

# Test User (matching Symfony)
TEST_USER_EMAIL=user@exelearning.net
TEST_USER_PASSWORD=1234
TEST_USER_USERNAME=testuser

# App Configuration
APP_VERSION=3.0.0
APP_SECRET=mySuperSecretKey
Loading