Skip to main content

What's New: Audit Labels, Statistics Dashboard, and More

· 4 min read
Ed Controls Development Team
Ed Controls Platform Development

A lot has happened since our last update! Here's an overview of the new features, improvements, and fixes we've shipped over the past months.

New Features

Audit Tags (Labels) in PowerBI

You can now filter and group audits by their labels in PowerBI. We've added a new audits_tags table that works just like the existing tickets_tags table - each audit's labels are stored as separate rows, making it easy to build reports around audit categorization.

-- Get audits with their labels
SELECT a.id, a.name, a.status, GROUP_CONCAT(at.tag SEPARATOR ', ') AS tags
FROM audits a
LEFT JOIN audits_tags at ON a.id = at.auditid
WHERE a.projectid = 'your_project_id'
GROUP BY a.id;
-- Filter audits by a specific label
SELECT a.id, a.name, a.status, a.dueDate
FROM audits a
JOIN audits_tags at ON a.id = at.auditid
WHERE at.tag = 'QC Inspection'
AND a.archived IS NULL;

In PowerBI, create a relationship from audits.id to audits_tags.auditid and you're good to go.

Dataset Statistics Dashboard

The dataset details screen now shows a statistics overview with counts for projects, audits, tickets, users, and contracts. Activity bars show updates from the last 24 hours and last 7 days, giving you a quick health check of each dataset.

Full & Incremental Sync Controls

We've split the sync functionality into two clear modes:

  • Incremental Sync: Fetches only data that changed since the last sync - fast and efficient for regular updates.
  • Full Sync: Re-downloads all data from scratch - useful when you need a complete refresh.

Both the UI and API now support these modes separately, and timestamps for each sync type are tracked and displayed.

Reindex Progress Tracking

Long-running reindex operations no longer leave you guessing. A real-time progress bar shows which data type is being processed, with phase information and a last-updated timestamp. This also fixes the timeout errors that could occur during large reindex operations.

Reindex History & Logs

Every reindex operation is now logged with timestamps, status, and any warnings or errors. The history is visible on the dataset details page with color-coded entries, and logs are automatically cleaned up after 14 days.

Test Connection Button

A "Test Connection" button on the dataset details page lets you verify that the MariaDB database is accessible - complete with a confetti animation when it succeeds.

Glacier Change Detection

Projects that have been archived for over 6 months are moved to "glacier" storage in Ed Controls and disappear from Elasticsearch. We now automatically detect when these projects become available again (de-glaciered) and trigger a full reindex to bring the data back. A daily check keeps datasets in sync with project availability.

Contract Cleanup

A new automated job checks all contracts in datasets against CouchDB and removes references to contracts that have been deleted. This prevents 404 errors and keeps datasets accurate. The job supports dry-run mode for safe testing.

Frontend Improvements

Redesigned UI with EdControls Branding

The entire frontend has been redesigned with the EdControls brand identity:

  • Dark slate blue sidebar with the EdControls logo
  • Stats cards and card-based layouts on the dashboard
  • Status badges and improved pagination
  • DM Sans font and smooth animations

Redesigned Documentation Site

The documentation site also received a full makeover with the EdControls design system, including a new homepage with a SQL code preview terminal, feature cards, and quick links.

Quality of Life Improvements

  • Relative timestamps ("5 min ago", "2h ago", "Yesterday") for sync dates
  • Removed placeholder icons that had no functionality
  • Fixed navigation links, dataset save/refresh behavior, and contract removal updates

Reliability & Bug Fixes

  • Fixed incremental reindex dropping databases: A critical bug where incremental reindexes could wipe an entire database has been resolved. Only full reindexes or first-time setups will drop and recreate databases now.
  • Fixed stale database connections: MariaDB connections that went idle for 8+ hours now automatically reconnect instead of failing.
  • Prevented duplicate roles: Unique constraints on audit_roles, tickets_roles, and project_participants prevent duplicate entries from source data.
  • Stale job recovery: Interrupted reindex jobs are now automatically detected on server restart and can be retried by the scheduled update job.
  • SQL identifier escaping: Database names and usernames with special characters (like dots) are now properly escaped.
  • Empty dataset handling: Datasets with no projects or no users are now handled gracefully instead of failing.

Technical Updates

  • Next.js upgraded to 16.1.6 and Clerk authentication to 6.36.10
  • Docusaurus upgraded to 3.9.2 with Node.js 20 support
  • OAuth authentication added for secure CouchDB API access
  • Improved CLI tooling with --full and --type flags for reindex.py

All features are available now. For questions or support, contact us at support@edcontrols.com