Skip to content

sync: release/11.14.0 (sba-internal → sba-mint) - #46

Merged
hebus merged 1431 commits into
release/11.14.0from
sync/release/11.14.0
Apr 23, 2026
Merged

hebus merged 1431 commits into
release/11.14.0from
sync/release/11.14.0

Conversation

@hebus

@hebus hebus commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Synchronisation automatique de la branche release/11.14.0 depuis le repo interne sba-internal.

Généré par sync-to-public.ts

gleibfried and others added 30 commits March 13, 2026 16:10
…r case in mint (atomic-angular🏷️0.4.19)
Add the Agent App layout to Mint.
The Sidebar is now at the root component level.
…e and refactor store access

- Wrap `sq-chat-v3` and settings template in an `@for` loop keyed by `assistantKey` signal to force component recreation when the principal changes
- Inject `PrincipalStore` and add an `effect` that increments `assistantKey` whenever the principal store state updates, ensuring the assistant always reflects the latest principal
- Replace `getState(selectionStore)` destructuring with direct signal access `selectionStore.assistantIdsToAttach()` for consistency and reactivity
- Update sidebar component imports to use new `sidebar-groups` directory path
- Rename `agent-layout.ts` to `agent.layout.ts` for naming consistency
- Fix agent layout height from `calc(100dvh-12rem)` to `h-full` for proper sizing
- Add `id.page.ts` for displaying a specific chat session by UUID
- Add `new.page.ts` with resizable panel layout supporting chat and document preview
#noJiraCheck integrate sidebar layout into app root component
ES-30360 #done some refactoring (atomic-angular🏷️0.4.19)
…a-assistant-3-10-11

ES-30940 #done Bump @sinequa/assistant 3.10.11
ES-30457 #done update user profile dialog to see notifications
…nction-was-not-displayed

ES-30780 #done fix principal store to consider editablePartition
…ble releases

- `@sinequa/agent`: 0.0.34 → 0.0.35
- `@sinequa/assistant`: 3.10.10-dev.2 → 3.10.10 (stable)
- `@sinequa/ui`: 0.2.11-dev.1 → 0.2.12 (stable)
…ssible-to-open-the-bookmarked-item-from-bookmark-page

ES-30563 #done import sheet-previewer to widgets.layout
- Upgrade @sinequa/agent 0.0.34 → 0.0.35
- Upgrade @sinequa/assistant 3.10.10 → 3.10.11
- Upgrade @sinequa/ui 0.2.11-dev.1 → 0.2.12 (stable release)
- Use getState() for principal in user-menu components
- Add flex gap-2 classes to filters-bar in search-all template
- `@sinequa/atomic`: 0.0.137 → 0.0.139
- `@sinequa/atomic-angular`: 0.4.19 → 0.4.23
- `@sinequa/ui`: 0.2.6 → 0.2.12
…e. Simplified sidebar by removing unused saved chats and related logic.
hebus added 25 commits April 16, 2026 13:50
…#done

ES-31285 #done ES-31310 #done ES-30880 #done ES-31335 #done ES-31309 #done upgrade Sinequa packages (atomic-angular🏷️0.4.44, ui🏷️0.2.17, atomic🏷️0.0.141)
…uery resolver

ES-31255 #done fix(routing): protect home route with auth guard and query resolver
…cause-assistant-use-them

#noJiraCheck restore Font Awesome stylesheet link in index.html
…h): datepicker UX and layout fixes

ES-28758 #done ES-30879 #done ES-30417 #done ES-29744 #done fix(search): datepicker UX and layout fixes
the newChat() call with an isAssistantReady() check to avoid calling it before the assistant is initialized.
ES-31539 #done fix: newChat() initialization
the newChat() call with an isAssistantReady() check to avoid calling it before the assistant is initialized.
…s-selected-automatically-when-open-assistant-page-from-search-page
ES-31539 #done  improve assistant initialization
- Bump oxlint from ^1.46.0 to ^1.60.0 with updated platform bindings
- Remove `eslint-no-unused-vars` rule from oxlintrc as it is now handled by default correctness warnings
#noJiraCheck merge release/11.13.0 into release/11.14.0
…s-selected-automatically-when-open-assistant-page-from-search-page
…lization

ES-31048 #done Implement OnRouteAttached lifecycle hook for re-initialization
…e search component for localization

ES-31338 #done Add missing translations for navigation menu and update search component for localization
- Remove redundant `initialize()` call and `onRouteAttached` lifecycle hook in `AssistantLayoutComponent`, inlining the selection store clear directly in `ngOnInit`
- Fix translation keys in bookmarks component: rename `myBookmarks` → `bookmarks.myBookmarks` and `bookmark.removeBookmark` → `bookmarks.removeBookmark` to match i18n namespace convention
…-angular scopes

ES-31308 #done feat(i18n): add translation override system for atomic-angular scopes
@hebus
hebus requested a review from larde April 22, 2026 07:06
@hebus
hebus merged commit 3074153 into release/11.14.0 Apr 23, 2026
0 of 2 checks passed
@hebus
hebus deleted the sync/release/11.14.0 branch April 23, 2026 08:24
hebus added a commit that referenced this pull request May 19, 2026
* Change app name from 'mint_rnd' to 'training-mint'

* #noJiraCheck feat(deps): Updates various dependencies within the Docusaurus project.

This commit:
- Updates Docusaurus core and preset dependencies to use caret version ranges (`^3.8.0`).
- Updates several webpack-related packages to their latest minor versions.
- Upgrades `webpack-dev-middleware` from v5 to v7.

* update package-lock.json

