General changes
Library updates
We upgraded most of our libraries to their latest version and adressed all known vulnerabilities, (except those for which we are blocked by a third-party library that cannot be upgraded).
These library updates also bring improved performance and often a reduction in bundle size.
These updates introduce various breaking changes and may require additional migrations in customer-maintained source code (particularly Angular, Bootstrap, RxJS and Moment).
- Migration to Angular 14 (from 12)
- Migration to RxJs 7.5 (from 6.6)
- Migration to Bootstrap 5.2 (from 5.1)
- Migration to D3 v7 (from v5) and optimized import to reduce bundle size
- Replaced the deprecated moment library and jstz to date-fns and date-fns-tz across all components and services processing dates and datetimes.
- Updated the Intl, FormatJS, jssha, lodash libraries (and others) to latest versions
- Updated the ngx-charts, vis-network and vis-timeline libraries (used in the analytics library) to the latest versions
- Replaced the (poorly-maintained) ngx-vis and angular-fusioncharts libraries with in-house wrappers to improve performance and fix bugs
- Replaced the deprecated @agm library with @angular/google-maps
Compatibility with Safari
We adressed different issues specific to Safari:
- Broken timeline Zooming
- Timeline Events not displayed
- Dates displayed as "Invalid" (Sinequa's standard format was not properly parsed by
new Date()
)
Project structure
We reorganized our tsconfig files across the workspace, along with other configuration files (ng-package, secondary-entry-point-config, tslint/eslint, karma, etc.)
Core library
- Integration in Teams: We added a
TeamsInitializer
(APP_INITIALIZER
) in the application startup. Its role is to ensure that when the SBA is loaded within a Microsoft Teams tab, the user is automatically authenticated, without the need for additional authentication and/or redirection to an identity provider. - Login: Fixed a bug where the browser would attempt multiple redirects on 401 errors, causing errors with specific Identity Providers.
- Fixed a syntax error thrown by the fielded search parser when a "-" symbol was in the query.
- Audit (breaking change): we harmonized our standard audit events across components and applications to be consistent with the events expected by the latest Usage Analytics application.
Components
- New Sinequa Theme packaged under @sinequa/components/theme. The theme is a set of modular stylesheets that can be imported indidividually or as a whole in an application's global stylesheet. The theme modifies the appearance of standard Bootstrap components and specific Sinequa components. See https://sinequa.github.io/sba-angular/modules/components/theme.html
- We refactored the components in the @sinequa/components/machine-learning library, following new Neural Search features and modified web services (breaking change). These components (showing answers, top passages, and matching passages per document) are all integrated by default in Vanilla Search. See https://sinequa.github.io/sba-angular/modules/components/machine-learning.html
- Preview library:
- Simplification of the sq-facet-preview-2 component (breaking change): This component now only manages the preview itself, and does not display the document metadata or document title. (In Vanilla Search the metadata and title are now displayed via the facet-card itself)
- Fixed navigation issues (eg. 2 clicks required to go back to the search view)
- Fixed SVG highlights in documents generated by certain converters
- Facet library:
- Facet card: Various additions to the sq-facet-card API (See https://sinequa.github.io/sba-angular/modules/components/facet.html). These new features are used in the new "Mini-Preview" of Vanilla Search and should be used more generally for displaying complex components with multiple views, actions and options.
- Natively support multiple views. These views are injected within
ng-template
elements decorated with a directivesqFacetView
. The facet-card displays a list of actions to toggle between the views, in the bottom-left corner of the facet card header. - Support primary actions (shown in the header top-right corner) and secondary actions (shown in the header bottom-right corner).
- The 3 action groups (views, primary, secondary) can be completely and independently customized (size, styles, positioning, etc.)
- The custom
ng-template
s (for the header, sub-header, footer and settings) that a facet component could already declare in its own template, can now be injected into the sq-facet-card directly (thus removing complexity from child components and opening more possibilities for the parent components).
- Natively support multiple views. These views are injected within
- Facet-list and facet-tree: Refreshed look & feel and checkboxes to make multiple selection more intuitive. We also added the option to display the search bar permanently.
- Facet-range: The min/max inputs now accept given number and Date inputs
- Facet card: Various additions to the sq-facet-card API (See https://sinequa.github.io/sba-angular/modules/components/facet.html). These new features are used in the new "Mini-Preview" of Vanilla Search and should be used more generally for displaying complex components with multiple views, actions and options.
- Metadata library: We removed the separator in "inline" mode (as opposed to "tabular").
- Result source component: We changed the treepath separator to a prettier one (❯) and made it easier to customize the component styles.
- Result counter: Prevent text wrapping
- User menu: We now show the user's full name if available, but it is only visible as a tooltip and within the dropdown menu's header. It is possible to display the user name as before, by passing
[showText]="true"
to the component. - Modal component: Modals now respect the height/width/fullscreen settings available in the modal service.
- New sq-scope component (packaged in @sinequa/components/search) to toggle between "search scopes" defined in the query web service. The component is integrated in the default search-form component packaged in Vanilla-Search (but it is visible only if scopes are actually configured).
SearchService
: We made this service (along with theQueryWebService
andBreadcrumbs
) generic with respect to theResults
type, so that it can be easily customized for a custom index schema. (eg. injectSearchService<MyResults>
in your component, whereMyResults
includes all your custom metadata).- Sponsored links: handle link URL when it contains %PREVIEW_URL%
- Fixed broken ClickOutside directive
Analytics
- New multi-level pie chart component to display tree-typed metadata. See https://sinequa.github.io/sba-angular/modules/analytics/fusioncharts.html
- Improved the API of the Tooltip component used in the analytics views (heatmap, timeline, money charts...), resulting in simplified and consistent usage across these components. The tooltip is now in its own library: @sinequa/analytics/tooltip
- Made the timeline tooltip scroll vertically, when too many values.
- Fixed the heatmap component in cooccurrence mode
- Fixed the ngx-chart legend in dark mode
Vanilla Search
- The new Sinequa Theme is used by default in Vanilla-Search.
- The "mini-preview" (displayed along the results) uses the simplified version of the facet-preview component and improved facet-card API, supporting multiple views (see above).
- When Neural Search is active, the mini-preview displays two views: Preview and Passages (from the machine learning package). This list of views can be easily customized by adding/removing
ng-template
s in the facet card. - The metadata component is displayed with
[tabular]="false"
by default, to save space in the mini preview header. - A placeholder card is displayed on the right side when no preview is opened, to encourage a click on a document from the user.
- Refactored the application navbar to match the grid layout of the main app content.
- Fixed scrolling to bottom when returning to the home page