Skip to content

Update our eslint configuration#2360

Merged
zatteo merged 2 commits intomasterfrom
feat/update-eslint
Mar 26, 2026
Merged

Update our eslint configuration#2360
zatteo merged 2 commits intomasterfrom
feat/update-eslint

Conversation

@zatteo
Copy link
Copy Markdown
Member

@zatteo zatteo commented Mar 25, 2026

Summary by CodeRabbit

  • Chores

    • Migrated ESLint to the flat config format and updated ESLint tooling to newer, compatible versions.
    • Consolidated and reorganized imports across the codebase for consistent styling.
    • Added targeted ESLint suppression comments where lint rules produced false positives.
  • Style

    • Minor formatting and whitespace refinements across components.
    • Small robustness tweak to error creation to preserve causal information.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 25, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6af56999-9e47-4b78-abec-4885eb4630f6

📥 Commits

Reviewing files that changed from the base of the PR and between 1bb9818 and 1f9118e.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (93)
  • .eslintrc.json
  • eslint.config.mjs
  • package.json
  • src/components/AddServiceTile.jsx
  • src/components/AddTile.jsx
  • src/components/AnimatedWrapper.jsx
  • src/components/AppHighlightAlert/AppHighlightAlertWrapper.jsx
  • src/components/AppHighlightAlert/BackupAppHighlightAlert.jsx
  • src/components/AppHighlightAlert/helpers.spec.js
  • src/components/AppTile.jsx
  • src/components/AppTile.spec.jsx
  • src/components/AppWrapper.jsx
  • src/components/AppWrapper.spec.jsx
  • src/components/Applications.jsx
  • src/components/Applications.spec.jsx
  • src/components/ApplicationsAndServices.jsx
  • src/components/Assistant/AssistantDesktopWrapper.jsx
  • src/components/Assistant/AssistantMobileWrapper.jsx
  • src/components/AssistantTile.jsx
  • src/components/BackupNotification/BackupNotification.jsx
  • src/components/BackupNotification/ConfirmStopBackupDialog.jsx
  • src/components/DefaultRedirectionSnackbar/DefaultRedirectionSnackbar.jsx
  • src/components/DefaultRedirectionSnackbar/DefaultRedirectionSnackbar.spec.jsx
  • src/components/DefaultRedirectionSnackbar/useIncrementDefaultRedirectionViewCount.js
  • src/components/DefaultRedirectionSnackbar/useIncrementDefaultRedirectionViewCount.spec.js
  • src/components/EntrypointLink.jsx
  • src/components/Failure.jsx
  • src/components/FooterLogo/FooterLogo.jsx
  • src/components/FooterLogo/FooterLogo.spec.jsx
  • src/components/HeroHeader/Corner.jsx
  • src/components/HeroHeader/Corner.spec.jsx
  • src/components/HeroHeader/CornerButton.jsx
  • src/components/HeroHeader/LogoutButton.jsx
  • src/components/HeroHeader/SettingsButton.jsx
  • src/components/HeroHeader/index.jsx
  • src/components/Home.jsx
  • src/components/IntentRedirect.jsx
  • src/components/Konnector.jsx
  • src/components/Konnector.spec.jsx
  • src/components/KonnectorHeaderIcon.jsx
  • src/components/KonnectorTile.jsx
  • src/components/KonnectorTile.spec.jsx
  • src/components/LogoutTile.jsx
  • src/components/MainView.jsx
  • src/components/MoveModal.jsx
  • src/components/MoveModal.spec.jsx
  • src/components/Personalization/PersonalizationModal.jsx
  • src/components/Personalization/PersonalizationWrapper.jsx
  • src/components/Personalization/ThemeSwitcher.jsx
  • src/components/Personalization/Wallpaper.jsx
  • src/components/Personalization/WallpaperItem.jsx
  • src/components/Personalization/constants.js
  • src/components/Services.jsx
  • src/components/Services.spec.jsx
  • src/components/ShortcutLink.jsx
  • src/components/ShortcutLink.spec.jsx
  • src/components/Shortcuts/ShortcutActionsMenu.jsx
  • src/components/Shortcuts/ShortcutCreateModal.jsx
  • src/components/Shortcuts/ShortcutEditModal.jsx
  • src/components/Shortcuts/ShortcutsView.jsx
  • src/components/Shortcuts/ShortcutsView.spec.jsx
  • src/components/StoreRedirection.jsx
  • src/components/appEntryPoint.jsx
  • src/containers/App.jsx
  • src/containers/App.spec.jsx
  • src/containers/IntentHandler.jsx
  • src/containers/IntentService.jsx
  • src/containers/ReloadFocus.jsx
  • src/containers/toFlagNames.js
  • src/hooks/useBinaryWallpaper.jsx
  • src/hooks/useFetchInitialData.jsx
  • src/hooks/useRegistryInformation.jsx
  • src/hooks/useWallpaper.jsx
  • src/lib/sentry.js
  • src/reducers/index.js
  • src/store/configureStore.js
  • src/targets/browser/index.test.jsx
  • src/targets/intents/KonnectorRoutes.jsx
  • src/targets/intents/index.jsx
  • src/targets/services/attributesHelpers.js
  • src/targets/services/cliskTimeout.js
  • src/targets/services/deleteAccounts.js
  • src/targets/services/myselfFromIdenties.js
  • src/targets/services/polyfillFetch.js
  • src/targets/services/polyfillFetch.spec.js
  • src/targets/services/softDeleteOrRestoreAccounts.js
  • src/targets/services/sourceAccountIdentifierNormalizer.js
  • src/targets/services/sourceAccountIdentifierNormalizerHelper.js
  • src/targets/services/updateAccounts.js
  • test/AppLike.jsx
  • test/__mocks__/cozy-keys-lib/index.js
  • test/components/Failure.spec.js
  • test/lib/konnectors.spec.js
