Skip to content

Release/3.6.0#6044

Open
dantovska wants to merge 204 commits into
latestfrom
release/3.6.0
Open

Release/3.6.0#6044
dantovska wants to merge 204 commits into
latestfrom
release/3.6.0

Conversation

@dantovska

@dantovska dantovska commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

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 richer SKILL.md frontmatter). .ai/README.md, Copilot instructions, and command templates now point at skills; Claude Code gets CLAUDE.md + .claude/ symlinks and Codex gets .agents/skills. Legacy Cursor .mdc rule stubs are removed. A new redis-insight-plugin skill 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 apiSrc from import-order groups, documents apiClient instead of direct backend imports, enables parserOptions.project: true, and restricts bare react-redux useDispatch/useSelector in favor of uiSrc/slices/hooks. .eslintignore adds api-client and storybook-static.

CI & builds: Widespread GitHub Actions version bumps (checkout, cache, artifacts, setup-node from .nvmrc, etc.). install-all-build-libs improves cache keys, generates missing OpenAPI api-client after cache restore, and fails if yarn.lock changes post-install. New composite actions redis-test-env-up/down for RTE Docker. Linux builds split into an x64 / arm64 matrix with native/RPM digest checks and merged artifacts. Pipelines pass RI_APP_BUILD_COMMIT_SHA / optional RI_SHOW_BUILD_COMMIT_SHA into 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 documents tests/parallel vs tests/serial and chromium-parallel projects; 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.

valkirilov and others added 30 commits April 20, 2026 14:37
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
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
valkirilov and others added 23 commits June 5, 2026 11:12
…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.
@dantovska dantovska self-assigned this Jun 9, 2026
@dantovska dantovska requested a review from a team as a code owner June 9, 2026 14:06

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit fde9352. Configure here.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-ci

jit-ci Bot commented Jun 9, 2026

Copy link
Copy Markdown

❌ Jit Scanner failed - Our team is investigating

Jit 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 @sera bypass to override.

2 similar comments
@jit-ci

jit-ci Bot commented Jun 9, 2026

Copy link
Copy Markdown

❌ Jit Scanner failed - Our team is investigating

Jit 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 @sera bypass to override.

@jit-ci

jit-ci Bot commented Jun 10, 2026

Copy link
Copy Markdown

❌ Jit Scanner failed - Our team is investigating

Jit 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 @sera bypass to override.

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.

7 participants