Changelog¶
This page documents the version history of calServer. Changes are sorted in reverse chronological order -- the newest version is at the top. Each entry contains a brief explanation of the change.
Versioning Scheme¶
calServer uses semantic versioning:
| Component | Meaning |
|---|---|
| Major | Incompatible changes, major architectural overhauls |
| Minor | New features, backwards compatible |
| Patch | Bug fixes and minor improvements |
The current version is maintained in VERSION in the project root directory as well as in httpdocs/protected/config/constants.php.
Change Categories¶
| Category | Meaning |
|---|---|
| Feature | New or enhanced functionality (feat) |
| Fix | Resolved bug (fix) |
| Documentation | Changes exclusively to documentation (docs) |
Platform Flags¶
| Flag | Meaning |
|---|---|
| BASE | Changes to the legacy system V1 (Yii 1.1 / httpdocs/) |
| APEX | Changes to the modern system V2 (Laravel + Nuxt 3 / laravel/ + frontend-v2/) |
Entries without a platform flag concern shared infrastructure, CI/CD, or documentation only.
Version History¶
Version 5.64.224¶
5.64.224 Documentation BASE March 4, 2026
OpenAPI: Note on custom fields in filter parameter
Notes and an example for filtering by custom fields were added to the OpenAPI documentation of the V1 API. This clearly documents the usage of the filter parameter for fields from the field management.
Version 5.64.223¶
5.64.223 Fix BASE March 4, 2026
Grid filter reset no longer disables the advanced filter
Resetting the quick filter in the grid incorrectly disabled the advanced filter area. The behavior has been separated: resetting the quick filter now leaves the advanced filter untouched.
Version 5.64.222¶
5.64.222 Fix APEX March 4, 2026
Translation import: Upload pipeline stabilized
Further improvements to the translation import for V2: upload limits were increased, error messages for invalid files are now more descriptive, and the import no longer fails silently.
Version 5.64.221¶
5.64.221 Fix APEX March 4, 2026
V2 Dashboard: Missing apply-template endpoint added and overview reloaded after application
The endpoint for applying a grid template was missing in the V2 API, so template changes could not be applied. The endpoint was added; after successful application, the overview reloads automatically.
Version 5.64.220¶
5.64.220 Documentation March 4, 2026
Complete analysis of V1 dashboard widget system with V2 migration plan
A detailed technical analysis of the V1 dashboard widget system was created and checked in as developer documentation. It contains a structured migration plan for porting to V2.
Version 5.64.219¶
5.64.219 Feature APEX March 4, 2026
V2 Dashboard: Advanced filter widgets integrated
The advanced filter widgets from the grid area were integrated into the V2 dashboard view. Users can now define and save complex filter conditions directly in the dashboard.
Version 5.64.218¶
5.64.218 Fix APEX March 4, 2026
Translation import for large files optimized and error display improved
The translation import failed for large language files due to timeouts or memory limits. Processing was optimized, and import errors are now displayed in detail in the frontend.
Version 5.64.217¶
5.64.217 Feature APEX March 4, 2026
V2 JSON import file generated from V1 Excel export
The Excel language file exported from V1 is automatically converted to the V2-compatible JSON format and is available as an import template. This significantly simplifies the initial language data import from V1 to V2.
Version 5.64.216¶
5.64.216 Fix APEX March 3, 2026
Field configurations added to grid template options
When creating and editing grid templates in V2, field configurations were missing from the available options. They are now fully loaded from the field management and can be included in templates.
Version 5.64.215¶
5.64.215 Feature APEX March 3, 2026
Translation import and export for V2 with V1-compatible structure
V2 now supports import and export of translation files in the same format as V1. This allows existing V1 language files to be directly adopted in V2.
Version 5.64.214¶
5.64.214 Feature APEX March 3, 2026
Field management: Main view tab with TableMaster added
A new "Main View" tab was introduced in the V2 field management, displaying the complete field list with TableMaster (PrimeVue DataTable). Field configurations are directly editable in the table.
Version 5.64.213¶
5.64.213 Fix APEX March 3, 2026
TypeScript error: Immutable array operations for readonly columns
In TypeScript strict mode, direct mutations on readonly arrays caused compiler errors. The affected locations were converted to immutable operations (spread/map).
Version 5.64.212¶
5.64.212 Fix APEX March 3, 2026
Grid templates: Display, import, and V1/V2 compatibility fixed
Multiple issues with grid templates in V2 were resolved: faulty template import, display errors in the template list, and incompatibilities when loading V1 template formats.
Version 5.64.211¶
5.64.211 Feature APEX March 3, 2026
Field management: CRUD for grid templates and new creation page
Grid templates can now be created, edited, and deleted in the V2 field management. A standalone creation page with a complete form was implemented. Additionally, a direct "+" button was added to the toolbar.
Version 5.64.210¶
5.64.210 Fix APEX March 3, 2026
filterType prop added for grid pages to enable advanced filters
The filterType prop that activates the advanced filter mode was missing on grid pages in V2. After adding it, the entire filter UI works correctly.
Version 5.64.209¶
5.64.209 Feature APEX March 3, 2026
Advanced filter system and grid templates ported from V1 to V2
The entire advanced filter system from V1 was migrated to V2: SQL-based filter conditions, saved filter profiles, and the grid template feature are now fully available in the V2 interface.
Version 5.64.208¶
5.64.208 Documentation March 3, 2026
API v2 marked as Beta/calServer 6.0; analysis of V1 advanced filter system
The API v2 was designated as a beta version with the target milestone calServer 6.0 in the documentation. Additionally, a technical analysis of the V1 advanced filter system and a V2 porting plan were added as developer documentation.
Version 5.64.207¶
5.64.207 Feature APEX March 3, 2026
V2 Frontend: Responsive theme with drawer navigation
The frontend-v2 received a fully responsive theme. On mobile devices, the navigation opens as a drawer menu; the desktop mode remains unchanged. The foundation is a redesigned layout system with PrimeVue.
Version 5.64.206¶
5.64.206 Fix APEX March 3, 2026
V2 demo data import: Incorrect field mappings and swapped data corrected
When importing demo data via the V2 administration interface, fields were incorrectly mapped and some records were imported with swapped data. The mappings were corrected and all demo data is now imported consistently.
Version 5.64.205¶
5.64.205 Documentation March 3, 2026
API documentation: V1 and V2 split into separate OpenAPI specs
The OpenAPI specification was split into two separate documents -- one for the V1 API (production) and one for the V2 API (beta). Both are accessible separately via the Scalar API Reference.
Version 5.64.204¶
5.64.204 Fix March 3, 2026
CI: Selenium node readiness awaited before Behat tests
The Behat test job started before the Selenium node was fully ready, causing sporadic failures. The job now explicitly waits for the Selenium node readiness check.
Version 5.64.203¶
5.64.203 Fix APEX March 3, 2026
V2: Yii field types and StatusDatabase category correctly mapped for grid filters; /fields endpoint returns complete properties
The field types from Yii (V1) were not correctly translated for V2 grid filters, causing filter errors. At the same time, the /fields endpoint returned only the internal mapping instead of the complete field management properties -- both issues were fixed.
Version 5.64.202¶
5.64.202 Feature APEX March 3, 2026
Complete language management system implemented for V2
V2 now has a standalone language management system: create, edit, enable/disable languages, and manage translations per module. The interface was implemented as a standalone admin area.
Version 5.64.201¶
5.64.201 Feature BASE March 3, 2026
V1 API: Inventory categories endpoint and OpenAPI documentation for V1/V2
The V1 REST API was extended with a dedicated endpoint for inventory categories. Additionally, the OpenAPI documentation for V1 and V2 was separated and fully updated.
Version 5.64.200¶
5.64.200 Feature APEX March 3, 2026
AG Grid replaced by TableMaster (PrimeVue DataTable)
The AG Grid component was completely replaced by TableMaster -- a custom wrapper around PrimeVue DataTable. TableMaster offers unified styling, better TypeScript integration, and native compatibility with the Aura theme.
Version 5.64.199¶
5.64.199 Fix APEX March 3, 2026
Field configuration editing: withApiName filter removed and composite key fixed
The withApiName filter incorrectly excluded certain fields during editing. Additionally, the composite primary key caused errors during updates. Both issues were fixed.
Version 5.64.198¶
5.64.198 Fix APEX March 3, 2026
Merge conflicts in field import/export feature resolved
Conflicts between the field import/export branch and the main development branch were resolved. Column names were corrected and table truncation before import was added.
Version 5.64.197¶
5.64.197 Feature APEX March 3, 2026
V2 Frontend: Sidebar mode toggle for separate app and admin navigation
A toggle was added to frontend-v2 to switch between user mode and admin mode. Both areas now have separate navigation trees in the sidebar.
Version 5.64.196¶
5.64.196 Feature APEX March 3, 2026
V1 demo data admin migrated to V2 (Laravel + Nuxt)
The existing V1 admin area for demo data was fully ported to V2 (Laravel backend + Nuxt frontend). Demo data can now be imported and removed directly via the V2 administration interface.
Version 5.64.195¶
5.64.195 Feature APEX March 3, 2026
Import/export for field configurations and grid templates
Field configurations and grid templates can now be exported as JSON files and re-imported in V2. This enables easy transfer of configurations between instances.
Version 5.64.194¶
5.64.194 Fix APEX March 3, 2026
V2 seeder: UUID format changed to plain VARCHAR(36)
Test user IDs in the seeder were set in the wrong format (with formatting characters), causing MySQL type errors. IDs are now stored as plain UUIDs without special characters.
Version 5.64.193¶
5.64.193 Fix APEX March 2, 2026
V2 seeder: Column overflows and type conflicts fixed for MySQL Strict Mode
The demo data seeder generated entries whose fields violated length restrictions or caused type errors in MySQL Strict Mode. All affected columns were adjusted.
Version 5.64.192¶
5.64.192 Feature APEX March 2, 2026
V2 Frontend: Form visibility improved with PrimeVue Aura theme
Labels and input fields in V2 forms had insufficient contrast in the Aura theme. Font colors were adjusted for light and dark mode so that all labels are clearly visible.
Version 5.64.191¶
5.64.191 Feature APEX March 2, 2026
All V1 field properties exposed in V2 API and CRUD admin endpoints added
The V2 API now returns all relevant field properties from the V1 field management. Additionally, complete CRUD endpoints for the field management admin area were implemented.
Version 5.64.190¶
5.64.190 Fix BASE March 2, 2026
php-fpm: CMemCache-exclusive properties removed when falling back to CFileCache
After falling back to CFileCache, CMemCache-specific configuration parameters were still being set, causing PHP notices. The affected properties are now only set when Memcache is actually active.
Version 5.64.189¶
5.64.189 Fix BASE March 2, 2026
php-fpm: Automatic fallback to CFileCache on Memcache crash
When the Memcached extension crashed during startup, calServer ran without a functioning cache. php-fpm now automatically falls back to CFileCache, so the application remains operational even without Memcached.
Version 5.64.188¶
5.64.188 Fix BASE March 2, 2026
php-fpm: Crashing Memcached extension detected and disabled at startup
On systems with a defective Memcached extension, loading the extension caused a php-fpm crash. A startup script now detects the problematic extension and automatically disables it before startup.
Version 5.64.187¶
5.64.187 Fix March 2, 2026
Deployment: HTTPS health check uses curl instead of ss
The health check in the deployment script used ss to check the HTTPS port, which was not available on certain images. The check was switched to curl and is now more reliable.
Version 5.64.186¶
5.64.186 Feature APEX March 2, 2026
V2: Field-driven grids, templates, custom fields API, and dynamic views
V2 now fully supports field-driven grids: columns are dynamically loaded from the field configurations of the field management. Grid templates can be saved and applied to views. Custom fields are available via a dedicated API endpoint.
Version 5.64.185¶
5.64.185 Fix APEX March 2, 2026
artisan seeder: Faker dependency removed from TestDatabaseSeeder for production
The TestDatabaseSeeder imported Faker classes that are not available in the production installation. The dependency was removed so that artisan app:setup runs without errors on production systems.
Version 5.64.184¶
5.64.184 Fix APEX March 2, 2026
app:setup: RBAC seeding only on fresh database, existing operations preserved
When artisan app:setup was called repeatedly, RBAC operations were re-seeded, overwriting existing user permissions. Seeding is now only executed when no operations exist in the database yet.
Version 5.64.183¶
5.64.183 Fix BASE March 2, 2026
V1: C2321 mapping now uses CallSheetEx.cField5
The field mapping for protocol type C2321 referenced an incorrect column in CallSheetEx. The mapping was corrected to cField5, so calibration protocols of this type are read correctly.
Version 5.64.182¶
5.64.182 Documentation March 2, 2026
Default super admin credentials removed from installation guide
The installation guide contained hardcoded default credentials for the super admin account. These were removed to prevent installations from running with insecure default passwords.
Version 5.64.181¶
5.64.181 Fix APEX March 2, 2026
V2 migrations: Phantom table inventory_notepad removed and missing V1 tables added
A non-existent table (inventory_notepad) was removed from the migrations. At the same time, additional missing V1 tables were added to ensure complete schema compatibility between V1 and V2.
Version 5.64.180¶
5.64.180 Feature APEX March 2, 2026
artisan demo:data command for seeding and removing demo data
A new Artisan command demo:data enables seeding demo data into the V2 database or completely removing it. This significantly simplifies preparing demos and test environments.
Version 5.64.179¶
5.64.179 Fix APEX March 2, 2026
V2: Global auth middleware, sidebar guard, and Docker entrypoint stabilized
Various V2 authentication issues were fixed: the global auth middleware now correctly protects all routes, the sidebar guard prevents unauthorized access to admin areas, and the Docker entrypoint reliably starts the V2 stack.
Version 5.64.178¶
5.64.178 Fix APEX March 2, 2026
V2: RBAC operations seeded in app:setup and silent login error fixed
Missing RBAC operations in the initial database caused untraceable login errors in V2. app:setup now seeds all necessary operations, and the login error is reported transparently instead of being silently ignored.
Version 5.64.177¶
5.64.177 Documentation March 2, 2026
Production deployment guide, migration documentation, and migration.sh added
The developer documentation was extended with a complete production deployment guide. Additionally, migration documentation for the transition from V1 to V2 and the helper script migration.sh were added.
Version 5.64.173 -- 5.64.176¶
5.64.173--5.64.176 Feature APEX March 1--2, 2026
V2: Complete Laravel migrations for V1 Yii schema (122 tables) + iterative corrections
The entire V1 database schema (122 tables) was implemented as Laravel migrations so that V2 can operate on the identical database structure as V1. Subsequently, detail issues were fixed in several iterations: missing TEXT column defaults, MySQL index length restrictions, missing RBAC columns, incorrect FK types, and the '0000-00-00' datetime default.
Version 5.64.155¶
5.64.155 Fix March 1, 2026
Docker: nginx-proxy named volume architecture restored and CI tests parallelized
The nginx-proxy configuration was reverted to the proven named volume architecture (jwilder pattern) after a bind mount attempt caused EISDIR errors. At the same time, Behat/API tests were separated into individual, non-blocking CI jobs.
Version 5.64.154¶
5.64.154 Fix March 1, 2026
Docker: nginx-proxy SSL issues and acme-companion certificate binding fixed
Multiple related nginx-proxy SSL errors were fixed: attaching the acme-companion container, mounting the default_location file (EISDIR error), and remaining SSL configuration issues after the image migration.
Historical versions 5.64.110 -- 5.64.153
These versions were released between February 27 and March 1, 2026. No individual entries are available in the git log for this period. Development primarily comprised further BASE improvements (GridViewHelper migrations, admin panel fixes, Report Runner optimizations) as well as the initial infrastructure for the APEX system (Docker configuration, initial V2 scaffolding).
Version 5.64.109¶
5.64.109 Documentation February 27, 2026
Calibration categories added to documentation
The documentation of calibration categories was newly added. Users and administrators can now find a complete description of category management in the manual section "Calibrations".
Version 5.64.108¶
5.64.108 Fix BASE February 27, 2026
Column names qualified in document sharing grid
Ambiguous column names in the document sharing grid caused SQL errors during cross-table JOINs. The affected columns are now qualified with the correct relation alias, so the sharing list loads reliably.
Version 5.64.107¶
5.64.107 Fix February 27, 2026
Report Runner: Jackson ObjectMapper replaces Javalin's bodyAsClass
In the Report Runner, Javalin's built-in bodyAsClass method caused deserialization errors with certain JSON payloads. Processing now uses the Jackson ObjectMapper directly and is significantly more fault-tolerant.
Version 5.64.106¶
5.64.106 Documentation February 27, 2026
Complete documentation overhaul
The entire MkDocs documentation was fundamentally revised: pages were split, cleaned up, and rewritten in terms of content. The structure is now more consistent, more complete, and significantly easier to navigate.
Version 5.64.105¶
5.64.105 Fix BASE February 27, 2026
Advanced filter state preserved during page navigation
The advanced filter state in the grid was reset when paging or sorting, causing complex search queries to be lost. The filter state is now correctly maintained across page changes and sort operations.
Version 5.64.104¶
5.64.104 Feature February 26, 2026
Documentation navigation organized into granular subsections
The documentation navigation structure was divided into fine-grained subsections. Users can now navigate directly to specific topic areas without having to scroll through long pages.
5.64.104 Feature APEX February 26, 2026
Scalar API Reference replaces Redoc -- Postman Collection added
The interactive API documentation was switched from Redoc to Scalar API Reference, which offers a more modern user interface and better search capabilities. Additionally, a Postman Collection is now available for direct import into Postman.
Version 5.64.103¶
5.64.103 Fix February 26, 2026
GitHub Pages deployment: Permission and retry logic added
The deployment workflow for GitHub Pages failed due to missing actions:read permission and had no retry mechanism for transient errors. Both issues were fixed.
Version 5.64.102¶
5.64.102 Feature February 26, 2026
Notion export content migrated to MkDocs documentation
All documentation content previously managed in Notion was migrated to the MkDocs structure. The content is now part of the versioned documentation in the repository and is automatically published with every deploy.
5.64.102 Fix BASE February 26, 2026
Invalid column column_label removed from search criteria
The field column_label was erroneously passed as a database criterion in search queries, causing SQL errors since no corresponding database column exists. It was removed from the search criteria.
Version 5.64.101¶
5.64.101 Fix February 26, 2026
Report Runner: jrxmlPath deserialization error fixed
A missing or invalid jrxmlPath parameter in the JSON request prevented loading of JasperReports templates. Error handling was made more robust and now returns a descriptive error message.
5.64.101 Fix BASE February 26, 2026
PHP error with CArrayDataProvider.modelClass fixed
An undefined property access to modelClass in Yii's CArrayDataProvider caused PHP notices in certain grid views. The access is now defensively checked before use.
5.64.101 Feature BASE February 26, 2026
18 category B grid views migrated to GridViewHelper
18 specially customized grid views were converted to the new GridViewHelper implementation. The unified base reduces code redundancy and significantly facilitates future modifications.
Version 5.64.100¶
5.64.100 Fix BASE February 26, 2026
Column names qualified in FrontendAudit::search()
Unqualified column names in FrontendAudit::search() caused ambiguous SQL errors during cross-table database queries. The columns are now fully specified with the table alias.
5.64.100 Feature February 26, 2026
Documentation platform refined (logo, favicon, CSS, .gitignore)
The MkDocs documentation platform received its own logo and favicon. Custom CSS was integrated, and a .gitignore rule excludes build artifacts (site/) from the repository.
Version 5.64.99¶
5.64.99 Feature February 26, 2026
MkDocs Material documentation platform set up
The technical documentation for calServer was built on MkDocs Material and deployed to GitHub Pages. Base configuration, theme, plugins (search, lightbox, git date), and the initial navigation structure were created.
Version 5.64.98¶
5.64.98 Feature APEX February 26, 2026
Demo data seeder with admin import function added
A seeder for demo data was implemented that can be executed via a new administrator function. This allows fresh installations to be quickly populated with realistic test data.
Version 5.64.97¶
5.64.97 Fix BASE February 26, 2026
Admin page for categories added, test step admin 404 error fixed
The administration interface for categories was completely missing. Additionally, several admin paths for test steps returned 404 errors. Both issues were fixed simultaneously.
Version 5.64.96¶
5.64.96 Fix BASE February 26, 2026
DMS browser: elFinder view error fixed
When opening the elFinder file manager in the DMS browser (document management system), a "View not found" error occurred. The missing view reference was corrected.
Version 5.64.94¶
5.64.94 Fix February 26, 2026
Report Runner: Empty parameters array handled correctly
An empty parameters array in the JSON request to the Report Runner caused a deserialization error. The edge case is now explicitly handled and no longer results in a server error.
Version 5.64.93¶
5.64.93 Feature BASE February 26, 2026
Phase 4: Admin panel grids migrated to GridViewHelper v2
With Phase 4, all grids in the admin panel module were converted to the v2 GridViewHelper implementation. This completes the multi-phase grid migration of the entire administration interface.
Version 5.64.92¶
5.64.92 Fix February 26, 2026
Report Runner architecture: Automatic fallback to legacy engine
When the Report Runner service was unreachable, report generation failed without any fallback. The architecture was extended: when the Report Runner is unreachable, it now automatically falls back to the proven legacy engine (JasperStarter).
Version 5.64.86 -- 5.64.91¶
5.64.86--5.64.91 Feature BASE February 25, 2026
GridViewHelper Phase 3: Calibration and inventory modules migrated
The main calibration grids and inventory management were converted to the v2 GridViewHelper implementation. Column selector, advanced filter, and unified pagination behavior are now available in these core modules as well.
Version 5.64.75 -- 5.64.85¶
5.64.75--5.64.85 Feature BASE February 25, 2026
GridViewHelper Phase 2: Test equipment and task modules migrated
Test equipment management, task list, and related sub-views were converted to GridViewHelper v2. Consistent export buttons and column configuration are now available there as well.
5.64.75--5.64.85 Fix BASE February 25, 2026
Unqualified column names corrected in multiple grid search methods
Cross-table joins in various modules caused SQL errors due to ambiguous column names. All affected search() methods were updated with full table aliases.
Version 5.64.60 -- 5.64.74¶
5.64.60--5.64.74 Feature BASE February 24, 2026
GridViewHelper Phase 1: Master data grids migrated to unified base
In Phase 1, all master data grids (manufacturers, suppliers, contacts, locations) were converted to the new GridViewHelper base. This ensures consistent filter functionality and export options across all master data views.
5.64.60--5.64.74 Fix BASE February 24, 2026
Report Runner: Initialization and configuration validation stabilized
During Report Runner service startup, missing configuration parameters caused silent errors. The initialization routine now checks all required parameters and provides clear error messages when the configuration is incomplete.
Version 5.64.50 -- 5.64.59¶
5.64.50--5.64.59 Feature BASE February 23, 2026
Report Runner: JasperReports integration with microservice architecture
A standalone Report Runner microservice (Java/Javalin) was introduced that renders JasperReports templates and provides them as a REST endpoint. The previous JasperStarter process call is retained as a fallback.
5.64.50--5.64.59 Fix BASE February 23, 2026
DMS: elFinder path configuration and permission assignment corrected
elFinder started with incorrect base paths and in certain cases ignored the configured access permissions. Both issues were fixed in the connector configuration.
Version 5.64.35 -- 5.64.49¶
5.64.35--5.64.49 Feature BASE February 22, 2026
Admin panel: Category, test step, and standards management expanded
The administration interface for calibration categories, test step templates, and standards was completely reimplemented. CRUD actions, list views, and validation rules now conform to the unified admin standard.
5.64.35--5.64.49 Fix BASE February 22, 2026
Filter parameters from URL correctly deserialized
Saved filter states in the URL query were partially misinterpreted on page reload, resulting in empty grids. The deserialization logic was corrected.
Version 5.64.20 -- 5.64.34¶
5.64.20--5.64.34 Feature BASE February 21, 2026
Demo data seeder: Complete admin import workflow implemented
A complete workflow for importing and removing demo data via the admin panel was implemented. Seeder classes for all core modules (inventory, test equipment, calibrations, documents) were created.
5.64.20--5.64.34 Fix BASE February 21, 2026
Bulk editing: Date values saved correctly
During bulk editing of multiple records, date fields were in some cases saved with incorrect timezone offsets. Date processing was normalized to a UTC basis.
Version 5.64.10 -- 5.64.19¶
5.64.10--5.64.19 Feature BASE February 20, 2026
GridViewHelper v2: Foundation for unified grid implementation created
The new GridViewHelper v2 class was developed. It encapsulates column selector, export button, advanced filter, and pagination in a unified base that can be used by all grid views.
5.64.10--5.64.19 Fix BASE February 20, 2026
Caching: Session-based grid state preserved after login
The saved filter state in the grid was lost after re-login because it was bound to the session ID. The state is now stored per user in the database profile.
Version 5.64.0 -- 5.64.9¶
5.64.0--5.64.9 Feature BASE February 19, 2026
Minor 5.64 started: Focus on grid infrastructure and Report Runner
Minor 5.64 begins a new development cycle focused on unifying the grid implementation (GridViewHelper v2) and introducing the standalone Report Runner microservice. Initial infrastructure work for APEX (V2) runs in parallel.
5.64.0--5.64.9 Fix BASE February 19, 2026
PHP 7.4 compatibility: Typed properties and nullsafe operator removed
Isolated PHP 8 syntax constructs (typed properties, ?->) were identified and reverted to PHP 7.4-compatible syntax to ensure production compatibility.
Version 5.63.x¶
5.63 Feature APEX February 18, 2026
V2 infrastructure: Docker Compose stack for Laravel + Nuxt initialized
The initial Docker Compose configuration for the V2 system (Laravel backend + Nuxt frontend + nginx reverse proxy) was created. Local development environment and production stack run on the same base.
5.63 Feature APEX February 17, 2026
V2: Laravel project scaffold and basic API route structure set up
The Laravel backend for calServer V2 was initialized. Basic API routes (auth, inventory, calibrations) were set up as a skeleton and equipped with middleware for CORS and Sanctum authentication.
5.63 Feature BASE February 16, 2026
Booking view for test equipment reservations introduced
A new booking view enables planning and managing test equipment reservations. Calendar overview, conflict checking, and notifications for overlaps are integrated.
5.63 Fix BASE February 15, 2026
Certificate download: PDF generation stabilized for special characters in device names
Device names with special characters (umlauts, slashes) caused character encoding errors during PDF export of calibration certificates. Filename sanitization and encoding handling were corrected.
5.63 Fix BASE February 15, 2026
Due date indicator: Color coding corrected for devices without next calibration date
Devices without a recorded next calibration date were incorrectly displayed as "overdue" (red) in the due date indicator. They now correctly appear as "not scheduled" (gray).
Version 5.62.x¶
5.62 Feature BASE February 13, 2026
Bulk editing: Set calibration interval for multiple devices at once
Multiple devices can now be selected from the inventory list and their calibration interval updated in a single step. The function is accessible via the existing bulk editing toolbar.
5.62 Feature BASE February 12, 2026
Calibration protocol: Measurement value tables with configurable columns
Calibration protocols now support configurable measurement value tables where column count, labels, and units can be individually configured per protocol template.
5.62 Fix BASE February 11, 2026
Report Runner connection errors visibly reported in the frontend
When the Report Runner was unreachable, the frontend showed a generic "500" error without context. The error is now displayed as a comprehensible message with a hint about the service status.
5.62 Fix BASE February 10, 2026
Device location change creates correct audit log entry
Changing a device to a new location was not logged as a separate event in the audit log. A dedicated moved event type was added that records old and new location.
5.62 Feature BASE February 10, 2026
Document sharing: Time-limited sharing links
Documents in the DMS can now be shared with a time-limited sharing link. After the validity period expires, the link is automatically deactivated.
Version 5.61.x¶
5.61 Feature BASE February 8, 2026
Label printing: ZPL template editor in admin panel
A label template editor was introduced in the admin panel, allowing ZPL print templates for Zebra printers to be edited directly in calServer. Templates can be populated with device data and QR codes.
5.61 Feature BASE February 7, 2026
Calibration orders: Link external service providers with order reference
Calibration orders assigned to external calibration laboratories can now be linked with an order reference and the service provider. The status of the external order is traceable in the device history.
5.61 Fix BASE February 6, 2026
User settings: Language and timezone selection takes effect immediately
After changing language or timezone in user settings, the new values were only active after re-login. The settings are now applied without a logout/login cycle.
5.61 Fix BASE February 5, 2026
Test equipment management: Device cannot be deleted while open calibration orders exist
Devices with open calibration orders could previously be deleted, leading to orphaned order references. A validation now prevents deletion and points to the open orders.
Version 5.60.x¶
5.60 Feature BASE February 3, 2026
Performance: Database indexes optimized for due date queries
Queries for determining due and overdue test equipment ran too slowly on large datasets. New composite indexes on next_calibration_date and status reduced query times by up to 80%.
5.60 Feature BASE February 2, 2026
Memcached integration for session and query caching activated
calServer now uses Memcached for caching database queries, sessions, and configured grid states. Configuration is done via the admin settings and is designed for multi-node setups.
5.60 Fix BASE February 1, 2026
Audit log: Bulk deletions logged as a single batch event
When bulk-deleting records, a separate audit log event was created for each entry, resulting in thousands of entries for a single operation. Bulk operations are now logged as a single batch event with count and timestamp.
5.60 Fix BASE February 1, 2026
LDAP login: User groups synchronized on every login
LDAP user groups were only synchronized when the account was first created during login. Changes to group membership in the directory were not picked up afterwards. Synchronization now occurs on every login.
Version 5.59.x¶
5.59 Feature BASE January 28, 2026
OPcache configuration optimized for production environment
The PHP OPcache settings were optimized for calServer production environments: opcache.validate_timestamps=0 and increased memory limits significantly reduce CPU overhead during request handling.
5.59 Fix BASE January 27, 2026
Role-based access control: Missing operations for new modules added
When introducing new functional modules, the associated RBAC operations were not fully created, preventing administrators from configuring new permissions. All missing operations were added.
5.59 Fix BASE January 26, 2026
Procedure template: Limit check no longer fails on empty measurement values
When measurement value fields in calibration protocols were left empty, the limit check raised an error instead of skipping the field. Empty fields are now correctly treated as "not measured".
Version 5.58.x¶
5.58 Feature BASE January 25, 2026
LDAP/Active Directory: Single Sign-On support
calServer now supports login via Active Directory through LDAP. User data is automatically created on first login; group membership controls calServer roles.
5.58 Feature BASE January 24, 2026
API v1: OAuth2 support for third-party applications
The REST API v1 was extended with OAuth2 (client credentials flow). Third-party applications can authenticate with an API key and access authorized endpoints without using user credentials.
5.58 Fix BASE January 23, 2026
Password reset link correctly expires after 24 hours
Password reset links remained permanently valid if the token was not deleted. Tokens are now provided with a 24-hour expiration timestamp and immediately invalidated after use.
Version 5.57.x¶
5.57 Feature BASE January 21, 2026
REST API: Rate limiting and API key management in admin panel
The V1 REST API received a rate limiting function (configurable per API key). API keys can be created, blocked, and deleted in the admin panel. Usage statistics are available per key.
5.57 Feature BASE January 20, 2026
API v1: Bulk endpoint for inventory import
A new /inventories/bulk endpoint enables mass import of inventory data via the API. JSON payloads with up to 500 devices per request are supported.
5.57 Fix BASE January 19, 2026
API responses: ISO 8601 date format normalized for all timestamps
API endpoints returned date values in mixed formats (MySQL format, Unix timestamp, ISO 8601). All date fields are now uniformly returned as ISO 8601 strings.
Version 5.56.x¶
5.56 Feature BASE January 17, 2026
Grid infrastructure: Column selector introduced as global component
A reusable column selector was implemented as a global Yii widget component. It allows users to individually select visible columns per grid view; the selection is stored per user.
5.56 Feature BASE January 16, 2026
Grid infrastructure: Server-side processing activated for all main grids
All main grids now use server-side filtering, sorting, and pagination. This loads only the currently visible portion, significantly improving performance with large datasets.