💤 Files with no reviewable changes (3)
  • .eslintrc.json
  • src/lib/sentry.js
  • test/lib/konnectors.spec.js
✅ Files skipped from review due to trivial changes (86)
  • src/containers/IntentHandler.jsx
  • src/components/AppTile.jsx
  • src/hooks/useRegistryInformation.jsx
  • src/targets/services/sourceAccountIdentifierNormalizer.js
  • src/targets/services/cliskTimeout.js
  • src/components/appEntryPoint.jsx
  • src/components/HeroHeader/Corner.spec.jsx
  • src/components/Assistant/AssistantMobileWrapper.jsx
  • src/targets/browser/index.test.jsx
  • src/components/AnimatedWrapper.jsx
  • src/targets/services/polyfillFetch.spec.js
  • src/store/configureStore.js
  • src/components/HeroHeader/SettingsButton.jsx
  • src/targets/intents/index.jsx
  • eslint.config.mjs
  • src/targets/services/deleteAccounts.js
  • src/components/Shortcuts/ShortcutsView.jsx
  • src/components/ApplicationsAndServices.jsx
  • src/components/MoveModal.jsx
  • src/components/AssistantTile.jsx
  • src/components/BackupNotification/BackupNotification.jsx
  • src/components/Services.spec.jsx
  • src/components/Shortcuts/ShortcutsView.spec.jsx
  • src/components/DefaultRedirectionSnackbar/useIncrementDefaultRedirectionViewCount.spec.js
  • src/components/AppHighlightAlert/BackupAppHighlightAlert.jsx
  • src/components/DefaultRedirectionSnackbar/DefaultRedirectionSnackbar.spec.jsx
  • src/components/AddTile.jsx
  • src/components/MainView.jsx
  • src/components/AddServiceTile.jsx
  • src/components/AppHighlightAlert/helpers.spec.js
  • src/components/StoreRedirection.jsx
  • test/components/Failure.spec.js
  • src/containers/toFlagNames.js
  • src/components/BackupNotification/ConfirmStopBackupDialog.jsx
  • src/components/Konnector.jsx
  • src/components/Personalization/Wallpaper.jsx
  • src/components/AppWrapper.spec.jsx
  • src/components/Konnector.spec.jsx
  • src/hooks/useFetchInitialData.jsx
  • src/components/Personalization/constants.js
  • src/components/Applications.jsx
  • src/components/HeroHeader/index.jsx
  • src/components/KonnectorTile.spec.jsx
  • src/components/Personalization/ThemeSwitcher.jsx
  • test/mocks/cozy-keys-lib/index.js
  • src/components/HeroHeader/Corner.jsx
  • src/components/Failure.jsx
  • src/components/DefaultRedirectionSnackbar/useIncrementDefaultRedirectionViewCount.js
  • src/components/HeroHeader/CornerButton.jsx
  • src/targets/services/updateAccounts.js
  • src/containers/IntentService.jsx
  • src/components/EntrypointLink.jsx
  • src/components/Personalization/WallpaperItem.jsx
  • src/components/Assistant/AssistantDesktopWrapper.jsx
  • src/components/KonnectorHeaderIcon.jsx
  • src/reducers/index.js
  • src/components/Shortcuts/ShortcutActionsMenu.jsx
  • src/targets/intents/KonnectorRoutes.jsx
  • src/components/KonnectorTile.jsx
  • src/components/Applications.spec.jsx
  • src/targets/services/polyfillFetch.js
  • src/components/AppTile.spec.jsx
  • src/components/FooterLogo/FooterLogo.spec.jsx
  • src/components/Personalization/PersonalizationModal.jsx
  • src/components/ShortcutLink.jsx
  • src/targets/services/softDeleteOrRestoreAccounts.js
  • src/components/DefaultRedirectionSnackbar/DefaultRedirectionSnackbar.jsx
  • src/components/ShortcutLink.spec.jsx
  • src/components/Shortcuts/ShortcutCreateModal.jsx
  • src/components/Personalization/PersonalizationWrapper.jsx
  • src/components/Services.jsx
  • src/components/Home.jsx
  • src/targets/services/sourceAccountIdentifierNormalizerHelper.js
  • src/components/MoveModal.spec.jsx
  • src/containers/ReloadFocus.jsx
  • src/components/Shortcuts/ShortcutEditModal.jsx
  • src/containers/App.jsx
  • src/components/LogoutTile.jsx
  • src/components/FooterLogo/FooterLogo.jsx
  • src/components/AppHighlightAlert/AppHighlightAlertWrapper.jsx
  • src/components/IntentRedirect.jsx
  • test/AppLike.jsx
  • src/containers/App.spec.jsx
  • src/hooks/useWallpaper.jsx
  • src/targets/services/attributesHelpers.js
  • src/components/HeroHeader/LogoutButton.jsx
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/targets/services/myselfFromIdenties.js
  • src/hooks/useBinaryWallpaper.jsx
  • src/components/AppWrapper.jsx

Walkthrough

Migrates ESLint configuration from .eslintrc.json to a flat config eslint.config.mjs, updates ESLint-related devDependency version ranges in package.json, and removes several ESLint helper packages from devDependencies. Across the codebase, many files have import reordering and spacing normalizations; a few files add inline ESLint suppression comments, adjust caught error variable names, and improve one thrown Error to include a cause. No component logic, exported/public API signatures, or runtime behavior were changed.

Possibly related PRs

  • feat: Upgrade packages #2358: Modifies many of the same UI files (Assistant wrappers, BackupNotification, HeroHeader, WallpaperItem) and touches CozyTheme imports/usage, so it has a strong code-level overlap and may conflict.

Suggested reviewers

  • doubleface
  • rezk2ll
  • JF-Cozy
  • lethemanh
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: updating ESLint configuration from the old .eslintrc.json format to the new eslint.config.mjs flat config format, along with related dependency updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ 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 feat/update-eslint

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.

❤️ Share

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

@zatteo zatteo changed the title Update our eslint configuration#3722 Update our eslint configuration Mar 25, 2026
@bundlemon
Copy link
Copy Markdown

bundlemon bot commented Mar 25, 2026

BundleMon

Files updated (9)
Status Path Size Limits
services/updateAccounts.js
472.64KB (+528B +0.11%) -
services/softDeleteOrRestoreAccounts.js
473.73KB (+467B +0.1%) -
services/sourceAccountIdentifierNormalizerHel
per.js
237.3KB (+338B +0.14%) -
services/myselfFromIdenties.js
237.08KB (+307B +0.13%) -
services/cliskTimeout.js
260.04KB (+262B +0.1%) -
services/deleteAccounts.js
321.44KB (+261B +0.08%) -
services/sourceAccountIdentifierNormalizer.js
260.58KB (+241B +0.09%) -
static/css/main.(hash).css
8.79KB (+21B +0.23%) -
static/js/(chunkId).(hash).js
1.07MB (-1.24KB -0.11%) -
Unchanged files (7)
Status Path Size Limits
static/js/cozy.(hash).js
891.05KB -
services/polyfillFetch.js
97.16KB -
static/js/main.(hash).js
84.13KB -
static/js/lib-react.(hash).js
43.88KB -
static/css/cozy.(hash).css
28.08KB -
static/js/lib-router.(hash).js
26.7KB -
services/attributesHelpers.js
15.7KB -

Total files change +1.12KB +0.02%

Groups updated (2)
Status Path Size Limits
**/*.js
7.27MB (+161B 0%) -
**/*.css
77.05KB (+22B +0.03%) -
Unchanged groups (1)
Status Path Size Limits
**/*.{png,svg,ico}
272.78KB -

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
src/containers/App.spec.jsx (2)

32-34: Avoid unknown DOM props in mock output to drop lint suppression.

At Line 32-34, konnector and triggers props are passed to a native <div>. Prefer data-* attributes to keep the mock explicit without react/no-unknown-property suppression.

Proposed tweak
-  HarvestRoutes: ({ konnector, triggers, onDismiss }) => (
-    // eslint-disable-next-line react/no-unknown-property
-    <div konnector={konnector} triggers={triggers} onClick={onDismiss}>
+  HarvestRoutes: ({ konnector, triggers, onDismiss }) => (
+    <div
+      data-konnector={konnector?.slug}
+      data-triggers-count={triggers?.length ?? 0}
+      onClick={onDismiss}
+    >
       {konnector.slug}
     </div>
   )
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/containers/App.spec.jsx` around lines 32 - 34, Replace the unknown DOM
props on the test mock div by using data-* attributes: change the <div
konnector={konnector} triggers={triggers} onClick={onDismiss}> to use
data-konnector (e.g., data-konnector={konnector.slug} or
JSON.stringify(konnector) if needed) and
data-triggers={JSON.stringify(triggers)} and keep onClick={onDismiss} as-is;
remove the eslint-disable-next-line react/no-unknown-property since the
unknown-prop issue will be resolved.

3-3: Import act from react instead of the deprecated react-dom/test-utils.

In React 18+, act from react-dom/test-utils is deprecated. Use import { act } from 'react' instead. Alternatively, if this import is unused, remove it entirely—React Testing Library utilities already wrap in act by default.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/containers/App.spec.jsx` at line 3, The test imports act from the
deprecated 'react-dom/test-utils'; change the import to use act from 'react'
(i.e., import { act } from 'react') or remove the import entirely if unused
since React Testing Library wraps updates in act automatically—update the import
statement referencing act in App.spec.jsx accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@eslint.config.mjs`:
- Around line 1-3: Replace the direct spread of cozyAppReact by wrapping the
legacy config with FlatCompat from "@eslint/eslintrc" (use FlatCompat({}) and
compat.extend/flatten) instead of spreading cozyAppReact, then add an "settings"
block to configure the import resolver for TypeScript aliases (ensure
eslint-plugin-import and eslint-import-resolver-typescript are installed and
configure import/resolver to map "@/": ["src"] or equivalent) and add an
"overrides" entry targeting "*.spec.jsx" and "*.test.jsx" that defines Jest
globals (describe, it, test, expect, beforeEach, afterEach, etc.) so the legacy
react config works in flat-config mode and alias imports and Jest globals are
recognized.

In `@package.json`:
- Around line 96-97: The package.json dependency pins "eslint": "^10.0.0" and
"eslint-config-cozy-app": "^7.0.0" are incompatible (ESLint v10 requires flat
config while eslint-config-cozy-app v6.x uses legacy .eslintrc), so either pin
compatible versions (e.g., change "eslint" to a 9.x range and
"eslint-config-cozy-app" to "6.7.2"), or confirm and upgrade to a cozy-app
release that explicitly supports ESLint flat config, or switch to using
FlatCompat in your ESLint setup (create/modify eslint.config.js to wrap the
legacy config via FlatCompat) so CI/dev linting does not break.

---

Nitpick comments:
In `@src/containers/App.spec.jsx`:
- Around line 32-34: Replace the unknown DOM props on the test mock div by using
data-* attributes: change the <div konnector={konnector} triggers={triggers}
onClick={onDismiss}> to use data-konnector (e.g.,
data-konnector={konnector.slug} or JSON.stringify(konnector) if needed) and
data-triggers={JSON.stringify(triggers)} and keep onClick={onDismiss} as-is;
remove the eslint-disable-next-line react/no-unknown-property since the
unknown-prop issue will be resolved.
- Line 3: The test imports act from the deprecated 'react-dom/test-utils';
change the import to use act from 'react' (i.e., import { act } from 'react') or
remove the import entirely if unused since React Testing Library wraps updates
in act automatically—update the import statement referencing act in App.spec.jsx
accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d9a7d915-7906-4b69-85e1-9f634354d71a

📥 Commits

Reviewing files that changed from the base of the PR and between 09c99ae and 1bb9818.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (93)
  • .eslintrc.json
  • eslint.config.mjs
  • package.json
  • src/components/AddServiceTile.jsx
  • src/components/AddTile.jsx
  • src/components/AnimatedWrapper.jsx
  • src/components/AppHighlightAlert/AppHighlightAlertWrapper.jsx
  • src/components/AppHighlightAlert/BackupAppHighlightAlert.jsx
  • src/components/AppHighlightAlert/helpers.spec.js
  • src/components/AppTile.jsx
  • src/components/AppTile.spec.jsx
  • src/components/AppWrapper.jsx
  • src/components/AppWrapper.spec.jsx
  • src/components/Applications.jsx
  • src/components/Applications.spec.jsx
  • src/components/ApplicationsAndServices.jsx
  • src/components/Assistant/AssistantDesktopWrapper.jsx
  • src/components/Assistant/AssistantMobileWrapper.jsx
  • src/components/AssistantTile.jsx
  • src/components/BackupNotification/BackupNotification.jsx
  • src/components/BackupNotification/ConfirmStopBackupDialog.jsx
  • src/components/DefaultRedirectionSnackbar/DefaultRedirectionSnackbar.jsx
  • src/components/DefaultRedirectionSnackbar/DefaultRedirectionSnackbar.spec.jsx
  • src/components/DefaultRedirectionSnackbar/useIncrementDefaultRedirectionViewCount.js
  • src/components/DefaultRedirectionSnackbar/useIncrementDefaultRedirectionViewCount.spec.js
  • src/components/EntrypointLink.jsx
  • src/components/Failure.jsx
  • src/components/FooterLogo/FooterLogo.jsx
  • src/components/FooterLogo/FooterLogo.spec.jsx
  • src/components/HeroHeader/Corner.jsx
  • src/components/HeroHeader/Corner.spec.jsx
  • src/components/HeroHeader/CornerButton.jsx
  • src/components/HeroHeader/LogoutButton.jsx
  • src/components/HeroHeader/SettingsButton.jsx
  • src/components/HeroHeader/index.jsx
  • src/components/Home.jsx
  • src/components/IntentRedirect.jsx
  • src/components/Konnector.jsx
  • src/components/Konnector.spec.jsx
  • src/components/KonnectorHeaderIcon.jsx
  • src/components/KonnectorTile.jsx
  • src/components/KonnectorTile.spec.jsx
  • src/components/LogoutTile.jsx
  • src/components/MainView.jsx
  • src/components/MoveModal.jsx
  • src/components/MoveModal.spec.jsx
  • src/components/Personalization/PersonalizationModal.jsx
  • src/components/Personalization/PersonalizationWrapper.jsx
  • src/components/Personalization/ThemeSwitcher.jsx
  • src/components/Personalization/Wallpaper.jsx
  • src/components/Personalization/WallpaperItem.jsx
  • src/components/Personalization/constants.js
  • src/components/Services.jsx
  • src/components/Services.spec.jsx
  • src/components/ShortcutLink.jsx
  • src/components/ShortcutLink.spec.jsx
  • src/components/Shortcuts/ShortcutActionsMenu.jsx
  • src/components/Shortcuts/ShortcutCreateModal.jsx
  • src/components/Shortcuts/ShortcutEditModal.jsx
  • src/components/Shortcuts/ShortcutsView.jsx
  • src/components/Shortcuts/ShortcutsView.spec.jsx
  • src/components/StoreRedirection.jsx
  • src/components/appEntryPoint.jsx
  • src/containers/App.jsx
  • src/containers/App.spec.jsx
  • src/containers/IntentHandler.jsx
  • src/containers/IntentService.jsx
  • src/containers/ReloadFocus.jsx
  • src/containers/toFlagNames.js
  • src/hooks/useBinaryWallpaper.jsx
  • src/hooks/useFetchInitialData.jsx
  • src/hooks/useRegistryInformation.jsx
  • src/hooks/useWallpaper.jsx
  • src/lib/sentry.js
  • src/reducers/index.js
  • src/store/configureStore.js
  • src/targets/browser/index.test.jsx
  • src/targets/intents/KonnectorRoutes.jsx
  • src/targets/intents/index.jsx
  • src/targets/services/attributesHelpers.js
  • src/targets/services/cliskTimeout.js
  • src/targets/services/deleteAccounts.js
  • src/targets/services/myselfFromIdenties.js
  • src/targets/services/polyfillFetch.js
  • src/targets/services/polyfillFetch.spec.js
  • src/targets/services/softDeleteOrRestoreAccounts.js
  • src/targets/services/sourceAccountIdentifierNormalizer.js
  • src/targets/services/sourceAccountIdentifierNormalizerHelper.js
  • src/targets/services/updateAccounts.js
  • test/AppLike.jsx
  • test/__mocks__/cozy-keys-lib/index.js
  • test/components/Failure.spec.js
  • test/lib/konnectors.spec.js
💤 Files with no reviewable changes (3)
  • src/lib/sentry.js
  • test/lib/konnectors.spec.js
  • .eslintrc.json

Comment thread eslint.config.mjs Outdated
Comment thread package.json
zatteo added 2 commits March 26, 2026 11:46
No keeping the custom import-alias rule that was only present in cozy-home.

Other rules are aready default.
@zatteo zatteo force-pushed the feat/update-eslint branch from 1bb9818 to 1f9118e Compare March 26, 2026 10:47
@zatteo zatteo merged commit d9e235a into master Mar 26, 2026
5 checks passed
@zatteo zatteo deleted the feat/update-eslint branch March 26, 2026 11:13
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.

2 participants