Release/3.6.0#6044
Conversation
The linux-builds artifact now contains both x86_64 and arm64 binaries (AppImage, deb, rpm), pushing the zipped payload past VirusTotal's ~650MB /files/upload_url limit. Uploads were failing with a cryptic "jq: parse error" because VirusTotal returns a non-JSON error body. Split the linux scan into two virtual matrix entries (linux-x86_64-builds and linux-arm64-builds) that both resolve to the same linux-builds artifact but zip only the files for their architecture, keeping each payload well under the VT limit. No change needed in the build, AWS upload, or e2e workflows. Also prints the zip size on upload and logs the raw VT response on failure so future size/rate-limit issues surface clearly instead of as a jq parse error. Made-with: Cursor
* register vadd command * reorganize dtos * add create vector set with elements + add elements to vector set endpoints * add the build vadd command * add the actual new endpoints and optimize models * add bruno doc * return elementNames directly
* create add vector thunk and refactor others * add factory for adding vector set element data
Made-with: Cursor
* create attribute editor component
Bumps [vite-plugin-compression2](https://github.com/nonzzz/vite-plugin-compression) from 1.1.0 to 2.5.3. - [Release notes](https://github.com/nonzzz/vite-plugin-compression/releases) - [Changelog](https://github.com/nonzzz/vite-plugin-compression/blob/master/CHANGELOG.md) - [Commits](nonzzz/vite-plugin-compression@v1.1.0...v2.5.3) --- updated-dependencies: - dependency-name: vite-plugin-compression2 dependency-version: 2.5.3 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [get-port](https://github.com/sindresorhus/get-port) from 7.0.0 to 7.2.0. - [Release notes](https://github.com/sindresorhus/get-port/releases) - [Commits](sindresorhus/get-port@v7.0.0...v7.2.0) --- updated-dependencies: - dependency-name: get-port dependency-version: 7.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@redis-ui/components](https://github.com/redislabsdev/redis-ui) from 44.0.1 to 44.0.2. - [Commits](https://github.com/redislabsdev/redis-ui/commits) --- updated-dependencies: - dependency-name: "@redis-ui/components" dependency-version: 44.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from 3.0.2 to 4.0.1. - [Release notes](https://github.com/dorny/paths-filter/releases) - [Changelog](https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md) - [Commits](dorny/paths-filter@v3.0.2...v4.0.1) --- updated-dependencies: - dependency-name: dorny/paths-filter dependency-version: 4.0.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
* add new and reorganize old hooks to be all in hooks folder of the vector-set-details folder * create vector set element form for adding elements * update element details to use attribute editor * surround all inputs with tooltip provider, as validation includes it (introduced in some library upgrade) * increase z-index so add elements panel is above the details * include the add elements form components in the details component and the button in the subheader
Bumps [@xmldom/xmldom](https://github.com/xmldom/xmldom) from 0.8.12 to 0.8.13. - [Release notes](https://github.com/xmldom/xmldom/releases) - [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md) - [Commits](xmldom/xmldom@0.8.12...0.8.13) --- updated-dependencies: - dependency-name: "@xmldom/xmldom" dependency-version: 0.8.13 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [vite-plugin-electron-renderer](https://github.com/electron-vite/vite-plugin-electron-renderer) from 0.14.5 to 0.14.6. - [Release notes](https://github.com/electron-vite/vite-plugin-electron-renderer/releases) - [Changelog](https://github.com/electron-vite/vite-plugin-electron-renderer/blob/main/CHANGELOG.md) - [Commits](electron-vite/vite-plugin-electron-renderer@v0.14.5...v0.14.6) --- updated-dependencies: - dependency-name: vite-plugin-electron-renderer dependency-version: 0.14.6 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.4.0 to 7.5.5. - [Release notes](https://github.com/protobufjs/protobuf.js/releases) - [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md) - [Commits](protobufjs/protobuf.js@protobufjs-v7.4.0...protobufjs-v7.5.5) --- updated-dependencies: - dependency-name: protobufjs dependency-version: 7.5.5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [basic-ftp](https://github.com/patrickjuchli/basic-ftp) from 5.2.1 to 5.3.0. - [Release notes](https://github.com/patrickjuchli/basic-ftp/releases) - [Changelog](https://github.com/patrickjuchli/basic-ftp/blob/master/CHANGELOG.md) - [Commits](patrickjuchli/basic-ftp@v5.2.1...v5.3.0) --- updated-dependencies: - dependency-name: basic-ftp dependency-version: 5.3.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
The example only showed { eula: true } but the API requires all four
agreement keys (eula, analytics, notifications, encryption) on first
setup. This caused confusion for API consumers getting 400 errors.
Made-with: Cursor
* extract vector set element form fields component * create thunk for adding vector set key * update the vector set element form hook to get dimension from the first element dimension * add vector set add-key component * follow pattern and add vector set add key type to telemetry, filter option etc
* chore(deps): bump uuid to 14.0.0 across root, api and ri-explain * chore(api): declare babel-jest, @babel/core, @babel/preset-env explicitly
The query onboarding popover on the Vector Search page is shown on the first visit to introduce the Query Editor and Query Library tabs, but it is not tied to the index-creation event. When users landed on the page with pre-existing indexes they saw a misleading "Index created successfully" title. Replace it with a generic, index-agnostic message that describes the actual purpose of the popover: introducing the two ways to search. Also update the unit test, the e2e page object locator, and the spec docstring that referenced the old title. Made-with: Cursor
* chore(deps): bump unified from 10.1.2 to 11.0.5 * chore(deps): bump unified ecosystem plugins to v11 majors
* chore(deps-dev): bump vite from 5.4.21 to 6.4.2 * chore(deps-dev): ensure Vite 6 compatibility
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](follow-redirects/follow-redirects@v1.15.11...v1.16.0) --- updated-dependencies: - dependency-name: follow-redirects dependency-version: 1.16.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
* update dto to support fp32 vector format * update dto to support both vector values and vector fp32 format * update vector set service to support adding fp32 * add tests * update bruno docs
* add support for fp32 in thunks + update tests * add more mocks in vector set element factory * update add key vector set test * extend parsing and validation of the form to support fp32 format
Bumps [@xmldom/xmldom](https://github.com/xmldom/xmldom) from 0.8.12 to 0.8.13. - [Release notes](https://github.com/xmldom/xmldom/releases) - [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md) - [Commits](xmldom/xmldom@0.8.12...0.8.13) --- updated-dependencies: - dependency-name: "@xmldom/xmldom" dependency-version: 0.8.13 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Promote vectorSearchV2 rollout from 10% to 100% so the feature is available to all users. Made-with: Cursor
Show an explicit fallback message when FT.EXPLAIN output has no renderable plan to avoid blank visualization output. References: #0 Made-with: Cursor
…ata (#6009) The Search page's "create index from existing data" key browser shares the state.browser.keys Redux slice with the Browser page. The Browser page's search pattern (state.browser.keys.search) was not reset on mount, so it leaked into the index-creation key list and hid keys. Dispatch setPatternSearchMatch('') on mount and cleanup in the vector-search keys-browser context so the list always starts unfiltered, in both directions. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* chore: bump Node.js to 24.16.0 LTS Aligns the host runtime with Electron 42's embedded Node 24, removing the dev/prod parity gap. Backend code now runs on the same Node major in dev, tests, the packaged desktop app, and the web Docker image. * ci: read Node version from .nvmrc in install-all-build-libs action Removes the hardcoded duplicate of the Node version pin so future bumps only need to update .nvmrc.
* bump actions * remove unused action * bump these as well
Vector Set was using the neutral gray `secondary400` (#8A99A0) in both light and dark themes, which had poor contrast against either background and made the badge blend into the row. Switch to `informative500` (#0284C7) from the redis-ui palette — a saturated sky/cyan blue that passes WCAG AA on both themes and stays distinct from the other key-type colors (Hash royal-blue, JSON muted gray-blue).
* docs(skills): add redis-insight-plugin skill for Workbench plugins
* feat(ui): add copy value action to String key view
* feat(api): add rejson-rl/download-value endpoint * docs(bruno): add JSON download-value request * feat(ui): add copy/download value action to JSON key view * feat(ui): add copy button to JSON text editor (edit mode)
* feat(RI-8212): add dev-array feature flag * fix(RI-8212): bump features-config version to 3.91 3.10 is parsed as the JS number 3.1 (trailing zero dropped), which is not greater than the previously stored 3.9 in LocalFeaturesConfigService.sync(). On upgraded installs the new dev-array entry would never be persisted. 3.91 is parsed as 3.91 > 3.9 and triggers the sync correctly while staying on the existing 3.x version line.
* feat(settings): display build commit SHA in app version Adds an optional `buildCommitSha` field to GET /api/info, populated from RI_APP_BUILD_COMMIT_SHA at build time with a `git rev-parse` fallback for local runs. The Settings page renders the short SHA next to the version when RI_SHOW_BUILD_COMMIT_SHA is enabled. Display is gated per environment by default (on for non-production, off for production). Manual builds expose a `show_build_commit_sha` workflow_dispatch checkbox so the operator can override the default for any environment.
…24+ (#6028) yauzl@2 (via extract-zip in electron's install.js) silently extracts only the first entry on Node >=24.16, leaving node_modules/electron/dist incomplete and breaking `yarn dev:desktop`. Forcing yauzl@^3.3.1 via yarn resolutions restores correct extraction; remove once upstream drops extract-zip. Refs: electron/electron#51619, nodejs/node#63487
* feat(ui): hide similarity-search command preview behind a CLI toggle button * fix(ui): pin similarity-search action row height to prevent layout shift on preview toggle * feat(ui): track similarity-search command-preview toggle clicks via telemetry * refactor(ui): drop PreviewToggleButton wrapper, render preview toggle as a plain IconButton * refactor(ui): move CLI preview toggle to the left of the action row * feat(ui): show loading placeholder in similarity-search command preview * refactor(ui): label preview toggle and gate it on a ready form * chore(ui): trim restate-the-code comments in similarity-search form * fix(ui): restore loading state on the similarity-search submit button * fix(ui): keep the preview toggle closable when the form becomes invalid * refactor(ui): small cleanups in similarity-search form * refactor(ui): extract preview-toggle strings into the form's constants
* build(desktop): bump electron-builder to 26.15.2 for snap Wayland fix Bumps electron-builder from 26.0.12 to 26.15.2 to pick up the snap core24 / forceX11 work (PR #9517, first released in 26.12.0) that addresses the Electron >=38 snap crash on GNOME Wayland (issue #9452).
Foundation work for the Redis array type initiative: treat array as a recognized key type so array keys render with a dedicated badge, and add it to the key-type filter gated behind the dev-array flag (mirroring the VectorSet pattern). Capability detection, the Add Key entry, and the details panel are handled by separate tickets. References: #RI-8213 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tests.yml triggers on both push (feature branches) and pull_request (labeled). Pushing a branch and opening/labeling its PR around the same time fired two full runs of the suite in parallel - including the 7-way integration matrix. The concurrency guard didn't merge them because it keyed on github.ref, which differs between the events (refs/heads/<branch> vs refs/pull/<n>/merge). Key the concurrency group by head identity (head_ref || ref_name), which is identical for both events, so the two runs share one group and cancel-in-progress keeps only the latest. Qualify by the head repo (pull_request.head.repo.full_name || github.repository) so fork PRs that share a common branch name (e.g. "main") don't collide and cancel each other's runs, while same-repo push<->PR runs still merge. A single run still emits the full output set (coverage/test annotations and the PR comment), so nothing is lost. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Dedupe concurrent push + pull_request test runs
…ents (#6027) * ci(install): fail on yarn.lock drift after install * docs(agents): document yarn.lock contract for AI agents * include package.json content into the cache hash Hash both package.json and yarn.lock for every workspace (root, redisinsight/, redisinsight/api/) so that a package.json change without a corresponding `yarn install` invalidates the node_modules cache. Previously the cache key hashed only yarn.lock, so an agent or developer who edited package.json without re-running `yarn install` would cache-hit, skip the install step (and therefore `yarn install --frozen-lockfile`), and slip a package.json / yarn.lock mismatch past CI.
…y-type RI-8213 Register array key type (UI + API)
…6023) * feat(api): include element attributes in vector-set list response * feat(ui): accumulate vector-set attribute keys across pages * feat(ui): suggest attribute keys in similarity-search filter on dot * chore(ui): address review feedback on vector-set attribute suggestions * refactor(ui): split filter-input-with-suggestions into types/utils files * refactor(ui): type vector-set load reducers with the API response * refactor(ui): rename FilterInputWithSuggestions `data-testid` prop to `testId` * feat(ui): add muted hint above similarity-search filter suggestions * fix(ui): keep filter suggestions usable after Escape * fix(ui): stop command-preview flicker between keystrokes * refactor(ui): widen preview debounce and restore loading placeholder * refactor(ui): drop spinner from "Find similar items" button
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat(RI-7390): promote dev-vectorSet feature flag to vectorSet
Rename the flag end-to-end (backend config, KnownFeatures enum, registry
and strategy registration; frontend enum, slice default, selector and all
consumers; E2E specs). Bump features-config.json to version 3.92. Flag
stays default-off, so E2E specs that exercise Vector Set UI keep their
explicit { vectorSet: true } override.
* feat(RI-7390): enable vectorSet and prodMode for 10% rollout
Flip both flags to flag: true with perc: [[0, 10]] in features-config.json
and bump version to 3.93.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit fde9352. Configure here.
| with: | ||
| pattern: linux-builds-* | ||
| merge-multiple: true | ||
| path: ./release |
There was a problem hiding this comment.
Linux publish without artifacts
Medium Severity
When every matrix leg sets should_build=false (custom build_linux_* input that matches neither arch filter), build steps and uploads are skipped but the matrix job still succeeds. The new publish-artifacts job then downloads linux-builds-* / vendor-plugins-* patterns that were never uploaded, which typically fails the workflow.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit fde9352. Configure here.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fde9352739
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| return this.isRedisVersionAtLeast('8.4'); | ||
| case RedisFeature.VsimWithAttribs: | ||
| // VSIM WITHATTRIBS option is broken on 8.0.0–8.0.2 and was fixed in 8.0.3 | ||
| return this.isRedisVersionAtLeast('8.0.3'); |
There was a problem hiding this comment.
Require Redis 8.2 before WITHATTRIBS
For Redis 8.0.3 through 8.1.x this returns true, so similaritySearch appends WITHATTRIBS instead of taking the VGETATTR fallback path; Redis rejects that option because the VSIM docs list WITHATTRIBS as added in Redis 8.2.0 (https://redis.io/docs/latest/commands/vsim/). Users connected to those Redis versions will get failed vector similarity searches even though the fallback code is meant to support older 8.x servers.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
this may be in theory and by documentation but by the redis source code, withattribs is supported since 8.0.3 and I see it working in practice, so your comment is wrong. redis/redis#14065
❌ Jit Scanner failed - Our team is investigatingJit Scanner failed - Our team has been notified and is working to resolve the issue. Please contact support if you have any questions. 💡 Need to bypass this check? Comment |
2 similar comments
❌ Jit Scanner failed - Our team is investigatingJit Scanner failed - Our team has been notified and is working to resolve the issue. Please contact support if you have any questions. 💡 Need to bypass this check? Comment |
❌ Jit Scanner failed - Our team is investigatingJit Scanner failed - Our team has been notified and is working to resolve the issue. Please contact support if you have any questions. 💡 Need to bypass this check? Comment |


What
Testing
Note
Medium Risk
Most changes are docs and CI, but ESLint/Redux hook enforcement and install/cache/api-client steps can break local or PR builds; removed E2E/report workflows change how releases are validated.
Overview
This release branch reshapes how AI assistants consume repo standards and tightens CI/build behavior, alongside a large Workbench plugin documentation skill and Playwright E2E guidance updates.
AI / agent tooling: Development rules move from
.ai/rules/to skill folders under.ai/skills/(with richerSKILL.mdfrontmatter)..ai/README.md, Copilot instructions, and command templates now point at skills; Claude Code getsCLAUDE.md+.claude/symlinks and Codex gets.agents/skills. Legacy Cursor.mdcrule stubs are removed. A newredis-insight-pluginskill adds end-to-end guidance (internal Vite vs external Parcel, manifests, phased dev, deploy/verify scripts, and reference docs).Code quality / lint: ESLint targets the UI tsconfig, drops
apiSrcfrom import-order groups, documentsapiClientinstead of direct backend imports, enablesparserOptions.project: true, and restricts barereact-reduxuseDispatch/useSelectorin favor ofuiSrc/slices/hooks..eslintignoreaddsapi-clientandstorybook-static.CI & builds: Widespread GitHub Actions version bumps (checkout, cache, artifacts, setup-node from
.nvmrc, etc.).install-all-build-libsimproves cache keys, generates missing OpenAPIapi-clientafter cache restore, and fails ifyarn.lockchanges post-install. New composite actionsredis-test-env-up/downfor RTE Docker. Linux builds split into an x64 / arm64 matrix with native/RPM digest checks and merged artifacts. Pipelines passRI_APP_BUILD_COMMIT_SHA/ optionalRI_SHOW_BUILD_COMMIT_SHAinto Docker and desktop builds.enforce-branch-name-rules, S3 test-report deploy, and legacy TestCafe AppImage E2E workflows/scripts are removed; backend unit tests no longer upload reports to AWS.Docs-only skill tweaks: Backend/code-quality skills use
src/*for API self-imports; E2E skill documentstests/parallelvstests/serialandchromium-parallelprojects; branch skill drops GitHub Actions enforcement wording.Reviewed by Cursor Bugbot for commit fde9352. Bugbot is set up for automated code reviews on this repo. Configure here.