* Release 11.13.0 - November 2025 (#24)

🎯 Major Features:
• Preview Dialog: Full-screen document preview with chat, summary, and find capabilities
• Navigation Improvements: Smart back navigation with history tracking
• Assistant Enhancements: Prefill and submit suggested actions, document attachment support
• Application Title Management: Dynamic title updates across all pages

🔧 Improvements:
• Document cards now support external links with conditional underline styling
• Metadata badges use field-specific filtering (docformat/doctype)
• Logo images use CSS content properties for better theming
• Preview header defaults to collapsed state for cleaner UX
• Invisible extract locations styling for cleaner previews

📦 Dependencies:
• @angular-architects/ngrx-toolkit: 18.1.1 → 20.0.0
• @ngrx/signals: 18.1.1 → 20.1.0
• @ngrx/store: 18.1.1 → 20.1.0
• @sinequa/assistant: 3.9.11-dev.4 → 3.10.2
• @sinequa/atomic: 0.0.121 → 0.0.123
• @sinequa/atomic-angular: 0.1.88 → 0.2.5
• @sinequa/ui: 0.1.37 → 0.1.49
• Added @types/markdown-it for TypeScript support

🗑️ Cleanup:
• Removed deprecated preview page route
• Removed unused ngx-remark dependencies
• Removed UI tester route
• Consolidated CSS styling and removed duplicates

🌐 i18n:
• Added preview dialog translations (EN, FR, DE)
• Added page-specific titles (History, Bookmarks, Collections, Saved Searches)

🎨 Styling:
• Unified size utilities (size-10 instead of size-[40px])
• Improved muted foreground colors for better contrast
• Enhanced chat-v3 and bootstrap-to-tailwind overrides
• Fixed lint-staged prettier configuration

🏗️ Architecture:
• Custom elements and markdown-it plugins properly configured in app.config
• ApplicationService integration for centralized title management
• Enhanced drawer state management with title updates
• Improved history navigation with back level tracking

BREAKING CHANGES:
• Removed /preview/:id route (use preview dialog instead)
• Removed /ui-tester route

* update Angular to v20.3.15 and Sinequa packages to latest versions (#27)

- Upgrade Angular core packages from v20.0.0 to v20.3.15
- Update Angular CDK to v20.2.14 and build tools to v20.3.13
- Bump Sinequa packages (@sinequa/atomic, @sinequa/atomic-angular, @sinequa/ui)
- Add comprehensive changelog documentation for user-facing changes
- Include migration notes and breaking change information

* Release 11.13.0 - December 2025 (#29)

* document features

This commit updates the Prettier configuration to include `cva` in the `tailwindFunctions` array, ensuring proper formatting for `cva` utility classes.

Additionally, this commit significantly expands the documentation:
- The changelog title has been updated for consistency.
- A new section for "features" has been added to the customization documentation, detailing configurable application features like `allowChangePassword`, `advancedSearch`, `filterLinkChildren`, `quickFilter`, and `expandPreview`. This section explains their purpose, how to use them, and provides an example JSON configuration.
- The `APP_FEATURES` token documentation has been removed from the `tokens.md` file, as the new "features" section in `customization.mdx` now covers this information more comprehensively and clearly.
- A new set of CSS variables related to AI, assistant, warning, info, and error colors, as well as backdrop styling, have been added to the theme. This provides a more robust and customizable styling system for various UI components.

* chore: Update changelog for release 11.13.0 - December 2025, adding new features, components, and enhancements

* Release 11.13.0 - January 2026 (#30)

* Release 11.13.0 - January 2026

* feat: Update Sinequa package dependencies

This commit updates the Sinequa package dependencies to their latest versions, specifically:
- `@sinequa/assistant`: `^3.10.4` → `^3.10.5`
- `@sinequa/atomic-angular`: `^0.3.8` → `^0.3.15`
- `@sinequa/ui`: `^0.2.3` → `^0.2.4`

The changelog has been updated to reflect these dependency changes and consolidated for clarity. The updated packages include bug fixes and enhancements.

* Update app name in environment configuration

* fix(deps): Update Angular to version 20.3.16 (#33)

Updates the @angular/compiler and @angular/core packages from version 20.3.15 to 20.3.16. This is a routine dependency update to incorporate the latest bug fixes and improvements from the Angular team.

Co-authored-by: olivier.T <otome@chapsvision.com>

* release 2026-03-11 #noJiraCheck (#35)

* chore: update configs, add user-profile i18n ignore, and add drawer docs

- Add `/src/assets/i18n/user-profile` to `.gitignore`
- Remove internal npm registry from `.npmrc`, keeping `legacy-peer-deps`
- Add VS Code file nesting for `proxy.conf.json` variants in `.vscode/settings.json`
- Allow `tabs` and `tabitem` HTML elements in markdownlint config
- Mark `DrawerStackComponent` and `DrawerComponent` as deprecated in docs with warnings
- Add new `DrawerComponent` documentation page with full API and usage details
- Update tooltip styles to use CSS variables for theming support
- Mark `.layout-search` CSS rule as obsolete in comments

* chore: update changelog for release 11.13.0, detailing new application architecture, components, and enhancements

* Release/11.13.0 March 2026

- Inject `PrincipalStore` and add `assistantKey` signal to force component recreation when the principal store updates
- Wrap `sq-chat-v3` and settings template in `@for` loop keyed by `assistantKey` to trigger DOM recreation
- Add `effect` that tracks principal store state and increments the key on change
- Update deprecation comments for legacy layout CSS utilities

Co-authored-by: olivier.T <otome@chapsvision.com>

* feat(app2): refactor layout architecture with sidebar groups and agent pages

- Restructure the app2 shell with a new sidebar component built from composable sidebar-group modules (navigation, assistant, agent, widgets, user-menu).
- Add agent pages (new/id) with dedicated layout and preview component.
- Introduce search layout with extracted search-actions, and widgets layout.
- Refactor preview (navbar, tabs, content, actions) and assistant components.
- Add static error pages (404/500), white logo variants, and a new chapsvision-ios16 theme.
- Update i18n keys for preview and user-menu across en/fr/de.

* refactor(app): normalize code style and migrate to signal-based store access

- Normalize quote style (single → double) and Tailwind class ordering across all components via Biome/oxlint
- Extract assistant providers into provideAssistant() helper in app.config.ts
- Remove Flow.js dependency from app config
- Migrate from getState(store) to direct signal access (store.signal?.()) in preview components
- Update component API: replace decoration with variant on Badge/button, remove variant="ai" from Tab
- Add responsive logo switching in navbar (sm:content-[var(--logo-large-alt)])
- Simplify saveSearch() in navbar by removing manual SavedSearchesService dependency

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(config): add Biome/oxlint tooling and update dependencies to v11.14.0

- Add biome.json, .oxlintrc.json and .oxfmtrc.json for Biome/oxlint/oxfmt setup
- Switch lint/fmt scripts from ng lint + prettier to oxlint + oxfmt (HTML still uses prettier)
- Update lint-staged to use oxlint for .ts/.js and oxfmt for other files
- Bump version to 11.14.0
- Add @sinequa/agent 4.0.0, update @sinequa/assistant to 4.0.0, atomic-angular to 0.4.33, ui to 0.2.16
- Add xstate, shiki, @statelyai/inspect dependencies
- Add @utils/* path alias in tsconfig
- Ignore user-profile i18n assets in .gitignore
- Add @statelyai/inspect to allowedCommonJsDependencies

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Release 11.14.0 (#41)

* docs(mint): update and expand tutorial content for v11.14.0

- Add search-all layout documentation with ASCII diagrams
- Add tutorial step 100: left-side filters configuration
- Update tutorial steps 030, 040, 080: rework screenshots and content
- Update filters tutorial with customization, quick-fix, and edit sections
- Update result-metadata tutorial with above-extract layout option
- Add preview.mdx section and update customization.mdx
- Update package-lock.json for docusaurus dependencies

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(deps): pin @sinequa/assistant to exact version 4.0.0

Change the `@sinequa/assistant` dependency from a caret range (`^4.0.0`)
to an exact version (`4.0.0`) to ensure deterministic installs and avoid
unintended minor/patch updates.

* docs: translate search-all-layout documentation from French to English

Translate the search-all-layout.md documentation file from French to
English, including layout diagrams, section headings, table headers,
and descriptive annotations. Also fixes a typo ("si" → "if") in
conditional labels within the ASCII diagrams.

* sync: release/11.14.0 (sba-internal → sba-mint) (#46)

* update user profile dialog opening behavior

* update atomic angular

* update atomic angular

* feat(app2): integrate sidebar layout into app root component

Add the Agent App layout to Mint.
The Sidebar is now at the root component level.

* ES-30512 #done feat(assistant): recreate assistant on principal change and refactor store access

- Wrap `sq-chat-v3` and settings template in an `@for` loop keyed by `assistantKey` signal to force component recreation when the principal changes
- Inject `PrincipalStore` and add an `effect` that increments `assistantKey` whenever the principal store state updates, ensuring the assistant always reflects the latest principal
- Replace `getState(selectionStore)` destructuring with direct signal access `selectionStore.assistantIdsToAttach()` for consistency and reactivity

* refactor(sidebar): replace if-chain with switch in handleClick and remove debug log

* feat(app2): reorganize sidebar imports and add agent pages

- Update sidebar component imports to use new `sidebar-groups` directory path
- Rename `agent-layout.ts` to `agent.layout.ts` for naming consistency
- Fix agent layout height from `calc(100dvh-12rem)` to `h-full` for proper sizing
- Add `id.page.ts` for displaying a specific chat session by UUID
- Add `new.page.ts` with resizable panel layout supporting chat and document preview

* feat: remove unused ReloadLinkDirective import from sidebar-group-agent

* bump version atomic-angular 0.4.21

* ES-30940 #done bump @sinequa/assistant to 3.10.11

and Angular to 20.3.18

* bump version ui 0.2.x

* ES-30563 #done import sheet-previewer to widgets.layout

* change logo sinequa

* update lib

* chore: bump @sinequa/agent, @sinequa/ui and @sinequa/assistant to stable releases

- `@sinequa/agent`: 0.0.34 → 0.0.35
- `@sinequa/assistant`: 3.10.10-dev.2 → 3.10.10 (stable)
- `@sinequa/ui`: 0.2.11-dev.1 → 0.2.12 (stable)

* ES-30878 #done feat(autocomplete) suggest values returning no document

- `@sinequa/atomic`: 0.0.137 → 0.0.139
- `@sinequa/atomic-angular`: 0.4.19 → 0.4.23
- `@sinequa/ui`: 0.2.6 → 0.2.12

* Added resizable history panel and mobile-specific layout to Agent page. Simplified sidebar by removing unused saved chats and related logic.

* ES-30778 #done style: add text-warning-foreground to NoResult warning styling

Add `text-warning-foreground` class alongside `bg-warning` on `NoResult` components to ensure proper text contrast on warning backgrounds. Also normalize single quotes to double quotes in template string literals for consistency.

* refactor some changes with the user profile service

* ES-30854 #done refactor(agent): extract providers, rename route to /chat, and add debug mode toggle

- Extract provideAgent() and provideAssistant() into dedicated config files
- Rename agent route from /agent to /chat with restructured child routes
- Replace hardcoded AgentInjector in layout with router-outlet
- Add debug mode toggle in user menu (gated by allowAgent())
- Inject AGENT_INSTANCE_ID token instead of hardcoding instance ID
- Add injectCurrentUrl() routing utility and @utils/* path alias
- Remove widgets sidebar group and "Search Chats" button from agent sidebar

* feat(sidebar-user-menu): add agent debug toggle and improve error handling

- Add debug mode toggle (switch UI) for agent routes using AgentsStore
- Show debug switch only when on agent route and agent is allowed
- Add `model<boolean>` for debug state synced via effect to AgentsStore
- Wrap async calls (language, theme, navigation, logout) with `.catch(err => error(...))`
- Import DebugIcon, SwitchComponent, AgentsStore, AGENT_INSTANCE_ID
- Use injectCurrentUrl to detect active agent route

* feat(sidebar): show widgets group and search item on search route

* #noJiraCheck fix: design system corrections and static error pages

- Replace `decoration` with `variant` on Button and Badge components
- Switch assistant sidebar to flex layout so the Sources aggregation fills remaining space
- Conditionally render AI sidebar item with @if instead of invisible/visible toggle
- Add unhandled promise rejection handlers in collections (drag-drop, navigate, create)
- Move home page margin to host binding
- Add standalone 404/500 error pages with Hanken Grotesk font
- Log @sinequa/agent version on bootstrap
- Redirect bootstrap error to assets/error/500.html

* feat(agent): add resizable preview panel to agent chat pages

Add a split-pane layout with a resizable preview panel to both the new
and id agent chat pages. The preview panel opens automatically when a
document is selected via SelectionStore and can be closed via a button,
which also clears the selection so the same reference can re-trigger
the panel.

* ES-30922 #done chore: upgrade @sinequa/atomic-angular to v0.4.24

* chore(deps): upgrade @sinequa/atomic-angular from 0.4.23 to 0.4.25

* refactor: replace getState(principalStore) with principalStore.userId

* update avatar in menus and avoid user profile call if disabled

* have avatar properly displayed if no admin + fix tooltip

* #noJiraCheck feat(styles): extract animations and utilities into dedicated CSS files

Refactor global styles by splitting `animations.css` and `utilities.css`
into their own files, reducing the size of the main stylesheet. Also
marks legacy layout classes and `DrawerPreview` as deprecated (removal
planned for v11.15.0), and adds `#gradient-name` and `.heading-4` base
styles.

* fix wrong default converter options

* update atomic angular

* ES-31032 #done Fix sidebar displayed on login page for non-SSO users

- Add `injectCurrentUrl()` signal from utils/routing in AppComponent
- Add computed signal `isAuthRoute` matching /login, /logout and /auth/* routes
- Wrap `<app-sidebar>` in `@if (!isAuthRoute())` to prevent rendering on auth pages

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix empty block dispayed when doing empty search and change design of display

* correction on code for breacking point and display center

* Updated sidebar layout and styling. Replaced logo assets with updated white variants. Added new CSS rules for improved sidebar UI consistency and button interactions.

* remove test code

* ES-31037 #done update @sinequa/agent and @sinequa/atomic-angular🏷️0.4.28

fix potential null reference in allRows computation

* refactor: improve readability of conditional classes using cn utility

* Added `NewChatIcon` and `HistoryIcon` components. Replaced inline SVGs with icon components in sidebar and agent layout. Updated logo assets with "white" variants and adjusted related CSS variables and styles for consistency. Simplified history panel and added responsive improvements for mobile.

* problem display preview in ipad

* ES-30854 #done: add debug mode for agent in Mint

- Rename the "Debug" menu label to "Agent Debug" for clarity
- Add a constructor with an Angular effect() that syncs the debug toggle
  with the agent store via agentsStore.setDebugMessages(this.debug())
- Import effect from @angular/core and reorganize imports

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: make column 3 sticky while only column 2 scrolls in search layout

- Constrain the flex container to viewport height with overflow-hidden
- Wrap results list in overflow-y-auto so only it scrolls
- Remove sticky positioning from column 3 (no longer needed)
- Keep app-search-actions fixed above the scrollable results list

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* add document page saving upon scrolling to scroll back when changing of conversion

* refactor scrolling to also work for primary documents

* feat: add AgentPreview component and refactor preview to signal-based API

## What changed

### New features
- Add `AgentPreview` component (`src/components/preview/agent/agent-preview.ts`):
  a dedicated preview panel for the agent/chat pages, embedding
  `PreviewNavbar`, `PreviewHeader`, and `PreviewContent` in a single
  layout that reacts to `PreviewService` events.
- Integrate `AgentPreview` into the chat detail page (`id.page.ts`) via a
  `ResizablePanelGroup`: the preview panel auto-opens when a document is
  selected in `SelectionStore` and can be closed (resets selection so the
  same reference can be reopened).

### Refactoring
- Replace all `getState(selectionStore)` calls with the signal-based
  `selectionStore.id?.()`, `selectionStore.queryText?.()`, and
  `selectionStore.previewHighlights?.()` accessors in both
  `src/app/` and `src/components/` preview trees.
- `PreviewContentComponent` gains a `conversion` input and an
  `onLoadedData` output; adds full multi-conversion support
  (primary/secondary preview, passage-page scrolling via `QueryService`).
- `PreviewContentComponent` now destroys its resource on `DestroyRef`
  and closes the preview in the service on teardown.

### Dependencies
- Bump `@sinequa/agent` 0.0.41 → 0.0.45
- Bump `@sinequa/atomic-angular` 0.4.28 → 0.4.29

### Search layout
- Rework `search-all.html` template (layout clean-up, column structure).
- Add `search-all-layout.md` documentation describing the 3-column layout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: restore environment.ts to dev/11 defaults

Reverts local dev overrides (app: 'agent') back to the base branch
values (app: 'mint_rnd', autoOAuthProvider: 'identity-dev').

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix missing import

* Change the color of the sidebar menu in the light theme

* add doc for preview multiconversion

* have menu position working for mobile

* fix hidden search input for mobile

* ES-31029 #done ES-31018 #done bump @sinequa/atomic-angular to 0.4.30 and @sinequa/ui to 0.2.14

- Update `@sinequa/atomic-angular` from 0.4.29 to 0.4.30
- Update `@sinequa/ui` from 0.2.12 to 0.2.14
- Add `--color-backdrop` CSS variable mapping in theme.css

* ES-31074 #done bump @sinequa/atomic-angular to 0.4.31

- update Angular devkit to 20.3.21

* ES-30455 #done bump @sinequa/atomic-angular from 0.4.31 to 0.4.32

* apply review recommendations: use cn(), CSS variable for mobile header height, simplify isMobile signal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix typos and missing newline in preview multi-conversion docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix AI panel visibility: hide when no results, simplify cn() ternary

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* center results column with margins when AI and preview are both disabled

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* update search content height and move layout doc to docusaurus

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* move history panel and chat controls from layout to page components

- AgentLayoutComponent is now a lightweight shell (router-outlet only):
  removed history panel, resizable panels, providers, SavedChat, History/NewChat icons,
  BreakpointObserverService, and related signals/effects

- ChatIdPage and ChatNewPage now own the full 3-panel layout:
  - panel 1 (history): collapsible SavedChat panel, responsive (full-screen on mobile,
    15–25% on desktop), toggled via historyCollapsed signal
  - panel 2 (agent): AgentInjector with history/new-chat action buttons on desktop,
    fixed top-right buttons on mobile
  - panel 3 (preview): existing AgentPreview panel, unchanged

- Panel layouts updated from 2-panel [agent, preview] to 3-panel
  [history, agent, preview] with correct size arrays ([0,100,0] / [25,75,0] / [0,60,40])

- startNewChat() dispatches createAgentNewChatEvent before navigating to /chat/new
  to reset the agent state properly

- history.icon and new-chat.icon: swapped SVG paths and corrected sizes
  (icons were accidentally inverted between the two components)

- agent-preview.ts: == → === strict equality fix, import reorder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix inverted button titles, 100dvh, and xmark-icon tag inconsistency

- Swap title attributes on mobile buttons: toggleHistory → "History", startNewChat → "New Chat"
- Replace 100vh with 100dvh for correct mobile viewport height handling
- Use self-closing <xmark-icon /> consistently in new.page.ts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* close preview when opening history to prevent inconsistent panel state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* extract shared agent page layout into AgentPageLayoutComponent

ChatIdPage and ChatNewPage were near-identical. Moved all shared template
and logic (history panel, preview panel, mobile buttons, effects, signals)
into AgentPageLayoutComponent which accepts an optional chatId input.

ChatIdPage and ChatNewPage are now thin wrappers: ChatIdPage resolves
the chatId from the route and passes it down; ChatNewPage renders
the layout with no chatId.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(themes): update dark sidebar foreground color to sage-200

Change `--sidebar-foreground` from `--color-sage-700` to `--color-sage-200` in the dark section of the ChapsVision theme to improve text contrast and readability against the dark sidebar background (`--color-sage-950`).

* refactor(agent): replace bound string literals with static attribute bindings

Convert `[variant]="'ghost'"` and `[size]="'icon'"` to `variant="ghost"` and `size="icon"` in agent-page-layout template, and reorder imports alphabetically.

* chore(deps): bump @sinequa packages to latest versions

- @sinequa/agent: 0.0.45 → 0.0.48
- @sinequa/atomic-angular: 0.4.29 → 0.4.32
- @sinequa/ui: 0.2.12 → 0.2.14

* ES-30924 #done fix(search): improve tabs and filters display

- Wrap navbar-tabs in a bordered container with noTruncate to prevent ellipsis truncation
- Fix filters-bar layout from flex to block to avoid overflow issues

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* style: simplify navbar-tabs wrapper div styling in search-all

Remove border styling and inline `max-width` from the `navbar-tabs` wrapper div, replacing with Tailwind's `max-w-full` utility class. Also removes a leftover commented-out `<navbar-tabs>` line.

* style: remove hardcoded bg-sage-50 background from navbar-tabs in search-all

* #noJiraCheck fix(theme): update ChapsVision primary color tokens and alt logo for light/dark modes

- Replace `--logo-large-alt-url` with non-white SVG for light mode
- Fix `--primary-hovered-foreground` from white to sage-900 in light mode
- Reorder `--primary-foreground-hovered` and `--primary-foreground-pressed` to follow hovered/pressed blocks for consistency
- Add missing `--primary-foreground-hovered`, `--primary-hovered-foreground`, and `--primary-foreground-pressed` tokens in dark mode

* fix(sidebar): swap logo variants and fix dark theme logo URL assignments

- Use `--logo-large-alt` for the large logo in the sidebar header
- Swap `--logo-large-url` and `--logo-large-alt-url` asset references in chapsvision.css so the correct SVG (color vs white) is used per context
- Reformat long import statements for readability
- Minor style fix: remove parentheses around `word` arrow function parameter

* chore(deps): bump @sinequa/atomic-angular and @sinequa/ui packages

- Upgrade @sinequa/atomic-angular from 0.4.32 to 0.4.33
- Upgrade @sinequa/ui from 0.2.14 to 0.2.16

* chore(deps): pin @sinequa/atomic-angular to exact version 0.4.33

Remove the caret (^) range from @sinequa/atomic-angular to prevent automatic minor/patch updates and ensure a deterministic, reproducible install.

* feat(sidebar): add closeSidebarOnMobile method to close sidebar on mobile when menu items are clicked

* refactor(sidebar): centralize mobile sidebar closing via Router NavigationEnd

Replace duplicated closeSidebarOnMobile() methods across sidebar group
components with a single effect() in MainSidebarComponent that listens
to NavigationEnd router events.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ES-31235 #done Bump @sinequa/agent to 4.0.0, @sinequa/assistant to 4.0.0,

Also update Angular DevKit/CLI/build tools from 20.3.21 to 20.3.22 and picomatch from 4.0.3 to 4.0.4.

* #noJiraCheck chore: remove postinstall script auto-updating agent package

The `postinstall` script that automatically ran `npm add @sinequa/agent@latest` and `npm run transloco:extract-scoped-libs` on every `npm install` has been removed. This prevents unintended automatic updates to the agent package and avoids the extra extraction step being silently triggered on install.

* Revert "#noJiraCheck remove postinstall script"

* chore: remove auto-install of @sinequa/agent from postinstall script

The `npm add @sinequa/agent@latest` command was removed from the `postinstall`
script to avoid automatically installing/updating the package on every
`npm install`. The transloco extraction step is preserved.

* ES-31237 #done fix(search): move infinite scroll trigger above feedback component

Reorder the infinite scroll trigger div to appear before the feedback
component, and add a `h-3.75` height class to ensure the scroll sentinel
is properly visible and detectable by the IntersectionObserver.

* ES-30768 #done fix(animations): hide element with display:none at animation boundaries

Add `display: none/block` keyframe steps to `slide-in-right` and
`slide-out-right` animations to ensure the element is visually hidden
before the animation starts and after it ends, preventing flash of
invisible content and lingering invisible elements in the DOM flow.

* style(animations): simplify slide keyframes and add `forwards` fill mode

- Add `forwards` fill mode to slide-in-right and slide-out-right animations
  to ensure elements stay in their final state after the animation ends
- Simplify slide-in-right keyframe by removing the `display: none/block` hack
  at 0%/1% in favor of opacity/transform only
- Add explanatory comment about discrete property animation browser requirements
  (Chrome 116+, Firefox 117+, Safari 17.4+)

* style: update slide-out-right animation comment for clarity

Revise the inline CSS comment explaining the `display` discrete property animation:
- Clarify that `slide-out-right` uses a 99%/100% split to hide the element after it fully translates out
- Explain that `forwards` retains the final keyframe state after both animations complete
- Remove the outdated reference to the 0%/1% split and "flash of invisible content"

* ES-31242 #done fix(i18n): handle translation loading errors in TranslocoHttpLoader

Add catchError to the translation HTTP request to return an empty
object on failure, preventing infinite resource fetching loops when
a translation file cannot be loaded.

* fix(search): fix z-index layering for preview slide animations

Add `z-0`/`z-1` classes to preview and assistant panels to ensure proper stacking order during slide-in/out transitions, preventing overlap rendering issues.

* fix(i18n): handle missing translation file gracefully

Add error handling to the Transloco HTTP loader so that a failed translation file request returns an empty object instead of throwing an error. This prevents the app from breaking when a translation file is missing or unavailable.

* chore(deps): upgrade @sinequa/atomic-angular and @sinequa/ui to stable releases

- Bump @sinequa/atomic-angular from ^0.4.32-dev.1 to ^0.4.36
- Bump @sinequa/ui from ^0.2.14-dev.1 to ^0.2.16
- Update transitive dependencies (Angular DevKit, picomatch, etc.)

* feat(router): implement custom route reuse strategy to maintain assistant state across page changes

* fix(search): datepicker UX and layout improvements

- Move search-with-autocomplete into search pages and remove from layout
- Add noTruncate to navbar-tabs in search pages
- Fix filters-bar layout classes
- Add logo-sidebar CSS variable with light/dark theming
- Update fr.json date range labels (Du/Au)
- Adjust search content height variable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(deps): upgrade @sinequa/atomic-angular and @sinequa/ui packages

- Bump @sinequa/atomic-angular from 0.4.33 to ^0.4.37
- Bump @sinequa/ui from ^0.2.16 to ^0.2.17
- Pin @sinequa/assistant to exact version 4.0.0 (remove range specifier)

* feat(search): move search overview inside scrollable container and fix column margin

- Move `app-search-overview` inside the scrollable `min-h-0 flex-1 overflow-y-auto` div so it scrolls with results instead of being fixed above them
- Replace `mx-4` with `m-4` on column 3 container to add vertical margin alongside the existing horizontal margin

* ES-31253 #done Implement agent search results side panel

- Add ExpandedSearchResultsComponent and SearchExpansionService from @sinequa/agent
- Add search panel slot in ResizablePanelGroup with open/close logic
- Add computeLayout() to handle all panel combinations (history/search/preview)
- Add activeMobilePanel computed signal for mobile single-panel navigation
- Add closeSearch() method wired to ExpandedSearchResults close event
- Minor: remove mb-2 from agent-preview container

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(sidebar): add debug mode toggle functionality in user menu

* ES-31308 #done feat(i18n): add translation override system for atomic-angular scopes

- Add TranslocoHttpLoaderOverrides to deep-merge base and override translation files per scope
- Add provideTranslocoProviders() to centralize Transloco configuration
- Add deepmerge utility for nested translation key merging
- Refactor app.config.ts to use provideTranslocoProviders()
- Add i18n-overrides documentation page
- Move localization.md into localisation/ subfolder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: pin `@sinequa/assistant` to exact version 4.0.0 and update lock file

* Refactored SavedChat component styles: updated hover/active states, improved dark mode support, and aligned background colors with theme variables. Adjusted Chapsvision theme for better consistency.

* chore: fix security vulnerabilities by upgrading dependencies via npm audit fix

* ES-31285 #done ES-31310 #done ES-30880 #done ES-31335 #done upgrade Sinequa packages

- @sinequa/atomic: 0.0.139 → 0.0.140
- @sinequa/atomic-angular: 0.4.36 → 0.4.44
- @sinequa/ui: 0.2.16 → 0.2.17
- vite: 7.1.11 → 7.3.2
- Minor lock file adjustments (dev flag, nested deps)

* bump version atomic 0.0.141

* refactor(routing): use route data flag for reuse strategy instead of hardcoded path

* docs: add Custom Route Reuse Strategy documentation page

* chore(docs): update docusaurus package-lock.json dependencies

- Remove unused AI SDK packages (@ai-sdk/gateway, provider, provider-utils, react)
- Upgrade Algolia packages (e.g. abtesting 1.8.0 → 1.16.1, client-common 5.42.0 → 5.50.1)
- Update lodash 4.17.23 → 4.18.1 and other transitive dependencies
- Refresh lockfile with latest resolved versions and integrity hashes

* chore(deps): upgrade @sinequa/atomic-angular to 0.4.44

- Pin @sinequa/assistant to exact version 4.0.0 (was ^4.0.0)
- Upgrade @sinequa/atomic-angular from 0.4.33 to ^0.4.44
- Refactor debug mode effect in SidebarUserMenuComponent: consolidate
  agent debug and user settings debug into a single effect, removing
  the separate toggleDebugMode effect

* ES-31371 #done chore(deps): bump @sinequa/agent from 4.0.0 to 4.0.1

Update the `@sinequa/agent` package to version 4.0.1 and relax the
version constraint in package-lock.json to allow patch updates (^4.0.1).

* #noJiraCheck chore: add GitHub Actions workflow for automatic version bumping on PR merge

* ES-31378 #done docs(tutorial): update highlighting guide with release-specific paths

Add a versioned info block distinguishing `highlight.config.ts` location between release 11.13.0 and earlier (`src/app/`) and 11.14.0 and later (`src/config/`), include properly indented code snippets for both versions, and fix trailing whitespace.

* feat(i18n): add missing translations for navigation menu items in German, English, and French

* ES-31255 #done fix(routing): protect home route with auth guard and query resolver

Add `AuthGuard()` and `queryNameResolver` to the home route to ensure unauthenticated users are redirected and the query name is resolved before the component loads.

* refactor: enhance allowAI logic to improve user experience during searches

* feat: replace FontAwesome icons with custom SVG components across various components

- Updated card menu to use SVG icons for menu actions.
- Replaced icons in record card with corresponding SVG components.
- Removed unused history and new chat icon components.
- Updated preview navbar to use SVG icons for navigation actions.
- Replaced icons in sidebar user menu with SVG components.
- Updated user menu to use SVG icons for user actions.
- Replaced icons in bookmarks, collections, recent searches, and saved searches components with SVG components.
- Removed FontAwesome stylesheet from index.html.

* ES-31388 #done bump version assistant and agent libs

assistant -> 4.0.2
agent -> 4.0.2

* feat(cards, navbar): replace Font Awesome icons with Lucide icon components

* fix: update @sinequa/atomic-angular and @sinequa/ui to dev versions in package.json and package-lock.json

* ES-30778 #done ES-31220 #done ES-31195 #done chore(deps): bump @sinequa/atomic-angular, @sinequa/ui

Update `@sinequa/atomic-angular` from `^0.4.44` to `^0.4.47`, `@sinequa/ui` from `^0.2.16` to `^0.2.20`, `@angular/build` from `20.3.22` to `20.3.23`, and `vite` from `7.1.11` to `7.3.2`. Lockfile reflects new nested dependency resolutions for `@angular-devkit/architect`, `@angular-devkit/core`, and updated esbuild platform binaries bundled with the newer vite version.

* ES-31233 #done chore: upgrade @sinequa/atomic-angular and Angular

- Bump `@sinequa/atomic-angular` from `^0.4.44` to `^0.4.48`
- Upgrade `@angular/build` from `20.3.22` to `20.3.23`
- Update `vite` from `7.1.11` to `7.3.2` (transitive via @angular/build)
- Update related `@angular-devkit` packages to `0.2003.23`

* Add missing translations for navigation menu and update search component for localization

* chore(deps): upgrade @sinequa/atomic, @sinequa/atomic-angular, and @sinequa/ui to version 1.0.0

* sync package-lock.json

* ES-31393 #done chore(deps): update @sinequa/atomic, @sinequa/atomic-angular, and @sinequa/ui to latest versions

Do not notify when the user is not authenticated.

* Add translations for sidebar and search component placeholders

* ES-31048 #done feat(assistant): implement OnRouteAttached lifecycle hook for re-initialization

Introduce the `OnRouteAttached` interface in `CustomReuseStrategy` and implement it in `AssistantLayoutComponent` so that initialization logic (setting the app title, clearing selection store) is re-triggered when the route is reattached after being cached, not just on first construction. Also refactors computed signal callbacks and arrow functions for consistent formatting.

* ES-31479 #done chore(deps): bump @sinequa/assistant from 3.10.11 to 3.10.12

Update @sinequa/assistant to 3.10.12 and sync transitive dependency
updates for @hono/node-server (1.19.11→1.19.14) and hono (4.12.7→4.12.12).

* #noJiraCheck restore Font Awesome stylesheet link in index.html

* Update src/app/components/search/search.component.html

* Refactor AI button translation in search component

* sync package-lock.json

* remove overrides

* refactor: organize imports and improve formatting in app.config.ts

* ES-31539 #done fix: newChat() initialization

the newChat() call with an isAssistantReady() check to avoid calling it before the assistant is initialized.

* ES-31539 #done fix: newChat() initialization

the newChat() call with an isAssistantReady() check to avoid calling it before the assistant is initialized.

* add custom reuse strategy class

* chore: upgrade oxlint to v1.60.0 and remove no-unused-vars rule

- Bump oxlint from ^1.46.0 to ^1.60.0 with updated platform bindings
- Remove `eslint-no-unused-vars` rule from oxlintrc as it is now handled by default correctness warnings

* feat: implement transloco providers and update translation loader paths

* feat(assistant): simplify init logic and fix bookmark i18n keys

- Remove redundant `initialize()` call and `onRouteAttached` lifecycle hook in `AssistantLayoutComponent`, inlining the selection store clear directly in `ngOnInit`
- Fix translation keys in bookmarks component: rename `myBookmarks` → `bookmarks.myBookmarks` and `bookmark.removeBookmark` → `bookmarks.removeBookmark` to match i18n namespace convention

* chore: update @sinequa/atomic-angular and @sinequa/ui to version 1.1.0

---------

Co-authored-by: Guillaume Leibfried <guillaume.leibfried@sinequa.com>
Co-authored-by: Leibfried <gleibfried.ext@chapsvision.com>
Co-authored-by: olivier.T <otome@chapsvision.com>
Co-authored-by: AzureAD\MahdiJALOULI <mjalouli.ext@chapsvision.com>
Co-authored-by: Andreas-CHARALAMBIDES <acharalambides@chapsvision.com>
Co-authored-by: Steininger <msteininger@chapsvision.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Do Trinh <kdotrinh@chapsvision.com>

* sync: release/11.14.0 (sba-internal → sba-mint) (#49)

* ES-30922 #done chore: upgrade @sinequa/atomic-angular to v0.4.24

* chore(deps): upgrade @sinequa/atomic-angular from 0.4.23 to 0.4.25

* refactor: replace getState(principalStore) with principalStore.userId

* update avatar in menus and avoid user profile call if disabled

* have avatar properly displayed if no admin + fix tooltip

* #noJiraCheck feat(styles): extract animations and utilities into dedicated CSS files

Refactor global styles by splitting `animations.css` and `utilities.css`
into their own files, reducing the size of the main stylesheet. Also
marks legacy layout classes and `DrawerPreview` as deprecated (removal
planned for v11.15.0), and adds `#gradient-name` and `.heading-4` base
styles.

* fix wrong default converter options

* update atomic angular

* ES-31032 #done Fix sidebar displayed on login page for non-SSO users

- Add `injectCurrentUrl()` signal from utils/routing in AppComponent
- Add computed signal `isAuthRoute` matching /login, /logout and /auth/* routes
- Wrap `<app-sidebar>` in `@if (!isAuthRoute())` to prevent rendering on auth pages

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix empty block dispayed when doing empty search and change design of display

* correction on code for breacking point and display center

* Updated sidebar layout and styling. Replaced logo assets with updated white variants. Added new CSS rules for improved sidebar UI consistency and button interactions.

* remove test code

* ES-31037 #done update @sinequa/agent and @sinequa/atomic-angular🏷️0.4.28

fix potential null reference in allRows computation

* refactor: improve readability of conditional classes using cn utility

* Added `NewChatIcon` and `HistoryIcon` components. Replaced inline SVGs with icon components in sidebar and agent layout. Updated logo assets with "white" variants and adjusted related CSS variables and styles for consistency. Simplified history panel and added responsive improvements for mobile.

* problem display preview in ipad

* ES-30854 #done: add debug mode for agent in Mint

- Rename the "Debug" menu label to "Agent Debug" for clarity
- Add a constructor with an Angular effect() that syncs the debug toggle
  with the agent store via agentsStore.setDebugMessages(this.debug())
- Import effect from @angular/core and reorganize imports

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: make column 3 sticky while only column 2 scrolls in search layout

- Constrain the flex container to viewport height with overflow-hidden
- Wrap results list in overflow-y-auto so only it scrolls
- Remove sticky positioning from column 3 (no longer needed)
- Keep app-search-actions fixed above the scrollable results list

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* add document page saving upon scrolling to scroll back when changing of conversion

* refactor scrolling to also work for primary documents

* feat: add AgentPreview component and refactor preview to signal-based API

## What changed

### New features
- Add `AgentPreview` component (`src/components/preview/agent/agent-preview.ts`):
  a dedicated preview panel for the agent/chat pages, embedding
  `PreviewNavbar`, `PreviewHeader`, and `PreviewContent` in a single
  layout that reacts to `PreviewService` events.
- Integrate `AgentPreview` into the chat detail page (`id.page.ts`) via a
  `ResizablePanelGroup`: the preview panel auto-opens when a document is
  selected in `SelectionStore` and can be closed (resets selection so the
  same reference can be reopened).

### Refactoring
- Replace all `getState(selectionStore)` calls with the signal-based
  `selectionStore.id?.()`, `selectionStore.queryText?.()`, and
  `selectionStore.previewHighlights?.()` accessors in both
  `src/app/` and `src/components/` preview trees.
- `PreviewContentComponent` gains a `conversion` input and an
  `onLoadedData` output; adds full multi-conversion support
  (primary/secondary preview, passage-page scrolling via `QueryService`).
- `PreviewContentComponent` now destroys its resource on `DestroyRef`
  and closes the preview in the service on teardown.

### Dependencies
- Bump `@sinequa/agent` 0.0.41 → 0.0.45
- Bump `@sinequa/atomic-angular` 0.4.28 → 0.4.29

### Search layout
- Rework `search-all.html` template (layout clean-up, column structure).
- Add `search-all-layout.md` documentation describing the 3-column layout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: restore environment.ts to dev/11 defaults

Reverts local dev overrides (app: 'agent') back to the base branch
values (app: 'mint_rnd', autoOAuthProvider: 'identity-dev').

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix missing import

* Change the color of the sidebar menu in the light theme

* add doc for preview multiconversion

* have menu position working for mobile

* fix hidden search input for mobile

* ES-31029 #done ES-31018 #done bump @sinequa/atomic-angular to 0.4.30 and @sinequa/ui to 0.2.14

- Update `@sinequa/atomic-angular` from 0.4.29 to 0.4.30
- Update `@sinequa/ui` from 0.2.12 to 0.2.14
- Add `--color-backdrop` CSS variable mapping in theme.css

* ES-31074 #done bump @sinequa/atomic-angular to 0.4.31

- update Angular devkit to 20.3.21

* ES-30455 #done bump @sinequa/atomic-angular from 0.4.31 to 0.4.32

* apply review recommendations: use cn(), CSS variable for mobile header height, simplify isMobile signal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix typos and missing newline in preview multi-conversion docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix AI panel visibility: hide when no results, simplify cn() ternary

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* center results column with margins when AI and preview are both disabled

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* update search content height and move layout doc to docusaurus

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* move history panel and chat controls from layout to page components

- AgentLayoutComponent is now a lightweight shell (router-outlet only):
  removed history panel, resizable panels, providers, SavedChat, History/NewChat icons,
  BreakpointObserverService, and related signals/effects

- ChatIdPage and ChatNewPage now own the full 3-panel layout:
  - panel 1 (history): collapsible SavedChat panel, responsive (full-screen on mobile,
    15–25% on desktop), toggled via historyCollapsed signal
  - panel 2 (agent): AgentInjector with history/new-chat action buttons on desktop,
    fixed top-right buttons on mobile
  - panel 3 (preview): existing AgentPreview panel, unchanged

- Panel layouts updated from 2-panel [agent, preview] to 3-panel
  [history, agent, preview] with correct size arrays ([0,100,0] / [25,75,0] / [0,60,40])

- startNewChat() dispatches createAgentNewChatEvent before navigating to /chat/new
  to reset the agent state properly

- history.icon and new-chat.icon: swapped SVG paths and corrected sizes
  (icons were accidentally inverted between the two components)

- agent-preview.ts: == → === strict equality fix, import reorder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix inverted button titles, 100dvh, and xmark-icon tag inconsistency

- Swap title attributes on mobile buttons: toggleHistory → "History", startNewChat → "New Chat"
- Replace 100vh with 100dvh for correct mobile viewport height handling
- Use self-closing <xmark-icon /> consistently in new.page.ts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* close preview when opening history to prevent inconsistent panel state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* extract shared agent page layout into AgentPageLayoutComponent

ChatIdPage and ChatNewPage were near-identical. Moved all shared template
and logic (history panel, preview panel, mobile buttons, effects, signals)
into AgentPageLayoutComponent which accepts an optional chatId input.

ChatIdPage and ChatNewPage are now thin wrappers: ChatIdPage resolves
the chatId from the route and passes it down; ChatNewPage renders
the layout with no chatId.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(themes): update dark sidebar foreground color to sage-200

Change `--sidebar-foreground` from `--color-sage-700` to `--color-sage-200` in the dark section of the ChapsVision theme to improve text contrast and readability against the dark sidebar background (`--color-sage-950`).

* refactor(agent): replace bound string literals with static attribute bindings

Convert `[variant]="'ghost'"` and `[size]="'icon'"` to `variant="ghost"` and `size="icon"` in agent-page-layout template, and reorder imports alphabetically.

* chore(deps): bump @sinequa packages to latest versions

- @sinequa/agent: 0.0.45 → 0.0.48
- @sinequa/atomic-angular: 0.4.29 → 0.4.32
- @sinequa/ui: 0.2.12 → 0.2.14

* ES-30924 #done fix(search): improve tabs and filters display

- Wrap navbar-tabs in a bordered container with noTruncate to prevent ellipsis truncation
- Fix filters-bar layout from flex to block to avoid overflow issues

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* style: simplify navbar-tabs wrapper div styling in search-all

Remove border styling and inline `max-width` from the `navbar-tabs` wrapper div, replacing with Tailwind's `max-w-full` utility class. Also removes a leftover commented-out `<navbar-tabs>` line.

* style: remove hardcoded bg-sage-50 background from navbar-tabs in search-all

* #noJiraCheck fix(theme): update ChapsVision primary color tokens and alt logo for light/dark modes

- Replace `--logo-large-alt-url` with non-white SVG for light mode
- Fix `--primary-hovered-foreground` from white to sage-900 in light mode
- Reorder `--primary-foreground-hovered` and `--primary-foreground-pressed` to follow hovered/pressed blocks for consistency
- Add missing `--primary-foreground-hovered`, `--primary-hovered-foreground`, and `--primary-foreground-pressed` tokens in dark mode

* fix(sidebar): swap logo variants and fix dark theme logo URL assignments

- Use `--logo-large-alt` for the large logo in the sidebar header
- Swap `--logo-large-url` and `--logo-large-alt-url` asset references in chapsvision.css so the correct SVG (color vs white) is used per context
- Reformat long import statements for readability
- Minor style fix: remove parentheses around `word` arrow function parameter

* chore(deps): bump @sinequa/atomic-angular and @sinequa/ui packages

- Upgrade @sinequa/atomic-angular from 0.4.32 to 0.4.33
- Upgrade @sinequa/ui from 0.2.14 to 0.2.16

* chore(deps): pin @sinequa/atomic-angular to exact version 0.4.33

Remove the caret (^) range from @sinequa/atomic-angular to prevent automatic minor/patch updates and ensure a deterministic, reproducible install.

* feat(sidebar): add closeSidebarOnMobile method to close sidebar on mobile when menu items are clicked

* refactor(sidebar): centralize mobile sidebar closing via Router NavigationEnd

Replace duplicated closeSidebarOnMobile() methods across sidebar group
components with a single effect() in MainSidebarComponent that listens
to NavigationEnd router events.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* ES-31235 #done Bump @sinequa/agent to 4.0.0, @sinequa/assistant to 4.0.0,

Also update Angular DevKit/CLI/build tools from 20.3.21 to 20.3.22 and picomatch from 4.0.3 to 4.0.4.

* #noJiraCheck chore: remove postinstall script auto-updating agent package

The `postinstall` script that automatically ran `npm add @sinequa/agent@latest` and `npm run transloco:extract-scoped-libs` on every `npm install` has been removed. This prevents unintended automatic updates to the agent package and avoids the extra extraction step being silently triggered on install.

* Revert "#noJiraCheck remove postinstall script"

* chore: remove auto-install of @sinequa/agent from postinstall script

The `npm add @sinequa/agent@latest` command was removed from the `postinstall`
script to avoid automatically installing/updating the package on every
`npm install`. The transloco extraction step is preserved.

* ES-31237 #done fix(search): move infinite scroll trigger above feedback component

Reorder the infinite scroll trigger div to appear before the feedback
component, and add a `h-3.75` height class to ensure the scroll sentinel
is properly visible and detectable by the IntersectionObserver.

* ES-30768 #done fix(animations): hide element with display:none at animation boundaries

Add `display: none/block` keyframe steps to `slide-in-right` and
`slide-out-right` animations to ensure the element is visually hidden
before the animation starts and after it ends, preventing flash of
invisible content and lingering invisible elements in the DOM flow.

* style(animations): simplify slide keyframes and add `forwards` fill mode

- Add `forwards` fill mode to slide-in-right and slide-out-right animations
  to ensure elements stay in their final state after the animation ends
- Simplify slide-in-right keyframe by removing the `display: none/block` hack
  at 0%/1% in favor of opacity/transform only
- Add explanatory comment about discrete property animation browser requirements
  (Chrome 116+, Firefox 117+, Safari 17.4+)

* style: update slide-out-right animation comment for clarity

Revise the inline CSS comment explaining the `display` discrete property animation:
- Clarify that `slide-out-right` uses a 99%/100% split to hide the element after it fully translates out
- Explain that `forwards` retains the final keyframe state after both animations complete
- Remove the outdated reference to the 0%/1% split and "flash of invisible content"

* ES-31242 #done fix(i18n): handle translation loading errors in TranslocoHttpLoader

Add catchError to the translation HTTP request to return an empty
object on failure, preventing infinite resource fetching loops when
a translation file cannot be loaded.

* fix(search): fix z-index layering for preview slide animations

Add `z-0`/`z-1` classes to preview and assistant panels to ensure proper stacking order during slide-in/out transitions, preventing overlap rendering issues.

* fix(i18n): handle missing translation file gracefully

Add error handling to the Transloco HTTP loader so that a failed translation file request returns an empty object instead of throwing an error. This prevents the app from breaking when a translation file is missing or unavailable.

* chore(deps): upgrade @sinequa/atomic-angular and @sinequa/ui to stable releases

- Bump @sinequa/atomic-angular from ^0.4.32-dev.1 to ^0.4.36
- Bump @sinequa/ui from ^0.2.14-dev.1 to ^0.2.16
- Update transitive dependencies (Angular DevKit, picomatch, etc.)

* feat(router): implement custom route reuse strategy to maintain assistant state across page changes

* fix(search): datepicker UX and layout improvements

- Move search-with-autocomplete into search pages and remove from layout
- Add noTruncate to navbar-tabs in search pages
- Fix filters-bar layout classes
- Add logo-sidebar CSS variable with light/dark theming
- Update fr.json date range labels (Du/Au)
- Adjust search content height variable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(deps): upgrade @sinequa/atomic-angular and @sinequa/ui packages

- Bump @sinequa/atomic-angular from 0.4.33 to ^0.4.37
- Bump @sinequa/ui from ^0.2.16 to ^0.2.17
- Pin @sinequa/assistant to exact version 4.0.0 (remove range specifier)

* feat(search): move search overview inside scrollable container and fix column margin

- Move `app-search-overview` inside the scrollable `min-h-0 flex-1 overflow-y-auto` div so it scrolls with results instead of being fixed above them
- Replace `mx-4` with `m-4` on column 3 container to add vertical margin alongside the existing horizontal margin

* ES-31253 #done Implement agent search results side panel

- Add ExpandedSearchResultsComponent and SearchExpansionService from @sinequa/agent
- Add search panel slot in ResizablePanelGroup with open/close logic
- Add computeLayout() to handle all panel combinations (history/search/preview)
- Add activeMobilePanel computed signal for mobile single-panel navigation
- Add closeSearch() method wired to ExpandedSearchResults close event
- Minor: remove mb-2 from agent-preview container

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(sidebar): add debug mode toggle functionality in user menu

* ES-31308 #done feat(i18n): add translation override system for atomic-angular scopes

- Add TranslocoHttpLoaderOverrides to deep-merge base and override translation files per scope
- Add provideTranslocoProviders() to centralize Transloco configuration
- Add deepmerge utility for nested translation key merging
- Refactor app.config.ts to use provideTranslocoProviders()
- Add i18n-overrides documentation page
- Move localization.md into localisation/ subfolder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: pin `@sinequa/assistant` to exact version 4.0.0 and update lock file

* Refactored SavedChat component styles: updated hover/active states, improved dark mode support, and aligned background colors with theme variables. Adjusted Chapsvision theme for better consistency.

* chore: fix security vulnerabilities by upgrading dependencies via npm audit fix

* ES-31285 #done ES-31310 #done ES-30880 #done ES-31335 #done upgrade Sinequa packages

- @sinequa/atomic: 0.0.139 → 0.0.140
- @sinequa/atomic-angular: 0.4.36 → 0.4.44
- @sinequa/ui: 0.2.16 → 0.2.17
- vite: 7.1.11 → 7.3.2
- Minor lock file adjustments (dev flag, nested deps)

* bump version atomic 0.0.141

* refactor(routing): use route data flag for reuse strategy instead of hardcoded path

* docs: add Custom Route Reuse Strategy documentation page

* chore(docs): update docusaurus package-lock.json dependencies

- Remove unused AI SDK packages (@ai-sdk/gateway, provider, provider-utils, react)
- Upgrade Algolia packages (e.g. abtesting 1.8.0 → 1.16.1, client-common 5.42.0 → 5.50.1)
- Update lodash 4.17.23 → 4.18.1 and other transitive dependencies
- Refresh lockfile with latest resolved versions and integrity hashes

* chore(deps): upgrade @sinequa/atomic-angular to 0.4.44

- Pin @sinequa/assistant to exact version 4.0.0 (was ^4.0.0)
- Upgrade @sinequa/atomic-angular from 0.4.33 to ^0.4.44
- Refactor debug mode effect in SidebarUserMenuComponent: consolidate
  agent debug and user settings debug into a single effect, removing
  the separate toggleDebugMode effect

* ES-31371 #done chore(deps): bump @sinequa/agent from 4.0.0 to 4.0.1

Update the `@sinequa/agent` package to version 4.0.1 and relax the
version constraint in package-lock.json to allow patch updates (^4.0.1).

* #noJiraCheck chore: add GitHub Actions workflow for automatic version bumping on PR merge

* ES-31378 #done docs(tutorial): update highlighting guide with release-specific paths

Add a versioned info block distinguishing `highlight.config.ts` location between release 11.13.0 and earlier (`src/app/`) and 11.14.0 and later (`src/config/`), include properly indented code snippets for both versions, and fix trailing whitespace.

* feat(i18n): add missing translations for navigation menu items in German, English, and French

* ES-31255 #done fix(routing): protect home route with auth guard and query resolver

Add `AuthGuard()` and `queryNameResolver` to the home route to ensure unauthenticated users are redirected and the query name is resolved before the component loads.

* refactor: enhance allowAI logic to improve user experience during searches

* feat: replace FontAwesome icons with custom SVG components across various components

- Updated card menu to use SVG icons for menu actions.
- Replaced icons in record card with corresponding SVG components.
- Removed unused history and new chat icon components.
- Updated preview navbar to use SVG icons for navigation actions.
- Replaced icons in sidebar user menu with SVG components.
- Updated user menu to use SVG icons for user actions.
- Replaced icons in bookmarks, collections, recent searches, and saved searches components with SVG components.
- Removed FontAwesome stylesheet from index.html.

* ES-31388 #done bump version assistant and agent libs

assistant -> 4.0.2
agent -> 4.0.2

* feat(cards, navbar): replace Font Awesome icons with Lucide icon components

* fix: update @sinequa/atomic-angular and @sinequa/ui to dev versions in package.json and package-lock.json

* ES-30778 #done ES-31220 #done ES-31195 #done chore(deps): bump @sinequa/atomic-angular, @sinequa/ui

Update `@sinequa/atomic-angular` from `^0.4.44` to `^0.4.47`, `@sinequa/ui` from `^0.2.16` to `^0.2.20`, `@angular/build` from `20.3.22` to `20.3.23`, and `vite` from `7.1.11` to `7.3.2`. Lockfile reflects new nested dependency resolutions for `@angular-devkit/architect`, `@angular-devkit/core`, and updated esbuild platform binaries bundled with the newer vite version.

* ES-31233 #done chore: upgrade @sinequa/atomic-angular and Angular

- Bump `@sinequa/atomic-angular` from `^0.4.44` to `^0.4.48`
- Upgrade `@angular/build` from `20.3.22` to `20.3.23`
- Update `vite` from `7.1.11` to `7.3.2` (transitive via @angular/build)
- Update related `@angular-devkit` packages to `0.2003.23`

* #noJiraCheck feat(docs): add documentation versioning

* feat: Update User Settings documentation with new structure and details

feat: Add APP_FEATURES deprecation notice and documentation

docs: Revise Highlights documentation for clarity and structure

feat: Introduce InlineWorker utility for creating Web Workers inline

feat: Enhance signIn function documentation with flow diagrams and error handling

feat: Add withFetch utility for handling async operations with error management

feat: Document bootstrapApp function for application initialization process

* style: update Docusaurus theme colors and styles for improved aesthetics

* Add detailed documentation for Preview Internals and Search Data Flow

- Introduced a new document detailing the internals of the Preview feature in Mint, explaining how it is triggered, rendered, and configured.
- Updated the existing Preview documentation to clarify the opening mechanism and component architecture.
- Removed outdated Search All Component documentation and replaced it with a comprehensive guide on Search Data Flow, detailing the lifecycle of a search and the synchronization between URL and store.
- Deleted unnecessary record card documentation and consolidated search-related content for better clarity and organization.

* Add missing translations for navigation menu and update search component for localization

* chore(deps): upgrade @sinequa/atomic, @sinequa/atomic-angular, and @sinequa/ui to version 1.0.0

* sync package-lock.json

* ES-31393 #done chore(deps): update @sinequa/atomic, @sinequa/atomic-angular, and @sinequa/ui to latest versions

Do not notify when the user is not authenticated.

* Add translations for sidebar and search component placeholders

* ES-31048 #done feat(assistant): implement OnRouteAttached lifecycle hook for re-initialization

Introduce the `OnRouteAttached` interface in `CustomReuseStrategy` and implement it in `AssistantLayoutComponent` so that initialization logic (setting the app title, clearing selection store) is re-triggered when the route is reattached after being cached, not just on first construction. Also refactors computed signal callbacks and arrow functions for consistent formatting.

* ES-31479 #done chore(deps): bump @sinequa/assistant from 3.10.11 to 3.10.12

Update @sinequa/assistant to 3.10.12 and sync transitive dependency
updates for @hono/node-server (1.19.11→1.19.14) and hono (4.12.7→4.12.12).

* #noJiraCheck restore Font Awesome stylesheet link in index.html

* Update src/app/components/search/search.component.html

* Refactor AI button translation in search component

* sync package-lock.json

* remove overrides

* refactor: organize imports and improve formatting in app.config.ts

* ES-31539 #done fix: newChat() initialization

the newChat() call with an isAssistantReady() check to avoid calling it before the assistant is initialized.

* ES-31539 #done fix: newChat() initialization

the newChat() call with an isAssistantReady() check to avoid calling it before the assistant is initialized.

* add custom reuse strategy class

* chore: upgrade oxlint to v1.60.0 and remove no-unused-vars rule

- Bump oxlint from ^1.46.0 to ^1.60.0 with updated platform bindings
- Remove `eslint-no-unused-vars` rule from oxlintrc as it is now handled by default correctness warnings

* feat: implement transloco providers and update translation loader paths

* feat(assistant): simplify init logic and fix bookmark i18n keys

- Remove redundant `initialize()` call and `onRouteAttached` lifecycle hook in `AssistantLayoutComponent`, inlining the selection store clear directly in `ngOnInit`
- Fix translation keys in bookmarks component: rename `myBookmarks` → `bookmarks.myBookmarks` and `bookmark.removeBookmark` → `bookmarks.removeBookmark` to match i18n namespace convention

* chore: update @sinequa/atomic-angular and @sinequa/ui to version 1.1.0

* ES-31572 #done Refactor theme styles and introduce badge color tokens

- Updated search button size and icon-only attribute in search.component.html.
- Reordered imports in styles.css to include theme.css after chapsvision.css.
- Modified theme.css to remove inline declaration and adjust theme properties.
- Added badge-tokens.css for semantic color variables dedicated to the Badge component.
- Enhanced chapsvision.css by importing galactik-tokens and badge-tokens, and refined theme variables.
- Created galactik-tokens.css to define a comprehensive color ramp for various themes.
- Updated sinequa.css to import galactik-tokens and badge-tokens, and refined color variables for better consistency.

* ES-31592 #done fix(preview): remove font-size scroll anchor and fix scroll propagation

Remove the visible paragraph tracking logic used to maintain scroll
position during font-size changes, as it was fragile and unnecessary.

Add `container: 'nearest'` to `scrollIntoView` options to prevent
scroll propagation to the parent application body when navigating
through the preview, avoiding unwanted scroll-to-top side effects.

* ES-31269 #done updates atomic-angular documentation with improved component descriptions,
API reference formatting, and changelog entries for new features such as
`aggregations` input on filters, `getAuthorized` method on app store,
and JSON Method Plugin dependency injection examples.

* ES-31048 #done fix: update @sinequa/atomic-angular to version 1.0.2

* Add postinstall for agent dependency

* fix:…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants