Redis GUI by Redis
| Files | Last commit | Last update |
|---|---|---|
docs: add codex ai rules support | 3 months ago | |
Fix failing Playwright e2e tests (#6331) Gets the Playwright suite green again. Three kinds of problem were mixed together: Stale expectations. A tooltip assertion still matched pre-i18n copy, and the insights accordion clicks were being swallowed by the tutorial page sitting above the tree. searchKeys also returned before the search it triggered had been applied, so assertions raced an in-flight query. Tests interfering with each other. Specs share one Redis, and most cleaned up by deleting every test-* key, so they were deleting keys the specs running alongside them were still asserting on. Each spec now removes only what it created. Specs that read or write globally shared state moved to the serial project: advanced settings (lowers the global "keys to scan" value and held it across other work, starving every concurrent key-listing test), the database list (asserts against the global list of databases, which paginates above fifteen entries once other specs add theirs), and workbench settings (changes the global command batch size). Test environment. The hostname-based cluster RTE never actually advertised hostnames, so that test was exercising the same thing as the IP cluster; and the containerised app in the Docker job could not resolve the hostnames it does advertise. Both fixed. Also adds a small secret-redacted failure digest to the three e2e jobs (step summary, job output and a few-KB artifact) so a failed run can be read without downloading the full report, and updates the e2e skill, which was recommending the prefix-wide cleanup that caused the interference. | 30 days ago | |
docs(skills): fix styleguide skills + add hook so they actually trigger (#6083) * docs(skills): document the real mocks/factories convention in testing skill The testing skill modeled inline mock objects in its frontend examples and never mentioned redisinsight/ui/src/mocks/factories/, where the repo's 21 Fishery factories actually live. Agents followed the skill correctly into the wrong pattern. Point the skill at <domain>/<Name>.factory.ts and show reuse. | 2 months ago | |
chore(ai): migrate AI rules to skills Inline .ai/rules/ content into .ai/skills/<name>/SKILL.md so Claude Code's skill auto-discovery applies the standards (frontend, backend, code-quality, testing, e2e-testing, git-safety). Lift the always-on code-quality and git-safety essentials into AGENTS.md since skills are description-triggered rather than always-on. Delete .ai/rules/ and .cursor/rules/ — the team uses Claude Code and Codex only, so the Cursor MDC rule format and its symlinks are no longer needed. Update remaining references in .ai/README.md, .ai/commands/, .github/copilot-instructions.md, and the tests/e2e-playwright/ docs to point at the new .ai/skills/ paths. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> | 3 months ago | |
chore(deps): bump github/codeql-action in the github-actions group (#6461) Bumps the github-actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action). Updates `github/codeql-action` from 4.37.8 to 4.37.9 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v4.37.8...v4.37.9) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.37.9 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 6 days ago | |
RI-7567: Replace Snyk config with Jit security (#5380) - Remove .snyk policy file - Add .jit/jit-config.yml with equivalent exclusion rules | 7 months ago | |
RI-7682 Self-contain UI tsconfig and clean up dead apiSrc aliases (#5901) * RI-7682 Self-contain UI tsconfig and drop dead apiSrc FE aliases Phase 3 of the FE/BE decoupling. The UI workspace already has zero `apiSrc/*` / `src/*` imports (PR #5885) and the lint guard blocks new ones at `error` level. This PR cleans up the residual configuration that pretended the alias was still in use on the UI side, and detaches the UI's tsconfig from the misleading root indirection. Toolchain - `redisinsight/ui/tsconfig.json` is now self-contained: inlines the compilerOptions previously inherited from the root, and declares its own `paths` for `uiSrc/*`, `apiClient(/**)`, and `desktopSrc/*` only. `yarn type-check:ui` now type-checks the UI surface in isolation. - Root `tsconfig.json` keeps its full `compilerOptions` + `include` -- it is still the eslint parser project for files outside the UI/API overrides (playwright, stories, etc.) and the resolver for `tsconfig-paths-webpack-plugin` in the desktop main webpack build. Header comment documents the three jobs it now serves. - `.storybook/tsconfig.json` re-extends `redisinsight/ui/tsconfig.json` directly instead of the root. - ESLint UI override's `parserOptions.project` -> `redisinsight/ui/tsconfig.json`. Dead alias removal (no consumer in the UI workspace) - `redisinsight/ui/vite.config.mjs` -- drop `apiSrc` alias - `redisinsight/ui/src/packages/vite.config.mjs` -- drop `apiSrc` alias - `redisinsight/desktop/vite.renderer.config.ts` -- drop `apiSrc` alias (renderer doesn't bundle main-process code) - `.storybook/vite.config.ts` -- drop `apiSrc` alias - `jest.config.cjs` -- drop `apiSrc/(.*)` moduleNameMapper - `.eslintrc.js` -- drop `apiSrc/**` from the UI override's `import/order.pathGroups`; keep it in the root-level pathGroups since desktop's source still legitimately imports through `apiSrc/*` (embedded-API architecture; out of scope). Kept untouched - `redisinsight/desktop/vite.main.config.ts` -- its `resolve-imports` plugin still maps `apiSrc/*` to the api/dist bundle for embedded use. - The `no-restricted-imports` rule in `.eslintrc.js` -- still the active guard preventing UI regressions. - Root tsconfig `paths` -- `apiSrc/*` and `src/*` stay; desktop main webpack still resolves through them via TsconfigPathsPlugins(). Verification - yarn lint clean (1-time eslint cache rebuild on the `.eslintrc.js` hash change) - yarn type-check:ui 1953 errors (-151 vs the prior root-based baseline of 2104; UI-only subset 1925->1925, flat. Drop comes from no longer compiling desktop/playwright/stories under `type-check:ui`) - yarn build:ui succeeds - yarn build:renderer succeeds (electron variant) - yarn build:main succeeds (load-bearing check: TsconfigPathsPlugins still resolves apiSrc/*, uiSrc/*, desktopSrc/*) - yarn build-sb succeeds - jest smoke (browser slices + commands-history + key-details + database-analysis): 17 suites, 622 tests, all pass Refs RI-7682 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * RI-7682 Drop obsolete FE-side BE-coupling guardrails and stale docs Follow-on to the self-contained UI tsconfig commit. With the UI's toolchain no longer carrying `apiSrc`/`src` aliases (vite, jest, storybook, packages, desktop renderer), the FE has no way to import from the BE codebase even by accident -- module resolution fails at every stage. The remaining guardrails and documentation that pointed the UI at `apiSrc/*` are now stale. - `.eslintrc.js`: drop the `no-restricted-imports` rule that warned against `apiSrc/*` / `src/*` group imports. With no resolver resolving those patterns in the UI workspace, the build chain is the enforcement now. Also fix the UI override's `parserOptions.project` to point at `redisinsight/ui/tsconfig.json` rather than the root tsconfig -- the UI is now type-checked against its own self-contained config. - `tsconfig.json`: drop the explanatory header comment introduced in the prior commit. The root tsconfig's role is whatever its content shows; the comment was a smell. - `.github/copilot-instructions.md`, `.ai/rules/code-quality.md`, `.ai/rules/backend.md`: stop listing `apiSrc/*` as a UI-side alias (it isn't), point AI tooling at `apiClient` for UI consumers of BE-defined types, and correct the backend rule that referenced `apiSrc/*` instead of `src/*` (the BE's actual self-alias). The remaining `apiSrc/*` references in the repo (root tsconfig paths, root eslint pathGroups, `configs/webpack.paths.ts`, the desktop sources, the API workspace's package/tsconfig) are all legitimate or out of scope for FE/BE decoupling. Refs RI-7682 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * RI-7682 Clean up unused apiSrc aliases in BE/build configs Per-file audit of the remaining `apiSrc` references that aren't in desktop sources or the root tsconfig (which is still needed by the desktop main webpack bundle until the desktop decoupling PR). - redisinsight/api/tsconfig.json: drop the `apiSrc/*` path alias. The BE workspace has zero imports through `apiSrc/*` (verified with `grep -rEn "from 'apiSrc/'" redisinsight/api`); BE code uses `src/*` for self-references. - redisinsight/api/package.json: drop the matching `apiSrc/(.*)` jest moduleNameMapper entry for the same reason. - redisinsight/api/package.tmp.json: delete. Orphaned duplicate of package.json with stale relative paths (`../../node_modules/.bin/jest`, pre-monorepo layout) and no consumer anywhere in the repo (CI, scripts, configs). - configs/webpack.paths.ts: drop the `apiSrcPath` const + export. Unused -- `tsconfig-paths-webpack-plugin` reads root tsconfig's `paths` directly; no external consumer of this constant. - .eslintignore: add `storybook-static`. Pre-existing oversight that surfaced once `yarn build-sb` was actually run in CI/dev. Refs RI-7682 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * RI-7682 Move IParsedDeepLink to UI electron constants; drop desktopSrc from UI tsconfig `ConfigElectron.tsx` had the one and only UI->desktop import: a type (`IParsedDeepLink`) used as the payload shape of the `IpcOnEvent.deepLinkAction` IPC event. The desktop's deep-link handler already imports `IpcOnEvent` from `uiSrc/electron/constants` -- the event name lives on the UI side. Move the payload type alongside it so both sides of the IPC contract live in the UI workspace, and the UI stops reaching into desktop source. - redisinsight/ui/src/electron/constants/deepLink.ts: new file with the `IParsedDeepLink` interface (verbatim copy of the desktop's prior declaration). - redisinsight/ui/src/electron/constants/index.ts: re-export. - redisinsight/ui/src/electron/components/ConfigElectron/ConfigElectron.tsx: import from `uiSrc/electron/constants`. - redisinsight/desktop/src/lib/app/deep-link.handlers.ts: drop the local declaration; import the type from `uiSrc/electron/constants` alongside `IpcOnEvent`. - redisinsight/desktop/src/utils/resolveHtmlPath.ts: import from `uiSrc/electron/constants` rather than from the desktop sibling. With no UI file importing through `desktopSrc/*`, drop that alias from `redisinsight/ui/tsconfig.json` paths. The UI no longer claims any visibility into desktop source -- the dependency arrow points one way (desktop -> uiSrc) which matches the existing IPC plumbing. Refs RI-7682 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> | 3 months ago | |
Migrate package manager from yarn to npm (#6216) | 1 month ago | |
fix(build): keep the Sentry orchestrion stub as plain JavaScript (#6444) `NormalModuleReplacementPlugin` swaps the resource in its `afterResolve` hook, by which point webpack has already chosen loaders for the module being replaced. That module lives in `node_modules`, so it gets no loader and the stub is handed to the plain JS parser. A TypeScript annotation on the stub therefore fails to build: Module parse failed: Unexpected token (14:53) > export function registerDiagnosticsChannelInjection(): void {} This breaks the Electron main bundle, so desktop builds on all three platforms and the E2E Playwright v2 workflow fail. No PR-triggered workflow compiles the main bundle, so it surfaced only on dependabot branches and the nightly run. Type coverage was the reason for the annotation, but `configs/tsconfig.json` sets no `allowJs`, and a zero-arg no-op has nothing to check. Refs #6414 | 12 days ago | |
chore: yarn to npm leftovers (#6270) | 1 month ago | |
Merge remote-tracking branch 'origin/feature/RI-5402-ai-assistant' into feature/RI-4616-rdi-support # Conflicts: # configs/webpack.config.web.common.ts # configs/webpack.config.web.prod.ts # redisinsight/api/config/ormconfig.ts # redisinsight/api/src/app.module.ts # redisinsight/ui/src/components/monaco-editor/MonacoEditor.tsx # redisinsight/ui/src/components/query/Query/Query.tsx # redisinsight/ui/src/constants/links.ts # redisinsight/ui/src/pages/home/components/database-list-component/DatabasesListWrapper.tsx # redisinsight/ui/src/pages/home/components/welcome-component/WelcomeComponent.tsx # redisinsight/ui/src/pages/home/components/welcome-component/styles.module.scss # redisinsight/ui/src/pages/home/styles.scss # redisinsight/ui/src/pages/instance/InstancePage.spec.tsx # redisinsight/ui/src/pages/instance/InstancePage.tsx # redisinsight/ui/src/styles/themes/light_theme/_theme_color.scss # tests/e2e/helpers/constants.ts # tests/e2e/tests/web/critical-path/cli/cli-command-helper.e2e.ts # yarn.lock | 2 years ago | |
chore(deps): bump the backend group across 1 directory with 6 updates (#6457) Bumps the backend group with 6 updates in the /redisinsight/api directory: | Package | From | To | | --- | --- | --- | | [@nestjs/common](https://github.com/nestjs/nest/tree/HEAD/packages/common) | `11.2.1` | `11.2.3` | | [@nestjs/core](https://github.com/nestjs/nest/tree/HEAD/packages/core) | `11.2.1` | `11.2.3` | | [@nestjs/platform-express](https://github.com/nestjs/nest/tree/HEAD/packages/platform-express) | `11.2.1` | `11.2.3` | | [@nestjs/platform-socket.io](https://github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io) | `11.2.1` | `11.2.3` | | [@nestjs/websockets](https://github.com/nestjs/nest/tree/HEAD/packages/websockets) | `11.2.1` | `11.2.3` | | [@nestjs/testing](https://github.com/nestjs/nest/tree/HEAD/packages/testing) | `11.2.1` | `11.2.3` | Updates `@nestjs/common` from 11.2.1 to 11.2.3 - [Release notes](https://github.com/nestjs/nest/releases) - [Commits](https://github.com/nestjs/nest/commits/v11.2.3/packages/common) Updates `@nestjs/core` from 11.2.1 to 11.2.3 - [Release notes](https://github.com/nestjs/nest/releases) - [Commits](https://github.com/nestjs/nest/commits/v11.2.3/packages/core) Updates `@nestjs/platform-express` from 11.2.1 to 11.2.3 - [Release notes](https://github.com/nestjs/nest/releases) - [Commits](https://github.com/nestjs/nest/commits/v11.2.3/packages/platform-express) Updates `@nestjs/platform-socket.io` from 11.2.1 to 11.2.3 - [Release notes](https://github.com/nestjs/nest/releases) - [Commits](https://github.com/nestjs/nest/commits/v11.2.3/packages/platform-socket.io) Updates `@nestjs/websockets` from 11.2.1 to 11.2.3 - [Release notes](https://github.com/nestjs/nest/releases) - [Commits](https://github.com/nestjs/nest/commits/v11.2.3/packages/websockets) Updates `@nestjs/testing` from 11.2.1 to 11.2.3 - [Release notes](https://github.com/nestjs/nest/releases) - [Commits](https://github.com/nestjs/nest/commits/v11.2.3/packages/testing) --- updated-dependencies: - dependency-name: "@nestjs/common" dependency-version: 11.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: backend - dependency-name: "@nestjs/core" dependency-version: 11.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: backend - dependency-name: "@nestjs/platform-express" dependency-version: 11.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: backend - dependency-name: "@nestjs/platform-socket.io" dependency-version: 11.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: backend - dependency-name: "@nestjs/websockets" dependency-version: 11.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: backend - dependency-name: "@nestjs/testing" dependency-version: 11.2.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: backend ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 6 days ago | |
Dev: Apply eslint & prettier suggestions (#4500) * backend * desktop * UI | 1 year ago | |
Bump better-sqlite3 to v13 (N-API) and Electron to 43 (#6332) * chore(deps): bump better-sqlite3 to v13 (N-API) Migrate better-sqlite3 from ^12.10.1 to ^13.0.1 in both the desktop (redisinsight/) and api (redisinsight/api/) packages, regenerating both lockfiles. v13 moves the native addon to N-API, so a single prebuilt binary works across Node and Electron versions. This drops the prebuild-install chain and removes the coupling that forced Electron to be held back to a version with a matching sqlite prebuild. Resolves to 13.0.1 rather than 13.0.2 because of the min-release-age=3 supply-chain cooldown in .npmrc; the caret picks up 13.0.2 once it ages. No source changes needed: better-sqlite3 is used only as the TypeORM 'better-sqlite3' driver, whose API surface is unchanged in v13. * chore(deps): bump Electron to 43 and refresh build tooling Bump electron ^41.7.2 -> ^43.2.0 (latest stable) for the upcoming build, along with the packaging toolchain that supports the new major: - @electron/rebuild ^4.0.1 -> ^4.2.0 - electron-builder 26.14.0 -> 26.15.3 node-abi resolves Electron 43 to ABI 148, so native-module rebuilds (keytar) work; better-sqlite3 v13 is N-API so it needs no ABI-specific rebuild. Type-check passes on ui/api/desktop with no new errors. The lockfile also syncs the root engines.npm field (>=11.10.0) that had drifted from package.json. * fix(build): point native-binary paths at better-sqlite3 v13 prebuilds better-sqlite3 v13 (N-API) ships its binary under prebuilds/<platform>- <arch>.node instead of build/Release/better_sqlite3.node, which broke the Linux 'Verify native binaries' step and left the mac MAS signing lists pointing at a nonexistent file. - verify-native-modules-linux: resolve a {arch} placeholder so the check targets prebuilds/linux-x64.node / prebuilds/linux-arm64.node - electron-builder mas/masDev binaries: sign the per-arch darwin prebuild keytar is unchanged (still node-gyp under build/Release). * chore(deps): bump better-sqlite3 to 13.0.2 The previous bump pinned 13.0.1 only because 13.0.2 had not yet cleared the min-release-age=3 cooldown in .npmrc. It has now, so take it in both the desktop (redisinsight/) and api (redisinsight/api/) packages. 13.0.2 sets gypfile: false, which stops npm injecting an implicit node-gyp rebuild for a module we consume purely as a shipped prebuild. That drops python3/make/g++ from the install path and removes the stray build/ directory asarUnpack was sweeping into the app bundle. It also bundles SQLite 3.53.4 and tightens table() argument validation. The prebuilds/<platform>-<arch>.node layout is unchanged, so the paths in electron-builder.json and scripts/native-modules.config.json still resolve. * chore(deps): refresh electron packaging and updater tooling electron-builder 26.15.3 -> 26.15.7 and electron-updater ^6.6.2 -> ^6.8.9. Electron itself stays on ^43.2.0 and @electron/rebuild on ^4.2.0, both already the latest releases. 26.15.6 carries an NSIS fix for reliably installing the main executable and native binaries on x64 and arm64, which is the area the per-arch prebuild paths on this branch touch. 26.15.7 adds a locales fix for bare language codes and correct extraction of .tar.7z snap templates. app-builder-lib still pins @electron/notarize 2.5.0 internally, so the explicit 2.3.2 override in package.json stays in force and untouched. The electron-updater bump also clears two high-severity advisories. | 30 days ago | |
Drop root tsconfig and decompose into per-area configs (#5909) * refactor: drop root tsconfig and decompose into per-area configs Replaces the monolithic root tsconfig.json with scoped tsconfigs for the areas that actually need them: desktop (paths for webpack TsconfigPathsPlugin), playwright tests, stories, and configs (for ts-node loading webpack TS configs). ESLint's root parserOptions.project switches to `true` (auto-discover nearest tsconfig), so api/ui/desktop/playwright/storybook/stories each resolve to their own project. scripts/prebuild.js is converted to CJS and configs/webpack.paths.ts to .js so prebuild can run as plain Node without ts-node. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix: drop tsconfig.json from Dockerfile COPY after root removal Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix: convert DeleteSourceMaps.js to CJS After dropping allowJs from configs/tsconfig.json, Node 22's module syntax detection treats the ESM-syntax .js file as ESM, where __dirname is not defined. Converting to CJS keeps it compatible with the existing import in the webpack configs (esModuleInterop unwraps module.exports as default). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix: anchor desktop tsconfig baseUrl at repo root for path resolution tsconfig-paths-webpack-plugin couldn't resolve aliases when the desktop tsconfig used baseUrl: "./" with parent-directory paths (../api/src, ../ui/src). Switching to baseUrl: "../.." mirrors the original root tsconfig layout — paths reference from repo root. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs: document split tsconfig layout for contributors and AI - Add TypeScript Configuration section in CONTRIBUTING.md listing each per-area tsconfig and its purpose. - Add a project-local Claude skill (.ai/skills/tsconfigs) covering the layout, webpack/ts-node/eslint wiring, and how to add new path aliases or TS folders. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix: replace TsconfigPathsPlugin with explicit webpack aliases The plugin silently fails to resolve desktopSrc/apiSrc/uiSrc paths when loaded with an explicit configFile pointing at the desktop tsconfig. Switching to webpack's resolve.alias removes the dependency on the plugin's tsconfig reading and is functionally equivalent for our four stable aliases. The desktop tsconfig still defines the same paths for TypeScript and ESLint resolution. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs(skill): update tsconfigs skill after dropping TsconfigPathsPlugin Webpack now uses explicit resolve.alias entries instead of reading the desktop tsconfig via the plugin. New aliases for the electron bundle must be added in both places. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor: consolidate stories/configs tsconfigs into a narrow root Introduces a focused root tsconfig.json that covers stories/** and configs/** for ESLint discovery and ts-node webpack-config loading. Drops configs/tsconfig.json and stories/tsconfig.json which were doing essentially the same job. Desktop keeps its own tsconfig — it owns cross-area paths (desktopSrc/apiSrc/uiSrc/apiClient) that don't belong in a catch-all root meant for stories/configs/scripts. TS_NODE_PROJECT updated to ./tsconfig.json. Skill + CONTRIBUTING updated. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * Revert "refactor: consolidate stories/configs tsconfigs into a narrow root" This reverts commit 7a897cd14e8b2cb6ac0a4c99bb91892ffe78f3c6. * fix(configs): drop .ts extension from webpack.config import Caused TS2691 when typechecking the configs/ project. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> | 3 months ago | |
ci(e2e): pin NODE_ENV for the docker e2e container (#6430) A fork PR runs without access to secrets or environment variables, so the docker build resolves `vars.ENV` to an empty string and bakes `NODE_ENV=` into the image. An empty value selects the development config, which ignores RI_APP_FOLDER_ABSOLUTE_PATH and points the SQLite database at the read-only app directory, so the container exits with SQLITE_CANTOPEN and the startup gate reports a health-check timeout. Pinning NODE_ENV in the compose file makes the suite independent of what the build job could resolve, and matches the value nightly runs bake in. The new step reports what the image itself carries, so a repeat of this is visible without reproducing the crash locally. | 13 days ago | |
Introduce AI assistant rules and commands (#5222) * docs: introduce base AI assistant rules and commands | 9 months ago | |
Introduce AI assistant rules and commands (#5222) * docs: introduce base AI assistant rules and commands | 9 months ago | |
RI-6589: remove circleci (#4388) * remove all references of circleci | 1 year ago | |
Initial commit | 4 years ago | |
Migrate package manager from yarn to npm (#6216) | 1 month ago | |
RI-8208: Adopt typed Redux hooks (useAppDispatch / useAppSelector) (#5993) * adopt typed Redux hooks Replace direct `useDispatch`/`useSelector` from `react-redux` with the typed `useAppDispatch`/`useAppSelector` wrappers from `uiSrc/slices/hooks` across all production source files (including Storybook stories). Functionally identical at runtime — the typed hooks resolve through the same react-redux Provider context — but the typed signatures carry `AppDispatch` and `RootState` so callers no longer need to cast or rely on the `redux-thunk` v2 implicit thunk acceptance. This is a prerequisite for the upcoming Redux / RTK upgrade so that the upgrade itself becomes a small, reviewable change rather than a 350-file refactor mixed with a dependency bump. * update Redux hook mocks to target typed hooks module Migrate spec files from mocking `react-redux` (`useDispatch`/`useSelector`) to mocking `uiSrc/slices/hooks` (`useAppDispatch`/`useAppSelector`), which is what production code now imports after the typed-hooks adoption. Each factory keeps `...jest.requireActual('uiSrc/slices/hooks')` so any hook not explicitly stubbed falls through to the real implementation, matching the previous `...jest.requireActual('react-redux')` semantics and avoiding `is not a function` errors when only one hook is overridden. Mostly mechanical (codemod-driven); a couple of files using namespace imports of `react-redux` were updated by hand to keep the same test behavior. The broader mocking pattern (jest.mock of the hooks layer itself) is preserved intentionally — moving to a real `<Provider>` + real store style is out of scope here and will be tracked separately. * fix lint * add eslint rule | 3 months ago | |
Initial commit | 4 years ago | |
Migrate package manager from yarn to npm (#6216) | 1 month ago | |
chore: add npm min-release-age to prevent installing fresh packages (#6266) * chore: add npm min-release-age to prevent installing fresh packages Add `min-release-age=3` to every `.npmrc` so `npm install` only resolves package versions published at least 3 days ago. Freshly published versions are the prime window for supply-chain attacks; a short cooldown lets compromised releases get yanked before they land locally. | 1 month ago | |
chore: bump Node.js to 24.16.0 LTS (#6008) * 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. | 3 months ago | |
feat(e2e): format code (#5471) * feat(e2e): add e2e page selectors * feat(e2e): address cursor's comments * refactor(e2e): simplify page navigation architecture - Remove page-specific navigation methods from BasePage (gotoSettings, gotoWorkbench, gotoBrowser, gotoPubSub, gotoAnalytics) - Keep only fundamental navigation in BasePage: gotoHome(), gotoDatabase() - Each page now owns its navigation logic via its goto() method - Fix tab name from 'Browser' to 'Browse' (actual accessible name) - Update README.md and e2e-testing.md to reflect new architecture * fix(e2e): correct locators in AnalyticsPage and DatabaseList - Use existing refreshButton property in refreshSlowLog() method - Fix delete() to use correct button role and name ('Remove field') - Fix confirmation button name from 'Delete' to 'Remove' * feat(e2e): add comprehensive tests for Database Analysis feature - Introduced a new test suite for the Database Analysis feature, covering report generation, data summary, top namespaces, and top keys tables. - Enhanced the AnalyticsPage class with new locators for database analysis elements. - Updated the test plan to reflect the completion status of database analysis tests. * refactor(e2e): update database configuration factories for tests - Replaced StandaloneConfigFactory with a more generic databaseFactories object to streamline database instance creation in tests. - Introduced StandaloneBigConfigFactory for handling large dataset tests. - Updated relevant test files to utilize the new databaseFactories structure for improved maintainability. * refactor(e2e): update aria attributes for sorting in database analysis tests - Changed aria-sort attributes to aria-description for better accessibility in the Key Pattern sorting functionality. - Updated test expectations to reflect the new aria-description values for sorting states (ascending, descending, unsorted). * update yarn.lock * fix(e2e): remove duplicate code from rebase conflicts in AnalyticsPage * feat(e2e): format code * feat(e2e): update package.lock --------- Co-authored-by: pd-redis <petar.dzhambazov@redis.com> | 6 months ago | |
DEV: Add eslint integrated prettier (#4273) * install dependencies * add scripts * add default settings for VSCode * handle tsx properly * ignore reports and mocks for linting * ignore scss files * update eslint ts because of this: WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree. | 1 year ago | |
Migrate package manager from yarn to npm (#6216) | 1 month ago | |
Dev: Apply eslint & prettier suggestions (#4500) * backend * desktop * UI | 1 year ago | |
docs: add codex ai rules support | 3 months ago | |
Create required docs | 4 years ago | |
Migrate package manager from yarn to npm (#6216) | 1 month ago | |
Migrate package manager from yarn to npm (#6216) | 1 month ago | |
Revert "Update LICENSE" This reverts commit 456c1bdf7a35a0f3addd58180005ef1dd02570c1. | 2 years ago | |
Update readme for supported features and data types (#6294) * docs: reformat README highlights list to use asterisk bullets * docs: add vector sets, arrays, and vector search to highlights | 1 month ago | |
Initial commit | 4 years ago | |
RI-7640: Implement storybook (#5138) implement storybook | 9 months ago | |
RI-000 build with new mas profiles (#4592) | 1 year ago | |
RI-5036: Comment dockerfile to explain rationale and describe steps | 2 years ago | |
Dev: Apply eslint & prettier suggestions (#4500) * backend * desktop * UI | 1 year ago | |
Bump better-sqlite3 to v13 (N-API) and Electron to 43 (#6332) * chore(deps): bump better-sqlite3 to v13 (N-API) Migrate better-sqlite3 from ^12.10.1 to ^13.0.1 in both the desktop (redisinsight/) and api (redisinsight/api/) packages, regenerating both lockfiles. v13 moves the native addon to N-API, so a single prebuilt binary works across Node and Electron versions. This drops the prebuild-install chain and removes the coupling that forced Electron to be held back to a version with a matching sqlite prebuild. Resolves to 13.0.1 rather than 13.0.2 because of the min-release-age=3 supply-chain cooldown in .npmrc; the caret picks up 13.0.2 once it ages. No source changes needed: better-sqlite3 is used only as the TypeORM 'better-sqlite3' driver, whose API surface is unchanged in v13. * chore(deps): bump Electron to 43 and refresh build tooling Bump electron ^41.7.2 -> ^43.2.0 (latest stable) for the upcoming build, along with the packaging toolchain that supports the new major: - @electron/rebuild ^4.0.1 -> ^4.2.0 - electron-builder 26.14.0 -> 26.15.3 node-abi resolves Electron 43 to ABI 148, so native-module rebuilds (keytar) work; better-sqlite3 v13 is N-API so it needs no ABI-specific rebuild. Type-check passes on ui/api/desktop with no new errors. The lockfile also syncs the root engines.npm field (>=11.10.0) that had drifted from package.json. * fix(build): point native-binary paths at better-sqlite3 v13 prebuilds better-sqlite3 v13 (N-API) ships its binary under prebuilds/<platform>- <arch>.node instead of build/Release/better_sqlite3.node, which broke the Linux 'Verify native binaries' step and left the mac MAS signing lists pointing at a nonexistent file. - verify-native-modules-linux: resolve a {arch} placeholder so the check targets prebuilds/linux-x64.node / prebuilds/linux-arm64.node - electron-builder mas/masDev binaries: sign the per-arch darwin prebuild keytar is unchanged (still node-gyp under build/Release). * chore(deps): bump better-sqlite3 to 13.0.2 The previous bump pinned 13.0.1 only because 13.0.2 had not yet cleared the min-release-age=3 cooldown in .npmrc. It has now, so take it in both the desktop (redisinsight/) and api (redisinsight/api/) packages. 13.0.2 sets gypfile: false, which stops npm injecting an implicit node-gyp rebuild for a module we consume purely as a shipped prebuild. That drops python3/make/g++ from the install path and removes the stray build/ directory asarUnpack was sweeping into the app bundle. It also bundles SQLite 3.53.4 and tightens table() argument validation. The prebuilds/<platform>-<arch>.node layout is unchanged, so the paths in electron-builder.json and scripts/native-modules.config.json still resolve. * chore(deps): refresh electron packaging and updater tooling electron-builder 26.15.3 -> 26.15.7 and electron-updater ^6.6.2 -> ^6.8.9. Electron itself stays on ^43.2.0 and @electron/rebuild on ^4.2.0, both already the latest releases. 26.15.6 carries an NSIS fix for reliably installing the main executable and native binaries on x64 and arm64, which is the area the per-arch prebuild paths on this branch touch. 26.15.7 adds a locales fix for bare language codes and correct extraction of .tar.7z snap templates. app-builder-lib still pins @electron/notarize 2.5.0 internally, so the explicit 2.3.2 override in package.json stays in force and untouched. The electron-updater bump also clears two high-severity advisories. | 30 days ago | |
chore: update embedded provisioning profile | 4 months ago | |
Introduce AI assistant rules and commands (#5222) * docs: introduce base AI assistant rules and commands | 9 months ago | |
Migrate package manager from yarn to npm (#6216) | 1 month ago | |
Dev: Apply eslint & prettier suggestions (#4500) * backend * desktop * UI | 1 year ago | |
chore(deps-dev): bump the testing group across 1 directory with 6 updates (#6394) * chore(deps-dev): bump the testing group across 1 directory with 6 updates Bumps the testing group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@testing-library/user-event](https://github.com/testing-library/user-event) | `14.6.1` | `14.6.4` | | [fishery](https://github.com/thoughtbot/fishery) | `2.3.1` | `2.4.0` | | [jest-fixed-jsdom](https://github.com/mswjs/jest-fixed-jsdom) | `0.0.10` | `0.0.11` | | [jest-when](https://github.com/timkindberg/jest-when) | `4.0.2` | `4.0.3` | | [msw](https://github.com/mswjs/msw) | `2.13.2` | `2.15.0` | | [ts-jest](https://github.com/kulshekhar/ts-jest) | `29.2.5` | `29.4.12` | Updates `@testing-library/user-event` from 14.6.1 to 14.6.4 - [Release notes](https://github.com/testing-library/user-event/releases) - [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/user-event/compare/v14.6.1...v14.6.4) Updates `fishery` from 2.3.1 to 2.4.0 - [Release notes](https://github.com/thoughtbot/fishery/releases) - [Commits](https://github.com/thoughtbot/fishery/compare/v2.3.1...v2.4.0) Updates `jest-fixed-jsdom` from 0.0.10 to 0.0.11 - [Release notes](https://github.com/mswjs/jest-fixed-jsdom/releases) - [Commits](https://github.com/mswjs/jest-fixed-jsdom/compare/v0.0.10...v0.0.11) Updates `jest-when` from 4.0.2 to 4.0.3 - [Release notes](https://github.com/timkindberg/jest-when/releases) - [Commits](https://github.com/timkindberg/jest-when/compare/v4.0.2...v4.0.3) Updates `msw` from 2.13.2 to 2.15.0 - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v2.13.2...v2.15.0) Updates `ts-jest` from 29.2.5 to 29.4.12 - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.2.5...v29.4.12) --- updated-dependencies: - dependency-name: "@testing-library/user-event" dependency-version: 14.6.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: testing - dependency-name: fishery dependency-version: 2.4.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: testing - dependency-name: jest-fixed-jsdom dependency-version: 0.0.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: testing - dependency-name: jest-when dependency-version: 4.0.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: testing - dependency-name: msw dependency-version: 2.15.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: testing - dependency-name: ts-jest dependency-version: 29.4.12 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: testing ... Signed-off-by: dependabot[bot] <support@github.com> * test: match jest transform allow-list at any node_modules depth The allow-list only took effect for a package hoisted to the top-level node_modules. A nested copy stayed untransformed, because the pattern matched the first node_modules segment in the path and that segment names the parent, not the allow-listed package. Entries now hold for either layout, which npm picks based on version conflicts elsewhere in the tree. * test: transpile msw's ESM-only @open-draft/deferred-promise msw 2.15.0 moved to @open-draft/deferred-promise 3, which ships ESM only and offers no require condition. Loading msw/node from setup-tests.ts then throws SyntaxError on its export statement, failing every suite. @mswjs/interceptors still asks for version 2, so npm keeps that copy hoisted and nests 3 under msw. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Pavel Angelov <pavel.angelov@redis.com> | 16 days ago | |
chore: pin MCP dependency versions to prevent supply chain attacks Pin all MCP server dependencies to exact versions instead of using unpinned `npx -y` or `:latest` tags, which could pull compromised packages without warning. - @modelcontextprotocol/server-github@2025.4.8 - @modelcontextprotocol/server-memory@2026.1.26 - @modelcontextprotocol/server-sequential-thinking@2025.12.18 - @upstash/context7-mcp@2.1.8 - @playwright/mcp@0.0.70 - ghcr.io/sooperset/mcp-atlassian pinned to sha256 digest Closes #5763 Made-with: Cursor | 4 months ago | |
chore(deps-dev): bump the tooling group with 2 updates (#6460) Bumps the tooling group with 2 updates: [@pmmmwh/react-refresh-webpack-plugin](https://github.com/pmmmwh/react-refresh-webpack-plugin) and [webpack](https://github.com/webpack/webpack). Updates `@pmmmwh/react-refresh-webpack-plugin` from 0.6.2 to 0.6.3 - [Release notes](https://github.com/pmmmwh/react-refresh-webpack-plugin/releases) - [Changelog](https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/pmmmwh/react-refresh-webpack-plugin/compare/v0.6.2...v0.6.3) Updates `webpack` from 5.109.2 to 5.110.1 - [Release notes](https://github.com/webpack/webpack/releases) - [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack/compare/v5.109.2...v5.110.1) --- updated-dependencies: - dependency-name: "@pmmmwh/react-refresh-webpack-plugin" dependency-version: 0.6.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: tooling - dependency-name: webpack dependency-version: 5.110.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: tooling ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 6 days ago | |
chore(deps-dev): bump the tooling group with 2 updates (#6460) Bumps the tooling group with 2 updates: [@pmmmwh/react-refresh-webpack-plugin](https://github.com/pmmmwh/react-refresh-webpack-plugin) and [webpack](https://github.com/webpack/webpack). Updates `@pmmmwh/react-refresh-webpack-plugin` from 0.6.2 to 0.6.3 - [Release notes](https://github.com/pmmmwh/react-refresh-webpack-plugin/releases) - [Changelog](https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/pmmmwh/react-refresh-webpack-plugin/compare/v0.6.2...v0.6.3) Updates `webpack` from 5.109.2 to 5.110.1 - [Release notes](https://github.com/webpack/webpack/releases) - [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack/compare/v5.109.2...v5.110.1) --- updated-dependencies: - dependency-name: "@pmmmwh/react-refresh-webpack-plugin" dependency-version: 0.6.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: tooling - dependency-name: webpack dependency-version: 5.110.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: tooling ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 6 days ago | |
Add PR template | 9 months ago |
![]()
Redis Insight 是一款可视化工具,具备设计、开发和优化 Redis 应用程序的功能。您可以查询、分析 Redis 数据并与之交互。在此下载!

| 工作台 | 分析 | 慢日志 | 命令行界面 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
基于 Electron、Monaco Editor 和 NodeJS 精心打造。
概述
Redis Insight 是一款直观高效的 Redis GUI,让您能够与数据库交互并管理数据,同时内置对 Redis 模块的支持。
Redis Insight 亮点功能:
- 浏览、筛选、可视化键值型 Redis 数据结构,并以不同格式(包括 JSON、十六进制、ASCII 等)查看键值
- 支持列表、哈希、字符串、集合、有序集合和流的 CRUD 操作
- 支持 JSON 数据结构的 CRUD 操作
- 支持向量集的 CRUD 操作 - 创建和管理向量集、添加元素以及运行向量相似度搜索
- 支持数组的 CRUD 操作 - 创建、浏览、搜索、聚合、编辑和删除数组元素
- 交互式教程助您轻松学习,例如如何利用支持结构化查询和全文搜索的原生 JSON 数据结构,包括面向 AI 用例的向量相似度搜索
- 情境化性能和内存使用优化建议。当您与数据库交互时,建议列表会实时更新
- 分析器 - 实时分析发送到 Redis 的每一条命令
- 慢日志 - 基于 Slowlog 命令分析 Redis 实例中的慢操作
- 发布/订阅 - 支持 Redis 发布/订阅,能够订阅频道并向频道发布消息
- 批量操作 - 根据浏览器或树视图中设置的筛选条件批量删除键
- 工作台 - 高级命令行界面,具备智能命令自动补全、复杂数据可视化和原始模式支持
- 支持 搜索和查询、JSON 以及 时间序列 数据结构的命令自动补全
- 搜索和查询 索引及结果的可视化展示
- 向量搜索 - 创建和管理搜索索引并查询已索引数据
- 能够构建自定义数据可视化插件
- 官方支持 Redis OSS、Redis Cloud。兼容 Microsoft Azure 托管 Redis(前身为 Azure Cache for Redis)
查看 发行说明。
Redis Insight 快速入门
本仓库包含 Redis Insight 的代码。有关其发布信息,请查看博客文章。
可安装版本
Redis Insight 可从 redis.io 免费下载。 您也可以在 Microsoft Store、Apple App Store、Snapcraft、Flathub 上找到它,此外还有 Docker 镜像。
另外,您还可以使用我们官方的 Visual Studio Code 扩展 Redis for VS Code。
构建
您也可以选择从源代码构建。有关说明,请参阅我们的 Wiki。
调试方法
如果 Redis Insight 出现任何问题,您可以按照以下步骤获取有关错误的更多信息并找到其根本原因。
Redis Insight API(仅适用于 Docker)
如果您通过 Docker 运行 Redis Insight,则可以从 http://localhost:5540/api/docs 访问 API。
Azure 托管 Redis(前身为 Azure Cache for Redis)
Redis Insight 支持 Azure 托管 Redis 和采用 Microsoft Entra ID 身份验证的 Azure Cache for Redis。如果您的组织要求第三方应用获得管理员许可,请参阅我们的设置指南。
- Azure 设置指南
- Azure Docker 设置 - Docker、自定义端口和反向代理的配置
反馈
Redis Insight 插件
现在,借助 Redis Insight,您还可以通过构建自己的数据可视化来扩展核心功能。有关更多信息,请参阅我们的维基。
贡献
如果您希望为代码库做出贡献或修复问题,请查阅维基。
API 文档
如果您使用的是 Redis Insight 的 Docker 镜像,请打开以下 URL 以查看 API 列表: http://localhost:5530/api/docs
遥测
Redis Insight 包含一个可选的遥测系统,用于帮助改进应用内的开发者体验(DX)。我们重视您的隐私,因此请放心,所收集的所有数据均经过匿名化处理。
许可
Redis Insight 根据 SSPL 许可进行许可。



