Skip to content

RATY-357 stuck Dependabot workflows#624

Open
mikkojamG wants to merge 8 commits into
mainfrom
fix/RATY-357-stuck-dependabot-workflows
Open

RATY-357 stuck Dependabot workflows#624
mikkojamG wants to merge 8 commits into
mainfrom
fix/RATY-357-stuck-dependabot-workflows

Conversation

@mikkojamG

@mikkojamG mikkojamG commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Description ✨

Solves multiple dependencies that are currently breaking Dependabot update workflows.

Issues 🐛

Closes 🙅‍♀️

DEV-XXX:

Related 🤝

Testing ⚗️

Automated tests ⚙️️

Manual testing 👷‍♂️

Screenshots 📸

Additional notes 🗒️

Summary by CodeRabbit

  • Bug Fixes

    • Improved reliability in image uploading and dimension loading.
    • Standardized language-key existence checks and server error parsing for more consistent formatting.
    • Minor UI/rendering behavior cleanups across tabs, menus, and form sections.
  • Chores

    • Modernized linting configuration to a flat, plugin-recommended setup and adjusted related rules.
    • Updated developer tooling versions, routing dependencies, and workspace overrides.
    • Simplified lint commands and cleaned up lint suppressions in components and tests.

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 701c4746-1855-4374-8f59-09e3c398bc21

📥 Commits

Reviewing files that changed from the base of the PR and between 1c61a8d and d3800cf.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (33)
  • eslint.config.mjs
  • package.json
  • pnpm-workspace.yaml
  • src/common/components/formikPersist/FormikPersist.tsx
  • src/common/components/singleSelect/SingleSelect.tsx
  • src/common/components/tabs/Tabs.tsx
  • src/common/components/tabs/tab/Tab.tsx
  • src/common/components/textEditor/TextEditor.tsx
  • src/common/components/timeInput/CustomTimeInput.tsx
  • src/domain/app/layout/mainContent/MainContent.tsx
  • src/domain/app/layout/pageWrapper/PageWrapper.tsx
  • src/domain/app/notificationsContext/NotificationsContext.tsx
  • src/domain/event/eventForm/EventForm.tsx
  • src/domain/event/formSections/imageSection/imageDetailsFields/ImageDetailsFields.tsx
  • src/domain/event/formSections/priceSection/PriceSection.tsx
  • src/domain/event/formSections/responsibilitiesSection/ResponsibilitiesSection.tsx
  • src/domain/event/formSections/timeSection/eventTimesTable/EventTimesTable.tsx
  • src/domain/eventSearch/searchPanel/placeSelector/PlaceSelector.tsx
  • src/domain/events/eventList/EventList.tsx
  • src/domain/events/filterSummary/FilterSummary.tsx
  • src/domain/images/imageList/ImageList.tsx
  • src/domain/keywordSets/keywordSetList/KeywordSetList.tsx
  • src/domain/keywords/keywordList/KeywordList.tsx
  • src/domain/organizations/organizationsTable/organizationsTableRow/OrganizationsTableRow.tsx
  • src/domain/places/placeList/PlaceList.tsx
  • src/domain/priceGroups/priceGroupList/PriceGroupList.tsx
  • src/domain/registration/createButtonPanel/CreateButtonPanel.tsx
  • src/domain/registration/formSections/priceGroups/PriceGroupsSection.tsx
  • src/domain/registrations/registrationList/RegistrationList.tsx
  • src/domain/signupGroup/reservationTimer/ReservationTimer.tsx
  • src/domain/signups/signupsTable/SignupsTable.tsx
  • src/domain/user/hooks/useUserOrganizations.tsx
  • src/hooks/useInitialSelectorOptions.ts
💤 Files with no reviewable changes (23)
  • src/domain/event/formSections/imageSection/imageDetailsFields/ImageDetailsFields.tsx
  • src/domain/organizations/organizationsTable/organizationsTableRow/OrganizationsTableRow.tsx
  • src/domain/signupGroup/reservationTimer/ReservationTimer.tsx
  • src/domain/event/formSections/responsibilitiesSection/ResponsibilitiesSection.tsx
  • src/domain/events/eventList/EventList.tsx
  • src/domain/user/hooks/useUserOrganizations.tsx
  • src/hooks/useInitialSelectorOptions.ts
  • src/domain/registrations/registrationList/RegistrationList.tsx
  • src/domain/images/imageList/ImageList.tsx
  • src/domain/event/formSections/priceSection/PriceSection.tsx
  • src/domain/keywordSets/keywordSetList/KeywordSetList.tsx
  • src/domain/event/eventForm/EventForm.tsx
  • src/domain/keywords/keywordList/KeywordList.tsx
  • src/domain/eventSearch/searchPanel/placeSelector/PlaceSelector.tsx
  • src/domain/registration/formSections/priceGroups/PriceGroupsSection.tsx
  • src/domain/app/layout/pageWrapper/PageWrapper.tsx
  • src/domain/places/placeList/PlaceList.tsx
  • src/domain/priceGroups/priceGroupList/PriceGroupList.tsx
  • src/common/components/formikPersist/FormikPersist.tsx
  • src/common/components/timeInput/CustomTimeInput.tsx
  • src/domain/signups/signupsTable/SignupsTable.tsx
  • src/common/components/textEditor/TextEditor.tsx
  • src/common/components/tabs/tab/Tab.tsx
✅ Files skipped from review due to trivial changes (6)
  • src/domain/events/filterSummary/FilterSummary.tsx
  • src/domain/app/layout/mainContent/MainContent.tsx
  • src/common/components/singleSelect/SingleSelect.tsx
  • src/domain/event/formSections/timeSection/eventTimesTable/EventTimesTable.tsx
  • src/common/components/tabs/Tabs.tsx
  • src/domain/app/notificationsContext/NotificationsContext.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • pnpm-workspace.yaml
  • package.json

📝 Walkthrough

Walkthrough

This PR migrates ESLint to flat config, updates related package and workspace tooling versions, and applies source changes to align with the updated lint rules.

Changes

ESLint flat config migration and dependency updates

Layer / File(s) Summary
Flat ESLint config setup
eslint.config.mjs
Migrates to flat-config imports and composition, updates language options and resolver settings, and switches rule namespaces to import-x and simple-import-sort.
Dependency and tooling version bumps
package.json, pnpm-workspace.yaml
Bumps pnpm, routing, ESLint, TypeScript-ESLint, Vitest, and related tooling versions; simplifies lint scripts; and adds workspace overrides and peer-version allowances.
Source adjustments for lint rules
src/common/components/imageUploader/utils.ts, src/common/components/menuDropdown/MenuDropdown.tsx, src/common/components/tabs/*, src/domain/*, src/utils/*
Updates Promise and variable declarations, Object.hasOwn checks, JSX and switch-case structure, several ESLint suppressions, and a few prop/order and conditional-expression adjustments.

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

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description includes the main summary and template headings, but several required sections are empty or left as placeholders. Fill in the issue link, related references, testing details, screenshots if any, and additional notes with concrete information.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title matches the PR’s main theme: Dependabot workflow failures caused by dependency updates.
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 fix/RATY-357-stuck-dependabot-workflows

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.

@mikkojamG mikkojamG changed the title [DRAFT] RATY-357 stuck Dependabot workflows RATY-357 stuck Dependabot workflows Jul 6, 2026
@mikkojamG mikkojamG marked this pull request as ready for review July 6, 2026 10:29
@mikkojamG mikkojamG requested a review from a team as a code owner July 6, 2026 10:29

@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 (4)
eslint.config.mjs (4)

60-67: 📐 Maintainability & Code Quality | 🔵 Trivial

Most import-x rules from the newly-added recommended/typescript configs are turned off.

import-x/named, import-x/no-named-as-default, import-x/no-named-as-default-member, and import-x/no-duplicates are all disabled, leaving only import-x/no-unresolved active from the plugin's rule set. This substantially narrows the benefit of adding importPlugin.flatConfigs.recommended/.typescript at Lines 18-19. If these were disabled to suppress noise/false positives during migration, consider re-enabling incrementally once stabilized.

🤖 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 `@eslint.config.mjs` around lines 60 - 67, The newly added import-x
recommended/typescript configs are being mostly negated by turning off several
core import-x rules in the ESLint config. Review the rule block in
eslint.config.mjs and either re-enable `import-x/named`,
`import-x/no-named-as-default`, `import-x/no-named-as-default-member`, and
`import-x/no-duplicates` if they are now stable, or keep them disabled only with
an explicit migration-focused rationale; use the existing
`importPlugin.flatConfigs.recommended` and `importPlugin.flatConfigs.typescript`
setup as the reference point.

68-70: 📐 Maintainability & Code Quality | 🔵 Trivial

New React Compiler lint rules disabled right after opting into recommended-latest.

Line 17 opts into reactHooksPlugin.configs.flat['recommended-latest'], which per the plugin's docs enables "bleeding edge experimental compiler rules" (refs, set-state-in-effect, preserve-manual-memoization, etc.). These three are then immediately turned off, effectively reverting most of the value of using recommended-latest over the stable recommended preset. Worth confirming this is intentional (e.g., too many pre-existing violations to fix now) rather than an oversight, since it could be simplified to just use reactHooksPlugin.configs.flat.recommended.

🤖 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 `@eslint.config.mjs` around lines 68 - 70, The React Hooks config is opting
into reactHooksPlugin.configs.flat['recommended-latest'] in eslint.config.mjs
but then immediately disables the new compiler-related rules, which makes the
newer preset effectively redundant. Review the flat config setup around the
react-hooks entry and either keep recommended-latest only if you intend to
enforce those rules, or switch to reactHooksPlugin.configs.flat.recommended if
you want the stable baseline; if the disabling is intentional, add a brief
comment explaining why refs, set-state-in-effect, and
preserve-manual-memoization are turned off.

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

no-undef is known to produce false positives in TypeScript files.

no-undef is a plain-JS rule with no awareness of TypeScript types, ambient declarations, or generics, and is commonly disabled for TS in favor of the TypeScript compiler's own checks (as also done in several community flat-config examples). Since this rule block applies to .ts/.tsx files too, keeping it at warn here risks noisy false positives for legitimately-typed code.

🤖 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 `@eslint.config.mjs` at line 56, The current ESLint config keeps the plain-JS
no-undef rule enabled for TypeScript files, which can cause false positives in
typed code. Update the relevant rule block in eslint.config.mjs so no-undef is
not applied to .ts/.tsx sources, following the same pattern used in the
TypeScript-specific config sections or community flat-config examples. Keep the
rule only where it makes sense for JavaScript, and rely on the TypeScript
compiler for undefined-symbol checking in TS.

20-20: 📐 Maintainability & Code Quality | 🔵 Trivial

Vitest globals applied to all files, not just test files.

vitestGlobalsPlugin.configs['flat/recommended'] is added at the top level, so it applies to every file matched later (**/*.{js,jsx,ts,tsx}), not just test files. The plugin's own docs scope this via a files matcher (e.g. **/*.test.ts, **/__tests__/**/*.ts) combined with spread syntax. As written, Vitest globals (describe, it, expect, etc.) become implicitly available in non-test source files too, which defeats the purpose of scoping test-only globals and can mask genuinely undefined identifiers in production code.

♻️ Suggested scoping
-  vitestGlobalsPlugin.configs[ 'flat/recommended' ],
+  {
+    files: [ '**/__tests__/**/*.{ts,tsx}', '**/*.{test,spec}.{ts,tsx}' ],
+    ...vitestGlobalsPlugin.configs[ 'flat/recommended' ],
+  },
🤖 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 `@eslint.config.mjs` at line 20, Vitest globals are currently being applied at
the top level via vitestGlobalsPlugin.configs['flat/recommended'], which makes
test-only globals available in non-test source files. Update the ESLint config
to scope this plugin config with a files matcher for test patterns only, and
keep the existing globals setup out of the general **/*.{js,jsx,ts,tsx} rules.
Use the vitestGlobalsPlugin.configs['flat/recommended'] entry in the scoped test
override so describe, it, expect, and similar globals are only enabled for test
files.
🤖 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 `@eslint.config.mjs`:
- Around line 60-67: The newly added import-x recommended/typescript configs are
being mostly negated by turning off several core import-x rules in the ESLint
config. Review the rule block in eslint.config.mjs and either re-enable
`import-x/named`, `import-x/no-named-as-default`,
`import-x/no-named-as-default-member`, and `import-x/no-duplicates` if they are
now stable, or keep them disabled only with an explicit migration-focused
rationale; use the existing `importPlugin.flatConfigs.recommended` and
`importPlugin.flatConfigs.typescript` setup as the reference point.
- Around line 68-70: The React Hooks config is opting into
reactHooksPlugin.configs.flat['recommended-latest'] in eslint.config.mjs but
then immediately disables the new compiler-related rules, which makes the newer
preset effectively redundant. Review the flat config setup around the
react-hooks entry and either keep recommended-latest only if you intend to
enforce those rules, or switch to reactHooksPlugin.configs.flat.recommended if
you want the stable baseline; if the disabling is intentional, add a brief
comment explaining why refs, set-state-in-effect, and
preserve-manual-memoization are turned off.
- Line 56: The current ESLint config keeps the plain-JS no-undef rule enabled
for TypeScript files, which can cause false positives in typed code. Update the
relevant rule block in eslint.config.mjs so no-undef is not applied to .ts/.tsx
sources, following the same pattern used in the TypeScript-specific config
sections or community flat-config examples. Keep the rule only where it makes
sense for JavaScript, and rely on the TypeScript compiler for undefined-symbol
checking in TS.
- Line 20: Vitest globals are currently being applied at the top level via
vitestGlobalsPlugin.configs['flat/recommended'], which makes test-only globals
available in non-test source files. Update the ESLint config to scope this
plugin config with a files matcher for test patterns only, and keep the existing
globals setup out of the general **/*.{js,jsx,ts,tsx} rules. Use the
vitestGlobalsPlugin.configs['flat/recommended'] entry in the scoped test
override so describe, it, expect, and similar globals are only enabled for test
files.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f2dddc68-5f22-4c62-a2b3-714788b1c151

📥 Commits

Reviewing files that changed from the base of the PR and between 69074b2 and 1c61a8d.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (13)
  • eslint.config.mjs
  • package.json
  • pnpm-workspace.yaml
  • src/common/components/imageUploader/utils.ts
  • src/common/components/menuDropdown/MenuDropdown.tsx
  • src/common/components/tabs/tab/Tab.tsx
  • src/domain/event/formSections/imageSection/ImageSection.tsx
  • src/domain/event/formSections/timeSection/eventTimeTab/__tests__/EventTimeTab.test.tsx
  • src/domain/event/hooks/useEventActions.ts
  • src/domain/event/utils.ts
  • src/domain/registration/utils.ts
  • src/utils/parseServerErrorMessage.ts
  • src/utils/testUtils.tsx

@azure-pipelines

Copy link
Copy Markdown

LINKEDCOMPONENTS-UI branch is deployed to platta: https://linkedcomponents-ui-pr624.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

e2e tests result is success for https://linkedcomponents-ui-pr624.dev.hel.ninja 😆🎉🎉🎉

@sonarqubecloud

sonarqubecloud Bot commented Jul 8, 2026

Copy link
Copy Markdown

@azure-pipelines

Copy link
Copy Markdown

LINKEDCOMPONENTS-UI branch is deployed to platta: https://linkedcomponents-ui-pr624.dev.hel.ninja 🚀🚀🚀

@azure-pipelines

Copy link
Copy Markdown

e2e tests result is success for https://linkedcomponents-ui-pr624.dev.hel.ninja 😆🎉🎉🎉

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.

1 participant