| Files | Last commit | Last update |
|---|---|---|
Add scheduled dependency vulnerability audit + dead-dependencies skill (#6239) | 3 months ago | |
Initial commit | 4 years ago | |
fix build monaco-yaml | 2 years 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> | 5 months ago | |
Migrate package manager from yarn to npm (#6216) | 3 months ago | |
Migrate package manager from yarn to npm (#6216) | 3 months ago | |
ci: check i18n locale files for duplicate keys (#6131) Add a dependency-free script (yarn i18n:check) that fails when a locale file contains a duplicate key — JSON silently keeps only the last occurrence, so a stray dup would shadow a translation with no build/parse error. Wired into a workflow that runs on pull requests touching redisinsight/ui/src/i18n/locales. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> | 4 months ago | |
Dev: Apply eslint & prettier suggestions (#4500) * backend * desktop * UI | 1 year ago | |
RI-6690 executible fix | 1 year ago | |
Bugfix/deb build script (#5384) * fix(deb): improve cleanup script for RedisInsight instances during removal * fix(deb): set executable name for RedisInsight in electron builder configuration * fix(deb): update Linux executable name to 'redisinsight' in afterPack.js and remove it from electron-builder.json to avoid potential issues with rest of linux builds | 9 months ago | |
Add scheduled dependency vulnerability audit + dead-dependencies skill (#6239) | 3 months ago | |
Migrate package manager from yarn to npm (#6216) | 3 months ago | |
Shard frontend unit tests across 4 CI jobs (#6488) * ci(ui): shard frontend unit tests across 4 jobs Frontend unit tests (test:cov) were taking ~18 minutes on a single runner. Split into a 4-way jest --shard matrix, with a merge-coverage job that recombines per-shard coverage reports so the existing PR coverage-diff comment keeps working unchanged. * ci(ui): enforce coverage thresholds on merged shard coverage Each shard only runs a fraction of the test files, so jest's global coverageThreshold in jest.config.cjs fails on every shard (~44% instead of ~80%) even though the combined suite meets it. Disable per-shard threshold enforcement and check it against the merged coverage in merge-coverage instead. | 1 month 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. | 2 months 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> | 5 months ago | |
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> | 5 months ago | |
fix(scripts): fail the TS baseline check when tsc crashes (#6434) * fix(scripts): fail loudly when tsc dies instead of reporting zero errors The baseline check read tsc's diagnostics off a pipe, so tsc's exit status was discarded. An out-of-memory abort produces exit 134 and no stdout, which the parser turns into an empty error list, so the check concluded every recorded error had been fixed and told the developer to refresh the baseline. Doing that wrote an empty baseline and dropped 1287 recorded UI errors, exiting 0. `tscheck:force` skipped the comparison entirely and wrote the empty baseline outright. Run tsc from the script instead of piping into it, and treat any exit status other than 0, 1 or 2 (or death by signal) as a run that never reported its diagnostics. All three commands now refuse to touch the baseline and say that tsc ran out of memory. * fix(scripts): reject compiler crashes that exit 1 with no diagnostics A tsc run killed by an uncaught exception exits 1 with an empty stdout and a stack trace on stderr. Exit 1 is also a legitimate diagnostics status, so the status check let those runs through, the parser turned the empty output into zero errors, and both `tscheck` and `tscheck:force` went on to replace the baseline with an empty snapshot. Require a non-zero exit to carry at least one parsed diagnostic. A compiler that failed but reported nothing says nothing about the real error count, whatever its status. * refactor(scripts): move tsc crash detection into a separate wrapper Revert ts-error-check.ts to its original form and move the crash-detection logic (spawn tsc, check exit status/signal, refuse to touch the baseline on a crash) into a new tsc-safe-run.ts, which forwards parsed diagnostics to the unmodified ts-error-check.ts over stdin, same as the old shell pipe did. Keeps ts-error-check.ts byte-identical to main so it stays easy to sync with the copy of this script kept in another repo. * fix(scripts): resolve tsx as a JS entry instead of a bare spawn spawnSync('tsx', ...) relies on PATH/shell lookup, which fails on Windows where npm exposes tsx through a .cmd shim. Resolve tsx/cli the same way tsc is already resolved here and launch it via process.execPath, so no shell is involved. | 2 months ago | |
version bump | 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. | 2 months ago |
| Files | Last commit | Last update |
|---|---|---|
| 3 months ago | ||
| 4 years ago | ||
| 2 years ago | ||
| 5 months ago | ||
| 3 months ago | ||
| 3 months ago | ||
| 4 months ago | ||
| 1 year ago | ||
| 1 year ago | ||
| 9 months ago | ||
| 3 months ago | ||
| 3 months ago | ||
| 1 month ago | ||
| 2 months ago | ||
| 5 months ago | ||
| 5 months ago | ||
| 2 months ago | ||
| 1 year ago | ||
| 2 months ago |