Skip to contents

rqti 1.3.1

New features

  • opal() and upload2opal() now accept an optional credential_id, allowing the same username to use different passwords on different OPAL installations. When it is omitted, rqti continues to use the existing rqtiopal credential service, preserving the behavior of existing code and saved credentials.

Bug fixes

  • Fixed Pandoc compatibility by using the appropriate option to disable syntax highlighting based on the capabilities of the installed Pandoc version.

rqti 1.3.0

CRAN release: 2026-09-21

New features

  • Rmd questions now support stylesheet_path (one or more local CSS files) and css: | (CSS text) in YAML. Item stylesheets are written with XML exports and included in item and assessment ZIPs and manifests. Relative paths are resolved against the Rmd source directory.

  • Added read_qti() as an alias for extract_results().

  • Added OPAL API functions createCourseGroup() for creating course groups, addGroupUser() for adding users to groups, and removeGroupUser() for removing users from groups.

  • extract_results(level = "item") now includes task-level candidate_comment and scorer_comment columns for each item row.

  • Added provide_audio() helper to embed local audio files directly into QTI/HTML content using Base64 encoding. The function supports both <object> and <audio> rendering methods and self-contained audio embedding for portable assessment items.

Improvements

  • Changed the preferred R Markdown YAML configuration for preview_feedback. The option should now be specified as a top-level YAML field instead of inside params. The previous syntax within params is deprecated and will be removed in a future release.

Bug fixes

  • Dropdown items (dropdown()) can now include commas and other punctuation without breaking YAML parsing.

  • Updated OPAL authentication to use the current REST login endpoint and header-based credentials.

  • Fixed grade feedback score ranges so that rounding to two decimal places no longer leaves gaps between adjacent grade intervals.

rqti 1.2.1

CRAN release: 2026-05-14

Bug fixes

  • Replaced platform-specific external SHA1 commands in tests with an R-native hash implementation to improve portability across operating systems.

  • Fixed MathJax rendering for dynamically loaded referent content in QTI.JS.

rqti 1.2.0

CRAN release: 2026-05-10

New features

  • Added support for OpenOlat via a new class AssessmentTestOpenOlat. It introduced OpenOlat-specific configuration options (e.g., navigation behavior, visibility settings, number of attempts) as slots and corresponding arguments in assessmentTestOpenOlat().

  • Added fallback_titles argument to test() and test4opal() to control how section and item titles are assigned when not explicitly provided. Supported values are “filename” and “generic”. The AssessmentTest class now includes a fallback_titles slot.

  • Added a new slot scoring_scheme to the SingleChoice class to control how response options are scored. Supported values are “standard” (default) and “penalty”. Introduced penalty-based scoring for single-choice tasks. When scoring_scheme = "penalty", incorrect answers receive a negative score of -points/(k-1), where k is the number of response options. This ensures that random guessing yields an expected score of zero.

  • Added a new stylesheet_path slot to AssessmentTest objects, allowing users to include custom CSS stylesheets at the assessment test level. When academic_grading is enabled, the default styles/rqti.css stylesheet is included automatically, and custom styles can be added to override the default appearance.

  • Added german_grading(), a helper function that returns a predefined German grading scale for the academic_grading argument in test() and test4opal(), avoiding the need to manually define grading vectors. This grading scheme can also be stored directly in the academic_grading slot of AssessmentTest objects.

  • Added helper provide_file() to embed local files directly into .Rmd tasks as # Base64-encoded hyperlinks for downloadable attachments.

  • section() now supports Rmd files created with the exams package. Such files are automatically detected and converted to QTI 2.1 XML via exams::exams2qti21(), so they can be used directly without additional wrapping.

  • Added exams_task() helper for explicit control over exams-based tasks. While section() can handle exams .Rmd files automatically, exams_task() can be used when additional control is needed, e.g., to assign a custom title. The function converts the Rmd file and returns the path to the generated XML file in a temporary directory, allowing combination with native rqti items.

  • Enhanced LMS Opal API with new functions getCourseGroups() and getGroupUsers() for retrieving course groups and group users as data frames.

Improvements

  • Improved extract_results() performance for archives with many result files by extracting only relevant XML/result zip files, avoiding repeated row binding, and reducing XPath work for item-level responses.

  • Enhanced verify_qti() to support different input types, provide more informative validation messages, and use both xmllint and xml2 backends for XML validation.

  • extract_results(level = "task") now includes an additional column containing scorerComment for manually scored item results.

  • Images referenced in external XML files are now automatically embedded as Base64. This ensures that tasks are fully self-contained and do not depend on external image files.

  • Changed the default time_limit for AssessmentTest and AssessmentTestOpal objects (and for all related helper functions) to NULL, so time limits are no longer set at the test level by default.

  • Changed the default value of allow_paste in Essay items to TRUE.

