Changes for version 0.003.0 - 2026-08-26

  • Enhancements
    • Platform and language are now detected per-request rather than read statically from config. CGI::Info inspects the User-Agent header to select 'mobile', 'tablet', or 'web'; CGI::Lingua selects the best ISO 639-1 language from the Accept-Language header against the set of languages that have a template directory under templates/<platform>/. Config values (platform, language) remain as fallbacks for when a module is unavailable, the header is absent, or no template directory exists for the detected value.
    • Add "Refresh" button (↻) to the toolbar next to Export. Pressing it reloads the current view from disk, picking up any changes to the source file(s) since the page was last loaded. All URL state (joins, filters, dedup) is preserved because location.reload() reuses the current URL.
    • Add "Hide duplicates / Show duplicates" toggle button to the toolbar. When active (filled blue), duplicate rows are removed from the displayed table and from any CSV or SQLite export. The button text reflects the current state: "Hide duplicates" when duplicates are visible, "Show duplicates" when they are suppressed. State is carried in the ?d=1 query parameter so the URL remains shareable and bookmarkable.
    • Added "Clear upload cache" button (POST /uploads/clear). Mojo::File->list() requires {dir => 1} to include subdirectories; without it the upload subdirs are silently skipped and the action always reports 0 files freed.
  • Bug Fixes
    • Files opened via the "recently saved" section are no longer also added to the "recently opened" list. The saved-section card href now carries a transient ?from=saved marker; the dashboard JS reads and removes it via history.replaceState (keeping the address bar clean) and skips the bi:recent write when the marker is present.
    • Recently saved files on the home page now open with a single click; double-click was required before, making the feature effectively inaccessible on touch devices and to users who did not discover the interaction. Missing files (greyed-out cards) still block navigation.

Documentation

Modules

Web-based Business Intelligence viewer for flat data files
Home picker, filesystem browser, table viewer, left-join engine, result filter, export, and file upload
Table-agnostic adapter around Database::Abstraction