• Shiny and learnr events are now recorded in the “events” table instead of “shiny” or “learnr” tables.
  • webshot_shiny() now also accepts the path to a PNG file (the screenshot of the app) instead of the url to the Shiny application. This allows to create the webshot image in case the app cannot be accessed directly (for instance, a login in Posit Connect is required). The corresponding RStudio addin is modified to ask for a PNG screenshot if no suitable code is selected.
  • Argument idurl= added in h5p() to allow including exercises from h5p.org or h5p.com.

  • Default directory for assignments is now docs instead of _book with subdirectory being ex an which is now created by clean_ex_doc().

  • Small adaptations due to a transfer into the learnitr GitHub organization.

  • License changed to MIT.

  • More robust checking of password.

  • Do not drop Shinylogs records dir, only eliminate each file when it is processed. This allows for recording of several simultaneous sessions.

  • Do not record Shinylogs events whose label starts with “.clientdata_output_”.

  • In launch_shiny() and webshot_shiny(), default width is increased from 780 to 790, otherwise shiny::sidepanelLayout()wrap the side panel on the top of the Shiny app.

  • pkgdown icons added.
  • The dependency to {keyring} is added again. It allows to store the password
  • {learnr} and {gradethis} upgraded to higher versions.
  • assignation() and assignation2() are renamed assignment() and assignment2() which are more correct names.

  • Assignments and challenge functions get new arguments. clone= indicates if we want to generate an entry in a file to clone corresponding repositories automatically. level= indicates the difficulty level, n= indicates the number of students per assignment (default to 1 for individual assignments/challenges and to 2 for group assignments/challenges). type= indicates the type of exercise. acad_year= is the academic year, and term= is the term where the exercise has to be done. course.starts= and course.ends= indicate starting and ending dates for the exercises for each course (or students groups).

  • Assignments now create two additional files. An HTML file routes to the correct URL given the context (GitHub Classroom assignment, template GitHub repository if the user is not logged in, or pages indicating it is too soon or too late for these assignments). A CSV file collects assignments information that can be used to clone corresponding repositories and to grade more easily these assignments.

  • Better checking of internet access during system configuration.
  • While recording learnr events, the procedure to check if the computer is connected to the Internet sometimes failed without good reasons. Now, check the access to two sites that should be more reliable.

  • For run_app(), a better code is now used to display the app running in a job inside the RStudio viewer pane. A new argument max.wait = indicates the number of seconds to wait for the Shiny app to start.

  • Dependency to keyring eliminated.
  • Experimental learnr obfuscation functions.
  • Package renamed {learnitdown} to avoid conflicts with http://learndown.com.

  • New functions lock()/unlock(), using an application (e.g., course) password to lock or unlock sensitive data like students’ personal information, or database password.

  • New obfuscation functions obfuscate(), ._() and O() to hide {learnr} answers in the original .Rmd file. The function ans() could be used to replace learnr::answer() for a cleaner obfuscation mechanism for quizzes.