What's new in CyberFaCES
Every feature and improvement we have shipped, newest first. Jump to a month, or filter by the part of the site you care about.
September 2026
A completion rule for every material, and uploads that no longer stop at 100 KB
Set what it takes to complete each material
Whoever builds a module now chooses, material by material, what counts as finishing it: opening it, keeping it open for a set number of seconds, or the learner marking it done.
Courses Open the course builderVideos play without error pop-ups
A video whose progress could not be recorded raised an error dialog every two seconds while it played. It now plays quietly and records what it can.
CoursesMark a material complete, and see how many are left
Materials you finish yourself now carry a Mark complete button, and a module shows how many of its materials you have done.
Courses Open your dashboardUploads accept the full size they advertise
The 100 MB limit was applied as 100 KB, so almost any real file was refused. Limits are now in MB: 100 for documents, 200 for audio and video, 10 for images.
MediaMore file types accepted, and a reason when one is not
Uploads no longer have to match a fixed list, so archives and notebooks go through. Programs and scripts are refused, naming the file and why.
MediaA one-line description on every material
Materials now carry a short description shown beside the title in the list, so a row says what the thing is rather than just "week1.pdf".
CoursesAudio length and file size in materials lists
Uploaded audio now reports its length, files show their size, and a long recording reads "1 hour, 20 minutes" rather than being cut to "1 hour".
CoursesAugust 2026
A rebuilt dashboard, quiz results you can rely on, and a way to test out of a pre-requisite
A dashboard that shows where you left off
Your learning home now opens with where you stand — not started, under way, finished — followed by the modules you have opened but not finished, so you can pick straight back up.
Courses Open your dashboardJump to any part of a course from the sidebar
The sidebar now shows the whole course — every module, section and item — so material elsewhere in it is one click away, instead of going up and back down.
CoursesA way back out of course material
Material, quiz and score pages now open with a Back button at the top of the sidebar, returning you to the module or course you came from.
CoursesFull titles in the breadcrumb trail
Names in the trail at the top of the page were cut off at 30 characters, sometimes mid-word. They now appear in full.
CoursesOpen a community's public page from its dashboard
The community name at the top of the manager dashboard is now a link to its public page, so you can see what visitors see.
Communities Browse communitiesSee how your learners are getting on
One row per learner across everything you instruct: how far they have got, their quiz attempts, and when they were last active. Searchable, filterable, and sortable.
Analytics View student progressQuiz performance for instructors
Attempts, attempts per learner, pass rate, and average score across your quizzes. Open any course or module to see the same figures per learner, with their best result.
Analytics Open analyticsHow engaged your learners are
Analytics now also shows who has been active in the last thirty days, how many of your units the average learner takes, and how long people take to finish.
AnalyticsYour quiz results, on your own dashboard
Sit a quiz as a learner and your dashboard now shows how many attempts you have made and your best score. Previously your results only appeared beside the quiz itself.
CoursesCompleted courses count properly
Finishing a module you also teach was recorded against your instructor role, not your enrolment, so it never reached your totals. Existing records are corrected.
CoursesTest out of a pre-requisite module
A module can nominate one of its quizzes as a placement quiz. Passing it meets that module's pre-requisites, so someone who knows the material can go straight in.
CoursesLimit how many times a quiz can be taken
Instructors can cap the number of attempts, or leave it unlimited. Learners see how many tries remain, and the best attempt counts, so retaking never loses a pass.
CoursesYour quiz attempts, kept on the record
A panel beside every quiz shows what it holds, what you need to pass, and each attempt with its score and date. Past results stand even if the quiz is edited later.
CoursesAnswer review shows the right answer
The question-by-question review now marks the correct choice alongside the one you picked, so a wrong answer explains itself instead of only being marked wrong.
CoursesChoose when a quiz opens, and shuffle its questions
A quiz can be held back until the module's other materials are done, or left open as a pre-test. A new Shuffled option serves the questions in a random order.
CoursesTerms of service, agreed and on the record
Signing up now asks you to agree to the terms of service, and your agreement is kept together with the version you accepted. When the terms change, a notice appears the next time you visit so you can read and acknowledge them.
Accounts & accessCallouts that stay where the author wrote them
Challenges, key points, instructor notes and the rest now appear in the body of the material at the point they were written, and nest inside one another to any depth. Footnotes, definition lists and highlighted code fences render as well, and a file's metadata header no longer shows up as text at the top of the page.
CoursesFixes and smaller improvements (17)
- Quiz scores counted only the questions a learner answered, so skipping questions inflated the result. Scores now count every question served.
- Reloading a quiz page drew a fresh set of questions and reshuffled the answers. The set is now fixed when an attempt starts.
- Pre-requisites were hidden from the course sidebar but not enforced, so a quiz could be opened directly by its address. They are now checked on the server for every kind of material.
- A pass mark set higher than the number of questions left in a quiz made it impossible to pass.
- Two questions sharing the same title left the Submit button permanently disabled.
- Unpublished materials were missing from the course builder, which left them impossible to edit or publish. They now appear with a Draft badge.
- A module used in more than one course could show a different course outline from one visit to the next, and drew the whole outline for anyone who could reach a single module in it. The quiz and score pages also let a course you had joined unlock material in a course you had not.
- Choosing a badge picture on an achievement editor previewed it over the certificate background, and the save quietly kept the old icon. Icons uploaded with a full web address only loaded on the machine they were uploaded from.
- The edit pencil on your own achievement returned a permission error instead of opening the editor, and the edit and delete controls on an achievement card sat outside the card, with no confirmation before deleting.
- The badges and certificates on your dashboard are paged now, rather than loading every one you have earned at once.
- Quiz attempt history and the reviews on a course page grew without limit, and every review card linked back to the same review.
- A page could pick up another page's state from the cache, which showed the same navigation item as the current one across the whole site.
- The menu item form accepted an empty submission and published an item nobody had filled in.
- Saving an admin form with a blank field returned a server error instead of the validation messages, several create screens would not open at all, and a user could be saved with a blank username or an address that was silently discarded.
- Admin toolbars briefly showed buttons that could not be used, kept a few with nothing behind them, and did not reveal row actions when a row was ticked on a card listing. Trashed pages were also not marked as trashed in the page list.
- Raw language keys appeared in place of messages after saving, on the password reset pages, on module settings pages, and as the subject line of forum notification emails.
- The Settings button in the admin toolbar now opens the module's configuration page instead of a dialog that never appeared.
July 2026
Copy a course in one click, and a guide for every role
Duplicate an entire course
Copy a course and its structure instead of rebuilding it from scratch. A Duplicate action sits on the course admin list, on course cards, and on the course detail page.
CoursesUser guides at /guides
Written guides for learners, instructors, and community leaders, plus a getting-started walkthrough and an FAQ.
Docs & guides Read the guidesReplace an asset file in place
Swap the file behind a course asset without deleting the asset and recreating it, so links, ordering, and learner progress survive the update.
CoursesFixes and smaller improvements (3)
- Scheduled email command and Jupyter hub URL configuration corrected.
- Webserver ports are configurable through environment variables instead of being fixed at 80 and 443.
- Stale Halcyon branding replaced, and the theme toggle label reworded for clarity.
May 2026
Discussion forums inside communities, and a way to apply
Community discussion forums
Each community can hold its own discussions, with moderation tools for the people who manage it.
CommunitiesApply to instruct or to start a community
A signed-in user can request instructor access or propose a new community. Administrators review the request, and approval grants the matching platform permission.
Accounts & accessModule-aware course sidebar
The course sidebar now knows which module you are in, numbers the modules, and links straight to each asset.
CoursesFind your way back from any viewer
Every asset viewer carries a back button and a breadcrumb that keep the surrounding course context.
CoursesClearer community cards
Community cards show member badges and a direct view link.
CommunitiesFixes and smaller improvements (5)
- Mail server failures and outages are handled gracefully at every point the site sends email.
- PDF, image, and audio files are served from relative URLs, which removes a cross-origin mismatch.
- Admin breadcrumbs no longer show stale content or raw translation keys.
- Admin housekeeping across forum filters, badge colours, the course listing, "remember me", and notifications.
- Achievements render correctly when an instructor ID or name is missing.
April 2026
Announcements, community analytics, and a much richer reader
Community announcements with events and maps
Post an announcement to a community, give it a start and end date, and drop a pin with the Leaflet map picker. Visibility settings decide whether non-members can see it.
CommunitiesAnalytics tab for community managers
A filter bar, a membership growth chart, and a course engagement table, computed for the community you manage.
AnalyticsA better markdown reader
Course material now renders with a table of contents, colour-coded headers, and discussion, callout, and spoiler blocks. Links are rewritten to match your context.
CoursesRedesigned community pages
A reworked banner and logo treatment, courses grouped into carousels by type, and page content that reflects whether you are a member.
CommunitiesSpaces at community creation
Create a space while creating the community, and pick the owning community when you create or edit a unit.
CommunitiesSmart Search, laid out for reading
Reworked result cards and page layout, plus a plain description of how AI is used in the results.
SearchWarnings for units you have not started
The course menu warns before you jump into a unit you have not started, and its dropdowns behave more predictably.
CoursesSign in and land back where you were
Login links carry an encoded return URL, so signing in returns you to the page you came from.
Accounts & accessDashboard analytics default to 30 days
The dashboard opens on a 30-day window, with steadier course selection behind it.
AnalyticsFixes and smaller improvements (2)
- A login redirect loop in production resolved.
- Community banner height and topic tag filtering corrected across course and publishing views.
March 2026
Read PDFs and play media without leaving the course
Built-in PDF viewer
Course PDFs open in place with page navigation and zoom, instead of downloading.
MediaMedia viewers for course assets
Audio and image assets play and display inside the course rather than in a separate tab.
MediaFull community management
Create, edit, and remove communities, their members, and their spaces from one set of management screens.
CommunitiesStable course links
Course URLs carry the course ID, which keeps links working when titles change.
CoursesCourse participation guide
A written guide to taking part in a course, alongside a refreshed Courses module README.
Docs & guidesFebruary 2026
Smart Search and Communities arrive
Smart Search
A search experience backed by an external search API that returns courses and modules as result cards linking straight to the right place.
SearchThe Communities module
Group spaces with their own membership and courses, wired into Smart Search from the start.
CommunitiesMarkdown in course descriptions and materials
Write course descriptions and material in markdown and have it rendered rather than shown raw.
CoursesCarpentries-style callouts
The markdown viewer recognises and styles Carpentries callout blocks, so lessons written for that format render as intended.
CoursesSurveys and assessments out of the browse list
Pre- and post-survey and assessment units are filtered out of browse and landing pages, and units carry a display_on_browse setting to control this directly.
CoursesLong names on certificates
Certificates lay out correctly for learners with long names.
CoursesJanuary 2026
Faster, more interactive dashboard metrics
Cached user metrics
Unique-user figures are cached, which makes the dashboard quicker and lets its charts respond to interaction.
AnalyticsMember activity tracking
Member activity is tracked and surfaced in the dashboard metrics display.
AnalyticsPathway navigation across modules
Moving through a learning pathway is consistent from module to module, with clearer wording throughout.
CoursesFixes and smaller improvements (1)
- The user activity trends section is easier to read on narrow screens.
December 2025
Workshops, exportable reports, and staff permissions
Export the dashboard
Take dashboard data out as CSV, Excel, or PDF.
AnalyticsWorkshops, distinct from modules
Filter for workshops specifically, and tell the two apart at a glance with Module and Workshop badges.
CoursesFilters on the instructor view
The instructor view gained filtering options and a clearer layout.
CoursesContributors on the course page
Courses credit their contributors and show when they were created, loaded efficiently enough not to slow the page down.
CoursesCourse permissions for the Staff role
Staff can manage courses, edit their own, and delete, without needing full administrator access.
Accounts & accessFixes and smaller improvements (2)
- DataTables assets load correctly in the admin dashboard, and admin tables are tidier to use.
- The is_course column migration is safe to re-run.
November 2025
Forum likes and a sturdier admin grid
Like a forum post
Like and unlike posts from the discussion UI, backed by an API endpoint.
ForumsNumbered replies
Replies show which post they answer, in the thread and in the notification you receive.
ForumsResource profiles on assets
Pick and validate a resource profile when adding or editing an asset, with labels and hints explaining the choice.
AdministrationSortable admin grids
Sorting works more consistently across admin grids, and the users list shows registration dates.
AdministrationServer-side checks on the admin dashboard
The admin dashboard authorises on the server rather than relying on a hidden menu, and the admin menu structure was reorganised.
Accounts & accessFixes and smaller improvements (1)
- Editing a discussion post uses a normal form submission, and the markdown editor refreshes correctly when the edit form opens.
October 2025
Registration protected by CAPTCHA
CAPTCHA on registration
The registration form is protected by reCAPTCHA, configured through its own config file.
Accounts & accessPer-action course permissions
Course actions are governed by an explicit permissions configuration, and menu items carry sensible defaults.
Accounts & accessJuly – August 2025
Sign in to JupyterHub once, and run a course as a workshop
One sign-in for JupyterHub
Open JupyterHub from a course and you are already signed in. A signed token carries your identity across, so there is no second login to remember.
Accounts & accessWorkshops
A course can be marked as a workshop, which separates short workshop offerings from full learning modules.
CoursesMore than one instructor per achievement
An achievement can credit several instructors instead of just one.
CoursesDashboard figures you can trust
Recent user activity, activity trends, and top performers report correct numbers, with each unique user counted once.
AnalyticsFirst and last name at registration
The registration form asks for first and last name separately and no longer accepts blank entries.
Accounts & accessFixes and smaller improvements (4)
- Achievements resolve correctly for a module taken as part of a course, and no longer break when a unit is missing.
- Module images accept the file extensions they should, and a media helper bug was fixed.
- The materials link on the publishing page, admin course creation, and the "Save later" and "Register updates" buttons all work as expected.
- Course descriptions removed from the materials listing, and card header colours adjusted.
June 2025
Decide who issues an achievement
Set the issuer of an achievement
Choose which organisation or person is named as the issuer on an achievement, rather than accepting a fixed default.
CoursesInstructors required when building a unit
Naming the instructors is a required step of building a unit, enforced at every step of the build rather than only the first.
CoursesFixes and smaller improvements (1)
- The dashboard time series and heatmap render correctly.
May 2025
Certificates for finishing, and a rebuilt dashboard
Completion certificates
Finish a course and receive a certificate, carrying the NSF grant number that funded the work.
CoursesRedesigned dashboard
The dashboard was rebuilt around the questions people actually open it to answer.
AnalyticsUnique users, charted and filterable
A unique-users graph with its own filter, so a spike can be narrowed down instead of guessed at.
AnalyticsAnalytics for instructors
Instructors get a detailed view of the activity on their own courses.
AnalyticsTidier admin toolbars and modals
The view-items modal was reworked, and admin toolbar actions and their events behave consistently.
AdministrationApril 2025
Badges and achievements you can earn and share
Achievements
Complete a module or a course and earn an achievement that records what you finished.
CoursesA page for every badge you earn
Each earned badge gets its own page, which you can share outside the platform.
CoursesBadges created as you build
A badge is created automatically while a unit is being built, drawing on badge and certificate templates, so it is not a separate job afterwards.
CoursesBrowse a course before signing up
Course and module landing pages are readable without an account, so people can see what a course covers before registering.
Accounts & accessReply to a forum post
Discussions became conversations: posts can be replied to directly.
ForumsForm input survives a mistake
What you typed into the course or module creation form is kept when the form comes back with an error, instead of being cleared.
CoursesRoom for longer descriptions
Course and unit descriptions accept substantially more text.
CoursesClearer sign-in guidance
Choosing ORCID at sign-in now says plainly that it is not supported, and the steps for resetting a CiLogon connection are written down.
Accounts & accessFixes and smaller improvements (2)
- Deleting an achievement and removing a topic both work.
- An admin column join and a members query were corrected.
March 2025
Seeing engagement over time
User engagement over time
The admin dashboard charts engagement across time, so a trend is visible rather than inferred from a single snapshot.
AnalyticsAchievements know their course
An achievement records the course it belongs to, which is what makes course-level achievements possible.
CoursesFixes and smaller improvements (1)
- The "my certificate" link goes where it should, and an unused Achievable menu was removed from the dashboard.
February 2025
Talk about the material, right where you are reading it
Discussions on modules
Each module carries its own discussion, so a question about the material can be asked in place instead of somewhere else entirely.
ForumsCharts and tables in the admin dashboard
The first visualizations and data tables arrived in the admin dashboard.
AnalyticsFixes and smaller improvements (1)
- An achievement API route and a database username problem in the Docker setup were fixed.
January 2025
Search your materials, and a better forum
Search on the materials page
Find a specific item among a course's materials by searching instead of scrolling.
SearchA more readable forum
The forum page was reworked to make threads easier to follow.
ForumsThis page covers changes you can see and use. Internal refactoring, dependency updates, and documentation-only changes are left out, and a quiet month is a month spent on those. Months with no user-facing changes are not listed.