<!-- Source: https://docs.squirro.com/en/latest/getting/release/3-17/3.17.2-release-notes.html -->
# 3.17.2 Release Notes

Squirro 3.17.2 was released on October 1, 2026.

Learn more about the [Squirro Release Process](../squirro-release-process.md#getting-squirro-process).

> **Notes for administrators**
>
> This release introduces important changes that may require adjustments to your existing setup. [Learn more](#breaking-changes)

 Release summary

Squirro Neo tasks can follow real business calendars, such as quarterly reporting, month end, or the first business day, and each task opens on its own page with its run history.

Teams deploying Neo agents can manage several environments, such as test and production, and several accounts from one command-line setup.

Speech to Text in Squirro Chat transcribes in the interface language of each user, such as German, French, or Italian, instead of always English.

Data ingestion reports a batch it cannot write as failed, and cleans up interrupted batches automatically.

Customers using the Neo command-line tools or the task API need to update their scripts as part of the upgrade.

## Improvements

### Neo Tasks

- Neo task form authoring every schedule shape, with an optional task assistant and a preview of the next three runs.
- Redesigned Neo task page, showing the selected run as a conversation next to the Run History panel, and a Tasks group in the sidebar.
- Neo task schedules for quarterly and other month sets, month end, weekday positions such as the second Tuesday, and several days in a month.
- Biweekly, every N months or years, several times a day, and end dates available in Neo task schedules.
- `first_business_day` and `last_business_day` values for `by_month_day` in Neo task schedules, counting Monday to Friday without public holidays.
- `schedule_status` on Neo tasks, reporting `paused` for a task switched off and `finished` for one past its end date.
- Neo tasks that can never run refused when saved, such as one ending in the past or scheduled for February 30.
- Task requests handled without stalling the Neo conversations of other users.

### Neo Interface

- Rail navigator for jumping between questions in long Neo conversations, with Alt+Arrow Up and Alt+Arrow Down shortcuts.
- Streaming spinner in the Neo sidebar shown only on conversations other than the open one.
- `items` query parameter on the Neo chat page, attaching the given documents to the composer.
- Operating system reduced-motion setting honored across the Neo interface.
- Accessible name on the administrator-managed marker in the Neo Connectors dropdown.

### Neo CLI

- Named deploy targets in the Neo `genai` CLI, managed with `genai target` and holding several environments selected with `--env`.
- `genai target add` asking for the cluster and listing the projects you can deploy to when run without options.
- Logins for several accounts on one cluster in the `genai` CLI, with each environment naming the account it uses through `--principal`.
- `--api-key-stdin` option on `genai login` and `genai init`, reading the token from standard input.
- Agent skill carrying the `genai` CLI documentation, installed with `genai skill install`, and by `genai init` unless `--no-skill` is passed.
- `genai explain` available against a deployed project, for project administrators.
- Login offered by the `genai` CLI on a terminal when a cluster refuses the stored credential.
- Exit status `3` from `genai whoami` for a login that needs action first, with every command naming the account it uses.
- `genai --version` option printing the installed release.
- `genai` CLI credentials cache written atomically and readable only by its owner.

### Squirro Chat Widget

- Speech to Text language setting in the App & Nav Bar settings, overriding the interface language for a project.
- Recording state on the Speech to Text microphone button, with spoken text appended to the existing input.
- Items count removed from the Chat widget sidebar.

### Platform

- Ingestion requests reported as failed when their batch cannot be written.
- Incomplete ingestion batches left by an interrupted write removed automatically.
- Obsolete `content` and `webshot` services removed, with their packages uninstalled on upgrade.
- `new_pipelet` method in the SquirroClient SDK, registering or updating a pipelet for the current tenant.
- Custom per-request data passed from Squirro Chat requests to the results transformer configured on the project.

## Bug Fixes

### Neo Tasks

- Quarterly Neo task firing every month.
- One unreadable task schedule failing the whole Neo task list.
- `genai task update` turning auto-firing back on for a paused task when its time was edited.
- Approval rules not removable from a Neo task, with the update reported as successful.
- Misspelled or unused Neo task schedule fields accepted and ignored silently.

### Neo Interface

- External-link dialog title reading “Leaving ProjectName” in every language of the Neo interface.
- English-only external-link dialog on Neo search result source links and the full-page item detail.
- Neo chats started by a task, or reloaded, showing the standard project setup instead of their assistant.
- Follow-up turn duplicating its row in the Neo sidebar, and the streaming spinner never clearing for a conversation answered in the background.
- Opening a cited document in full screen resetting it to page 1, or leaving the Neo item detail blank.

### Neo CLI

- Cluster URL typed at a prompt storing a login that later `genai` commands could not find, and `genai logout` leaving the token on disk.
- `GENAI_API_KEY` written to disk and preferred on later runs, keeping an old key in use after rotation.
- Neo preference value sent as a list or an object failing the whole request.

### Neo Core Library

- Neo bundles importing from `@squirro/neo-core/components` failing to build against the 3.17.1 package.

### Squirro Interface

- Re-uploaded file discarded when editing a file data source, with the save failing silently.
- Download button missing from the Item Detail view for documents whose original file is not a PDF.
- Custom widget editor showing a blank screen when opened a second time.
- Speech to Text transcribing in English whatever the interface language.
- Overriding a single LLM setting in `genai.sqgpt.settings` at project level failing validation, or the Set Value option snapping back to Default To Server Setting.
- Server-level LLM settings no longer reaching a project after its Project Configuration dialog in the Chat widget was saved.
- Multi-select facet values picked from the facet search box producing malformed queries, or combining different facets with OR.

### Platform

- Ingestion requests intermittently failing with a 500 error while another batch finished processing.
- Ingestion data file left truncated by a crash, failing every later attempt to process it.

### Containerized Deployments

- Technical Preview - Chat answers and summaries appearing all at once instead of streaming in containerized deployments.
- Technical Preview - Uploaded pipelets and their data files lost in containerized deployments when the `plumber` service restarted.
- Technical Preview - Machine learning workflows failing in containerized deployments that cannot reach Hugging Face.
- Technical Preview - Thumbnail Extraction pipeline step failing in containerized deployments on non-PDF items carrying a `link` or `webshot_picture_hint` field.

## Breaking Changes

### Neo Tasks

- The Neo task schedule format is replaced, and the old fields are refused. `time`, `recurrence`, `days_of_week`, `day_of_month`, and `month_of_year` become `times`, `freq`, `interval`, `starts_on`, `ends_at`, `by_day`, `by_month_day`, and `by_month`, modeled on RFC 5545 recurrence rules. The `genai task` flags follow: `--recurrence` becomes `--freq`, `--days-of-week` becomes `--by-day` with weekday tokens such as `MO` or `2TU`, `--day-of-month` becomes `--by-month-day`, and `--month-of-year` becomes `--by-month`. Stored schedules are converted during the upgrade, and rolling back is refused once a task uses a capability the old format cannot express. Update any client or script that creates or reads task schedules.

### Neo CLI

- `genai init` selects a registered deploy target and no longer takes `--cluster` or `--project`, and the `.genai/target.yaml` file in a checkout is no longer read. Register the destination with `genai target add NAME --cluster URL --project ID`, then run `genai init --target NAME`. In an existing checkout, the first command run after upgrading names the cluster and project the old file holds, and the two commands that convert them into a target.
- `status`, `explain`, `log`, `reseed`, `login`, `logout`, `whoami`, and the `task` commands of the `genai` CLI no longer take a directory argument, as in `genai status ./ws`, and passing one is a usage error. Run them from inside the directory instead.
- `genai login` changes in four ways. `--manual` is removed, so use `--api-key-stdin` instead, which prompts for the token without echoing it on a terminal. Without a terminal, the command exits at once instead of waiting for a browser approval, so drop any CI `login` step, since every other command authenticates from `GENAI_API_KEY`, or pass `--use-device-code` to run the device login without a terminal. `GENAI_NO_INPUT` is no longer read, and commands prompt only when standard input is a terminal. Credentials in `~/.config/genai/credentials.yaml` use a new format that older CLI versions cannot read, so log in again before going back to an older CLI on the same machine.

### Neo Core Library

- `@squirro/neo-core/chat` no longer exports `ITodoListBlock`, `ITodoItem`, or `isTodoListBlock`, and `IOutputBlock` drops the `output_block.todo_list` member. Remove any reference to them from a custom Neo interface.

### Squirro Chat Widget

- Custom Chat `SidebarComponent` overrides no longer receive the `indexedItems` prop. Use `sourcesInfo` instead, reading the `items_indexed` value of each source.

### KEE

- KEE sources no longer accept the legacy `dsn` option. Declare a CSV source with `source_type` and `source_file`.

## Installation and Upgrade

For new installations, find step-by-step instructions on the [Install and Manage Squirro with Ansible](../../install/ansible/index.md#ansible) page (recommended) and [Installing Squirro on Linux](../../install/linux.md#install-linux) pages.

To upgrade an existing installation, see the [Upgrading Squirro](../../install/upgrade.md#install-upgrade) page.
