This article contains this release's feature updates, user interface changes and bug fixes.
| Release date | Environment |
| 5th of June 2026 | Stage (stage.ans.app) |
| 21st of June 2026 | Production (ans.app) Education (edu.ans.app) |
Edit multiple question bank exercises at once
It is now possible to edit several exercises at once directly from the Exercises overview. Select the exercises to update in the Exercises overview and click "Edit". A dialog opens where you can update the label, author, custom fields, tags, and objectives for all selected exercises in one action. New tags and objectives can also be created directly from the dialog. After saving, the overview updates automatically.
Access codes on timeslots for digital tests
Instructors and invigilators can now require a per-timeslot access code on digital tests. On the Taking page, open the timeslot Options menu and choose Require access code. The code appears next to the timeslot date and time, as three characters, a hyphen, then three more. Use Renew access code to replace it, or Stop requiring access code to disable the access code.
When a timeslot that uses a code is open, participants must enter that code before they can start the digital test. They see "Access code required" and "Ask for the access code to continue". A wrong code is not accepted.
If the access code requirement is turned off while participants are on the access-code screen, the page refreshes automatically and they can continue without entering a code. If an access code is turned on after a participant has already started the digital test in the same browser session, they can continue their test without being redirected back to the access-code screen. Only new sessions, or participants continuing on a different laptop or browser session, need to enter the access code.
Access codes on assignments will be phased out. With access codes now available on timeslots, there are two ways to protect a digital test. Both continue to work until 1 September, after which assignment-level access codes will no longer be supported. If both are enabled, participants must enter both the assignment access code and the timeslot access code before they can start. More information can be found here.
Appraisal forms now support the new grading scheme experience
The new grading scheme experience is now available when grading appraisal forms. Open an appraisal form to grade and select "Try the new grading scheme experience" to switch to it.
A question navigation sidebar appears on the left, with a numbered button for each answer. Selecting a number jumps to that answer, and the active answer is highlighted as you scroll. Each answer shows its content with the grading controls directly beneath it: a slider and score field for point-based questions, feedback fields that save automatically as you type, and discussions.
You can switch back to the previous grading experience at any time using the same toggle.
Criteria groups have also been added to the evaluation form question type for appraisals. Just as with other assignment types, these can be configured when creating your question.
Skill-based exercise selection now uses custom fields
Previously, skill-based exercise selection matched exercises using tags. Matching is now based on a custom field and its value, using the structured and consistent metadata model that custom fields provide.
Existing tag-based configurations have been automatically migrated. For each tag key used in skill-based exercise selection, a corresponding custom field has been created in the question bank, with allowed values generated from the existing tag values. Each exercise has been assigned a single value: if the exercise had one value, that value was used; if it had multiple values, the last alphanumerically sorted value was selected.
Sections now have a default value setting. This value is used when a learner has not been assigned a value, or when no suitable exercise can be found for the learner's current value or a lower value.
Existing tags remain available in the question bank but are no longer used for skill-based exercise selection.
Assignment settings panel
Assignment settings related to the taking experience can now be managed directly from the Editor view for both question bank and course assignments. A "gear" button opens a panel with all settings displayed in a single scrollable list. This allows them to be configured and previewed on the same page. Previously, these settings were split between the Test configuration dialogs and the Accessibility page, requiring switching between views.
Related settings are grouped together, and side navigation provides quick access to each group. For digital test assignments, the Utilities and Navigation Constraints options have been renamed to Tools and Navigation to better reflect their purpose. Navigation restrictions have also been simplified so that only one option can be selected at a time: View sections once, View exercises once, or None.
The settings panel remains open after saving changes, allowing you to preview the result and make further edits if needed. Clicking Cancel discards any unsaved changes and closes the panel.
Restore removed criteria
Previously, criteria were deleted permanently. Restoring them required creating a new criterion and grading all work again. This was time-consuming and error-prone.
Criteria are now moved to the trash using Put in the trash. This keeps removal possible, while making recovery simple.
Trashed criteria can be restored from the Removed criteria page under Bin in the assignment settings. If the criterion belonged to a group, the group is restored as well. Points and marks are recalculated after restoring.
The same behaviour applies in the content tab. Removing a criterion or criteria group moves it to the trash.
Exercise preview now opens via a dedicated icon
Previously, clicking an exercise row opened the preview panel. To avoid opening previews unintentionally while working in the Exercises overview, each exercise now has a dedicated preview icon. Click the icon to open the preview panel.
When the panel is open, click the preview icon on any other exercise to switch to it. The preview updates immediately without closing the panel or losing your place in the overview.
Assigning a class now adds individual learners
Selecting a class in an individual assignment adds its remaining learners one by one, instead of assigning the class as a whole.
This makes it easy to plan for a full class and exclude specific learners.
To support this, the assignee picker now shows a single alphabetical list instead of separate sections.
Each item includes a clear icon:
- Learners show an avatar letter and their student number
- Groups show a group icon and total member count
- Classes show a group icon and the number of learners that will be added
If you already selected some learners from a class, the class count updates to reflect only the remaining learners.
Timeslots can now be explicitly assigned to no one
The participant selection on a timeslot now includes a "No one" option. Previously, new timeslots defaulted to "All learners", meaning participants could be assigned unintentionally if the selection was not reviewed. Now, new timeslots default to "No one", making the assignment state explicit and reducing the risk of accidentally making a timeslot available to participants. You can save a timeslot directly in this state.
When you open an existing timeslot, the correct radio button is pre-selected based on the saved assignees. A timeslot with no assignees shows "No one". A timeslot with an "all participants" record shows "All groups" or "All learners". A timeslot with specific assignees shows "Specific groups" or "Specific learners".
Timeslots now separate ended from live and upcoming windows
Timeslots are now split into two sections: live and upcoming timeslots, and ended timeslots.
Live and upcoming timeslots appear first and are sorted by nearest deadline. Ended timeslots are listed below, sorted by most recent.
Ended timeslots are clearly marked with a strikethrough date and an “Ended” label.
Timeslots can be restricted to specific locations
Previously, location restrictions based on IP address were set at the assignment level. This meant all timeslots shared the same location settings.
Timeslots can now have their own location restrictions.
When a learner starts a digital test, their IP address is checked against the locations assigned to the active timeslot.
When editing a timeslot, a new Location section appears with two options:
- Anywhere
- Specific locations
Selecting Specific locations reveals a search field to choose one or more locations.
If location restrictions are enabled at the assignment level, those restrictions automatically apply to all timeslots, and the locations for individual timeslots cannot be modified.
The timeslot overview shows the selected location names.
Location restrictions on assignments will be phased out. With location restrictions now available on timeslots, there are two ways to control where participants can start a digital test. Both continue to work until 1 September, after which assignment-level location restrictions will no longer be supported. More information can be found here.
Added translations to the calculator
The calculator now supports the same languages as supported by the platform. Previously, the calculator only support English as language, now it also supports German, French, and Dutch.
Words over the word limit are highlighted in text answers
Answers to open questions with a word limit now show the words beyond the limit in red with a strikethrough. To avoid distracting participants while they are writing, the highlighting is only shown after editing, on the answer preview.
The same highlighting is also shown when grading submitted answers.
The word counter still shows the total word count while writing. The new highlighting makes it clear which part of the answer is outside the allowed word limit.
Improved Schoolyear login flow
Participants using Schoolyear are now passed through with a login hint when their workspace is created. This helps Schoolyear pre-fill or complete parts of the login flow where supported, reducing repeated login prompts during exam onboarding.
Pinned courses and question banks appear at the top of the home page
The home page sidebar now shows pinned courses and question banks at the top of their respective lists. Pinned items display a pin icon, making them easy to identify. The remaining items are sorted alphabetically.
The inline search within these lists has been removed. The global search (Ctrl+J) provides a better experience: it searches across all courses, question banks, and assignments at once, shows richer context for each result, and works from anywhere.
The home page now shows courses and pinned items from all your schools
Previously, the home page only showed courses and pinned assignments belonging to the account you were currently signed in to. If you had accounts at more than one school, you had to switch accounts to see the rest.
The home page now combines them. Your course list and all pinned items from every account you have are shown together in one place. When you have accounts at more than one school, each course in the list shows the school name before the course code, so you can tell them apart.
Selecting a course that belongs to another school switches you to the matching account automatically, then opens the course.
Students show when they were marked as alumni
When filtering for alumni on the students overview page, each student now shows how long ago their alumni status was set. The time appears next to the student number and email as "Marked as alumni 3 days ago" (or similar).
A marked_as_alumni_at timestamp is now recorded when a student is marked as alumni and is available through the API. For students already marked as alumni, this timestamp has been backfilled from the user log.
Image question type merged into Drawing question type
As announced previously, the Image question type has been merged into the Drawing question type.
Previously, the Image question was only available in written assignments. It let students mark, draw on, or label an uploaded image. The Drawing question was only available in digital tests and let students sketch answers, optionally on top of a background image.
The Drawing question now works in both written assignments and digital tests. Existing Image questions have been automatically converted to Drawing questions. Existing Drawing questions and previously graded submissions are unaffected.
Removed cut-off table beta feature
As announced previously, the cut-off table beta feature has been removed.
Previously, users could use the cut-off table beta feature in combination with the Table mark calculation. This feature has now been removed and replaced by the Cut-off score mark calculation.
Existing assignments that use the cut-off table remain unchanged. However, if the mark calculation for these assignments is modified, it must be converted to the new Cut-off score mark calculation.
Removed ability to enable grading from maximum points
As announced previously, it is no longer possible to grade backwards from maximum points (i.e. disable the “Start with zero points” option) for new or existing questions.
Previously, users could choose between grading by starting from 0 points and adding points, or by starting from the maximum number of points and subtracting points based on selected criteria. This option has now been deprecated and can no longer be enabled.
Existing questions that already use grading from maximum points remain unchanged and will continue to display a deprecation label until September 1st. If the “Start with zero points” option is enabled, it can no longer be disabled again.
Deprecated the Open question with final answer question type
As announced previously, it is no longer possible to create new Open question with final answer questions in written assignments.
Previously, users could create Open question with final answer questions when only the final answer needed to be assessed. This question type has now been deprecated and removed from the list of available question types. Similar functionality can be achieved using a regular Open question in combination with the appropriate grading method.
Existing Open question with final answer questions remain unchanged and can continue to be used in existing assignments and question banks. Previously graded submissions are unaffected by this change.
Deprecated SEB server
The SEB Server integration is now deprecated due to zero usage and will be removed on September 1st. This change has no impact on assignments using the Safe Exam Browser integration. SEB Server could only be enabled via the API.
API changes
Added external users support to the API
It is now possible to manage external users via the API. Before external users could be viewed via the user endpoints, but there was no indication of the user being external. Now there are separate endpoints for listing, creating, updating and destroying external users in both version 2 and BETA of the API. The user endpoints no longer return external users and the user search endpoint also only returns internal users.
Manage timeslot access codes via API
The timeslot update endpoints now support the access_code attribute in both API V2 and API beta. An access code can be set by including access_code in a PATCH request to a timeslot, and removed by sending access_code: null.
Access codes must:
- Be exactly 6 characters long
- Use only the characters A–Z (excluding I, L, and O) and 2–9
Timeslot responses now include the access_code field. This is available in both V2 and beta timeslot payloads, allowing API clients to read the current value after create, show, or update flows.
Added the option to configure Turnitin assignment integrations via the BETA version of the API
It is now possible to configure the Turnitin integration on assignments in the BETA version of the API.
Added the "edu_id" attribute to users
In preparation of supporting eduID, the edu_id attribute has been added to users and can be populated via the API. Currently eduID is not sent by SURF to Ans, so users signing via SURFconext will not match on eduID.
Adding eduID is still being tested by SURF. EduID support will be announced via the release notes.
Improve API token management
It is now possible to create multiple API tokens. This makes it possible to rotate credentials safely. Create a new token, update your integration, then delete the old one without downtime.
New tokens come with an expiration duration. Tokens can be configured to expire after a set period, up to one year. API tokens can now also be restricted to a specific IP address or CIDR range. Requests from other addresses will be rejected. This setting is optional.
Existing tokens do not have an expiration date and cannot be given one. To add an expiration date to an existing token, create a new token to replace it, then delete the old one.
Manage timeslot location restrictions via API
The timeslot create and update endpoints now support the location_ids attribute in both API V2 and API beta. Location restrictions can be set by including location_ids as an array of location IDs in a POST or PATCH request to a timeslot, and removed by sending location_ids: [].
Timeslot responses now include the location_ids field. This returns the IDs of locations directly assigned to the timeslot (not those inherited from the assignment). This is available in both V2 and beta timeslot payloads, allowing API clients to read the current value after create, show, or update flows.
Bug fixes
-
The shown assignments when copying an exercise are now alphabetically sorted
When copying an exercise, assignments in the destination dialog are listed alphabetically, making them easier to scan. -
Fixed an issue where gaps in fill-in-the-blanks questions could be reused
Previously, it was possible to copy a gap and paste it back into the same fill-in-the-blanks question. Because both instances referred to the same gap, answering one automatically filled in the other.Fill-in-the-blanks questions now validate that each gap appears at most once. If the same gap appears more than once, the question will not save and an error message is shown.
-
Fixed an issue where timeslot start and end times required pressing Enter
When setting the start or end time of a timeslot, the selected time was not saved unless Enter was pressed. Closing the time picker now applies the selected time immediately.
-
Fixed an issue where timeslot times set by scrolling required pressing Enter
When setting the start or deadline time of a timeslot by scrolling, the selected time was not saved unless Enter was pressed. Scrolling now updates the time immediately.
-
Fixed an issue with adding groups to timeslots in group assignments
Previously, the group search showed all course groups, including those not allowed to start or hand in the group assignment. Adding these groups appeared to work, but they did not show in the “Not started” column. Now, only groups that are eligible for the group assignment are shown and can be added.
-
Fixed an issue where results were not submitted when a live timeslot was deleted
Deleting an active timeslot now submits the results of any sessions still in progress for that timeslot. Previously, these results stayed open after the timeslot was removed.
-
Fixed an issue where default variable order appeared random
Default variables in the code editor are now returned in a stable, case-insensitive alphabetical order. Previously, variables appeared in a random order, which made the list harder to scan and find.
-
Fixed an issue where tooltip content could not be selected
Previously, when hovering over an element with a tooltip, attempting to select the text within the tooltip would cause it to close automatically. Now, tooltips remain open while the mouse is over the content, allowing it to be selected.
-
Fixed an issue where filter dropdowns were not keyboard accessible
Previously, the filter dropdowns in overview pages could not be opened or operated reliably with keyboard navigation. Now, all filter dropdowns can be opened and applied using standard keyboard controls.
-
Fixed invalid ARIA in coding language dropdown in code editor questions
Previously, the coding language dropdown for code editor questions had an invalidrequiredattribute. This has now been updated to follow ARIA conventions, and its styling has been updated to match the rest of the platform.
-
"All" renamed to "Active" in the assignments overview filter
Previously, the default filter on the course assignments page was labelled "All". The filter is now labelled "Active", reflecting that only active assignments are shown by default. To view archived assignments, select "Archived" from the filter.
| Version | Date | Information |
| v1.0 | 05-06-2026 | Initial version |
Comments
0 comments
Article is closed for comments.