Skip to content

Merge v2.67.0 into main - #1761

Merged
gniezen merged 27 commits into
mainfrom
develop
Jul 23, 2026
Merged

Merge v2.67.0 into main#1761
gniezen merged 27 commits into
mainfrom
develop

Conversation

@gniezen

@gniezen gniezen commented Jul 2, 2026

Copy link
Copy Markdown
Member

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR appears to merge a release branch into main, updating dependencies/tooling, expanding support for additional Prodigy meter variants (Pocket/VOICE) using the existing Prodigy HID driver, and performing broad documentation cleanup/normalization across the docs/ tree.

Changes:

  • Add Prodigy Pocket and Prodigy VOICE as supported HID devices (manifests, driver routing, UI device list, and model tagging).
  • Update a large set of runtime/dev dependencies and adjust app/root version strings.
  • Normalize and reformat many markdown docs (titles, lists, links), including removing several placeholder guide docs.

Reviewed changes

Copilot reviewed 59 out of 60 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
webpack.config.renderer.dev.babel.mjs DevServer config tweak (adds allowedHosts).
package.json Version string update + dependency updates/removals.
lib/hidDevice.js Treat Prodigy Pocket/VOICE as “changing report ID” HID devices.
lib/drivers/prodigy/autocode.js Set deviceInfo.model based on Prodigy driverId variants.
lib/core/driverManifests.js Add USB HID manifests for Prodigy Pocket/VOICE.
lib/core/device.js Route Prodigy Pocket/VOICE to existing autocode driver + HID comms.
docs/state/StateTreeGlossary.md Title + formatting/link cleanup (and minor text edits).
docs/state/README.md Add top-level title and update Redux doc link.
docs/state/ExampleStateTree.md Normalize heading/whitespace.
docs/state/CustomMiddleware.md Normalize heading.
docs/README.md Remove legacy docs index page.
docs/misc/README.md Add top-level title.
docs/misc/PWDSimulators.md Add title + update links/list formatting.
docs/misc/FlatRateBasals.md Normalize heading structure.
docs/misc/CSSModules.md Normalize heading structure and spacing.
docs/guide/FeatureOverview.md Remove placeholder “Coming soon” doc.
docs/guide/DirectoryStructure.md Remove placeholder “Coming soon” doc.
docs/guide/CodeStyle.md Remove legacy codes-style pointer doc.
docs/guide/Architecture.md Remove placeholder “Coming soon” doc.
docs/checklisttemplates/README.md Add top-level title + list formatting.
docs/checklisttemplates/PumpChecklist.md Reformat checklist markdown for consistency/readability.
docs/checklisttemplates/CGMChecklist.md Reformat checklist markdown + fix a heading typo.
docs/checklisttemplates/BGMChecklist.md Reformat checklist markdown + rename heading.
docs/checklists/trividiaTrueMetrix.md Add title + normalize checklist formatting.
docs/checklists/tandemCGM.md Normalize checklist formatting.
docs/checklists/tandem.md Normalize checklist formatting + fix relative links to templates.
docs/checklists/reliOnPrime.md Add title + normalize checklist formatting.
docs/checklists/reliOnPremier.md Add title + normalize checklist formatting.
docs/checklists/README.md Add top-level title + normalize device list formatting/links.
docs/checklists/prodigyAutocode.md Add title + normalize checklist formatting.
docs/checklists/oneTouchVerioIQ.md Rename checklist heading + minor spacing cleanup.
docs/checklists/oneTouchVerioBLE.md Add title + normalize checklist formatting.
docs/checklists/oneTouchVerio.md Rename checklist heading + minor spacing cleanup.
docs/checklists/oneTouchUltraMini.md Add title + normalize headings/notes + list formatting.
docs/checklists/oneTouchUltra2.md Add title + normalize checklist formatting.
docs/checklists/microTechEquil.md Add title + normalize checklist formatting.
docs/checklists/medtronicCGM.md Add title + normalize checklist formatting.
docs/checklists/medtronic600CGM.md Add title + normalize checklist formatting.
docs/checklists/medtronic600.md Normalize checklist formatting + fix relative links to templates.
docs/checklists/medtronic.md Normalize checklist formatting + fix relative links to templates.
docs/checklists/ketomojo.md Add title + normalize checklist formatting + list normalization.
docs/checklists/insuletOmniPod.md Normalize checklist formatting + fix relative links to templates.
docs/checklists/glucoRx.md Add title + normalize checklist formatting.
docs/checklists/glucocardExpression.md Add title + normalize checklist formatting.
docs/checklists/glucocard.md Add title + normalize checklist formatting.
docs/checklists/dexcom.md Normalize checklist formatting (lists/indentation) + whitespace cleanup.
docs/checklists/careSensUSB.md Add title + normalize checklist formatting.
docs/checklists/caresensNPremierBluetooth.md Add title + normalize checklist formatting.
docs/checklists/bayerContourNext.md Rename checklist heading + spacing cleanup.
docs/checklists/bayerContour.md Add title + normalize checklist formatting.
docs/checklists/avivaConnectAndGuide.md Add title + normalize checklist formatting.
docs/checklists/abbottPrecisionXtra.md Rename checklist heading + normalize list formatting.
docs/checklists/abbottFreeStyleNeo.md Add title + normalize checklist formatting.
docs/checklists/abbottFreeStyleLite.md Rename checklist heading + normalize list formatting.
docs/checklists/abbottFreeStyleLibre.md Re-structure CGM/BGM checklist sections + normalize lists/headings.
docs/BootstrappingToUTC.md Add title + update links + normalize list/code-fence formatting.
app/reducers/devices.js Add Prodigy Pocket/VOICE entries to the device selection list.
app/package.json Update Electron app version string.
app/components/Upload.js Add support for debug-downloads when upload payload uses postRecords (camelCase).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

},

devServer: {
allowedHosts: 'all',
Comment thread package.json Outdated
{
"name": "tidepool-uploader",
"version": "2.66.0",
"version": "2.66.0-add-more-prodigy.1",
Comment thread app/package.json Outdated
"name": "tidepool-uploader",
"productName": "tidepool-uploader",
"version": "2.66.0",
"version": "2.66.0-add-more-prodigy.1",
#### `uploadTargetUser`

*The propery `uploadTargetUser` encodes the `userId` (for lookup in the [`allUsers`](#-allusers) branch of the state tree) of the PWD currently selected as the target for data upload.*
*The propery `uploadTargetUser` encodes the `userId` (for lookup in the [`allUsers`](#allusers) branch of the state tree) of the PWD currently selected as the target for data upload.*
@krystophv

Copy link
Copy Markdown
Member

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added support for additional Prodigy meter models.
    • Improved handling of debug record downloads when exporting processed records.
  • Bug Fixes

    • Fixed a case where processed-record exports could miss data in one supported format.
    • Updated the app to version 2.67.0.

Walkthrough

This PR adds ProdigyPocket and ProdigyVoice device support across drivers/manifests/reducers, updates upload debug-link JSON handling for postRecords, adds CircleCI release-draft automation, bumps app/package versions and dependencies, sets webpack dev-server allowedHosts, and reformats/restructures numerous markdown documentation and checklist files.

Changes

Prodigy devices and release draft CI

Layer / File(s) Summary
Prodigy device wiring
lib/core/driverManifests.js, lib/core/device.js, app/reducers/devices.js
Adds ProdigyPocket/ProdigyVoice HID manifest entries, driver/comms mappings, and reducer device definitions.
Prodigy driver behavior
lib/drivers/prodigy/autocode.js, lib/hidDevice.js, app/components/Upload.js
Selects device model by driverId, extends HID report-ID send path for new devices, and updates debug JSON export to handle postRecords.
Release draft automation
.circleci/create-release-draft.js, .circleci/config.yml
Adds a script that creates a GitHub draft release and wires a new create-release-draft job as a dependency for macOS/Windows builds.
Version updates
app/package.json, package.json
Bumps version fields to 2.67.0.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Dependency and build updates

Layer / File(s) Summary
Package dependency bumps
package.json
Updates runtime/dev dependency versions across MUI, Electron, Babel, webpack, and test tooling; removes stack-trace.
Dev server host policy
webpack.config.renderer.dev.babel.mjs
Sets allowedHosts: 'all' in the renderer dev server config.

Estimated code review effort: 2 (Simple) | ~10 minutes

Documentation restructuring

Layer / File(s) Summary
Bootstrapping and guide/state docs
docs/BootstrappingToUTC.md, docs/README.md, docs/guide/*, docs/misc/*, docs/state/*
Updates BootstrappingToUTC field requirements and equations, removes guide stubs, refreshes headings/links, and adds a new State Tree Glossary.
Checklist templates
docs/checklisttemplates/*
Adds # Device headers and reformats BGM/CGM/Pump checklist templates with consistent nesting.
CGM device checklists
docs/checklists/abbottFreeStyleLibre.md, docs/checklists/dexcom.md, docs/checklists/medtronic600CGM.md, docs/checklists/medtronicCGM.md, docs/checklists/tandemCGM.md
Normalizes CGM checklist formatting and section headings.
Pump device checklists
docs/checklists/medtronic.md, docs/checklists/medtronic600.md, docs/checklists/tandem.md, docs/checklists/insuletOmniPod.md
Reformats pump checklist content and updates CGM checklist link paths.
BGM meter checklists
docs/checklists/*.md (many meter-specific files)
Standardizes checklist headings, legend formatting, and Tidepool ingestion API sections across BGM device docs.

Estimated code review effort: 2 (Simple) | ~15 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive No pull request description was provided, so there is no meaningful description to assess. Add a brief PR description summarizing the main changes or release scope.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects that this PR merges version 2.67.0 into main.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (1)
package.json (1)

121-136: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Several @babel/plugin-proposal-* packages left on old, now-deprecated versions.

While most @babel/* packages were bumped to 7.29.7, plugin-proposal-class-properties, plugin-proposal-export-namespace-from, plugin-proposal-json-strings, plugin-proposal-nullish-coalescing-operator, plugin-proposal-numeric-separator, and plugin-proposal-optional-chaining were left at older pins. These proposals were finalized into the ECMAScript standard and Babel has officially deprecated them in favor of @babel/plugin-transform-* equivalents (already effectively covered by @babel/preset-env). Consider removing these deprecated packages/plugins entirely rather than keeping them pinned.

🤖 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 `@package.json` around lines 121 - 136, The dependency list still includes
deprecated proposal plugins, so update the Babel config in package.json by
removing the finalized `@babel/plugin-proposal-*` entries such as
`plugin-proposal-class-properties`, `plugin-proposal-export-namespace-from`,
`plugin-proposal-json-strings`, `plugin-proposal-nullish-coalescing-operator`,
`plugin-proposal-numeric-separator`, and `plugin-proposal-optional-chaining`,
and rely on the existing `@babel/preset-env`/transform plugins instead. If any
of these features are still required explicitly, switch to the corresponding
`@babel/plugin-transform-*` packages rather than keeping the proposal versions
pinned.
🤖 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 `@docs/checklists/README.md`:
- Line 15: Fix the user-facing Markdown labels in the checklist device list by
correcting the GLUCOCARD entry text from GBM to BGM and removing the extra
closing parenthesis from the OneTouch Verio visible labels. Update the affected
bullet items in the checklist README so the displayed names read cleanly while
keeping the links unchanged.

In `@docs/checklisttemplates/CGMChecklist.md`:
- Around line 72-79: The General section in the CGM checklist still refers to
“pump events,” which is a copy/paste artifact and should use CGM-specific
wording instead. Update the bullet text in the checklist template to say “CGM
events” or simply “events” so the terminology matches this template and does not
mislead implementers.

In `@docs/state/StateTreeGlossary.md`:
- Around line 43-47: The glossary entry for updateProfileErrorDismissed
references the wrong state field name. Update the description in
StateTreeGlossary so it points to updateProfileErrorMessage instead of
uploadProfileErrorMessage, keeping the wording aligned with the surrounding
state glossary and the updateProfileErrorDismissed symbol.
- Around line 77-80: Fix the remaining typo in the `uploadTargetUser` glossary
entry by updating the prose text in `StateTreeGlossary.md`; the description
currently says “propery” and should read “property”. Keep the rest of the
`uploadTargetUser` definition unchanged.

---

Nitpick comments:
In `@package.json`:
- Around line 121-136: The dependency list still includes deprecated proposal
plugins, so update the Babel config in package.json by removing the finalized
`@babel/plugin-proposal-*` entries such as `plugin-proposal-class-properties`,
`plugin-proposal-export-namespace-from`, `plugin-proposal-json-strings`,
`plugin-proposal-nullish-coalescing-operator`,
`plugin-proposal-numeric-separator`, and `plugin-proposal-optional-chaining`,
and rely on the existing `@babel/preset-env`/transform plugins instead. If any
of these features are still required explicitly, switch to the corresponding
`@babel/plugin-transform-*` packages rather than keeping the proposal versions
pinned.
🪄 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: 1228610b-3c8b-4806-8c1c-19bcf1513971

📥 Commits

Reviewing files that changed from the base of the PR and between bc5cda0 and 6c10845.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (59)
  • app/components/Upload.js
  • app/package.json
  • app/reducers/devices.js
  • docs/BootstrappingToUTC.md
  • docs/README.md
  • docs/checklists/README.md
  • docs/checklists/abbottFreeStyleLibre.md
  • docs/checklists/abbottFreeStyleLite.md
  • docs/checklists/abbottFreeStyleNeo.md
  • docs/checklists/abbottPrecisionXtra.md
  • docs/checklists/avivaConnectAndGuide.md
  • docs/checklists/bayerContour.md
  • docs/checklists/bayerContourNext.md
  • docs/checklists/careSensUSB.md
  • docs/checklists/caresensNPremierBluetooth.md
  • docs/checklists/dexcom.md
  • docs/checklists/glucoRx.md
  • docs/checklists/glucocard.md
  • docs/checklists/glucocardExpression.md
  • docs/checklists/insuletOmniPod.md
  • docs/checklists/ketomojo.md
  • docs/checklists/medtronic.md
  • docs/checklists/medtronic600.md
  • docs/checklists/medtronic600CGM.md
  • docs/checklists/medtronicCGM.md
  • docs/checklists/microTechEquil.md
  • docs/checklists/oneTouchUltra2.md
  • docs/checklists/oneTouchUltraMini.md
  • docs/checklists/oneTouchVerio.md
  • docs/checklists/oneTouchVerioBLE.md
  • docs/checklists/oneTouchVerioIQ.md
  • docs/checklists/prodigyAutocode.md
  • docs/checklists/reliOnPremier.md
  • docs/checklists/reliOnPrime.md
  • docs/checklists/tandem.md
  • docs/checklists/tandemCGM.md
  • docs/checklists/trividiaTrueMetrix.md
  • docs/checklisttemplates/BGMChecklist.md
  • docs/checklisttemplates/CGMChecklist.md
  • docs/checklisttemplates/PumpChecklist.md
  • docs/checklisttemplates/README.md
  • docs/guide/Architecture.md
  • docs/guide/CodeStyle.md
  • docs/guide/DirectoryStructure.md
  • docs/guide/FeatureOverview.md
  • docs/misc/CSSModules.md
  • docs/misc/FlatRateBasals.md
  • docs/misc/PWDSimulators.md
  • docs/misc/README.md
  • docs/state/CustomMiddleware.md
  • docs/state/ExampleStateTree.md
  • docs/state/README.md
  • docs/state/StateTreeGlossary.md
  • lib/core/device.js
  • lib/core/driverManifests.js
  • lib/drivers/prodigy/autocode.js
  • lib/hidDevice.js
  • package.json
  • webpack.config.renderer.dev.babel.mjs
💤 Files with no reviewable changes (5)
  • docs/README.md
  • docs/guide/FeatureOverview.md
  • docs/guide/Architecture.md
  • docs/guide/DirectoryStructure.md
  • docs/guide/CodeStyle.md

Comment thread docs/checklists/README.md
* [CareSens N Premier & Dual (BGM)](careSensUSB.md)
* [CareSens N Premier & Dual over Bluetooth (BGM)](caresensNPremierBluetooth.md)
* [Dexcom CGM](dexcom.md)
* [GLUCOCARD Shine, Shine XL, Shine Connex & Shine Express (GBM)](glucocard.md)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the visible label typos in the device list.

GBM on Line 15 looks like a typo for BGM, and the OneTouch Verio labels on Lines 25-26 still have an extra ) in the visible text. These are small but user-facing Markdown defects.

Proposed fix
-* [GLUCOCARD Shine, Shine XL, Shine Connex & Shine Express (GBM)](glucocard.md)
+* [GLUCOCARD Shine, Shine XL, Shine Connex & Shine Express (BGM)](glucocard.md)
-* [OneTouch Verio, Verio Flex and Verio Reflect (BGM))](oneTouchVerio.md)
-* [OneTouch Verio Flex and Verio Reflect over Bluetooth (BGM))](oneTouchVerio.md)
+* [OneTouch Verio, Verio Flex and Verio Reflect (BGM)](oneTouchVerio.md)
+* [OneTouch Verio Flex and Verio Reflect over Bluetooth (BGM)](oneTouchVerio.md)

Also applies to: 25-26

🤖 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 `@docs/checklists/README.md` at line 15, Fix the user-facing Markdown labels in
the checklist device list by correcting the GLUCOCARD entry text from GBM to BGM
and removing the extra closing parenthesis from the OneTouch Verio visible
labels. Update the affected bullet items in the checklist README so the
displayed names read cleanly while keeping the links unchanged.

Comment on lines 72 to 79
### General

- [ ] device time is in UTC, with records using UTC timestamps, OR
- [ ] internal timestamp or persistent log index (across device communication sessions) to order all pump events (regardless of type), independent of device display time OR
- [ ] ephemeral log index (does not persist across device communication sessions) to order all pump events (regardless of type), independent of device display time
- [ ] device time is in UTC, with records using UTC timestamps, OR
- [ ] internal timestamp or persistent log index (across device communication sessions) to order all pump events (regardless of type), independent of device display time OR
- [ ] ephemeral log index (does not persist across device communication sessions) to order all pump events (regardless of type), independent of device display time

Device-specific? (Add any device-specific notes/additions here.)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use CGM wording in the General section.

The pump events phrasing on Lines 74-76 is a copy/paste artifact in the CGM template and will mislead implementers. Please rename it to CGM events or just events.

Proposed fix
-- [ ] internal timestamp or persistent log index (across device communication sessions) to order all pump events (regardless of type), independent of device display time OR
-- [ ] ephemeral log index (does not persist across device communication sessions) to order all pump events (regardless of type), independent of device display time
+- [ ] internal timestamp or persistent log index (across device communication sessions) to order all CGM events (regardless of type), independent of device display time OR
+- [ ] ephemeral log index (does not persist across device communication sessions) to order all CGM events (regardless of type), independent of device display time
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### General
- [ ] device time is in UTC, with records using UTC timestamps, OR
- [ ] internal timestamp or persistent log index (across device communication sessions) to order all pump events (regardless of type), independent of device display time OR
- [ ] ephemeral log index (does not persist across device communication sessions) to order all pump events (regardless of type), independent of device display time
- [ ] device time is in UTC, with records using UTC timestamps, OR
- [ ] internal timestamp or persistent log index (across device communication sessions) to order all pump events (regardless of type), independent of device display time OR
- [ ] ephemeral log index (does not persist across device communication sessions) to order all pump events (regardless of type), independent of device display time
Device-specific? (Add any device-specific notes/additions here.)
### General
- [ ] device time is in UTC, with records using UTC timestamps, OR
- [ ] internal timestamp or persistent log index (across device communication sessions) to order all CGM events (regardless of type), independent of device display time OR
- [ ] ephemeral log index (does not persist across device communication sessions) to order all CGM events (regardless of type), independent of device display time
Device-specific? (Add any device-specific notes/additions here.)
🤖 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 `@docs/checklisttemplates/CGMChecklist.md` around lines 72 - 79, The General
section in the CGM checklist still refers to “pump events,” which is a
copy/paste artifact and should use CGM-specific wording instead. Update the
bullet text in the checklist template to say “CGM events” or simply “events” so
the terminology matches this template and does not mislead implementers.

Comment on lines 43 to 47
#### `updateProfileErrorDismissed`

*The property `updateProfileErrorDismissed` is a flag indicating whether the user has dismissed the displayed `uploadProfileErrorMessage`. *
*The property `updateProfileErrorDismissed` is a flag indicating whether the user has dismissed the displayed `uploadProfileErrorMessage`.*

If the user has not dismissed the error or if there has been no error to dismiss, the value of `updateProfileErrorDismissed` is `null`. If the user has dismissed an existing error, the value is `true`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fix the referenced error field name.

updateProfileErrorDismissed should point at updateProfileErrorMessage, not uploadProfileErrorMessage. As written, this entry is inconsistent with the surrounding glossary and a state field that doesn't exist.

🛠️ Proposed fix
-*The property `updateProfileErrorDismissed` is a flag indicating whether the user has dismissed the displayed `uploadProfileErrorMessage`.*
+*The property `updateProfileErrorDismissed` is a flag indicating whether the user has dismissed the displayed `updateProfileErrorMessage`.*
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
#### `updateProfileErrorDismissed`
*The property `updateProfileErrorDismissed` is a flag indicating whether the user has dismissed the displayed `uploadProfileErrorMessage`. *
*The property `updateProfileErrorDismissed` is a flag indicating whether the user has dismissed the displayed `uploadProfileErrorMessage`.*
If the user has not dismissed the error or if there has been no error to dismiss, the value of `updateProfileErrorDismissed` is `null`. If the user has dismissed an existing error, the value is `true`.
#### `updateProfileErrorDismissed`
*The property `updateProfileErrorDismissed` is a flag indicating whether the user has dismissed the displayed `updateProfileErrorMessage`.*
If the user has not dismissed the error or if there has been no error to dismiss, the value of `updateProfileErrorDismissed` is `null`. If the user has dismissed an existing error, the value is `true`.
🤖 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 `@docs/state/StateTreeGlossary.md` around lines 43 - 47, The glossary entry for
updateProfileErrorDismissed references the wrong state field name. Update the
description in StateTreeGlossary so it points to updateProfileErrorMessage
instead of uploadProfileErrorMessage, keeping the wording aligned with the
surrounding state glossary and the updateProfileErrorDismissed symbol.

Comment on lines 77 to 80
#### `uploadTargetUser`

*The propery `uploadTargetUser` encodes the `userId` (for lookup in the [`allUsers`](#-allusers) branch of the state tree) of the PWD currently selected as the target for data upload.*
*The propery `uploadTargetUser` encodes the `userId` (for lookup in the [`allUsers`](#allusers) branch of the state tree) of the PWD currently selected as the target for data upload.*

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Correct the remaining typo in uploadTargetUser.

propery should be property here.

✏️ Proposed fix
-*The propery `uploadTargetUser` encodes the `userId` (for lookup in the [`allUsers`](`#allusers`) branch of the state tree) of the PWD currently selected as the target for data upload.*
+*The property `uploadTargetUser` encodes the `userId` (for lookup in the [`allUsers`](`#allusers`) branch of the state tree) of the PWD currently selected as the target for data upload.*
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
#### `uploadTargetUser`
*The propery `uploadTargetUser` encodes the `userId` (for lookup in the [`allUsers`](#-allusers) branch of the state tree) of the PWD currently selected as the target for data upload.*
*The propery `uploadTargetUser` encodes the `userId` (for lookup in the [`allUsers`](#allusers) branch of the state tree) of the PWD currently selected as the target for data upload.*
#### `uploadTargetUser`
*The property `uploadTargetUser` encodes the `userId` (for lookup in the [`allUsers`](`#allusers`) branch of the state tree) of the PWD currently selected as the target for data upload.*
🧰 Tools
🪛 LanguageTool

[grammar] ~79-~79: Ensure spelling is correct
Context: ...etUser. #### uploadTargetUser *The properyuploadTargetUserencodes theuserId`...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 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 `@docs/state/StateTreeGlossary.md` around lines 77 - 80, Fix the remaining typo
in the `uploadTargetUser` glossary entry by updating the prose text in
`StateTreeGlossary.md`; the description currently says “propery” and should read
“property”. Keep the rest of the `uploadTargetUser` definition unchanged.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.circleci/create-release-draft.js (1)

19-37: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

No top-level rejection handling or request timeouts on the GitHub API calls.

The async IIFE has no .catch(), so failures (network errors, malformed JSON, thrown Errors) surface only as an unhandled promise rejection rather than a clearly logged, intentional failure — relies on Node's default crash-on-unhandled-rejection behavior for the CI job to fail. The fetch calls also have no explicit timeout, so a stalled GitHub API request would hang until CircleCI's own job timeout kicks in.

🛡️ Proposed fix
-(async () => {
+(async () => {
   const res = await fetch(`${api}?per_page=100`, { headers });
   if (!res.ok) throw new Error(`Failed to list releases: ${res.status} ${await res.text()}`);
   ...
   console.log(`Created draft release for ${tag}.`);
-})();
+})().catch((err) => {
+  console.error(err.message || err);
+  process.exit(1);
+});
🤖 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 @.circleci/create-release-draft.js around lines 19 - 37, The async IIFE in
create-release-draft.js should explicitly handle failures instead of relying on
unhandled promise rejections, and the GitHub API requests need a timeout. Add a
top-level .catch() to the IIFE so errors from the fetch/json/throw paths are
logged clearly and cause a controlled non-zero exit, and wire an AbortController
(or equivalent timeout handling) into both fetch calls so stalled requests fail
fast rather than hanging the CI job.
🤖 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.

Nitpick comments:
In @.circleci/create-release-draft.js:
- Around line 19-37: The async IIFE in create-release-draft.js should explicitly
handle failures instead of relying on unhandled promise rejections, and the
GitHub API requests need a timeout. Add a top-level .catch() to the IIFE so
errors from the fetch/json/throw paths are logged clearly and cause a controlled
non-zero exit, and wire an AbortController (or equivalent timeout handling) into
both fetch calls so stalled requests fail fast rather than hanging the CI job.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d25129f7-0823-4555-994e-f300a0405aad

📥 Commits

Reviewing files that changed from the base of the PR and between 6c10845 and 8f43dd0.

⛔ Files ignored due to path filters (2)
  • app/yarn.lock is excluded by !**/yarn.lock, !**/*.lock
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (4)
  • .circleci/config.yml
  • .circleci/create-release-draft.js
  • app/package.json
  • package.json

@gniezen

gniezen commented Jul 21, 2026

Copy link
Copy Markdown
Member Author

@krystophv I'll fix these typos in another PR, as I can't just push changes to develop. Is it okay if we merge this one so that main doesn't get too out of sync with develop?

@krystophv
krystophv self-requested a review July 21, 2026 17:50
@krystophv

Copy link
Copy Markdown
Member

@gniezen yeah, running into the same thing over on export and my plan is to add accepted suggested fixes onto another branch once main/master get synced back up to develop (or vice versa).

@krystophv krystophv left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM 🎸

@gniezen
gniezen merged commit debe32c into main Jul 23, 2026
16 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants