*************************************** Query Builder add-on Changelog *************************************** Query Builder add-on Changelog per year: 2012 / 2013 / 2014 / 2015 / 2016 / 2017 / 2018 / 2019 / 2020 / 2021 / 2022 / 2023 / 2024 / 2025 / 2026 ************** 2012 ************** # v1.0 - x/xx/2012 - First release ************** 2013 ************** ************** 2014 ************** # v1.5 - 28/11/2014 - Design Updates - General setup (per user) and specific setup (per query) to configure query results and export ************** 2015 ************** ************** 2016 ************** ************** 2017 ************** - Bug in license saving ************** 2018 ************** # v2.0 - 15/08/2018 - Full redesign/rebuild of the addon # v2.1 - 21/08/2018 - Remote query URL API added to trigger runs and export to external applications (M0002452) # v2.2 - 01/09/2018 - Added loading message to query results (M0002557) - Fixed query saving multiple times (M0002553) - Added main operator to show name from contacts (M0002548) - Restricted specific modules from groups with no access (M0002561) ************** 2019 ************** # v2.4 - 08/03/2019 0002646: [Improvements] QB: Add option to save a copy of a query under a different name 0002691: [Bugs] QB: Add project code to exported data. 0002652: [Improvements] QB: Add colour to Results page 0000009: [Improvements] Fields to be selected are the DataBase column names not the UI names 0000010: [Bugs] QB/Demo mode goes straight to free mode on first install 0000013: [Improvements] QB/ Combine methods of linking when constructing a query 0002315: [Bugs] QB: selct field values are reported as ID and not text values 0002358: [Improvements] QB: Select Fields - add an option to check/uncheck all fields in a module 0002647: [Improvements] QB: Add legend name to fields in filters in brackets beside the database name 0002648: [Improvements] QB: Remove Secondary modules from Select fields page 0002649: [Improvements] QB: Move the save button to be closer to the query name 0002650: [Improvements] QB: Edit query name with pencil icon 0002651: [Improvements] QB: Add legend name to fields in brackets beside the database name on Select Fields page 0002765: [Bugs] QB: Editing a project filter removes all existing projects 0002855: [Bugs] QB: Filtering on a custom field - no results 0002733: [Improvements] QB: Include SQL functions for data and time intervals 0002732: [Improvements] QB: Edit filters ************** 2020 ************** - CHANGED: integrated into LC v6.0 # v3.0 - 22/07/2020 # v3.01 - 23/09/2020 - Added "copy activation key to clipboard" feature 18/11/2020 - Added a tooltip when activation key is copied # v3.02 - 19/11/20020 - BUG: missing export buttons # v3.03 - 12/02/2020 - BUG: wrong JSON format export (M3688) - CHANGED: replace CSV delimiter by comma - ADDED: create an output of URL generated in a JSON format (M3689) - ADDED: set CSV delimiter dynamically - BUG: afer refreshing remote url is not good generated ************** 2021 ************** 10/03/2021 - BUG: Remote URL API login issue 04/05/2021 - CHANGED: use $DB_ENGINE # v3.04 - 02/06/2021 - CHANGED: support saas mode licences # v3.05 - 24/11/2021 - CHANGED: modified some code & sql queries to make it work with only full group by mode ************** 2022 ************** 28/07/2022 - CHANGED: Auto install ************** 2023 ************** 18/01/2023 - BUG: footer overlaps some queries on queris tab (M6359) 02/02/2023 - CHANGED: add box_name to results (M6402) ************** 2024 ************** # v3.06 - 19/06/2024 - BUG: PHP8 compatibility + FR language fix - CHANGED: Refactored results JSON response (M7451) 15/07/2024 - IMPROVEMENT: Added searchin option (DEV-150) - IMPROVEMENT: Disable link options depending on the module selected (DEV-150) - IMPROVEMENT: Filter link options depending on the module selected (DEV-150) # v3.07 - 15/07/2024 - BUG: HotFix prevent empty selected field searchin - IMPROVEMENT: change response searchin (DEV-150) 18/10/2024 - BUG: handle complex fields on searchin query - IMPROVEMENT: Add white list to api response 13/11/2024 - IMPROVEMENT: Add Plant Manager to Query builder (DEV-533) 18-19/11/2024 - IMPROVEMENT: allow passing parameters by params (DEV-551) - IMPROVEMENT: add the postfix of the field in the results (DEV-550) - BUG: Fix bug error deleting filters (DEV-554) - BUG: Fix bug postfix export (DEV-550) - BUG: Fix the bug in URL parameter filtering (DEV-551) ************** 2025 ************** 09/01/2025 - BUG: Add missing view 'view_links' in install - BUG: Link mode was disabled despite being a valid option - BUG: Error displaying autocomplete options - BUG: Staff cannot save a query (DEV-704) 21/01/2025 - IMPROVEMENT: Add "or" condition in filter (DEV-707) # v3.08 - 22/01/2025 24-27/01/2025 - BUG: Error running query when no user fields were selected - BUG: Error handling complex fields in filter - BUG: Error Handling for Filters Passed via URL - BUG: "Could not run query" when user postfix not availables - BUG: Box name is not exported (DEV-752) - BUG: Error loading query from Queries tab (DEV-733) - BUG: Default Fields missing on export link (DEV-732) 28-30/01/2025 - BUG: error handling complex fields in filter - BUG: export results gives wrong prompt (DEV-739) - IMPROVEMENT: Add the "owner" of the query (DEV-699) - BUG: Special char interfering with query results (DEV-777) - BUG: wrong result when using "or" condition in filter (DEV-707) - BUG: Displaying disabled fields (DEV-712) - BUG: Wrong expected results number (DEV-738) # v3.09 - 31/01/2025
06-11/02/2025 - BUG: Error saving query filters - IMPROVEMENT: change permission behavior (DEV-713) - BUG: Select type returns code instead value (DEV-833) - BUG: Wrong meta data on results shared (DEV-836) - BUG: Wrong query output when using OR filter on searchin (DEV-835) - BUG: Error getting multiple complex fields - IMPROVEMENT: Add list queries endpoint (DEV-694) - IMPROVEMENT: add support to plant manager joins - IMPROVEMENT: improve normal link performance - BUG: added special condition for relationship between seed and tray - BUG: added plants manager support for relationships - BUG: SQL Error when getting data using Remote URL - IMPROVEMENT: added divider for PlantsManager - BUG: error running query when box id selected - IMPROVEMENT: Improve security (DEV-1029) 31-02/03/2025 - BUG: Error loading queries - IMPROVEMENT: change shared users behavior (DEV-988) - BUG FIX: Fixed "Could not run query" error that occurred when a field bd name was modified from the Labcollector side - IMPROVEMENT: improve filter options (DEV-988) - BUG: error loading queries - BUG: The list of users the query was shared with was incorrect - it returned all users instead of only those it was actually shared with - IMPROVEMENT: change backgroud color subgroup
- BUG: update install file 17/04/2025 - IMPROVEMENT: remove inactive fields - BUG: Error runing query when contact selected - BUG: Error runing query when no custom fields on module 24/04/2025 - BUG: security check table name # v3.10 - 28/04/2025 13/05/2025 - IMPROVEMENT: recover the cage location of the animal (DEV-1103) - IMPROVEMENT: recover the crossing data for the animal (DEV-1104) 20/05/2025 - BUG: Resolved an issue where selecting multiple options caused the query to exceed the 61-table join limit. Optimized the query logic for select and yes_no custom fields. # v3.11 - 20/05/2025 26/05/2025 - BUG: recover the cage location of the animal on export JSON (DEV-1103) - BUG: recover the crossing data for the animal on export JSON (DEV-1104) - BUG: Display only active fields 03/06/2025 - BUG: error validation fields 10/06/2025 - BUG: fatal error constant undefined - BUG: Error when filter on searchin - BUG: line sep, link, autocomplete displayed as field option 17/06/2025 - BUG: Discrepancies in date format (DEV-1195) - BUG: Error runing query 26/06/2025 - ADDED: added new Join type for normal link - ADDED: add new validation when link is broken
02-04/07/2025 - ADDED: Update datatables version - BUG: Resolved error when running normal query link after direction option update. - BUG: Query error when selecting two fields linked to a contact on searchin 18/07/2025 - BUG: Include missing room field in animals module (DEV-1311) 22/07/2025 - ADDED: Preserve Labcollector field order 01/08/2025 - BUG: Security fix 18-19/08/2025 - BUG: order for 'sub-field' isn't respected (DEV-1362) - ADDED: added languages - BUG: Missing cross fields translations - BUG: fixing warnings - BUG: prevent fatal error when no fields selected - BUG: field names overlap depending on zoom
# v3.12 - 20/08/2025 03/09/2025 - BUG: Fix warnings 19/09/2025 - BUG: Error getting data when no fields selected - BUG: Copy and Share button doesn't open update modal - BUG: Incorrect fields in the export URL
08/10/2025 - BUG: Error runing query when sample selected on searchin
- BUG: Fixed incorrect query generation in search in when dealing with hierarchical modules (parent, child, grandchild, etc.) - BUG: Error getting query list 13-14/11/2025 - ADDED: Improved creation of queries (DEV-1576) - BUG: Filter issue on custom fields (DEV-1576) - BUG: CSV export button not working - BUG: Incorrect language in custom fields legend - BUG: Error clonning query # v3.14 - 13/11/2024 18/11/2025 - BUG: Error executing the query when the box name is present in 2 tables - BUG: Missing fields on query - ADDED: queries speed improvement - BUG: Incorrect output using searchIn relationship
26/11/2025 - BUG: Incorrect display special characters - ADDED: Added unique_id field on JSON export - ADDED: Show fields ordered according to LC configuration 28/11/2025 - BUG: Error running query when invalid filter on database
18-19/12/2025 - ADDED: Add process associated parameters to query fields (DEV-1630) - BUG: Missing fields on export query (DEV-1630) # v3.14 - 18/12/2025 22/12/2025 - BUG: missing property field_unique_id when no fields selected on a module ************** 2026 ************** 01/05/2026 - BUG: Error exporting excel, csv file from results page - BUG: Remove html to csv export file 12/01/2026 - BUG: JSON custom fields now correctly handle special characters
19-22/01/2026 - BUG: Fixed file download failures caused by oversized requests on the results page - ADDED: Added box name as field 06/02/2026 - BUG: Fixed an error that prevented queries from loading when combining multiple modules containing processes 10/02/2026 - ADDED: new settings page - IMPROVEMENT: Remove inactive module fields from filters (DEV-1745) - IMPROVEMENT: Sort alphabetically module fields from filters (DEV-1745) # v3.15 - 10/02/2026
17/02/2026 - BUG: Fixed an error that prevented queries from loading when modules containing processes and using "searchIn" relationship - BUG: Fixed field validation issue affecting Plants Manager table loading - BUG: Default fields from the processes table using searchIn return the ID value instead of the actual (display) value 05/03/2026 - BUG: Fixed missing IDs for some fields in the Animals module. # v3.151 - 05/03/2026
07-08/04/2026 - BUG: qb_project_id was not in the export - BUG: wrong display qb_project_id 13-15/04/2026 - BUG: handle qb_project_id when process fields selected using "searchIn" relationship - BUG: Handle qb_project_id when no fields are selected - BUG: Search-In queries no longer fail when a module has processes but no process columns are selected (invalid GROUP BY on processes alias). 19/05/2026 - BUG: Security fix (DEV-1978) - BUG: The images were not displayed after security Fix - BUG: Use alternate name on module selection 29/05/2026 - IMPROVEMENT: improve UI design # v3.2 - 29/05/2026 - IMPROVEMENT: Updated Excel export compatibility for newer Excel versions 12/06/2026 - BUG: fix DB_ENGINE of most of QueryBuilder tables at Installation 17/06/2026 - UX: no query selected message on Result tab 29/06/2026 - BUG: fix on saving a past query 06/07/2026 - BUG: fix on install 08/07/2026 - BUG: fix standalone export CSV separator (DEV-2097) 10/07/2026 - IMPROVEMENT: add support of the same Used Contact system as API Token to use specific user/groups permission (DEV-2106) # v3.21 - 10/07/2026 29/07/2026 - BUG: for now you can save a query with a single node without module associated that would trigger a JSON fatal 26/08/2026 - IMPROVEMENT: query results load significantly faster (DEV-2206). The generated query now only builds the columns the query actually uses, instead of every field of every module in it - each unused custom field cost a correlated subquery per row. - IMPROVEMENT: filters are applied against the source tables where possible, so they can use indexes instead of running over the fully built result. - CHANGED: results are no longer read back through a per-query SQL view that was recreated on every run. This removes a schema-modifying statement from every result load, export and graph refresh. Views left by earlier versions are dropped on upgrade. - BUG: two people running the same query at once (or the results page counting and running it at the same time) could overwrite each other's column selection, because the SQL view was shared per query rather than per user. - BUG: when counting the expected results failed, the query was silently run in full a second time to count its rows. The error is now reported instead. - BUG: hidden module fields could go missing for non-admin users, depending on the order in which module data was loaded during the request. - IMPROVEMENT: the results table renders large result sets faster. - IMPROVEMENT: opcode caching is no longer disabled on the module and public API entry points, which were recompiling the addon on every request. - ADDED: opt-in profiler for support - see docs/profiling-slow-queries.md. # v3.22 - 26/08/2026 08/09/2026 - ADDED: add support of LC Dashboard widget; needs LC > 6.34 (DEV-1637) # v3.23 - 08/09/2026 16/09/2026 - BUG: copy-to-clipboard icon on the license page did nothing, because it tried to select a hidden input - BUG: the shared-users avatars of a query never loaded (fatal error in the log on every builder load), because api/get_shared_users.php used $user without instantiating it - BUG: on some installations the builder failed with "1045 Access denied for user ..." as soon as it loaded a query or a filter was added. The view_links and custom_fields_values views were created with MySQL's default SQL SECURITY DEFINER, which stores the creating user and host inside the view; once that account no longer resolves - database restored on another server, or reached from a new application-server IP - every SELECT on them is refused, and the view also disappears from information_schema so it cannot be seen in the database. Both views are now created with SQL SECURITY INVOKER and are recreated on upgrade, which repairs existing installations. - BUG: the cleanup of the obsolete per-query qbn_view_* views listed them through information_schema, which cannot see a view whose definer is broken - exactly the ones to drop. It now uses SHOW FULL TABLES. - CHANGED: a fresh install now creates view_links with the same definition as an upgraded one (hidden custom fields excluded, as of 3.09) # v3.24 - 16/09/2026 22/09/2026 - ADDED: Query Copilot, an AI assistant docked to the Builder tab. It reads the current query, explores the module and field catalogue, and builds the module tree, selected fields, filter groups and filters from a plain-language request. The panel is only offered when the installation has an AI provider enabled and the customer licence allows AI; otherwise the button is shown disabled with an explanation. - ADDED: the Copilot panel can be dragged by its header and resized, so it no longer covers the part of the builder you are working on. The header arrow re-docks it. # v3.3 - 22/09/2026 29/09/2026 - CHANGED: saved query is stored as LONGTEXT, so a query whose generated SQL exceeds the 64 KB TEXT limit can still be saved # v3.31 - 29/09/2026 08/10/2026 - FIXED: an Animals custom field named cage_id, cage, shelf, row or room was replaced by the storage cage value. The real field is now returned as is, and the storage field is offered as storage_cage_id, storage_cage, storage_shelf, storage_row or storage_room only when the name is already taken (DEV-2298) - FIXED: rich text custom fields stored HTML-encoded (e.g. <table>) were shown as raw HTML in the results table; they are now decoded, sanitized and displayed as the table shown in the record (DEV-2299) - FIXED: an empty date (for example the Animals Date of Death) was exported as 0000-00-00 while the results table showed it empty. Empty dates, including 0000-00-00 00:00:00, are now exported as empty cells; valid dates are exported unchanged (DEV-2300) 09/10/2026 - FIXED: a rich text custom field holding a table was exported to CSV/XLSX as raw HTML tags instead of readable text. Any HTML is now converted to plain text for CSV/XLSX, with tables rendered as a simple pipe-delimited block; the JSON export still returns the original markup (DEV-2299) - BUG: on PHP 8.4, exporting to XLSX or CSV could return some PHP warning notices instead of the file. # v3.32 - 12/10/2026 12/10/2026 - IMPROVED: the forms to edit a relation between two modules now show the same helper texts as the form used to create it - IMPROVED: a "normal" relation now takes the direction of the relation into account. A new Link direction option (Both ways, From, To) restricts the connected records to the relations created from the parent record, towards it, or in both ways. Existing queries keep following both ways - FIXED: when the same module was included several times in a query, a Select custom field shown for the second, third... instance displayed the value of the first instance. Each instance now shows its own values - IMPROVED: the module nodes of the builder diagram now show the module icon instead of the first letters of its short name (the short name is still used for a module without icon) - FIXED: when Animals was included several times in a query, showing its crossbreed (parents, cross date) or storage (cage, shelf, row, room) fields for more than one instance made the query fail - NEW: "Path" linking mode, to link the records of two modules through a chain of relations crossing other modules . The user chooses the modules the chain may cross, its maximum length (up to 30 relations; a chain through 10 intermediate records counts 11 relations), the direction of the relations and whether to keep the shortest path or all paths. The results show one row per pair of records with the path (record labels), its length and the number of paths found. Requires MariaDB 10.2.2 or MySQL 8.0.2 (or newer); the mode is not offered otherwise - IMPROVED: Query Copilot uses recursive "Path" links to build complex queries, with detection of paths going back and of long queries - NEW: the builder diagram can be zoomed: buttons to zoom in, zoom out, go back to 100% and fit the whole diagram, and Ctrl (or Cmd) + mouse wheel to zoom around the pointer. The diagram can be moved by dragging its background - NEW: every relation of the builder diagram now shows an icon of its linking mode (normal, module name, autocomplete, custom, searchin, path); hovering it describes the relation (modules, records kept, direction, fields, path settings) - IMPROVED: the add / edit relation form of the builder is reorganized in sections (Modules, Connection, Options, Chain of relations), explains every linking mode, and uses the module names and plain wording instead of SQL terms (INNER / LEFT / RIGHT JOIN become "Only records that are linked", "Allrecords"). It also refuses to be saved with a fields based mode and no field selected 13/10/2026 - NEW: dark mode. The add-on follows the LabCollector Light / Dark / Auto theme on every screen (builder canvas, relation form, filters, results, saved queries, fields, setup, Query Copilot, popups) and switches live without reloading the page. Light mode and exports are unchanged (DEV-2265) - FIXED: the buttons New query, Save, Run, Add filter, Add group, Select all, Deselect all gave no visual feedback when hovered - FIXED: the current page of the result and query tables lost its colour when hovered - FIXED: two empty coloured bands appeared under the header of the result table and of the Choose query popup, and the headers of the result table were no longer coloured by module - FIXED: the Query Copilot panel slid under the LabCollector sidebar on narrow windows, hiding its left side - IMPROVED: the stylesheets and scripts changed by this release are now loaded with a version, so a browser no longer keeps an outdated copy after an update (DEV-2265) 14/10/2026 - FIXED: a module with no saved column selection used to also pull in its "Responsable" (keeper) field as a fallback, which adds a contacts join for every node of that module. On a query built one relation at a time, where the same module can appear as many separate nodes, this could by itself push a query past MariaDB's hard 61-table join limit ("SQLSTATE[HY000]: General error: 1116 Too many tables"), with nothing pointing back to the keeper field as the cause. The fallback no longer adds it; a query only gets it when a column selection explicitly asks for it - IMPROVED: a user who opens a query shared with them and has never chosen their own columns for it now sees the query owner's column selection instead of generic defaults. Saving their own selection, even identical to the owner's, switches them over to it for good; the owner's later changes keep showing for every other shared user who still has none of their own - FIXED: selecting a "select" or "yes/no" custom field used to LEFT JOIN a dedicated lookup for every node of that module, to show its text instead of the stored option id. On a query where the same module is reached several times through recursion, each occurrence added its own join, and a handful of such fields on a few repeated modules was by itself enough to pass MariaDB's hard 61-table join limit. The lookup is no longer a join: the raw option id is selected as-is and resolved to its text afterwards, in one query per module instead of one join per occurrence # v3.33 - 16/10/2026 16/10/2026 - IMPROVED: "Link to", "autocomplete" and "Search into" fields can now be shown in the results and the exports, and used as filters. Linked records appear as "Title (reference)" (lots as "number [chemical] (reference)"); a list too long to display ends with "…". Without access to the linked module, only the reference is shown (DEV-1575) - IMPROVED: saving a query speeds these links up, and tells an administrator when that step has to be done by hand (DEV-1575) - CHANGED: filters on "select" and "yes/no" fields now use the label shown in the grid. A filter written with the internal number must be entered again with the label (DEV-1575) - FIXED: the installation script - FIXED: in languages other than English, an empty result no longer shows an error and each row is counted once - FIXED: a test script no longer stores the database login