Bug fixes

  • Fixed handling of consecutive gaps in .Rmd tasks.

  • Fixed identifier validation regex to correctly allow hyphens in valid identifiers.

  • Fixed test() and test4opal() to correctly handle input provided as a list containing a single section.

rqti 1.1.0

CRAN release: 2026-02-23

New features

  • Added support for the RQTI_API_USER environment variable. If api_user is not provided explicitly, its value is now read from the environment.

Bug fixes

  • Fixed an issue in upload2opal() where arguments open_in_browser and as_survey were not forwarded to upload2LMS().

  • Fixed problems in auto-generated scripts via RStudio template.

  • Fixed parameter serialization in dropdown() to preserve long values, normalize numeric and logical formatting, and ensure stable, test-consistent gap interaction output.

Improvements

rqti 1.0.0

CRAN release: 2025-03-05

New features

  • Major API Refactor: The API functionality has been refactored to require creating an Opal object for establishing a connection. Methods are now called on this object for interacting with the LMS API, replacing the previous function-based approach.

  • Added a verify_qti() function to validate XML documents against the QTI v2.1 schema. Two schema versions are supported: the original IMS Global schema and an extended version that permits additional HTML tags.

  • Added new constructor functions assessmentTest(), assessmentTestOpal(), assessmentSection().

  • The default values of the “academic_grading” parameter/slot have been updated in the functions assessmentTest(), assessmentTestOpal(), test(), and in the classes AssessmentTest and AssessmentTestOpal. This parameter/slot is a named numeric vector that defines the grade table shown to candidates as feedback at the end of the test. The updated default follows the German grading system: gt <- c(“1.0” = 0.95, “1.3” = 0.9, “1.7” = 0.85, “2.0” = 0.8, “2.3” = 0.75, “2.7” = 0.7, “3.0” = 0.65, “3.3” = 0.6, “3.7” = 0.55, “4.0” = 0.5, “5.0” = 0), where each grade corresponds to the minimum percentage score required to achieve it. To disable the grading table at the end of the test, set this parameter to NA_real_.

  • Generic functions are now exported to allow advanced users to extend the functionality of S4 classes (createItemBody(), createResponseDeclaration(), createOutcomeDeclaration(), createResponseProcessing(), createText()).

  • Added support for the preview_feedback option within ‘params’ in the YAML section of R Markdown files.

  • Renamed the service name in the keyring system credential storage to “rqtiopal”.

  • Renamed the “contributor” slot in QtiContributor to ‘name’.

Improvements

  • QTIJS rendering (DirectedPair type, round Score and Maxscore values).

  • Added a ‘<div>’ tag as a root child within the ‘itemBody’ element for Entry type tasks to ensure compatibility with the LMS OpenOlat.

  • The functions qti_metadata() and qti_contributor() have been deprecated. Use qtiMetadata() and qtiContributor() instead.

  • The ‘question_type’ column has been removed from the data frame returned by extract_result(level = "item").

rqti 0.3.0

CRAN release: 2024-07-19

Bug fixes

  • Fix parsing R Markdown files with tables according the latest pandoc version.

  • Fix extract_results(level="items") for Ordering type, when candidate response is not given.

  • Fix error at createQtitask(obj, zip=TRUE).

New features

  • New API OPAL function get_course_elements() returns a data frame with elements of the course by course id.

  • New API OPAL function get_course_results() returns an xml with data about results by course id and node id.

  • New API OPAL function publish_courses() for publishing a course by Resource ID.

Improvements

  • QTIJS rendering.

rqti 0.2.1

CRAN release: 2024-05-26

Bug fixes

  • In metadata default value for the slot “contribution_date” is assigned to Date(0).

New features

  • method createQtiTask() can create XML or zip files, to control this use parameter zip=TRUE.

  • QTIJS rendering shows feedback and score for tasks.

rqti 0.2.0

CRAN release: 2024-05-08

Bug fixes

  • Handle problem with xsd scheme for xml validation.

  • Handle some problems with html and mathml entities.

New features

rqti 0.1.1

CRAN release: 2024-03-21

Bug fixes

  • Added the missing qti.js for rendering Rmd-files with tasks.

  • Added processing of the pandoc –embed-resources parameter for pandoc versions < 2.19.

New features

  • Identifiers of AssessmentItem, AssessmentSection and AssessmentTest objects are checked for compliance with QTI requirements.

rqti 0.1.0

CRAN release: 2024-03-19

  • Initial CRAN submission.