Skip to content

Seal Report 10.2

Latest

Choose a tag to compare

@ariacom ariacom released this 08 Oct 14:14

Version 10.2 – Release Notes

Seal Report 10.2 brings a new Map view built with Leaflet, a rewritten joins resolution with join weights and per-model joins, a Reset restrictions button, AI Agents that test the reports they create and propose clickable follow-ups, customizable web site colors, redesigned login dialogs, extension points for repository extensions, and a refresh of the third-party components (ECharts 6.1, Plotly 4.1, TypeScript 7.0).

Map View

  • New Map view built with Leaflet: one point per row of the model (latitude and longitude columns found by name), with color and size columns, a legend and a popup holding the navigation links. Background maps are OpenStreetMap, OpenTopoMap, OpenHikingMap, IGN Plan or custom tiles.
  • The column parameters of the view follow the elements changed by a drill navigation.
  • Maps and gauges in the PDF and Excel results: the picture of the map is inserted in the PDF and Excel results (Excel renderer parameter Insert map picture, true by default), and a new Excel renderer inserts the picture of a gauge.
  • New sample report 05-Maps; the 05-Gauges sample now uses one Widget per gauge.
  • The report viewer of the Report Designer identifies Seal Report in its User-Agent, as tile providers like OpenStreetMap block an anonymous browser displaying a local file.

Joins Resolution

  • Rewritten joins resolution: the joins chosen for a model are the tree of minimal weight linking all its tables (exact search up to 12 tables, approximate search above). This fixes the non-optimal SQL generated with circular joins (extra intermediate tables, result depending on the build timeout).
  • The FROM clause is generated recursively: a sub-tree is always nested in parentheses (A LEFT JOIN (B INNER JOIN C)).
  • Join weight: new Weight property on a join; a join having a higher weight is avoided when another path exists.
  • Joins of the model: a join of the Data Source can be excluded or changed for one model only (join type, bi-directional flag, weight, additional ON clause with common restrictions supported).
  • LINQ models: only one sub-model per SQL source.

Report Execution

  • Reset restrictions button: restores the initial values of the prompted restrictions without executing the report (report header and web menu, Web Report Server and Report Designer viewer).
  • Gauges are never wider than their container (texts and axis line are scaled down); their picture was truncated in a widget.
  • PDF renderer: gauges were never rendered with Charts: Force ScottPlot (the default); each view now takes its own picture.
  • Excel renderer: fixed a NullReferenceException on the page name of a model having Page and Data elements only, and sheets holding only pictures being removed.
  • HTML Print: the Bootstrap 5 header is unpinned and no longer hides the top of the document.
  • Report result tabs: active state fixed with Bootstrap 5, and the execution messages box no longer leaves a page scroll bar.
  • Plotly: chart locale taken from the view culture instead of a hard-coded fr, pie percentage format fixed.
  • Folder output: the result is no longer copied onto itself when the output folder is the temporary directory.

AI Agents

  • Created reports are tested before delivery: the report creation tools execute the saved report with its default criteria (30 s timeout) and return the row count, the first rows and any failure or warning (0 row, timeout, execution warnings, model shown by no view).
  • Clickable follow-up suggestions: the next steps proposed by the agent are rendered as links in the chat panel, sending the message as the next prompt.
  • AI report designer: drop-down lists defined in the report, Map view, modification of an existing report, joins of the model; report filters are created as editable (prompted) criteria by default.
  • AI-created reports are limited to 5000 records by default (opt-out available to the agent).
  • The panel state (open/closed, width) is saved in the user profile instead of the browser, and the last conversation is reselected after a login.
  • The current system prompt is re-applied at each turn: a chat reloaded from Recents or kept in a long-lived session silently kept the prompt it was started with.
  • Anthropic provider ready for Claude Sonnet 5 and the latest Opus models (no temperature/top_p where rejected, explicit error on refusal, default max_tokens raised from 4096 to 16000).
  • Azure / OpenAI providers: explicit error when the reply is blocked by the content filter or truncated (instead of an empty reply), naming the filtered categories and their severity.
  • Smaller fixes: forward slashes accepted in report paths, a folder given as report path is rejected with a clear message, row count on any database type, top-N raw SQL keeps its ORDER BY, no Execute button for a report that does not exist, chat CSV export separator follows the server CSV configuration.

Web Report Server

  • Customizable site colors: wwwroot\css\site-colors.css holds plain CSS rules for the banner, the active tab, the folder tree selection, the primary buttons and the table pagination. An existing copy is preserved by the setup and by the Server Manager publication. site-colors-gen.ps1 generates the whole file from one primary color.
  • Redesigned login dialogs: standard card layout for login, two-factor, password reset and password change (real forms with autocomplete, show/hide password, inline errors, signed-out message); Back to login links fixed.
  • Message bubble close button restyled; Refresh icon stays centered while spinning; Empty recycle bin button layout and AI panel scroll bar fixed.

Security

  • Dynamic enumerated lists: the {EnumFilter} typed by the user is now escaped in the SQL and in the script of the list (SQL and script injection).
  • Failed login no longer reveals the folders and reports of the previous session.
  • Translate and LogMessage are no longer routable MVC actions of the Web Report Server (CodeQL finding).
  • File upload: path traversal fixed in the Web Report Server upload action (GHSA-wgj2-p45w-v5mr). A user with the upload right on a folder could write files outside this folder. Upgrade recommended for all versions up to 10.1.
  • New option 'Hide login user name and password' in the Security configuration, replacing HideLoginPassword of appsettings.json (still supported for compatibility).
  • JWT security provider: the Bearer token is read from the request headers.

Report Designer and Server Manager

  • Script editor – Check Syntax (F8): compilation warnings are reported when the syntax is valid (highlighted in orange, message on click, count in the status bar), and the error line is correct (off-by-one fixed, #line pragma mapping).
  • Dynamics assemblies – Check Syntax uses the same Roslyn compilation as the one done at startup (e.g. a missing using directive is now reported, errors located at their line and column); the syntax is also checked when the editor is validated.
  • 'Reset to default value' menu added to all the collection editors and to the Security, Server Configuration and AI Configuration editors.
  • SQL Editor: the description is kept after Check SQL; description added for the clause of a join.
  • Startup warning dialogs are no longer hidden by the splash screen.
  • Synchronize Report Schedules: the recycle bins of the personal folders are skipped, so a deleted report does not get its schedules back.

Library and Extensions

  • Repository extensions: assemblies of Assemblies\Extensions\Net (Web Report Server, Scheduler) or Assemblies\Extensions\Win (Windows applications) are loaded at the initialization, with their private dependencies resolved in the same sub-folder. They are loaded from a shadow copy, so the installed files stay unlocked.
  • NavigationLink.ScriptHandler and Report.GetReportNavigationScriptHandlerLink: a view template or an extension can register a server handler for a Report Script link.
  • ResultTable.RowKeyColumn and InvalidateLoadCache for the server pagination.
  • Repository.Create(path) loads a repository from a given folder without assigning the default instance; CreateFast keeps the source repository path, file paths and modification dates (#185).
  • New HeadlessBrowser class shared by the PDF, HTML to PDF and Excel renderers.
  • TST020 Reports integrity also compiles the custom templates of the views (view, partial and renderer templates).
  • Linux: forced assembly loads at startup are isolated (an OleDb exception aborted the following ones), and the repository translations load is thread-safe.

Third-Party Components

  • Charts: ECharts 6.1 with its new default look, Plotly 4.1.1 (send-to-cloud button disabled, independent secondary Y axis ticks).
  • d3 v3 removed: replaced by the d3-format and d3-time-format modules and built-in palettes.
  • Web assets: Bootstrap 5.3.8, DataTables 2.3.8, moment 2.31.0; scripts compiled with TypeScript 7.0.
  • NuGet: SqlClient 7.1, MongoDB.Driver 3.12, Microsoft Graph 6.7, QuestPDF 2026.9.1, MailKit 4.18.1, PuppeteerSharp 25.12, FluentFTP 55.0, Twilio 8.0, WebView2.
  • Third-party notices updated (Leaflet, SqlClient SNI runtime 7.1.0, BouncyCastle.Cryptography).

Upgrade Notes

  • Joins: the generated SQL can change for models whose tables can be linked by several join paths; review these reports after the upgrade, and use the join weight or the joins of the model to force a path. ReportModel.BuildTimeout and JoinHashcode are removed; a former list of joins to use is converted when the joins of the model are edited.
  • Charts: ECharts 6 changes the default look of the charts (title, legend and grid spacing). Custom view templates calling the d3 v3 API must be adapted.
  • Site colors: site-colors.css moves from Repository\Views\css to wwwroot\css and is loaded through the Web CSS Files server configuration.
  • Linux: the Ubuntu tutorial lists the libraries required by Chromium (PDF conversion, map and gauge pictures).
  • A hard refresh of the browser is recommended after the upgrade.

Full Changelog: v10.1...v10.2