@sinequa/atomic-angular 2.3.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,37 +1,45 @@
1
1
  # @sinequa/atomic-angular
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/@sinequa/atomic-angular.svg)](https://npm.sinequa.com/@sinequa/atomic-angular)
3
+ [![npm version](https://img.shields.io/npm/v/@sinequa/atomic-angular.svg)](https://www.npmjs.com/package/@sinequa/atomic-angular)
4
4
  [![Angular](https://img.shields.io/badge/Angular-v22-red.svg)](https://angular.dev)
5
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-6.0-blue.svg)](https://www.typescriptlang.org/)
6
6
 
7
- > A comprehensive Angular component library and design system for building modern Sinequa search applications.
7
+ > Angular components, features and services for building modern Sinequa search applications.
8
8
 
9
9
  ## Overview
10
10
 
11
- **@sinequa/atomic-angular** provides a complete set of UI components, features, and utilities for building enterprise-grade search applications powered by Sinequa. Built with Angular 20+ and modern web standards, it offers a consistent, accessible, and themeable framework with TypeScript-first development experience.
11
+ **@sinequa/atomic-angular** provides the business layer of a Sinequa search application: sign-in
12
+ flows, the filter system, search results, document preview, alerts, bookmarks, saved searches and
13
+ more. Built with Angular 22, standalone components and signals, it is accessible, themeable and
14
+ tree-shakeable. UI primitives come from [`@sinequa/galactik`](https://www.npmjs.com/package/@sinequa/galactik)
15
+ and backend access from [`@sinequa/atomic`](https://www.npmjs.com/package/@sinequa/atomic).
12
16
 
13
17
  ## Installation
14
18
 
15
19
  ```bash
16
- npm install @sinequa/atomic-angular
20
+ npm install @sinequa/atomic-angular @sinequa/galactik @sinequa/atomic
17
21
  ```
18
22
 
19
- ### Peer Dependencies
23
+ ### Peer dependencies
20
24
 
21
25
  ```json
22
26
  {
23
27
  "@angular/core": "^22.0.0",
24
- "@angular/aria": "^22.0.0",
25
- "@sinequa/galactik": "^2.0.0-next.1",
26
- "@sinequa/atomic": ">=2.3.0"
28
+ "@angular/aria": "^22.2.0",
29
+ "@sinequa/galactik": "^2.0.0",
30
+ "@sinequa/atomic": ">=2.10.0",
31
+ "vanilla-calendar-pro": "^3.4.0"
27
32
  }
28
33
  ```
29
34
 
30
- > ℹ️ The peer dependency above targets the **2.x** line (Angular 22, pre-release). For the
31
- > Angular 20 lines (1.x / 1.0.x), see the compatibility table below.
35
+ `vanilla-calendar-pro` powers the date facet's range picker (import
36
+ `@sinequa/atomic-angular/styles/calendar.css` once in your global stylesheet). Some entry points need
37
+ extra packages, all optional: `chart.js` (`/charts`), `chartjs-chart-matrix` (`/charts/heatmap`),
38
+ `markdown-it` and `@angular/elements` (`/workspace-elements`). Install them only if you use the
39
+ matching feature.
32
40
 
33
- > See [`ARCHITECTURE.md`](../../ARCHITECTURE.md) for how this library relates to
34
- > `@sinequa/galactik` (and the deprecated `@sinequa/ui`, which it no longer depends on).
41
+ > ℹ️ These peer dependencies target the **2.x** line (Angular 22). For the Angular 20 line (1.x /
42
+ > 1.0.x), see the compatibility table below.
35
43
 
36
44
  ## Versioning & Compatibility
37
45
 
@@ -42,188 +50,340 @@ matches the Angular version embedded in your product.
42
50
  | Library line | Angular | Product release | Status | Install |
43
51
  | ------------ | ------- | ---------------- | ------------------------------------------ | ------------------------------------ |
44
52
  | **1.0.x** | 20 | 11.13.0 | 🩹 Maintenance — critical & bug fixes only | `npm i @sinequa/atomic-angular@~1.0` |
45
- | **1.x** | 20 | 11.14.0 | ✅ Active — fixes + new features | `npm i @sinequa/atomic-angular@^1` |
46
- | **2.x** | 22 | _future release_ | 🚧 Upcoming — pre-release | `npm i @sinequa/atomic-angular@next` |
53
+ | **1.x** | 20 | 11.14.0 | 🩹 Maintenance — fixes (`lts` dist-tag) | `npm i @sinequa/atomic-angular@lts` |
54
+ | **2.x** | 22 | _future release_ | ✅ Current (`latest` dist-tag) | `npm i @sinequa/atomic-angular` |
47
55
 
48
56
  **How the lines work**
49
57
 
50
58
  - **Each line is an independent version range.** A `1.0.x` patch and a `1.x` minor are
51
59
  unrelated number spaces — upgrading within a line never crosses an Angular major.
52
60
  - **`~1.0`** keeps you on patch releases of the 11.13 line (no minor jumps).
53
- **`^1`** follows the active 1.x line (patches + minors, still Angular 20).
54
- **`@next` / `^2`** is the Angular 22 line, for the upcoming product release.
61
+ **`^1`** follows the 1.x line (still Angular 20).
62
+ **`lts`** follows the 1.x line. **`latest` / `^2`** is the Angular 22 line, for the upcoming product release.
55
63
  - A fix relevant to several lines is applied to each supported line independently, so you
56
64
  receive it on whichever line you track — without being forced onto a new Angular major.
57
65
 
58
66
  ## Features
59
67
 
60
- ### 🔐 Authentication & Authorization
68
+ ### Authentication & authorization
61
69
 
62
- - Complete authentication flows with SSO support
63
- - Password management (expiry, forgotten, change)
64
- - Route guards and access control
70
+ - Sign-in, forgot-password, change-password and signed-out views behind a single `AuthPageComponent`
71
+ - SSO support and a route guard (`AuthGuard()`)
72
+ - Session-expiry warning (`provideSessionExpiry()`)
65
73
  - Multi-language support (EN, FR, DE)
66
74
 
67
- ### 🔍 Advanced Search
75
+ ### Search
68
76
 
69
- - Powerful filter system with aggregations
70
- - "Did You Mean" suggestions and autocomplete
71
- - Recent and saved searches
72
- - Bookmark and collection management
77
+ - Filter system: aggregation list, tree and date facets, filters bar, applied filters, aside filters
78
+ - "Did you mean" suggestions and autocomplete
79
+ - Advanced search and advanced filters
80
+ - Recent and saved searches, bookmarks, collections, labels, alerts
73
81
  - Document preview and navigation
74
- - Export functionality
82
+ - Export, feedback, user settings and profile
75
83
 
76
- ### 🛠️ Developer Experience
84
+ ### Data visualisation and workspaces
77
85
 
78
- - **TypeScript-first** with full type safety
79
- - **Standalone components** (no NgModules required)
80
- - **Signal-based reactivity** for better performance
81
- - **Modern syntax**: @if, @for, @switch control flow
82
- - **Tree-shakeable** for optimal bundle size
86
+ - Heatmap, tag cloud, word cloud, aggregation charts and timeline (`/charts`)
87
+ - Document workspaces and their custom elements (`/document-workspaces`, `/workspace-elements`)
83
88
 
84
- ## Package Structure
89
+ ### Developer experience
85
90
 
86
- ### @sinequa/atomic-angular
91
+ - **TypeScript-first**, with full type safety
92
+ - **Standalone components** (no NgModules)
93
+ - **Signal-based** reactivity and **Signal Forms**
94
+ - **Injectable client**: serve several Sinequa backends from one application
95
+ (`provideAtomicClient()`, `provideAtomicScope()`)
96
+ - **Keyboard shortcut engine** (`KeyboardShortcutsService`, `[keyShortcut]`)
97
+ - **Tree-shakeable** secondary entry points
87
98
 
88
- ```bash
89
- components/ # Reusable UI components
90
- ├── backdrop/
91
- ├── document-locator/
92
- ├── navbar-tabs/
93
- ├── pagination/
94
- └── ...
95
-
96
- features/ # Feature modules
97
- ├── auth/ # Authentication flows
98
- ├── filters/ # Filter system
99
- ├── bookmarks/ # Bookmark management
100
- ├── collections/
101
- └── ...
102
-
103
- services/ # Business logic services
104
- stores/ # State management
105
- guards/ # Route guards
106
- pipes/ # Custom pipes
107
- utils/ # Utility functions
108
- ```
109
-
110
- ## Available Components
99
+ ## Entry points
111
100
 
112
- ### Core Components
101
+ | Entry point | Content |
102
+ | --------------------------------------------- | ----------------------------------------------------- |
103
+ | `@sinequa/atomic-angular` | components, features, services, stores, guards, pipes |
104
+ | `@sinequa/atomic-angular/charts` | `<AggregationChart>`, `<AggregationTimeline>` |
105
+ | `@sinequa/atomic-angular/charts/heatmap` | canvas `<AggregationHeatmap>` |
106
+ | `@sinequa/atomic-angular/document-workspaces` | document workspaces components, store and services |
107
+ | `@sinequa/atomic-angular/workspace-elements` | the workspaces view as custom elements |
113
108
 
114
- - `SearchInputComponent` - Advanced search input with autocomplete
115
- - `FiltersComponent` - Dynamic filter system
116
- - `PaginationComponent` - Result pagination
117
- - `DocumentLocatorComponent` - Document navigation
118
- - `PreviewComponent` - Document preview
119
- - `BackdropComponent` - Backdrop overlay
120
- - `NavbarTabsComponent` - Navigation tabs
121
- - `NoResultComponent` - No results display
122
- - `SortSelectorComponent` - Sort options selector
123
-
124
- ### Authentication
109
+ ## Main building blocks
125
110
 
126
- - `AuthPageComponent` - Authentication page, switches between the views below
127
- - `SignInComponent` - User sign-in
128
- - `ChangePasswordComponent` - Password change
129
- - `ForgotPasswordComponent` - Password recovery
130
- - `SignedOutComponent` - Post-logout confirmation
131
- - `AuthGuard` - Route protection
132
- - `PasswordExpiryGuard` - Password expiry detection
111
+ ### Components
133
112
 
134
- ### Features
113
+ - `NavbarTabsComponent` — navigation tabs
114
+ - `SortSelectorComponent` — sort options selector
115
+ - `NoResultComponent` — no-results display
116
+ - `DocumentLocatorComponent` — document navigation
117
+ - `BackdropComponent` — backdrop overlay
118
+ - `PreviewContentComponent`, `PreviewHeaderComponent`, `PreviewActionsComponent` — document preview
119
+ - `FiltersBarComponent`, `AsideFiltersComponent`, `AppliedFiltersComponent`, `AggregationComponent`
120
+ — filters
135
121
 
136
- - Alerts management
137
- - Bookmarks system
138
- - Collections management
139
- - Advanced search
140
- - Export functionality
141
- - Feedback system
142
- - Labels management
143
- - Recent searches
144
- - Saved searches
122
+ ### Authentication
145
123
 
146
- ## API Documentation
124
+ - `AuthPageComponent` — switches between the views below; route `/login` and `/logout` to it
125
+ - `SignInComponent`, `ChangePasswordComponent`, `ForgotPasswordComponent`, `SignedOutComponent`
126
+ - `AuthGuard()` — route protection
147
127
 
148
- ### Services
128
+ ### Services and stores
149
129
 
150
130
  ```typescript
151
- // ApplicationService - Core application logic
152
- import { ApplicationService } from '@sinequa/atomic-angular';
153
-
154
- // AggregationsService - Filter management
155
- import { AggregationsService } from '@sinequa/atomic-angular';
156
-
157
- // AuthService - Authentication
158
- import { AuthService } from '@sinequa/atomic-angular';
131
+ import {
132
+ AggregationsService,
133
+ ApplicationService,
134
+ QueryService,
135
+ } from "@sinequa/atomic-angular";
159
136
  ```
160
137
 
161
- ### Guards
138
+ ### Route guard
162
139
 
163
140
  ```typescript
164
- import { AuthGuard, PasswordExpiryGuard } from '@sinequa/atomic-angular';
141
+ import { AuthGuard } from "@sinequa/atomic-angular";
165
142
 
166
143
  const routes: Routes = [
167
- {
168
- path: 'search',
169
- canActivate: [AuthGuard],
170
- component: SearchComponent
171
- },
172
- {
173
- path: 'profile',
174
- canActivate: [AuthGuard, PasswordExpiryGuard],
175
- component: ProfileComponent
176
- }
144
+ { path: "search", canActivate: [AuthGuard()], component: SearchComponent },
145
+ { path: "login", component: AuthPageComponent },
146
+ { path: "logout", component: AuthPageComponent },
177
147
  ];
178
148
  ```
179
149
 
180
- ## Changelog
150
+ ## Releases
151
+
152
+ A summary of the changes published on each version line. Versioning follows [SemVer](https://semver.org/): a **major** version may break the API, a **minor** version
153
+ adds backward-compatible features, a **patch** fixes bugs.
154
+
155
+ ### 2.x line — from 2.0.0 (Angular 22, dist-tag `latest`)
156
+
157
+ **2.4.0**
158
+
159
+ - Date facet: the selected radio stays checked when the options change (for example once the
160
+ aggregation is reloaded with the applied filter); a committed two-bound preset (`gte` / `lt`) is
161
+ no longer read back as a custom range; `lt` is accepted as well as `lte` for the upper bound.
162
+ - Date facet: support for masked dates (`YYYY`, `YYYY-MM`), labelled in the active language and sent
163
+ with the matching `aggregation_overrides` (new `aggregationOverridesChange` output in controlled
164
+ mode). Requires `@sinequa/atomic` 2.10.0.
165
+
166
+ **2.3.0**
167
+
168
+ - New `Settings` dialog (`Settings.call({ panel })`): a side-navigation shell with three panels —
169
+ Account (profile, reset / override user), Appearance (theme and language) and Keyboard shortcuts.
170
+ - ⚠️ The language picker leaves `UserProfileFormComponent` (`currentLanguage`, `changeLanguage()`
171
+ and the `userProfile.language` key are removed) and the standalone `UserProfile` dialog is
172
+ removed: use `Settings.call({ panel: "account" })`.
173
+
174
+ **2.2.0**
175
+
176
+ - Move to `@sinequa/atomic` 2.9.0, which renames the document-upload API to _Agent Workspace_: the
177
+ peer dependency becomes `@sinequa/atomic >=2.9.0` and the backend must expose
178
+ `api/v2/agent-workspace/*`.
179
+ - ⚠️ The `ContainerRole` type exported by `@sinequa/atomic-angular/elements` is renamed
180
+ `WorkspaceRole`, and the mappers `mapContainerDocumentToWorkspaceDocument` /
181
+ `mapContainerToWorkspace` become `mapWireDocumentToWorkspaceDocument` /
182
+ `mapWireWorkspaceToWorkspace`.
183
+
184
+ **2.1.0**
185
+
186
+ - New optional `provideSessionExpiry()`: warns the user shortly before their session expires, then
187
+ notifies them once it has, with a "Sign in again" action. Texts provided in en/fr/de. Requires
188
+ `@sinequa/atomic` 2.8.0 or later.
189
+ - _Document workspaces_: the workspace mention menu (`<workspace-mention>`) can be assembled from
190
+ pieces (search, "select all", "new workspace", tabs), in controlled mode or ready-made; new
191
+ attributes on `<lexiq-workspace-mention-list>`.
192
+
193
+ **2.0.0** — major version, Angular 22
194
+
195
+ - ⚠️ **Breaking changes**
196
+ - Angular 22 and `@angular/aria` `^22.2.0` are required.
197
+ - The native `@sinequa/atomic-angular/elements` entry point is no longer published: use
198
+ `@sinequa/atomic-angular/workspace-elements`.
199
+ - The _drawer_ family (`DrawerComponent`, `DrawerService`, `DrawerStackService`,
200
+ `SelectArticleOnClickDirective`, `SelectionHistoryService`…) and the `"stack"` value of
201
+ `SelectionStrategy` are removed: use `[selectArticle]` and
202
+ `SelectionService.setCurrentArticle()`.
203
+ - The date facet's custom-range dialog follows the `createCallable` pattern:
204
+ `await AggregationDateRange.call({ min, max, lang })` replaces
205
+ `<aggregation-date-range-dialog>`. It is now built on `vanilla-calendar-pro` (peer dependency
206
+ `^3.4.0`, stylesheet `@sinequa/atomic-angular/styles/calendar.css` to import).
207
+ - `AlertDialog` is rebuilt on Signal Forms (the `Alert.Days` bitfield becomes seven booleans); its
208
+ public API changes.
209
+ - `@sinequa/galactik` icons are re-exported from the main barrel (`@sinequa/galactik/icons` no
210
+ longer exists).
211
+ - **New**
212
+ - Data visualisation: `<Heatmap>`, `<TagCloud>`, `<WordCloud>` and, from
213
+ `@sinequa/atomic-angular/charts`, `<AggregationChart>` and `<AggregationTimeline>` (`chart.js`
214
+ as an optional peer dependency); canvas `<AggregationHeatmap>` from
215
+ `@sinequa/atomic-angular/charts/heatmap`.
216
+ - Document workspaces: `@sinequa/atomic-angular/document-workspaces` and `workspace-elements`
217
+ entry points (custom elements `<lexiq-workspaces>`, `<lexiq-workspace-picker>`,
218
+ `<lexiq-workspace-mention-list>`, ready-to-use stylesheet).
219
+ - Keyboard shortcut engine: `KeyboardShortcutsService`, the `[keyShortcut]` directive and a help
220
+ dialog, independent of the keyboard layout.
221
+ - `AdvancedSearchTabs`: an accessible tabbed alternative to `AdvancedSearch`.
222
+ - Injectable client: `ATOMIC_CLIENT`, `provideAtomicClient()`, `provideAtomicScope()` — serve
223
+ several Sinequa backends from one application. Services and stores go through this client;
224
+ `provideAtomicNotifications()` replaces `toastInterceptorFn`. The five HTTP interceptors stay
225
+ functional but are **deprecated**.
226
+ - `ui-language` follows the language the user picked, on every request.
227
+ - Facets: `itemDescription` input, `hideWhenEmpty` (`<Aggregation>`, `<aside-filters>`, `<more>`,
228
+ `<more-button>`), `collapsible` / `collapsed` on `<aside-filters>`.
229
+ - `ConverterSelectComponent`, `FaIconComponent`, `focusWhenReady()`, `tabIndex` on
230
+ `bookmark-button`.
231
+ - Accessibility: keyboard-usable filter bar and lists, named lists, named date-filter radio
232
+ group, translated labels (fr/de), `ArticleEntitiesTab` as a real accessible tree
233
+ (`@angular/aria/tree`), keyboard navigation across facet headers.
234
+ - Authentication views rebuilt as real forms (password-manager support, per-field validation).
235
+ - `SearchBar` / `SearchInput` no longer claim a global shortcut by default (`hotkey` is
236
+ undefined).
237
+
238
+ ### 1.x line — from 1.1.x to 1.18.0 (Angular 20, dist-tag `lts`)
239
+
240
+ Last published version: **`@sinequa/atomic-angular` 1.18.0**. The 1.x line follows bug fixes and
241
+ backward-compatible improvements; major new features are developed on 2.x.
242
+
243
+ **1.18.0**
244
+
245
+ - Date facet: the selected radio stays checked when the options change, a committed two-bound
246
+ preset (`gte` / `lt`) is recognised, `lt` is accepted as well as `lte`. Blank labels for masked
247
+ date values are fixed in `@sinequa/atomic`.
248
+ - ⚠️ The _workspace documents_ / _upload documents_ components
249
+ (`@sinequa/atomic-angular/document-workspaces`) and the `elements` and `workspace-elements` entry
250
+ points are removed from the 1.x line. They remain available in 2.x. The optional
251
+ `@angular/elements` peer dependency and the `tus-js-client` dependency are dropped with them.
252
+
253
+ **1.17.0**
254
+
255
+ - The native `@sinequa/atomic-angular/elements` entry point is no longer published.
256
+ - _Document workspaces_: a workspace's file list reflects the index only; the upload status popup
257
+ also shows uploads started by other users and stays visible for two minutes after the end of an
258
+ upload; reworded texts (en, fr, de, ja).
259
+
260
+ **1.16.0**
261
+
262
+ - _Document workspaces_: the workspace list and a workspace's document list refresh themselves in
263
+ the background (additions, renames, access changes, a workspace deleted by another user).
264
+
265
+ **1.15.1** (bug fixes)
266
+
267
+ - The buttons rendered by the aggregation components have `type="button"`, so they no longer
268
+ submit a surrounding `<form>` by accident.
269
+ - _Document workspaces_: pagination ("Load more") of the workspace list, fixes to "Load more" after
270
+ deletions.
271
+
272
+ **1.15.0**
273
+
274
+ - New `@sinequa/atomic-angular/document-workspaces` entry point: the "collections" view rewritten
275
+ as Angular components (list, detail, sharing, upload, preview, workspace picker, chat mention
276
+ list) and `@sinequa/atomic-angular/workspace-elements` (custom elements). "Collection" becomes
277
+ "workspace".
278
+ - `lexiq-collections` elements synchronised (document preview, principal picker, upload status
279
+ polling, session recovery, i18n en/fr/de/ja). Requires `@sinequa/atomic >= 2.7.0`.
280
+ - Fixes: height of buttons with no explicit `variant`, selecting a collection with
281
+ `allowEmptySearch: false`, the result being updated when an empty search is skipped, alignment of
282
+ the custom date range fields, redundant tab tooltip, `allowSignalWrites` warning from
283
+ `@tanstack/angular-virtual` (updated to v6).
284
+
285
+ **1.14.1** (bug fixes)
286
+
287
+ - The user profile is shared between consumers (one request, updates visible everywhere).
288
+ - A distribution facet ("Sizes", "Dates") keeps its selected state after the query reruns. Requires
289
+ `@sinequa/atomic` ^2.6.0.
290
+
291
+ **1.14.0**
292
+
293
+ - `<more-button>` adapts to its context: a bottom sheet on mobile, a modal dialog above a threshold
294
+ (`enrichedThreshold`), a facet search box above six filters; the popover height adapts to the
295
+ available space (facets scroll correctly).
296
+ - New `lockPosition` input to pin a popover's placement.
297
+ - Per-facet height variable fixed (`--scroll-height`).
298
+
299
+ **1.13.0**
300
+
301
+ - `<Aggregation>`, `<aggregation-list>`, `<aggregation-tree>`: a missing aggregation removes itself
302
+ from the layout; new `hideWhenEmpty` input to also hide an aggregation with no items (also on
303
+ `<aside-filters>`, `<more>`, `<more-button>`).
304
+ - `<aside-filters>`: `collapsible` and `collapsed` inputs.
305
+ - "Did you mean" relies on each term's correction action (`correction`, `expansion`, `suggestion`);
306
+ moved to `@sinequa/atomic` 2.5.0.
307
+ - Fixes: the date facet's Apply / Clear buttons now match the list and tree; a `homepage: true`
308
+ filter always shows in the homepage filter bar; race between app bootstrap and the OAuth/SAML
309
+ redirect (moved to `@sinequa/atomic` 2.4.0).
310
+
311
+ **1.12.0**
181
312
 
182
- ### Recent Releases
313
+ - New `applyOnSelect` input on `<aggregation-list>`, `<aggregation-tree>` and `<Aggregation>`.
314
+ - Fix: a late `401` after a logout no longer sends the user back to the sign-in form.
183
315
 
184
- **v0.3.8** (2025-12-18)
316
+ **1.11.0**
185
317
 
186
- - Added chevron icon in document locator menu
187
- - Improved component structure
318
+ - New `@sinequa/atomic-angular/elements` entry point: `lexiq-collections` custom elements (requires
319
+ `@sinequa/atomic >= 2.2.0`).
188
320
 
189
- **v0.3.7** (2025-12-17)
321
+ **1.10.0**
190
322
 
191
- - Fixed parent selection in filters with `linkChildren`
192
- - Enhanced selection state management
323
+ - Date facet: `emitOn` input (`"selection"` by default, `"apply"` to defer emission to the Apply
324
+ button in controlled mode).
325
+ - Fix: the delete button of the collections list is always visible.
193
326
 
194
- **v0.3.6** (2025-12-17)
327
+ **1.9.x** (1.9.0 → 1.9.9)
195
328
 
196
- - Enhanced "Did You Mean" component styling
197
- - Added text truncation for long filter names
329
+ - 1.9.0: `<aside-filters>`, a standalone facet list.
330
+ - Fixes: aggregation tree selection with Enter behaves like a click, the query store is reset on
331
+ init (ends a leak of one user's search text to the next), navigation tabs disabled when their
332
+ count is zero, display and label of controlled aggregations, backend error message when a user
333
+ override fails, preview highlight restoration, auth guard, navigation and bootstrap race
334
+ conditions, long user-profile values.
198
335
 
199
- **v0.3.4** (2025-12-15)
336
+ **1.8.0**
200
337
 
201
- - Complete password management flows
202
- - Added `PasswordExpiryGuard`
338
+ - Controlled mode for `<Aggregation>` (the facet neither reads nor writes the URL): a structured
339
+ `Filter` is emitted alongside `selectionChange`, live emission on the date facet, an
340
+ `aggregationItem` template to customise a row's content, a "load more" example.
203
341
 
204
- **v0.3.0** (2025-12-09) - Major Release
342
+ **1.7.x** (1.7.0 → 1.7.2)
205
343
 
206
- - New Chapsvision theme system
207
- - Standardized icon components
208
- - New `InputGroup` architecture
209
- - Badge API changes
344
+ - `syncUrl` input to opt out of URL synchronisation of filters.
345
+ - Fixes: `position: 'left'` filters only show in the left aside; fall back to native FontAwesome
346
+ markup in `FaIcon`; reach the last entity occurrence in the preview; sign-in driven by the
347
+ outcome of `login()`.
210
348
 
211
- ## Migration Guide
349
+ **1.6.x** (1.6.0 → 1.6.5)
212
350
 
213
- ### Migrating from 0.2.x to 0.3.0+
351
+ - Feedback: dynamic visibility and configuration.
352
+ - Dialog to toggle feature flags live.
353
+ - Filters persist across tabs (`navbar-tabs`).
354
+ - Migration to the `AuthMode` authentication model, bootstrap race fixed.
355
+ - Fixes: a signed-out view on `/logout` instead of the re-authentication loader, selecting items of
356
+ a multi-value filter, `basePath` prefix for the static search index.
214
357
 
215
- #### Authentication
358
+ **1.5.x** (1.5.0 → 1.5.7)
216
359
 
217
- Route `/login` and `/logout` to `AuthPageComponent` rather than to `SignInComponent` directly — it is what switches between the sign-in, change-password, forgot-password and signed-out views.
360
+ - Filter bar: the "more" button stays visible when filters exceed `filtersCount`, overflow is
361
+ recounted when item sizes or applied filters change; tabs (`navbar-tabs`) no longer truncate by
362
+ default, with a minimum width and an icon-only collapse; `homepage` input for the homepage filter
363
+ bar.
364
+ - Fixes: alerts' `Query.filters` typing, `AppStore.getColumn` / `getColumnAlias` with non-string
365
+ input, source icon.
218
366
 
219
- ```typescript
220
- // Before
221
- { path: 'login', component: SignInComponent }
222
- // After
223
- { path: 'login', component: AuthPageComponent }
224
- ```
367
+ **1.4.x** (1.4.0 → 1.4.2)
368
+
369
+ - Navigation tabs react to dynamic router configuration.
370
+ - ARIA attributes on the aggregation components.
371
+
372
+ **1.3.x** (1.3.0)
373
+
374
+ - New `SidebarNavComponent` (tooltip showing the tab label) and `injectRouteNavigation`.
375
+
376
+ **1.2.x** (1.2.0 → 1.2.8)
377
+
378
+ - New icons and improved accessibility; circular dependency fix.
379
+ - Fixes: session storage clearing and date handling in the aggregation components, logout URL taken
380
+ from the challenge action, feedback translation pipe.
381
+
382
+ **1.1.x** (1.1.0)
383
+
384
+ - Icons in components updated to the new icon components.
225
385
 
226
- ## Browser Support
386
+ ## Browser support
227
387
 
228
388
  - Chrome (latest)
229
389
  - Firefox (latest)