| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
RI-8299 Keep array append precise above 2^53 (#6158) * fix(api): keep array append precise above 2^53 The append path read ARLEN without the bigint opt-in, so lengths above 2^53 rounded at the transport and the write landed on the wrong slot. Opt in like every other u64 array read, un-skip the integration test pinning it, pin the workbench executor's opt-in forwarding, and refresh stale comments and Bruno docs. References: #RI-8299 * test(api): pin ARNEXT and ARCOUNT exact u64 replies ARSEEK repositions the insert cursor in one step, so ARNEXT's bigint opt-in is provable end to end in the lossy (2^53, 2^63) zone after all; replace the duplicate-coverage note with that test. ARCOUNT's zone is unreachable on a real server (counts are memory-bound), so pin its opt-in call shape at the unit level instead. References: #RI-8299 | 2 个月前 | |
Add pipeline draft CRUD endpoints for RDI instances (#6467) * feat(api): add pipeline draft CRUD endpoints for RDI instances | 15 天前 | |
feat(RI-8285): add Load sample data mode with three bundled array datasets Adds a populate-mode toggle to the Add Key array panel with a dataset selector offering three bundled samples - temperature readings (sparse), server error log (sparse) and a README document (contiguous) - sourced from the array UI prototype. The datasets ship as command files under api/data/array-collections and load through the existing bulk-import flow (a parallel /bulk-actions/import/array-collection endpoint mirroring vector-collection), so the frontend stays free of bundled sample data. Selecting a dataset locks the key name; an existing-key pre-check skips re-import. The manual creation form lands in a follow-up. | 3 个月前 | |
Add pipeline draft CRUD endpoints for RDI instances (#6467) * feat(api): add pipeline draft CRUD endpoints for RDI instances | 15 天前 | |
fix(api): drop .d.ts hunks from ioredis patch so it survives the e2e build (#6149) The E2E "Build Docker" job started failing (patch-package: "Failed to apply patch for package ioredis") after RI-8296 (#6100) added patches/ioredis+5.3.2.patch. The patch modified ioredis' built/*.d.ts files. .github/build/build_modules.sh installs the API (patch applies), then runs `yarn autoclean` with .yarnclean.prod — whose `*.ts` rule also deletes `*.d.ts` — and then re-installs, which re-runs patch-package. Because the patch's target .d.ts files were stripped by autoclean, patch-package can no longer apply it and the build fails. (The host workspace build passes because it never autocleans.) The .d.ts changes are type-only and unused by our build: prepareCommandOptions returns `any`, and RedisClient defines its own `integerReply` type — nothing type-checks against ioredis' CommandOptions. So drop the two .d.ts hunks and keep only the runtime Command.js / DataHandler.js changes. patch-package is then idempotent across the autoclean+reinstall cycle. Reproduced the full install -> autoclean -> reinstall sequence locally: the .js-only patch applies cleanly on both passes (`ioredis@5.3.2 ✔`). Co-authored-by: Claude <noreply@anthropic.com> | 2 个月前 | |
Migrate package manager from yarn to npm (#6216) | 2 个月前 | |
Add RDI native API proxy endpoint for @rdi-ui/pipeline (#6504) * feat(rdi): add native API proxy endpoint for @rdi-ui/pipeline | 10 天前 | |
#RI-6349 - Fix mas build | 1 年前 | |
VDP-4556: Block server-side file reads on database import for non-desktop builds (#6307) * fix(database-import): block server-side file reads on import for non-desktop builds Import fields for SSH keys and TLS certificates accept either inline PEM or a filesystem path, falling back to readFileSync when the value is not PEM. On network-facing builds these endpoints are unauthenticated, so a path turns import into an arbitrary server-side file read that export can then return with withSecrets. Gate the path fallback behind isImportFromFileAllowed(), which is true only for the Electron desktop build. Other builds accept inline PEM only and reject a path with the existing invalid-body error, without touching the filesystem. References: #VDP-4556 * test(database-import): expect rejection for path-based cert import on server The TLS import integration cases fed certificates and keys as filesystem paths, which non-desktop builds no longer resolve. Update the format 1/2/3 cases (standalone, cluster, sentinel, and the ssh variants) to expect a partial import with the invalid-body errors instead of success. Format 0, which passes inline PEM, is unchanged. References: #VDP-4556 | 1 个月前 | |
RI-6589: remove circleci (#4388) * remove all references of circleci | 1 年前 | |
Initial commit | 4 年前 | |
Migrate package manager from yarn to npm (#6216) | 2 个月前 | |
Dev: Apply eslint & prettier suggestions (#4500) * backend * desktop * UI | 1 年前 | |
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. | 2 个月前 | |
Initial commit | 4 年前 | |
Dev: Apply eslint & prettier suggestions (#4500) * backend * desktop * UI | 1 年前 | |
fix(workbench): show module command results when ACL hides module list (#6232) ACL-restricted users who are granted TS.RANGE but denied MODULE LIST and COMMAND INFO left module discovery with an empty list, so Workbench replaced their successful reply with the "Time series unavailable" upsell. Fix it in two layers: - UI: CommonErrorResponse skips the ModuleNotLoaded page when any reply in the execution already succeeded, since a successful reply proves the module is loaded regardless of what discovery found. Group mode now passes the full execution object so the status is visible to that check. - API: fall back to HELLO for module detection when MODULE LIST and COMMAND INFO are unavailable, and add ts.range / ts.revrange to the TimeSeries probe commands. Redis Enterprise and Cloud connections are proxied and may return an empty modules array from HELLO; on those the UI success gate is what restores the results. Refs #5357 | 1 个月前 | |
fix(api): copy data dir into the minified build The minified esbuild build only copied the defaults folder, so the api/data sample collections (array- and vector-collections) were missing from dist-minified — the regular nest build ships them via nest-cli assets, but Load sample data would fail in minified distributions. Copy data alongside defaults so it lands at dist-minified/data, matching where the bulk-import service resolves it. | 3 个月前 | |
upload default data | 2 年前 | |
Migrate package manager from yarn to npm (#6216) | 2 个月前 | |
chore(deps-dev): bump the everything-else group across 1 directory with 2 updates (#6517) Bumps the everything-else group with 2 updates in the /redisinsight/api directory: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) and [joi](https://github.com/hapijs/joi). Updates `@types/node` from 24.13.4 to 24.13.5 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `joi` from 17.13.7 to 17.13.8 - [Commits](https://github.com/hapijs/joi/compare/v17.13.7...v17.13.8) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 24.13.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: everything-else - dependency-name: joi dependency-version: 17.13.8 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: everything-else ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 4 天前 | |
chore(deps-dev): bump the everything-else group across 1 directory with 2 updates (#6517) Bumps the everything-else group with 2 updates in the /redisinsight/api directory: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) and [joi](https://github.com/hapijs/joi). Updates `@types/node` from 24.13.4 to 24.13.5 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `joi` from 17.13.7 to 17.13.8 - [Commits](https://github.com/hapijs/joi/compare/v17.13.7...v17.13.8) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 24.13.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: everything-else - dependency-name: joi dependency-version: 17.13.8 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: everything-else ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | 4 天前 | |
Initial commit | 4 年前 | |
Dev: Apply eslint & prettier suggestions (#4500) * backend * desktop * UI | 1 年前 | |
RI-7720 Lock TS errors per project with .tscheck.rec.json baselines (#5926) * feat(types): lock TS errors per project with .tscheck.rec.json baselines Adopt the per-file/per-error-code baseline pattern from redislabsdev/cloud-ui#1930 so TS error counts can only decrease. Wires a new type-check job into tests.yml that gates PRs on UI, API, Desktop, and configs. - scripts/ts-error-check.ts: port of cloud-ui's script, takes the rec-file path as an arg so checks run from repo root - redisinsight/api/tsconfig.check.json: extends base with strict (minus strictPropertyInitialization and useUnknownInCatchVariables); keeps base tsconfig.json untouched so nest build is unaffected - Baselines: ui=1848, api=4114 (strict), desktop=512, configs=0 - E2E is already covered by tests-e2e-playwright-lint.yml - New type-check-baselines skill documents the dev workflow Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * chore(types): drop redundant @types/json-stable-stringify The package provides its own type definitions, and the stub @types entry caused yarn --frozen-lockfile to fail in CI because the lockfile didn't include it. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ci(type-check): build api before desktop type-check Desktop sources import compiled api modules from redisinsight/api/dist/**. Without building first, the desktop check reports 7 TS2307s for missing modules that don't exist in CI's clean checkout. Run build:api conditional on run-desktop so we don't pay the cost when only ui/api changed. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ci(type-check): use dev nest build so .d.ts files exist for desktop build:api runs build:prod which sets declaration: false. Without declarations, desktop fails type-checking with TS2749s for value-used-as-type on CloudAuthService and AzureAuthService imports from api/dist. The plain nest build (default tsconfig.json) emits declarations. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ci(type-check): install ui plugin deps via build:statics before ui check UI plugins under redisinsight/ui/src/packages/* are sub-projects whose sources get type-checked through the UI tsconfig. Without their deps installed, module resolution shifts (TS2307 vs TS7016 etc.) so local results diverge from CI. Running build:statics before yarn type-check:ui makes the baseline hermetic. Cache the plugin node_modules keyed on the plugin yarn.locks to keep warm-cache cost low. Regenerated redisinsight/ui/.tscheck.rec.json with plugin deps installed: 1848 -> 1837 errors. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs(skill): document local UI/Desktop check env caveats UI: plugin deps must be installed (yarn build:statics) before yarn type-check:ui matches CI. Desktop: api/dist must be populated via the dev nest build (declaration files needed), not build:prod. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * refactor(types): move tscheck scripts into each workspace's package.json Replaces 11 type-check / tscheck scripts at the repo root with one aggregate "type-check" and three matching scripts per workspace (ui, api, desktop). Each workspace owns its own type-check, tscheck, and tscheck:force. Root package.json shrinks from 11 to 1 entry. CI workflow and the type-check-baselines skill updated to call workspaces directly (yarn --cwd redisinsight/<workspace> <task>). Baselines regenerated with workspace-relative paths (totals unchanged: ui=1837, api=4114, desktop=512). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * ci(type-check): expose root node_modules/.bin to workspace invocations yarn 1.x without workspaces does not surface root binaries (tsc, tsc-output-parser, tsx) to nested yarn --cwd invocations. CI calls workspace scripts directly with no outer yarn, so the pipeline shells fail with "tsc-output-parser: not found" / "tsx: not found". Add the root .bin to GITHUB_PATH once after install so subsequent workspace steps inherit it. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> | 4 个月前 | |
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> | 4 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 15 天前 | ||
| 3 个月前 | ||
| 15 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 10 天前 | ||
| 1 年前 | ||
| 1 个月前 | ||
| 1 年前 | ||
| 4 年前 | ||
| 2 个月前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 4 年前 | ||
| 1 年前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 2 年前 | ||
| 2 个月前 | ||
| 4 天前 | ||
| 4 天前 | ||
| 4 年前 | ||
| 1 年前 | ||
| 4 个月前 | ||
| 4 个月前 |