Dependency updates for July 2026 - #1763
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe PR updates Node to 24.18.0, replaces ESLint with Oxlint, modernizes build and test infrastructure, centralizes async action dependencies in ChangesRuntime and application modernization
Device-driver cleanup
Estimated code review effort: 4 (Complex) | ~50 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 7
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
Dockerfile.dev (1)
22-23: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick winUse the published Node archive format by default.
curl -Ofollows Node’s redirect and does not fail on the final response here, but the Dockerfile still extracts a wrong.tar.gzarchive instead of the published.tar.xz, producing an invalid Node install. Usecurl -fsSLOwithnode-$NODE_VERSION-linux-x64.tar.xzand extract withtar -xJf.Proposed fix
-RUN curl -O https://nodejs.org/download/release/$NODE_VERSION/node-$NODE_VERSION-linux-x64.tar.gz \ - && tar -xzf node-$NODE_VERSION-linux-x64.tar.gz -C /usr/local/bin +RUN curl -fsSLO https://nodejs.org/download/release/$NODE_VERSION/node-$NODE_VERSION-linux-x64.tar.xz \ + && tar -xJf node-$NODE_VERSION-linux-x64.tar.xz -C /usr/local/bin🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Dockerfile.dev` around lines 22 - 23, Update the Node download and extraction command to fetch node-$NODE_VERSION-linux-x64.tar.xz using curl -fsSLO, then extract that archive with tar -xJf into /usr/local/bin instead of using the .tar.gz format.test/app/actions/sync.test.js (1)
698-719: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winRestore
periodMedtronic600in teardown, not after assertions.A failed assertion skips each inline restore and leaks the changed period into later tests.
test/app/actions/sync.test.js#L698-L719: restore the original period fromafterEachorfinally.test/app/actions/sync.test.js#L788-L813: restore the original period fromafterEachorfinally.test/app/actions/sync.test.js#L866-L896: restore the original period fromafterEachorfinally.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@test/app/actions/sync.test.js` around lines 698 - 719, Move restoration of uploadDataPeriod.periodMedtronic600 out of the inline assertion flow and into guaranteed cleanup for the affected tests. In test/app/actions/sync.test.js ranges 698-719, 788-813, and 866-896, preserve each original period value and restore it via afterEach or finally so cleanup runs even when assertions fail.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@app/actions/async.js`:
- Line 648: Update the regex used in the filename matching logic to remove the
global flag, escape the dot before the ibf extension, and match the requested
extension directly without accepting lookalike filenames.
In `@babel.config.js`:
- Around line 21-26: Update the Babel configuration’s preset-env options by
removing useBuiltIns, corejs, and bugfixes, and add
babel-plugin-polyfill-corejs3 configured with method usage-global. Remove the
obsolete `@babel/plugin-syntax-dynamic-import` and
`@babel/plugin-syntax-import-meta` entries while preserving the remaining
supported Babel plugins and settings.
In `@jest.setup.js`:
- Around line 3-10: Update mockT so placeholder keys are regex-escaped before
constructing the interpolation pattern, and replace matches via a callback that
returns obj[key] literally. Preserve the existing global whitespace-tolerant
placeholder matching and default-object behavior.
In `@lib/core/localStore.js`:
- Around line 22-26: Update the mockData backing store used by mockStore to be
prototype-free via Object.create(null), and change getItem to check only own
properties rather than using the in operator. Preserve the existing null return
for missing keys and current setItem/removeItem behavior.
In `@lib/drivers/abbott/freeStyleLibreData.js`:
- Line 390: Update the zero-compressed block handling in the decompression logic
to append blockLength actual zero values instead of undefined entries. Preserve
the existing decompressedBuffer.concat flow and ensure the resulting values
represent zero bytes.
In `@README.md`:
- Line 43: Correct the misspelled word “distrubutions” in the Linux setup
guidance to “distributions,” leaving the surrounding README text unchanged.
In `@test/app/actions/async.test.js`:
- Around line 77-79: Update the teardown that currently restores
appState.services to also restore appState.versionInfo to its default captured
value, ensuring each test starts with clean version metadata.
---
Outside diff comments:
In `@Dockerfile.dev`:
- Around line 22-23: Update the Node download and extraction command to fetch
node-$NODE_VERSION-linux-x64.tar.xz using curl -fsSLO, then extract that archive
with tar -xJf into /usr/local/bin instead of using the .tar.gz format.
In `@test/app/actions/sync.test.js`:
- Around line 698-719: Move restoration of uploadDataPeriod.periodMedtronic600
out of the inline assertion flow and into guaranteed cleanup for the affected
tests. In test/app/actions/sync.test.js ranges 698-719, 788-813, and 866-896,
preserve each original period value and restore it via afterEach or finally so
cleanup runs even when assertions fail.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: bbce6f4a-adc7-44ff-9326-4406e8cd6a22
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (78)
.circleci/config.yml.config.js.eslintignore.eslintrc.nvmrc.oxlintrc.jsonDockerfileDockerfile.devREADME.mdapp/actions/appState.jsapp/actions/async.jsapp/actions/sync.jsapp/actions/utils.jsapp/auth.jsapp/components/AdHocModal.jsapp/components/BluetoothModal.jsapp/components/ClinicUserSelect.jsapp/components/DeviceSelection.jsapp/components/DeviceTimeModal.jsapp/components/Header.jsapp/components/UpdateModal.jsapp/components/Upload.jsapp/components/UploadList.jsapp/containers/App.jsapp/containers/MainPage.jsapp/containers/SettingsPage.jsapp/containers/Top.jsapp/containers/WorkspacePage.jsapp/main.dev.jsapp/package.jsonapp/utils/config.i18next.cjsbabel.config.jsdocs/checklists/README.mddocs/checklisttemplates/CGMChecklist.mddocs/state/StateTreeGlossary.mdjest.setup.jslib/TimezoneOffsetUtil.jslib/commonFunctions.jslib/core/api.jslib/core/device.jslib/core/localStore.jslib/crc.jslib/driverManager.jslib/drivers/abbott/abbottFreeStyleLite.jslib/drivers/abbott/abbottPrecisionXtra.jslib/drivers/abbott/freeStyleLibreData.jslib/drivers/allmedicus/agm4000.jslib/drivers/bayer/bayerContourNext.jslib/drivers/bluetoothLE/bluetoothLEDriver.jslib/drivers/glucorx/glucoRxDriver.jslib/drivers/i-sens/glucocardExpression.jslib/drivers/medtronic/cli/blob_loader.jslib/drivers/medtronic/medtronicDriver.jslib/drivers/medtronic/processData.jslib/drivers/medtronic600/medtronic600Driver.jslib/drivers/onetouch/oneTouchUltra2.jslib/drivers/onetouch/oneTouchUltraMini.jslib/drivers/onetouch/oneTouchVerioBLE.jslib/drivers/onetouch/oneTouchVerioIQ.jslib/drivers/roche/accuChekUSB.jslib/serialDevice.jspackage.jsonscripts/json-compare.jsscripts/vt-submit.jsscripts/whitelisting/av-submit.jstest/app/actions/async.test.jstest/app/actions/sync.test.jstest/app/actions/utils.test.jstest/app/reducers/uploads.test.jstest/app/reducers/working.test.jstest/e2e.jstest/lib/medtronic/testMedtronicSimulator.jstest/lib/tandem/testTandemSimulator.jstest/lib/testCommonFunctions.jstest/lib/testObjectBuilder.jswebpack.config.base.mjswebpack.config.renderer.dev.babel.mjswebpack.config.web.dev.babel.mjs
💤 Files with no reviewable changes (6)
- .eslintignore
- .eslintrc
- lib/core/api.js
- .config.js
- app/containers/Top.js
- app/components/DeviceSelection.js
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
lib/core/localStore.js (1)
32-33: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick winFall back when
window.localStorageis unavailable.This branch checks only whether
windowexists. If storage is missing or access raises because browser storage is blocked,ourStorebecomes unusable instead of selectingmockStore, causing subsequent storage operations to fail.Proposed fix
if (env.electron_renderer || env.browser) { - ourStore = typeof window !== 'undefined' ? window.localStorage : mockStore; + try { + const browserStore = typeof window !== 'undefined' ? window.localStorage : null; + ourStore = browserStore ?? mockStore; + } catch { + ourStore = mockStore; + } }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@lib/core/localStore.js` around lines 32 - 33, Update the store selection in the electron_renderer/browser branch to use mockStore whenever window.localStorage is unavailable or access to it throws, while retaining localStorage when it can be accessed successfully. Ensure ourStore is always assigned a usable storage implementation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@lib/core/localStore.js`:
- Around line 32-33: Update the store selection in the electron_renderer/browser
branch to use mockStore whenever window.localStorage is unavailable or access to
it throws, while retaining localStorage when it can be accessed successfully.
Ensure ourStore is always assigned a usable storage implementation.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 89e1c3ff-c915-4144-b6c3-fb6cbab4f179
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (10)
Dockerfile.devREADME.mdapp/actions/async.jsbabel.config.jsjest.setup.jslib/core/localStore.jslib/drivers/abbott/freeStyleLibreData.jspackage.jsontest/app/actions/async.test.jstest/app/actions/sync.test.js
🚧 Files skipped from review as they are similar to previous changes (6)
- lib/drivers/abbott/freeStyleLibreData.js
- Dockerfile.dev
- babel.config.js
- package.json
- app/actions/async.js
- test/app/actions/async.test.js
| // restore in an afterEach rather than at the end of each test, so that a | ||
| // failing assertion can't skip the restore | ||
| appState.services = defaultServices; | ||
| appState.versionInfo = defaultVersionInfo; |
There was a problem hiding this comment.
I think the versionInfo reassignment here is going to just assign an already modified defaultVersionInfo since it's assigned by reference on L54 and doAppInit will mutate it when it runs.
We probably need to create new objects at creation and use them in this afterEach:
// line 53-54
const defaultServices = { ...appState.services };
const defaultVersionInfo = { ...appState.versionInfo };
afterEach(() => {
appState.services = { ...defaultServices };
appState.versionInfo = { ...defaultVersionInfo };
});
As part of the dependency updates I have: