Changelog
Time extensions audit log
A new sub-page under Session → Settings → Time extensions shows every time-extension grant in the session — student, module, minutes added, reason, who approved it, and the timestamp.
- Reason is captured at grant time — when you extend a student's module time from the Participants page, the reason you enter ("WiFi outage", "Late start", etc.) is stored alongside the grant.
- "Granted by" is now persisted — previously the approving teacher's identity was silently dropped at save time. Fixed: the log shows who approved each grant going forward.
- Two ways to read it — toggle between a flat sortable table (default, newest first) and a grouped-by-student view that totals each student's added time.
- Append-only — grants aren't editable after the fact. Corrections happen by adding a counter-grant with a clear reason, keeping the audit trail intact.
- See Admin → Settings for the full walkthrough.
NStrim AI module generation
A new wizard on the per-session Modules page that turns a short brief into a full set of modules, ready for you to review, tweak and save.
- One brief, a full module draft — write a sentence or two about what you want the session to cover. NStrim AI returns module name, description, marking list, info for teachers and any amendments, structured and ready to use.
- Card-by-card review — each generated module is shown as a card. Accept the ones you like, skip the ones you don't. Nothing is written to the database until you save.
- Single-module Save — when you generate just one module, there's a single "Save module" button that accepts and saves in one step.
- Engaging generation experience — pulsing dots, gradient progress bar, rotating phrases ("Reading your brief…", "Designing the hands-on tasks…") and a live elapsed-seconds counter while you wait the 30–60 seconds.
- Off-topic protection — if the brief drifts off-topic, NStrim AI refuses politely and tells you why instead of generating something irrelevant.
- Per-session toggle — Session Settings → Session Features → "AI module generation". Turn it off and the "Generate with NStrim AI" button is hidden on the Modules page.
- Resumes after a tab close — the wizard's last result is cached for an hour so a closed tab or accidental refresh doesn't lose your draft.
- Full new docs page — see Teacher → NStrim AI Module Generation for the complete walkthrough, prompt tips and details.
Marking workflow polish
- Per-requirement marking list for training sessions — training sessions can now use the same per-requirement marking list that competition sessions already had. Define the list once on the module, mark each requirement pass / fail with a comment, and overall status is computed for you.
- Teacher Marking — master-detail view — the teacher marking page now uses a master-detail layout so you can scan the whole class on the left and dive into a specific student on the right without losing context.
- Per-line student feedback — students see the teacher's comment inline next to each marking-list requirement on their dashboard, instead of a single overall block.
- AI-drafted marking lists — when AI generates a module it also drafts the marking list, so the per-requirement view is populated out of the box.
Account & sessions
- Account panel now lists all your sessions with active-module status, a per-row delete action, and a session-scoped invite — open a session URL directly without going through the dashboard switcher.
Nine new dashboard languages
Students can now use NStrim in their own language. Nine new locales join English, Latvian, German, Finnish and Hungarian — bringing the total to fourteen.
- New languages — Lietuvių, Eesti, Polski, Svenska, Nederlands, Dansk, Norsk bokmål, Français and Español.
- Where they appear — Session Settings → Dashboards → "Available languages" picker. Tick the ones your cohort needs; students see the language switcher on the dashboard.
- Translated content — student dashboard (timer, modules, mappings, chat, marking, logs, submission flow), the Frameworks page, and all 13 framework Quick Start guides (Laravel, React, Vue.js, Angular, Next.js, Express, Svelte, FastAPI, Django, Spring Boot, Java Vanilla, React Vite, Vanilla PHP).
- Reliable language switching — the dashboard language switcher now uses plain URL links instead of a Livewire button, so picking a language always works on the first click.
The biggest marking update yet
Every part of the marking workflow — the dashboard view, the expert room, the marking page for admins, and the feedback loop between experts and teachers — has been reworked in one release.
- Marking stat card on the dashboard — competition sessions now show a Marking card in the top stat row with overall completion percentage and a breakdown by status (Done / In progress / Pending / Error). Only appears on competition sessions; training dashboards are unchanged.
- Global marking progress on the marking page — new full-width progress bar on the top stats card showing overall completion across all marking assignments.
- Expert Marking Room — Module details tab — experts now see the full module brief, amendments alert, attachments and experts-only info in one main-content tab styled to match the student dashboard. Replaces the cramped sidebar card that used to hold this content.
- Expert Marking Room login link, everywhere — the marking page right sidebar now includes a copyable public URL card on every tab (Assignments, Rooms & Teams, Timetable, Settings, Experts) so admins can share the expert entry point with a single click.
- Expert-Teacher Feedback Loop — bidirectional threaded messages on marking errors with a 4-state workflow (Reported → In Review → Needs Info → Resolved), read/unread tracking, color-coded status icons, and layered notifications: banners on pages with unread messages, inline badges next to affected rows, and toast pop-ups when a new message arrives.
- Fixes — refreshing on any marking page tab (including Errors) now keeps you on the same tab instead of bouncing to the dashboard.
Speed upgrade
Mission Control got a round of under-the-hood performance work. You should notice it most on sessions with many students or a busy dashboard.
- Dashboards and student grids load noticeably faster, especially on larger competitions.
- Every page in the app does less work on each visit, so moving between pages feels snappier.
- Big sessions now perform as well as small ones — no more slowdown as the number of students and modules grows.
Run sessions in multiple languages
Teachers can now write each module in more than one language, and students see the module in their own language on the dashboard.
- Pick which languages to offer — in session settings there's a new Available languages picker. Tick English, Latvian, German, Finnish or Hungarian — whichever ones your students need. The first one you tick is the session's default language.
- Translate modules without leaving the edit page — when you're editing a module, language buttons appear at the top. The default-language button keeps the module edit page exactly as it is today. Click any other language button and you'll see just what needs translating: the name, description and amendments. Everything else stays the same across languages.
- Same rich editor for translations — translations use the same visual / Markdown editor and the same Description and Amendments tabs you already use for the default language.
- One Save button — the existing Save at the bottom of the page saves whichever language you're currently editing.
- Students see their language automatically — if a student has chosen a language in the dashboard switcher, they see the module in that language. Anything you haven't translated yet falls back to the default language with a small "not yet translated" note so they're never stuck.
- Translate at your own pace — you can save partial translations and come back later. You can also translate an amendment mid-session — until you save, students with other preferred languages simply see the default-language version.
Student dashboard polish
- When a student has more than one active module, the module switcher is now its own card below the timer, with the current module's name as the main title at the top of the page.
Zero Deployment Architecture
- Eliminated per-student deployment wait times — all changes now apply instantly
- Removed "Deployment required" status and warnings entirely in GitLab mode
- No more manual deploy step — students can start working immediately after being assigned
- Sessions go from setup to ready in seconds instead of minutes
Unified Database Management
- Centralized external MySQL and PostgreSQL support via feature flags
- Hierarchical database users: company admin, session teacher, and student levels
- Automatic database provisioning when students are assigned to sessions
- phpMyAdmin and pgAdmin access integrated into student and expert dashboards
Simplified Student & Seat Management
- Seats now represent unique students per company — one student, one seat, regardless of how many sessions
- Assigning students to sessions no longer checks or consumes seats
- Simplified mapping system with streamlined student-to-session enrollment
Settings & UI Overhaul
- Logs promoted to top-level menu item with dedicated
/logsURL - Internet control gated by feature flag (competition-only, disabled by default)
- Session logo upload now works when editing sessions
- Removed 6 redundant settings cards — cleaner, less overwhelming settings page
- New collapsible Advanced settings section for power-user options
- Training-specific defaults (countdown timer starts at 0, competition-only settings hidden)
- File inputs and UI elements updated to KtUI component system
Marking Room UI Improvements
- Redesigned marking room interface with improved layout and visual hierarchy
- Added legend colors for marking status indicators
- Fixed overview padding and grid layout for better readability
- Improved consistency between students and modules views
Mapping & Default URL Improvements
- Restyled mapping cards with cleaner visual design
- Added "Set to Default" button for quickly resetting mapping URLs
- Default deployment URL now displayed by default for easier access
- Improved button labels with descriptive text
Markdown Editor for Module Descriptions
- New per-field Visual/Markdown toggle on module description editors
- Full markdown support: headings, bold, italic, strikethrough, links, images, code blocks, tables, blockquotes, lists
- Live preview below the markdown editor updates as you type
- Syntax reference modal accessible via the ? button in the toolbar
- Editor mode preference persists per field via browser storage
- Seamless switching — existing WYSIWYG content converts to markdown and vice versa
Safety & UX Improvements
- Clean Git action now requires confirmation before executing — prevents accidental deletion of student work
- Fixed long session names overflowing the sidebar session selector
Per-Session Timezone
- New timezone setting in Advanced session settings — defaults to UTC
- Comprehensive timezone list covering all major regions (Europe, Americas, Asia, Middle East, Africa, Pacific)
- Module start/end times are now timezone-aware — teachers enter times in their session timezone, stored as UTC
- All time displays (module show page, edit form) converted to the session timezone with offset indicator
- Auto-start scheduling correctly uses the session timezone
Expert Management
- New Experts tab on the Marking page for managing competition experts and their skills
- Expert profiles with name, email, country code (2-letter), skill proficiencies, and questionnaire answers
- 14 default technologies (PHP, Laravel, Vue.js, React, Node.js, etc.) seeded per competition, fully customizable
- Three proficiency levels per technology: Beginner, Intermediate, Expert
- Configurable yes/no questionnaire (e.g., "Experience in international competitions")
- Self-registration via public URL — toggle on/off from the Experts tab, experts require approval
- Auto-assign to Teams — skill-balancing algorithm distributes experts across marking teams for equal backend/frontend coverage
- Interactive assignment preview modal — set team leaders, move experts between teams before applying
- Manual assignment via team dropdown on each expert row with crown icon for team leader
- Expert selection when creating marking teams — unassigned experts listed first
- Tab persistence on the Marking page — actions redirect back to the correct tab
Dashboard Tabbed Layout
- Student dashboard reorganized into three tabs: Session, Tools & Deployment, and Logs
- Timer and chat remain always visible in the right sidebar regardless of active tab
- Parallel module switcher moved to timer card toolbar for quick access
- Active tab remembered across page reloads and form submissions via localStorage
- Translations added for all five supported languages (EN, DE, FI, HU, LV)
Live Deployment Status
- Per-mapping deployment status displayed under each mapping entry (default and additional)
- Shows deployment state icon, status text, and relative time ("2 min ago")
- Auto-refreshes every 10 seconds via Livewire polling
Database Connection Info
- New Database Connection section in Tools tab showing MySQL and PostgreSQL credentials
- Displays host, port, username, and password with one-click copy buttons
Improved Log Viewer
- Application logs moved to dedicated Logs tab with terminal-style dark theme
- First 50 entries shown by default with "Show all" toggle for the rest
- Log fetch limit reduced from 100 to 50 for faster page loads
- New log kind selector — switch between Application and Container logs
- Auto-refresh toggle (30-second interval) for continuous monitoring
Teacher Deployment Logs Beta
- New Session → Logs page for teachers to view any student's deployment logs
- Filter by student, module, and mapping with cascading selectors
- Application vs Container log kind toggle
- Auto-refresh and manual refresh controls
- Quick "View Logs" link in the Students dropdown per student
- Deep-link support via URL parameters for quick access
Custom Domain Names
- Companies can now configure a custom domain suffix for their sessions
- Student deployment URLs use the company's domain instead of the default
- Domain migration tool for updating existing sessions when changing domains
Framework Management
- New ZIP file upload option when adding custom frameworks (alongside Git URL)
- Automatic validation of ZIP contents for Dockerfile and CI/CD workflows
- Frameworks are now account-wide — shared across all sessions in your organization
- New framework guides: Java Spring Boot, Java Vanilla, Python Django, Python FastAPI
Module State Alerts
- New prominent module state alerts on dashboard showing all active module states
- Overtime alert (red) — module exceeded scheduled time with Complete action
- Countdown alert (amber, animated) — module starting soon with live countdown timer
- Paused alert (amber) — module is paused with Resume action
- Running alert (green) — active module with time remaining and Pause/Complete actions
- Ready to Start card (blue) — modules waiting to begin with quick Start buttons
- Module card header now shows status badges summarizing counts by state
- Color-coded row highlighting in module list for quick visual identification
- Real-time updates via WebSocket — no page refresh needed
Framework Documentation
- Comprehensive deployment guides for all 9 NStrim-provided frameworks
- Quick start guides with step-by-step instructions for Angular, Express.js, Laravel, Next.js, React, React Vite, Svelte, Vanilla PHP, and Vue.js
- Docker development instructions for users without local Node.js/PHP
- Project structure overviews and common task examples
- Troubleshooting sections with solutions to common issues
- Framework-specific tips (Server vs Client components in Next.js, Prisma ORM in Express, etc.)
UI Polish
- NStrim-provided frameworks now display verify tick icon instead of text badge
- Framework selection in competition settings shows separate sections for NStrim Provided and Your Frameworks
- Improved spacing and visual hierarchy on documentation pages
Chat System Beta
- Two-way chat between students and instructors
- Students can send questions directly from their dashboard
- Urgent report feature for critical issues (flagged with red indicator)
- Unanswered questions counter badge for administrators
- Real-time browser notifications for new messages
- Red reports page showing urgent and unanswered messages
- Available for both competition and training sessions
Teacher Marking Improvements
- Student credentials (username/password) now displayed with clear labels
- One-click copy buttons for username and password
- Quick access tool buttons (View, Git, MySQL, Postgres) in organized layout
- Improved marking grid with better visual hierarchy
Deployment Status
- Deployment status message renamed to "Setting up your environment"
- New installation progress bar with real-time updates
- Improved visual feedback during environment setup
Frameworks Page
- "General" tab renamed to "Frameworks" in Session menu
- Frameworks page now focused on framework template management
- Add new framework button moved to Frameworks page
- New ZIP file upload option when adding custom frameworks
- Git URL auto-fetch to populate framework name, slug, and description from GitHub/GitLab
- Redesigned framework selection with toggle switches
- Frameworks now available account-wide (not session-specific)
- Session name, logo, and DNS configuration moved to Settings page
Settings Page
- Session Information card added with name (read-only) and logo upload
- DNS Name card in sidebar showing subdomain configuration
- Improved info blocks explaining settings sections
Modules Management
- Modules now accessible directly from main menu (no longer under Session submenu)
- New dedicated module list page with improved overview
- New module detail page showing status, settings, and attachments
- Redesigned create module form with inline time inputs and helpful sidebar
Module Auto-Start Beta
- New module auto-start feature for scheduled module starts
- Modules with fixed start time can now automatically start at the scheduled time
- Configurable start countdown timer (seconds before module begins)
- Auto-start only available when using fixed date mode
Teacher Marking
- New Teacher Marking feature for training sessions
- Mark students per module as Pass, Partial, or Fail
- Quick mark buttons for efficient grading
- Detailed feedback comments for students
- Marking overview with per-student and per-module statistics
- Configurable feedback visibility settings (show immediately or after module ends)
- Student dashboard integration to display marking feedback
Settings
- New "Show teacher marking to students" setting for training sessions
- New "Wait for module to end before showing feedback" setting
New User Interface
- Complete UI overhaul with modern design
- Improved dark/light theme support
- Redesigned sidebar with collapsible menu and session selection
- New global search with keyboard shortcut (Cmd/Ctrl + /)
- Mobile-responsive design improvements
New Dashboard 2.0
- Real-time statistics: students online, module status, deployment success rates
- Active module cards with live countdown timers
- Attention items panel for failed deployments and inactive students
- Quick links to external services (Git, phpMyAdmin, pgAdmin & more)
- Live student grid with deployment status indicators
Billing & Payments
- Card payment integration
- Seat-based billing with flexible monthly/annual cycles
- Bank transfer support with invoice generation
- Trial account system for new organizations
Team & Account Management
- New Account section with Team, Billing, and Settings
- Team management with role-based access (Owner, Admin, Member)
- Seat allocation management with grouping by billing cycle
Remote Marking Beta
- Team-based remote evaluation for distributed marking workflows
- Create marking teams with leader details and 6-character access codes
- Start/stop marking globally with real-time progress monitoring
- First-come-first-served marking approach with undo capability
Student Management Tools
- Git Lock/Unlock — prevent or restore student push access individually or in bulk
- Clean Git — destructive action to remove all student repositories for a fresh start
- Extended Time — grant additional time to individual students who need accommodations
Scheduler Controls
- Background job scheduler with configurable intervals for machine stats and Git data collection
- Pause/resume all background jobs for a session
Previous Releases
- Initial session management features
- Git integration and deployment system
- Module time tracking and management
- Marking room functionality
- LXC container orchestration