feat: dev task optimization to reduce CPU/RAM load#419
feat: dev task optimization to reduce CPU/RAM load#419marcinkrasowski merged 14 commits intomainfrom
Conversation
WalkthroughRemoved many per-package Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
🧰 Additional context used🧠 Learnings (5)📓 Common learnings📚 Learning: 2025-12-03T14:01:47.507ZApplied to files:
📚 Learning: 2025-12-03T12:34:20.684ZApplied to files:
📚 Learning: 2025-12-03T14:01:47.507ZApplied to files:
📚 Learning: 2025-12-03T12:34:20.684ZApplied to files:
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
🔇 Additional comments (3)
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: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/frontend/package.json (1)
43-44: Fix the package name mismatch in turbo.json build dependency.The frontend build task references
@o2s/api-harmonization#build(line 8), but the actual dependency in package.json is@o2s/utils.api-harmonization(line 43). Update the turbo.json build dependency to match the correct package name, or verify whether the build task should depend on a different package entirely.
🧹 Nitpick comments (1)
package.json (1)
24-26: Clean vs clean:output split is sensible for day-to-day devHaving
cleanremove bothnode_modulesand build artifacts, andclean:outputonly purgedist/.next/.turbo, gives a nice balance between “nuke from orbit” and a fast rebuild option. The doublerimraf(workspaces + root) is a bit heavy but acceptable for occasionally-run scripts.If you ever want to optimize further, consider installing
rimrafas a devDependency and calling it directly (withoutnpx) to avoid repeated downloads and slightly speed up these cleans.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (55)
apps/api-harmonization/nest-cli.json(1 hunks)apps/api-harmonization/package.json(2 hunks)apps/api-harmonization/turbo.json(2 hunks)apps/docs/package.json(1 hunks)apps/frontend/.env.development(1 hunks)apps/frontend/next.config.ts(2 hunks)apps/frontend/package.json(2 hunks)apps/frontend/src/proxy.ts(1 hunks)apps/frontend/turbo.json(2 hunks)package.json(2 hunks)packages/blocks/article-list/package.json(2 hunks)packages/blocks/article-search/package.json(2 hunks)packages/blocks/article/package.json(2 hunks)packages/blocks/category-list/package.json(2 hunks)packages/blocks/category/package.json(2 hunks)packages/blocks/faq/package.json(2 hunks)packages/blocks/featured-service-list/package.json(2 hunks)packages/blocks/invoice-list/package.json(2 hunks)packages/blocks/notification-details/package.json(2 hunks)packages/blocks/notification-list/package.json(2 hunks)packages/blocks/order-details/package.json(2 hunks)packages/blocks/order-list/package.json(2 hunks)packages/blocks/orders-summary/package.json(2 hunks)packages/blocks/payments-history/package.json(2 hunks)packages/blocks/payments-summary/package.json(2 hunks)packages/blocks/quick-links/package.json(2 hunks)packages/blocks/service-details/package.json(2 hunks)packages/blocks/service-list/package.json(2 hunks)packages/blocks/surveyjs-form/package.json(2 hunks)packages/blocks/ticket-details/package.json(2 hunks)packages/blocks/ticket-list/package.json(2 hunks)packages/blocks/ticket-recent/package.json(2 hunks)packages/blocks/user-account/package.json(2 hunks)packages/cli/create-o2s-app/package.json(1 hunks)packages/configs/integrations/package.json(1 hunks)packages/framework/package.json(1 hunks)packages/framework/turbo.json(0 hunks)packages/integrations/algolia/package.json(1 hunks)packages/integrations/contentful-cms/package.json(2 hunks)packages/integrations/medusajs/package.json(1 hunks)packages/integrations/mocked/package.json(1 hunks)packages/integrations/redis/package.json(1 hunks)packages/integrations/strapi-cms/package.json(1 hunks)packages/integrations/zendesk/package.json(1 hunks)packages/modules/surveyjs/package.json(2 hunks)packages/telemetry/package.json(1 hunks)packages/ui/src/elements/avatar.tsx(1 hunks)packages/ui/src/elements/badge-status.tsx(1 hunks)packages/ui/src/elements/select.tsx(1 hunks)packages/ui/src/elements/sheet.tsx(1 hunks)packages/ui/src/elements/typography.tsx(1 hunks)packages/utils/api-harmonization/package.json(1 hunks)packages/utils/frontend/package.json(1 hunks)packages/utils/logger/package.json(1 hunks)turbo.json(2 hunks)
💤 Files with no reviewable changes (1)
- packages/framework/turbo.json
🔇 Additional comments (63)
packages/blocks/invoice-list/package.json (1)
17-17: Build optimization and dependency updates align with PR objectives.The addition of
--preserveWatchOutputto the TypeScript build step and upgrade to Next.js 16.0.5 are consistent with the dev task optimization strategy. This pattern is replicated across multiple block packages.Also applies to: 51-51
packages/blocks/article-search/package.json (1)
17-17: Build optimization and dependency updates consistent across block packages.Also applies to: 53-53
packages/blocks/category-list/package.json (1)
17-17:Also applies to: 51-51
apps/frontend/.env.development (1)
12-12: Verify the HTTPS→HTTP protocol change is intentional.The
NEXT_PUBLIC_BASE_URLchanged fromhttps://localhost:3000tohttp://localhost:3000. While HTTP is conventional for localhost development, the original config used HTTPS, suggesting a deliberate secure setup. Confirm this change doesn't inadvertently weaken development environment security or break auth/cookie handling in Next.js 16.packages/cli/create-o2s-app/package.json (1)
12-12: Verify build script consistency with other packages.The build script differs from block packages: it omits
--build tsconfig.json, using onlytsc --preserveWatchOutput && tsc-alias. Confirm whether this variance is intentional (e.g., CLI-specific build strategy) or if the script should match the pattern used in other packages for consistency and build cache benefits.packages/blocks/notification-details/package.json (1)
17-17:Also applies to: 51-51
packages/ui/src/elements/sheet.tsx (1)
49-52: Formatting change; no functional impact.The
SheetContentPropsinterface extends clause is reformatted for consistency with other UI components. No behavioral or API changes.packages/blocks/user-account/package.json (1)
17-17:Also applies to: 51-51
packages/integrations/zendesk/package.json (1)
14-14: LGTM: Build script correctly updated for watch output preservation.The addition of
--preserveWatchOutputaligns with the PR's objective to optimize the dev workflow by delegating file watching to Turbopack while preserving TypeScript compiler output for incremental builds.packages/integrations/redis/package.json (1)
14-14: LGTM: Build script optimized correctly.The update to include
--preserveWatchOutputfollows the repo-wide pattern for watch output preservation during incremental builds.apps/api-harmonization/package.json (2)
14-15: LGTM: Dev scripts correctly preserve watch output.The
--preserveWatchOutputflag added to bothdevanddebugscripts ensures TypeScript compiler output is preserved during watch mode, supporting the optimized dev workflow.
80-81: LGTM: SWC dependencies added for compiler migration.The addition of
@swc/cliand@swc/corealigns with the PR objective to switchapi-harmonizationto the SWC compiler (NestJS SWC recipe) for improved build performance.packages/integrations/mocked/package.json (1)
21-21: LGTM: Build script updated for watch output preservation.The addition of
--preserveWatchOutputfollows the repo-wide optimization pattern for incremental builds.packages/blocks/category/package.json (1)
17-17: LGTM: Build script optimized correctly.The addition of
--preserveWatchOutputaligns with the repo-wide optimization pattern.packages/integrations/medusajs/package.json (1)
13-13: LGTM: Build script optimized correctly.The addition of
--preserveWatchOutputfollows the consistent pattern applied across the monorepo for watch output preservation.apps/frontend/next.config.ts (1)
41-41: Verify awareness of experimental Turbopack filesystem caching stability.
turbopackFileSystemCacheForDevis a beta/experimental feature. Next.js documentation explicitly notes to "expect some stability issues" and recommends testing in development first. While enabling this optimization is acceptable, ensure the team is aware of potential caching instability and has a plan to monitor or disable if issues arise.packages/configs/integrations/package.json (2)
14-14: LGTM on build script update.The
--preserveWatchOutputflag aligns with the PR's shift toturbo watchmode, ensuring incremental build output isn't cleared between rebuilds.
18-21: Dependency removal is intentional and complete.The removed integrations (
@o2s/integrations.strapi-cmsand@o2s/integrations.zendesk) have no remaining references in the configs package, confirming this is a clean removal with no orphaned dependencies.packages/utils/frontend/package.json (1)
14-17: LGTM on build workflow changes.The removal of the
devscript and addition of--preserveWatchOutputaligns with the PR's strategy of consolidating file watching underturbo watch.packages/modules/surveyjs/package.json (2)
16-19: LGTM on build script update.The
--preserveWatchOutputflag and dev script removal are consistent with the PR's resource optimization strategy.
53-53: Confirm surveyjs module is compatible with Next.js 16.The module already follows Next.js 16 best practices and patterns. The Survey component uses
'use client'for proper client-side rendering, dynamic imports from'next/dynamic', and modern React 19 APIs (startTransition,useActionState). No deprecated synchronous Request APIs are used. With TypeScript ^5.9.3 already in place, the module requires only that consuming applications meet Node ≥20.9 environment requirements. No code changes needed for Next.js 16 compatibility.packages/integrations/contentful-cms/package.json (1)
13-17: LGTM on build workflow changes.The build script update and dev script removal follow the established pattern across the monorepo for this optimization PR.
packages/blocks/order-details/package.json (1)
16-19: LGTM on build and peer dependency updates.The changes are consistent with the PR-wide optimization pattern. The Next.js peer dependency bump to
^16.0.5matches other packages in this PR.Also applies to: 51-51
packages/blocks/service-list/package.json (1)
16-19: LGTM on build and peer dependency updates.Changes follow the established pattern for this optimization PR.
Also applies to: 51-51
packages/ui/src/elements/typography.tsx (1)
44-48: LGTM on formatting change.This is a style-only reflow of the interface declaration with no semantic impact.
apps/api-harmonization/nest-cli.json (1)
5-8: LGTM on SWC builder configuration.Switching to the SWC builder aligns with the PR's goal of faster startup times. SWC typically provides 10-20x faster compilation than tsc for NestJS projects. The required SWC dependencies (
@swc/cliand@swc/core) are already present in the package.json.packages/blocks/article/package.json (2)
51-51: Verify Next.js 16 compatibility and breaking changes.The peer dependency for Next.js is being upgraded from ^15.4.7 to ^16.0.5, a major version bump. Ensure all code consuming Next.js features has been validated for compatibility and that the upgrade aligns with the app-specific optimizations mentioned in the PR (e.g., Turbopack File System Caching for frontend).
17-17: Verify TypeScript project references configuration for--buildflag.The build script now uses
tsc --build tsconfig.json --preserveWatchOutput. The--buildflag requires TypeScript project references to be defined intsconfig.json. Confirm that the tsconfig.json for this package correctly defines project references; otherwise, the--buildflag may be unnecessary or cause unexpected behavior.packages/blocks/orders-summary/package.json (1)
51-51: Next.js 16 upgrade requires verification (see parallel comment in article package).Same concern as packages/blocks/article/package.json regarding the Next.js ^16.0.5 upgrade—verify compatibility and validate changes for this block.
packages/framework/package.json (1)
14-14: Consistency check: Build script differs from block packages.This package uses
tsc --preserveWatchOutput && tsc-alias(without--build), whereas block packages usetsc --build tsconfig.json --preserveWatchOutput && tsc-alias. Confirm this inconsistency is intentional; it may indicate that only blocks use TypeScript project references, which is reasonable if true.packages/ui/src/elements/select.tsx (1)
33-34: LGTM—cosmetic formatting adjustment.The extends clause has been reformatted to a single line with no semantic changes. This aligns with formatting adjustments applied elsewhere in the PR.
packages/blocks/payments-summary/package.json (1)
51-51: Next.js 16 upgrade requires verification (see parallel comment in article package).Same concern as packages/blocks/article/package.json regarding the Next.js ^16.0.5 upgrade—verify compatibility and validate changes for this block.
packages/integrations/algolia/package.json (1)
13-13: LGTM! Build script optimized for watch mode.The addition of
--preserveWatchOutputpreserves TypeScript's incremental compilation state, which improves rebuild performance when usingturbo watch. The removal of the dev script aligns with the PR's goal to consolidate watch processes and reduce resource usage.apps/api-harmonization/turbo.json (1)
6-46: LGTM! Dev task properly configured for persistent watch mode.The configuration correctly sets up the dev task as a persistent process with:
cache: falsefor development (appropriate since dev mode should always reflect latest changes)persistent: trueto keep the process runningdependsOn: ["^build"]to ensure dependencies are built first- Comprehensive environment variables required for the API harmonization runtime
This aligns with the PR objective to retain dev tasks only for api-harmonization, frontend, and docs.
packages/blocks/service-details/package.json (2)
17-17: LGTM! Build script optimized for watch mode.The
--preserveWatchOutputflag improves incremental rebuild performance when usingturbo watch.
51-51: Verify Next.js 16 breaking changes compatibility.Next.js 16.0.5 is stable, but introduces significant breaking changes from v15:
- Async Request APIs (cookies, headers, draftMode, params/searchParams must be awaited)
- Node.js 20.x+ and TypeScript 5+ requirement
- Removed/deprecated legacy features and middleware patterns
- Image defaults and framework configuration changes
Confirm this package's codebase is compatible with these changes before finalizing the upgrade. Use provided migration tools (
@next/codemod,next typegen) if needed.turbo.json (2)
3-4: LGTM! Core optimization changes to reduce resource usage.The changes effectively address the PR objectives:
- UI change to "tui": Provides a better terminal user interface experience
- Concurrency reduction from 100 to 10: This is the key change to prevent spawning too many Node.js processes simultaneously, which was causing high CPU/RAM usage and OS instability
The 90% reduction in concurrency should significantly reduce resource usage during development.
8-8: Good addition of caching for build task.Enabling
cache: truefor the build task improves performance by reusing cached build artifacts when inputs haven't changed.packages/blocks/order-list/package.json (2)
17-17: LGTM! Build script optimized for watch mode.Consistent with the repo-wide optimization to add
--preserveWatchOutputfor better incremental compilation performance.
51-51: Next.js version upgrade to 16.0.5.This peer dependency upgrade is consistent across all block packages in the PR. Refer to the verification comment on service-details package for Next.js 16 compatibility check.
packages/blocks/ticket-recent/package.json (2)
17-17: LGTM! Build script optimized for watch mode.Consistent repo-wide optimization.
51-51: Next.js version upgrade to 16.0.5.Consistent with other block packages in the PR.
packages/blocks/quick-links/package.json (2)
17-17: LGTM! Build script optimized for watch mode.Consistent repo-wide optimization for incremental compilation.
51-51: Next.js version upgrade to 16.0.5.Consistent with other block packages in the PR.
apps/frontend/src/proxy.ts (1)
8-8: This review comment is incorrect — the file was newly created, not renamed.The git history shows that
apps/frontend/src/proxy.tswas added as a new file in commit 67f644f with theexport function proxyfrom the start. There was no priormiddlewarefunction that was renamed. Therefore, there are no stale imports to update, and no breaking change to address.Likely an incorrect or invalid review comment.
packages/blocks/article-list/package.json (1)
16-20: Build script and Next peer bump align with the new dev modelUsing
tsc --build tsconfig.json --preserveWatchOutput && tsc-aliasis consistent with moving watch responsibility to Turborepo and should behave the same as the previous non-watch build while avoiding per-package long‑running processes. Bumpingnextto^16.0.5keeps this block in lockstep with the app, assuming the consuming Next app has already been upgraded and the block has been smoke‑tested under Next 16.Please double‑check that at least one consumer app builds and runs with this block after the Next 16 upgrade and new dev pipeline.
Also applies to: 40-52
packages/blocks/payments-history/package.json (1)
16-20: Consistent build script and Next peer updateThis package follows the same
buildcommand andnextpeer bump pattern as other blocks, which keeps the dev/build behavior uniform across the monorepo and avoids extra dev watchers in this package.Please confirm Payments History still compiles and renders correctly in a Next 16 consumer app along with the other upgraded blocks.
Also applies to: 40-52
packages/blocks/surveyjs-form/package.json (1)
16-20: Good: local TS watch removed in favor of central Turborepo watchSwitching from a long‑running
tsc -w/tsc-alias -wcombo to a one‑shottsc --build ... && tsc-aliasfits the newturbo watch‑driven dev flow and should significantly reduce background Node processes. The Next peer bump to^16.0.5keeps this block aligned with the rest of the workspace.Given the extra SurveyJS integration, it’s worth doing a quick manual form render/submit in a Next 16 dev run to confirm nothing regressed with the new dev/build wiring.
Also applies to: 43-55
packages/utils/logger/package.json (1)
13-17: Logger build script change is behaviorally equivalentUpdating the logger build to
tsc --preserveWatchOutput && tsc-aliaskeeps the same build semantics as before (just a watch‑friendly TS flag) and doesn’t affect runtime behavior of the logger package.Please run
npm run buildfor@o2s/utils.logger(or ensure CI covers it) to confirm there’s no tsconfig/emit mismatch after the flag tweak.packages/blocks/featured-service-list/package.json (1)
16-20: Featured-service-list matches the standardized block setupThe updated
buildcommand andnextpeer version mirror the rest of the blocks, which is good for keeping dev/build behavior predictable across packages and avoiding stray dev processes in this block.As with the other blocks, please validate at least one page or story that uses
@o2s/blocks.featured-service-listunder Next 16 to catch any subtle compatibility issues.Also applies to: 40-52
packages/ui/src/elements/badge-status.tsx (1)
21-23: BadgeStatus type formatting-only changeThis is a cosmetic reformat of
BadgeStatusPropswith no impact on the component’s props shape or behavior.packages/ui/src/elements/avatar.tsx (1)
45-48: AvatarFallbackProps reformat is safeThe single-line
extendsrefactor preserves the exact same prop composition forAvatarFallbackand doesn’t affect how the component is consumed.package.json (1)
4-8: Dev/predev wiring matches Turborepo’s watch-mode recommendationsSwapping
devtoturbo watch devplus introducing apredevthat runsturbo build(auto-invoked bynpm run dev) is a solid way to centralize file watching in Turborepo while keeping long‑running dev servers persistent and lettingbuildtasks re-run on dependency changes. This should directly address the “too many Node processes” issue while preserving dependency-aware rebuilds. (turborepo.com)Please confirm:
turbo.jsonmarksdevtasks aspersistent: trueand wiresdependsOn: ["^build"](or equivalent), andnpm run dev -- --filter=<app>still behaves as expected for apps likefrontendandapi-harmonization.packages/blocks/ticket-list/package.json (2)
17-17: Build script update is appropriate for the optimization strategy.Adding
--preserveWatchOutputto the tsc build command prevents terminal clearing during watch mode, which is essential when running concurrent TypeScript compilers in the monorepo under Turbopack's orchestration.
51-51: Verify Next.js 16.0.5 compatibility across consumers of this block.Next.js 16 requires React 19.2, but this block's peerDependencies do not declare a React version constraint. Ensure consumers (e.g., frontend app) supply compatible React versions. Next.js 16 also requires Node.js ≥20.9.0 and TypeScript ≥5.1.0—verify the monorepo's root constraints are updated accordingly.
packages/blocks/faq/package.json (1)
17-17: Build script update is aligned with optimization strategy.Consistent with ticket-list package, the
--preserveWatchOutputflag enables harmonized watch behavior across the monorepo.packages/blocks/ticket-details/package.json (1)
17-17: Build script update continues the consistent pattern across blocks.apps/frontend/turbo.json (2)
6-10: Verify the build dependency on @o2s/api-harmonization aligns with package.json changes.The turbo build task explicitly depends on
@o2s/api-harmonization#build, yet the subsequent file (apps/frontend/package.json) removes@o2s/api-harmonizationfrom runtime dependencies. Clarify whether this build-time dependency is intentional (e.g., for type generation or build-time codegen) and document it, or align the two configurations.
11-35: Dev task configuration looks appropriate for the optimization strategy.The new dev task correctly marks itself as persistent, disables caching, and depends on dependency builds. The environment variable list supports the application's configuration needs. Verify that the root
turbo.jsonhas been updated to reduce max concurrent tasks from 100 to 10 (as stated in PR objectives) to complete the resource optimization.packages/blocks/notification-list/package.json (1)
17-17: Build script update is consistent with the monorepo pattern.apps/frontend/package.json (3)
50-56: Verify the transition from caret to exact versioning aligns with monorepo strategy.React and Next.js dependencies are pinned to exact versions (19.2.0, 16.0.5), while other packages in the monorepo use caret ranges (^15.4.7 for Next.js in blocks). This mixing of exact and caret versions can complicate dependency resolution. Document whether exact pinning is intentional for reproducibility, and ensure package managers handle transitive dependencies correctly.
85-88: Manifest overrides may mask dependency resolution issues in the monorepo.The overrides section explicitly forces @types/react@19.2.7 and @types/react-dom@19.2.3 globally. While this ensures consistency in the frontend app, it can mask nested dependency conflicts if other packages request incompatible @types versions. Ensure block packages' peer dependency constraints are compatible with these overrides.
63-63: Verify Next.js 16 and TypeScript versions meet minimum requirements.Next.js 16 requires Node.js ≥20.9.0 and TypeScript ≥5.1.0. Confirm that the monorepo's root package.json, CI/CD, and developer setup enforce these minimum versions to prevent compatibility issues across the team and CI pipelines.
Also applies to: 72-72, 77-77
…ations # Conflicts: # apps/frontend/package.json # package-lock.json
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
turbo/generators/templates/block/package.hbs (1)
17-39: Block templatedevscript may reintroduce per‑package watchers (and depends on newer tooling versions)This template still scaffolds a
devscript that runstsc --build ... -wandtsc-alias -wviaconcurrently, which will spin up per‑block watcher processes. That seems at odds with this PR’s goal of centralizing dev watching viaturbo watch devand avoiding a Node process per package.Consider either:
- Dropping or de‑emphasizing this per‑package
devscript in the template, or- Reworking it so new blocks plug into the shared dev workflow instead of starting their own long‑lived watchers, which would gradually undo the optimization as more blocks are added.
The updated devDependency versions (dotenv-cli, concurrently, eslint, prettier, typescript) look fine at a glance, but please double‑check they match your intended Node/toolchain baseline and that internal presets (
@o2s/*-config) are known to support these versions.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (25)
apps/api-harmonization/package.json(2 hunks)apps/docs/package.json(1 hunks)apps/frontend/next.config.ts(2 hunks)apps/frontend/package.json(2 hunks)packages/blocks/article-list/package.json(2 hunks)packages/blocks/article-search/package.json(2 hunks)packages/blocks/article/package.json(2 hunks)packages/blocks/category-list/package.json(2 hunks)packages/blocks/category/package.json(2 hunks)packages/blocks/faq/package.json(2 hunks)packages/blocks/invoice-list/package.json(2 hunks)packages/blocks/notification-list/package.json(2 hunks)packages/blocks/notification-summary/package.json(1 hunks)packages/blocks/order-list/package.json(2 hunks)packages/blocks/quick-links/package.json(2 hunks)packages/blocks/ticket-list/package.json(2 hunks)packages/blocks/ticket-summary/package.json(1 hunks)packages/configs/integrations/package.json(1 hunks)packages/framework/package.json(1 hunks)packages/integrations/contentful-cms/package.json(2 hunks)packages/integrations/mocked/package.json(1 hunks)packages/integrations/strapi-cms/package.json(1 hunks)packages/integrations/zendesk/package.json(1 hunks)packages/utils/logger/package.json(1 hunks)turbo/generators/templates/block/package.hbs(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- apps/docs/package.json
🚧 Files skipped from review as they are similar to previous changes (10)
- apps/frontend/next.config.ts
- packages/blocks/category/package.json
- packages/blocks/invoice-list/package.json
- packages/blocks/faq/package.json
- packages/integrations/strapi-cms/package.json
- packages/utils/logger/package.json
- packages/integrations/contentful-cms/package.json
- packages/integrations/mocked/package.json
- packages/blocks/article-list/package.json
- packages/blocks/article/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: deploy-preview
🔇 Additional comments (32)
packages/blocks/ticket-summary/package.json (3)
17-17: Verify whether thedevscript should be removed per PR objectives.Per the PR objectives, the per-package
devtask was removed for all packages exceptapi-harmonization,frontend, anddocs. This package (blocks/ticket-summary) is not in that exceptions list. If the PR intent is to remove individual dev scripts from all other packages, this script should be removed.Can you clarify whether this script should be removed to align with the stated PR objectives?
18-18: Resolve tsc flag discrepancy with AI summary.The AI summary states that "build scripts now use
tsc --preserveWatchOutput + tsc-alias", but Line 18 usestsc --buildinstead oftsc --preserveWatchOutput. Verify whether--buildis the correct flag or whether--preserveWatchOutputshould be used.
52-52: Next.js v16 peer dependency update aligns with PR objectives.The upgrade from
^15.3.2to^16.0.5is consistent with the repo-wide Next.js v16 upgrade mentioned in the PR summary. This package's dependencies (React 19, Tailwind 4) are compatible with Next.js 16.packages/blocks/notification-list/package.json (2)
17-17: Build script change aligns with optimization strategy.Adding
--preserveWatchOutputto thetsccommand supports the shift toturbo watch devby preserving TypeScript watch mode output during incremental builds. This change is consistent with the PR's goal to reduce resource usage through efficient file watching.
51-51: Verify Next.js v16 peer dependency bump is intentional and necessary.The peer dependency upgrade from
^15.4.7to^16.0.5is a breaking change for consumers. While the PR mentions Next.js v16 adoption for the frontend package, this change applies the upgrade to a block component, which may be consumed by projects still on v15. Clarify whether:
- This upgrade is required for this block's functionality or part of enforced monorepo alignment.
- Consumers of this block should expect to upgrade their Next.js version.
- Whether a major version constraint bump is appropriate for a peer dependency, given backward compatibility concerns.
If this upgrade is intentional across all block packages, consider documenting the migration path in the promised migration guide (TODO in PR description) to help consumers transition.
packages/blocks/notification-summary/package.json (3)
16-21: Verify dev script alignment with PR objectives.Per the PR objectives, the per-package
devtask should be removed for all packages exceptapi-harmonization,frontend, anddocs. This package (@o2s/blocks.notification-summary) is not one of the three exceptions, so the dev script at line 17 appears inconsistent with the stated optimization goals.Confirm whether this package should:
- Retain the dev script for local development workflows, or
- Follow the monorepo-wide removal pattern.
If retention is intentional, clarify the rationale in the PR description.
18-18: Verify--preserveWatchOutputflag in build script.The AI summary mentions that build scripts should use
tsc --preserveWatchOutput + tsc-alias, but the build script at line 18 does not include the--preserveWatchOutputflag. This flag preserves watch-mode output between incremental rebuilds, which may be important for the optimization.Confirm whether this flag should be added:
-"build": "tsc --build tsconfig.json && tsc-alias", +"build": "tsc --build --preserveWatchOutput tsconfig.json && tsc-alias",
52-52: Verify Next.js v16 compatibility.The Next.js peer dependency is upgraded from
^15.3.2to^16.0.5, a major version bump. While this aligns with the PR objectives for blocks packages, ensure that:
- All exports and imports in
srcare compatible with Next.js v16 APIs.- No breaking changes from v15 → v16 affect the block's functionality.
- The block has been tested against Next.js v16.
Consider running the block's tests or integration tests to confirm compatibility.
packages/blocks/article-search/package.json (2)
17-17: Build script optimization aligns with resource-efficiency goals.The addition of
--preserveWatchOutputto thetscbuild command is a sound optimization that reduces unnecessary disk I/O during rebuilds, directly supporting the PR's objective to cut CPU/RAM load. Thetsc-aliaschaining afterward is appropriate for maintaining TypeScript path aliasing in the compiled output.
53-53: Next.js peer dependency upgraded to v16.The bump from
^15.4.7to^16.0.5is intentional per the PR objectives and mirrors changes across other block packages (faq, order-list, notification-list, etc.). As a peer dependency, this declares support for Next.js 16 without imposing it on consumers. Given the PR context indicates broad testing and validation, this upgrade appears deliberate and validated.Please verify that no consumers of this package's exports (via
api-harmonization,frontend,sdk, orcliententry points) rely on Next.js 15 specific behavior that would break with this upgrade.packages/framework/package.json (2)
13-18: Removal of dev script aligns with PR objectives.The dev script has been removed from this package, which is correct per the PR strategy—only
api-harmonization,frontend, anddocsretain dev scripts. This change supports the goal of reducing resource usage by delegating file watching to Turbopack viaturbo watch dev.
14-14: Verify--preserveWatchOutputflag semantics in the new workflow.The build script now includes
--preserveWatchOutput, which is typically a TypeScript watch-mode flag used to preserve console output. Using it in a regular build context (outside of watch mode) is unusual and needs clarification.
- Concern: Does
--preserveWatchOutputhave any effect or is it a no-op when TypeScript runs in regular (non-watch) build mode?- Context needed: How does
turbo watch devinvoke this build script, and is the flag appropriate in that context?- Verification: Confirm the flag behaves as intended in the new
turbo watch devworkflow.Please verify that
--preserveWatchOutputis the correct approach by checking:
- TypeScript documentation for the flag's behavior in non-watch contexts
- How Turbopack/
turbo watch devinvokes the build script and whether the flag produces the intended behaviorAlternatively, if this is a coordinated change across the repo, link to any internal documentation or design decisions that explain why this flag is used in build scripts.
packages/blocks/order-list/package.json (3)
17-17: Build script optimization aligns with turbo watch strategy.The
--preserveWatchOutputflag enables Turbopack to watch files and run builds on demand, eliminating the need for a per-package dev task. This is consistent with the PR's goal to reduce persistent Node processes.
51-51: Verify Next.js 16 compatibility for this block package.The peer dependency is bumped from v15 to v16—a major version upgrade. Since this is a shared UI block, confirm:
- No breaking changes in Next.js 16 affect the exports or rendering logic in this package.
- All consuming packages (especially those not explicitly upgraded in this PR) support the
^16.0.5constraint.Consider running the test suite to validate compatibility.
16-20: Dev script removal is consistent with PR objectives.Removing the
devscript aligns with the PR's goal to eliminate per-package Node processes. This package will rely onturbo watchfrom the monorepo root instead.packages/integrations/zendesk/package.json (1)
14-14: Verify the--preserveWatchOutputflag is correct and the intent is achieved.The build script has been changed to include
--preserveWatchOutputon thetscinvocation. Please verify that:
- This is the correct TypeScript flag for the intended behavior (file watching with preserved output in
turbo watchmode).- The flag chains correctly with
tsc-aliasand does not introduce side effects (e.g., does it affect incremental build caching or output directory structure?).Per the PR objectives, this change is part of a shift to delegate file watching to Turbopack via
turbo watch dev. Please confirm this flag supports that workflow.What does the --preserveWatchOutput flag do in TypeScript compiler?packages/blocks/ticket-list/package.json (3)
17-17: Build script flag addition aligns with watch-mode workflow.The
--preserveWatchOutputflag correctly preserves TypeScript's console output during incremental builds when used withturbo watch dev, supporting the PR's objective to replaceturbo devwith watch-based execution.
34-34: Verifyconcurrentlydependency is still required.The dev script (which likely used
concurrentlyto run tsc and tsc-alias in watch mode) has been removed per the PR's optimization objective. Confirm thatconcurrentlyis not used elsewhere in this package or consider removing it from devDependencies to reduce installation footprint.#!/bin/bash # Verify concurrently usage in packages/blocks/ticket-list rg -n "concurrently" packages/blocks/ticket-list/ --type json --type ts --type js -g '!node_modules'
51-51: Confirm Next.js 16 breaking changes are handled across all consuming code.The Next.js peer dependency is bumped from
^15.4.7to^16.0.5across all 24 block packages, indicating an intentional, coordinated upgrade. Next.js 16 introduces significant breaking changes that will require updates:
- Async Request APIs:
cookies(),headers(),draftMode(),params, andsearchParamsmust now be awaited in layouts, pages, and route handlers- Removed features: AMP support,
serverRuntimeConfig/publicRuntimeConfig, legacynext/legacy/imageimports- Middleware:
middleware.tsreplaced withproxy.tsusing a new proxy model- Build tools: Turbopack is now the default bundler;
next lintcommand removed- Environment requirements: Node.js >= 20.9.0 and TypeScript >= 5.1 are now required
- API changes:
revalidateTag()signature changes,images.domains→images.remotePatternsVerify that:
- All blocks and consuming applications have updated their code to handle async Request APIs
- Build tooling and CI/CD pipelines support the new Node.js and TypeScript minimums
- Any custom middleware configurations have been migrated to the new proxy model
- Image configuration (if used) has been updated from
domainstoremotePatternsapps/api-harmonization/package.json (2)
14-15: Approved: preserveWatchOutput flag reduces verbosity during watch mode.The addition of
--preserveWatchOutputto bothdevanddebugscripts aligns with the PR objective to reduce output noise and memory overhead during development, supporting the resource optimization goals.
82-83: SWC configuration is properly set up and compatible with NestJS 11.1.9.The
nest-cli.jsonfile correctly configures"builder": "swc", and the specified SWC versions (@swc/cli@^0.7.9,@swc/core@^1.15.3) are compatible with NestJS 11.1.9. No known compatibility issues or breaking changes exist with these versions.packages/blocks/category-list/package.json (3)
17-17: Verify TypeScript version supports--preserveWatchOutput.The
--preserveWatchOutputflag is used to preserve build output in watch mode, preventing unnecessary rebuilds when usingturbo watch dev. However, this flag is only available in TypeScript 5.5+.#!/bin/bash # Description: Verify TypeScript version supports --preserveWatchOutput flag # Check the TypeScript version defined in the devDependencies rg -A 1 "typescript" packages/blocks/category-list/package.json
16-20: No action needed—dev script removal is correct for this package.The category-list package correctly has no
devscript. Only api-harmonization and frontend (exception packages) retaindevscripts as per the PR objectives. This package is not in the exception list and the removal is consistent with the PR changes.
51-51: Verify Next.js v16 compatibility with peer dependencies.The Next.js peer dependency is being upgraded from
^15.4.7to^16.0.5. While this is intentional per the PR objectives to enable Turbopack improvements, verify that all peer dependencies in this file are compatible with Next.js 16 and that the block's code doesn't rely on APIs that changed between versions.What are the major breaking changes in Next.js 16 compared to Next.js 15?turbo/generators/templates/block/package.hbs (1)
41-54: Peer dependency bumps (NestJS/Next.js) look consistent; verify generator output against these versionsUpdating the block template’s peerDeps to
@nestjs/axios^4.0.1,@nestjs/common^11.0.16, andnext^16.0.5 aligns with the repo‑wide upgrades described in the PR summary. From the template alone there’s no obvious mismatch (e.g.,@nestjs/coreis already ^11).Please still verify that:
- The generated block skeleton (Nest modules, HTTP clients, Next integration points) is compatible with these specific versions, and
- The minimal Next/Nest versions for consuming apps are documented somewhere so blocks don’t get installed into projects on older majors by accident.
If you’ve already run the generator and smoke‑tested a freshly generated block against the upgraded apps, this looks good to merge.
apps/frontend/package.json (4)
15-46: Verify dependency removal: inconsistency with AI-generated summary.The AI summary states that
@o2s/api-harmonizationwas removed, but this dependency is not clearly visible in the provided annotated code. However, line 45 still contains"@o2s/utils.api-harmonization": "*", which remains unchanged.Confirm whether
@o2s/api-harmonization(distinct from@o2s/utils.api-harmonization) was actually removed as part of this PR, or if the AI summary is inaccurate. If it was removed, ensure no frontend code references it; if it wasn't, clarify the status.#!/bin/bash # Check if @o2s/api-harmonization exists and is referenced echo "=== Checking for @o2s/api-harmonization references ===" rg '@o2s/api-harmonization' apps/frontend --type json --type ts --type tsx --type js --type jsx -C 2 || echo "No references found" echo -e "\n=== Checking git diff for actual removals ===" git diff HEAD~1 apps/frontend/package.json | grep -A 2 -B 2 'api-harmonization' || echo "No removals in git diff"
6-8: Turbopack FS Caching is already properly configured.The
next.config.tscorrectly enablesturbopackFileSystemCacheForDev: truein the experimental configuration (line 37), which complements the--turbopackflag in the dev script. The frontend is already aligned with the PR's resource optimization objectives. No changes needed.
74-74: Type definition pinning strategy is appropriate and compatible.Pinned versions
@types/react@19.2.7and@types/react-dom@19.2.3are fully compatible withreact@19.2.0andreact-dom@19.2.0. All workspace packages declare only loose peerDependencies (^19), so the pinned versions safely satisfy these constraints. Theoverridessection provides necessary transitive dependency control without creating conflicts, ensuring deterministic type definitions across the monorepo.
56-56: Exact version pinning for React 19.2.0 is not a security concern.React 19.2.0 is the latest patch release (as of October 2025) with no known CVEs in the core package. Removing the caret does not block any available security updates. While exact pinning may reduce flexibility compared to a caret range, it does not prevent critical patches from being applied.
Also applies to: 58-58
Likely an incorrect or invalid review comment.
packages/configs/integrations/package.json (2)
18-21: Removal of strapi-cms and zendesk integrations is verified as safe.No references to
@o2s/integrations.strapi-cmsor@o2s/integrations.zendeskexist in the codebase. The reduction to only@o2s/integrations.mockedis intentional, and no downstream packages depend on the removed integrations.
14-14: Remove the--preserveWatchOutputflag from the build script; it has no effect in non-watch mode.The
--preserveWatchOutputflag is a valid TypeScript compiler option, but it only applies when using--watchmode for incremental compilation to prevent console clearing between rebuilds. Since the build script uses one-time compilation (no--watch), this flag has no purpose and should be removed. The corrected build script should be"tsc && tsc-alias".Likely an incorrect or invalid review comment.
packages/blocks/quick-links/package.json (1)
16-20: Build script correctly updated for Turbopack watch-based workflow.The addition of
--preserveWatchOutputto the TypeScript build command aligns with the PR's shift from per-packagedevwatchers to Turbopack file watching. The removal of this package'sdevscript is also correct, asquick-linksis not in the exception list (api-harmonization,frontend,docs).Please confirm that the
--preserveWatchOutputflag is available and working correctly in TypeScript 5.9.3, and that this change doesn't introduce unexpected side effects in the watch/rebuild pipeline.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
package.json (1)
24-25: Clarify intent of dualrimrafinvocations incleanandclean:outputscripts.Both scripts execute
rimraftwice:
- Via
npm exec --workspaces -- rimraf ...(runs in each workspace)- Directly at the root level
rimraf ...If the intent is to clean workspace-scoped artifacts (e.g.,
dist,.nextin each package) and then root-level artifacts, this is clear. However, the pattern appears redundant sincenpm exec --workspacesshould handle both. Consider simplifying or documenting the reasoning if the dual invocation is intentional.If you intend to clean only the root-level artifacts, remove the
npm exec --workspacesinvocation:-"clean": "npm exec --workspaces -- rimraf node_modules dist .next .turbo && rimraf node_modules dist .next .turbo", +"clean": "rimraf node_modules dist .next .turbo", -"clean:output": "npm exec --workspaces -- rimraf dist .next .turbo && rimraf dist .next .turbo" +"clean:output": "rimraf dist .next .turbo"Alternatively, if you intend to clean workspace artifacts separately, document the rationale inline or in a comment.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (2)
package.json(3 hunks)turbo/generators/templates/block/package.hbs(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- turbo/generators/templates/block/package.hbs
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: deploy-preview
🔇 Additional comments (2)
package.json (2)
6-7: Verify thepredevworkflow and Turbo filter syntax.The
predevscript uses filter syntax-F=!{./apps/*} -F=!{./packages/cli/*}to exclude packages from the build phase. However:
- This filter syntax needs verification for Turbo 2.6.1 compatibility (e.g., is the negation pattern correct, or should it use a different syntax like
--filter=!...?).- The
devscript does not automatically invokepredev, which means users must manually runnpm run predev && npm run devor remember to run these separately. This creates a two-step developer workflow that may not be obvious, especially for new contributors.- The
turbo watch devcommand needs verification to confirm it works correctly when packages haven't been pre-built.Recommendations:
- Either integrate
predevinto thedevscript (e.g.,"dev": "npm run predev && turbo watch dev") to ensure a seamless one-command workflow, or document this requirement clearly in a migration guide (aligns with the PR TODO about adding a migration guide).- Verify the Turbo filter syntax against Turbo 2.6.1 documentation and test it locally.
20-20: LGTM — direct invocation ofnpm-check-updates.Removing the
npxprefix and callingnpm-check-updatesdirectly (now a devDependency) is a good practice. It improves consistency and avoids the overhead of spawning npx.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
There was a problem hiding this comment.
Actionable comments posted: 2
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
apps/frontend/package.json(3 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, next-auth v5.0.0-beta.30 supports Next.js 16 through its peerDependencies range: "^14.0.0-0 || ^15.0.0 || ^16.0.0".
Applied to files:
apps/frontend/package.json
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next-intl 4.1.0 (and the version ^4.1.0 used in peerDependencies) works correctly with Next.js 16, despite general community concerns about partial compatibility.
Applied to files:
apps/frontend/package.json
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.
Applied to files:
apps/frontend/package.json
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, the application does not use Next.js cache components (use cache/cacheComponents), so next-intl compatibility limitations related to those experimental features are not a concern.
Applied to files:
apps/frontend/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: deploy-preview
🔇 Additional comments (1)
apps/frontend/package.json (1)
12-12: No action needed. ESLint is properly configured with Next.js-specific rules through@o2s/eslint-config/frontend, which includes@next/eslint-plugin-nextwith both recommended and core-web-vitals rule sets. The switch fromnext lintto the flat config format is correct.Likely an incorrect or invalid review comment.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
apps/frontend/package.json (2)
75-75: Unresolved: Redundant @types pinning in both devDependencies and overrides.This issue was flagged in a previous review. Lines 75 and 77 pin
@types/react(19.2.7) and@types/react-dom(19.2.3) in devDependencies, duplicating the identical versions inoverrides(lines 89–90). In npm workspaces,overridesalone enforces these versions across transitive dependencies, making the devDependencies pins redundant. Remove them from devDependencies to clarify intent."devDependencies": { "@next/bundle-analyzer": "16.0.5", "@o2s/eslint-config": "*", "@o2s/prettier-config": "*", "@o2s/typescript-config": "*", "@svgr/webpack": "^8.1.0", "@trivago/prettier-plugin-sort-imports": "^6.0.0", "@turbo/gen": "^2.6.1", "@types/bcryptjs": "^3.0.0", "@types/node": "^24.10.1", - "@types/react": "19.2.7", "@types/react-autosuggest": "^10.1.11", - "@types/react-dom": "19.2.3", "dotenv": "^17.2.3", "eslint": "^9.39.1", "eslint-config-next": "16.0.5",Also applies to: 77-77, 88-91
7-7: Unresolved:predevscript requiresshxin devDependencies.This issue was flagged in a previous review. The
predevscript usesshx rmbutshxis not listed in devDependencies, causing the script to fail. Addshxto devDependencies to resolve."devDependencies": { + "shx": "^0.3.4", "@next/bundle-analyzer": "16.0.5",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (32)
apps/frontend/package.json(3 hunks)packages/blocks/article-list/package.json(2 hunks)packages/blocks/article-search/package.json(2 hunks)packages/blocks/article/package.json(2 hunks)packages/blocks/category-list/package.json(2 hunks)packages/blocks/category/package.json(2 hunks)packages/blocks/faq/package.json(2 hunks)packages/blocks/featured-service-list/package.json(2 hunks)packages/blocks/invoice-list/package.json(2 hunks)packages/blocks/notification-details/package.json(2 hunks)packages/blocks/notification-list/package.json(2 hunks)packages/blocks/notification-summary/package.json(2 hunks)packages/blocks/order-details/package.json(2 hunks)packages/blocks/order-list/package.json(2 hunks)packages/blocks/orders-summary/package.json(2 hunks)packages/blocks/payments-history/package.json(2 hunks)packages/blocks/payments-summary/package.json(2 hunks)packages/blocks/quick-links/package.json(2 hunks)packages/blocks/service-details/package.json(2 hunks)packages/blocks/service-list/package.json(2 hunks)packages/blocks/surveyjs-form/package.json(2 hunks)packages/blocks/ticket-details/package.json(2 hunks)packages/blocks/ticket-list/package.json(2 hunks)packages/blocks/ticket-recent/package.json(2 hunks)packages/blocks/ticket-summary/package.json(2 hunks)packages/blocks/user-account/package.json(2 hunks)packages/configs/integrations/package.json(1 hunks)packages/integrations/contentful-cms/package.json(2 hunks)packages/integrations/strapi-cms/package.json(1 hunks)packages/modules/surveyjs/package.json(2 hunks)packages/utils/api-harmonization/package.json(1 hunks)packages/utils/frontend/package.json(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (20)
- packages/blocks/order-details/package.json
- packages/blocks/category/package.json
- packages/utils/api-harmonization/package.json
- packages/utils/frontend/package.json
- packages/blocks/order-list/package.json
- packages/blocks/invoice-list/package.json
- packages/blocks/notification-details/package.json
- packages/blocks/user-account/package.json
- packages/blocks/ticket-recent/package.json
- packages/blocks/category-list/package.json
- packages/blocks/service-details/package.json
- packages/blocks/featured-service-list/package.json
- packages/blocks/ticket-details/package.json
- packages/blocks/payments-summary/package.json
- packages/blocks/faq/package.json
- packages/blocks/article-list/package.json
- packages/blocks/surveyjs-form/package.json
- packages/blocks/payments-history/package.json
- packages/blocks/orders-summary/package.json
- packages/blocks/service-list/package.json
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next-intl 4.1.0 (and the version ^4.1.0 used in peerDependencies) works correctly with Next.js 16, despite general community concerns about partial compatibility.
Applied to files:
packages/blocks/ticket-list/package.jsonpackages/blocks/notification-summary/package.jsonpackages/blocks/quick-links/package.jsonpackages/blocks/ticket-summary/package.jsonpackages/modules/surveyjs/package.jsonpackages/blocks/article/package.jsonpackages/blocks/notification-list/package.jsonapps/frontend/package.jsonpackages/blocks/article-search/package.json
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, next-auth v5.0.0-beta.30 supports Next.js 16 through its peerDependencies range: "^14.0.0-0 || ^15.0.0 || ^16.0.0".
Applied to files:
packages/blocks/ticket-list/package.jsonpackages/blocks/notification-summary/package.jsonpackages/blocks/quick-links/package.jsonpackages/blocks/ticket-summary/package.jsonpackages/modules/surveyjs/package.jsonpackages/blocks/article/package.jsonpackages/blocks/notification-list/package.jsonapps/frontend/package.jsonpackages/blocks/article-search/package.json
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.
Applied to files:
packages/blocks/quick-links/package.jsonapps/frontend/package.json
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, the application does not use Next.js cache components (use cache/cacheComponents), so next-intl compatibility limitations related to those experimental features are not a concern.
Applied to files:
packages/blocks/quick-links/package.jsonapps/frontend/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: deploy-preview
🔇 Additional comments (34)
packages/blocks/notification-summary/package.json (3)
17-17: Verify that thedevscript should be retained for this package.Per the PR objectives, the per-package
devtask was removed for all packages exceptapi-harmonization,frontend, anddocsto reduce CPU/RAM load. This package (@o2s/blocks.notification-summary) is a block package and does not appear to be among the three exceptions.Confirm whether this
devscript should be removed to align with the PR's optimization goal of eliminating unnecessary Node.js processes.
19-19: Lint script appropriately expanded to include TSX files.The expansion from
*.tsto*.{ts,tsx}aligns with the broader codebase standardization mentioned in the PR and is a sensible improvement for comprehensive type checking.
52-52: Next.js peer dependency upgraded to v16 with confirmed compatibility.The upgrade from
^15.3.2to^16.0.5aligns with the PR's Next.js v16 migration goal. Per learnings,next-intlv4.1.0 (line 53) is confirmed to work correctly with Next.js 16 in this repository, ensuring no breaking changes in this package's dependencies.packages/integrations/contentful-cms/package.json (3)
14-14:--preserveWatchOutputflag added to TypeScript build.The addition of the
--preserveWatchOutputflag aligns with the PR optimization strategy and helps preserve output during watch mode, reducing unnecessary clears. This is consistent with the standardized TypeScript build approach across the monorepo.
13-18: Dev script correctly removed per PR optimization objectives.The removal of the
"dev"script is consistent with the PR goal to eliminate per-package dev tasks and centralize control through Turbo. Sincecontentful-cmsis not in the exceptions list (onlyapi-harmonization,frontend, anddocsretain per-package dev scripts), this removal is correct.
17-17: Expanded file pattern in generate script to include TSX files.The pattern update from
"generated/**/*.ts"to"generated/**/*.{ts,tsx}"is reasonable, as GraphQL code generation can produce TypeScript and TSX files. Prettier will now format both file types, ensuring consistency.packages/blocks/ticket-list/package.json (3)
17-17: Build script aligns with PR optimization goals.The addition of
--preserveWatchOutputreduces redundant output during incremental builds, supporting the broader dev-task optimization initiative to reduce resource consumption. This change is consistent with the pattern across the monorepo.
18-18: Lint script expanded to include .tsx files.The addition of
.tsxto the eslint glob pattern ensures React TypeScript files are properly linted, improving coverage across the codebase. This is a sound enhancement.
51-51: Next.js peer dependency updated correctly.The upgrade to
^16.0.5aligns with the monorepo-wide Next.js v16 migration. Based on learnings,next-intl@^4.1.0(line 52) is confirmed to be compatible with Next.js 16, so no conflicts are expected.packages/blocks/ticket-summary/package.json (2)
19-19: Lint glob pattern expansion is consistent with monorepo standardization.The expanded pattern to include
.tsxfiles ensures that React component files receive the same linting treatment as.tsfiles, which is appropriate for a block component package. This aligns with the PR's goal to standardize lint/build processes across the monorepo.
52-52: Next.js peer dependency upgrade to v16 is compatible with declared dependencies.The upgrade from the prior version to
^16.0.5aligns with the PR's objective of Next.js v16 adoption. Based on learnings,next-intl 4.1.0(declared in line 53) is verified to work correctly with Next.js 16, and the NestJS/React peer dependencies are library-agnostic and unaffected by the Next.js version change. No compatibility issues expected for consuming apps.packages/blocks/article/package.json (4)
17-17: Build script now includes--preserveWatchOutputfor standardized TypeScript output handling.The addition of the
--preserveWatchOutputflag to the TypeScript build command aligns with the PR's goal to standardize build scripts across the monorepo. This flag is part of the dev-task optimization strategy to improve build consistency.Verify that the chained
tsc-aliascommand executes correctly after the TypeScript build with the new flag, particularly in watch or concurrent scenarios where output preservation matters.
18-18: Lint glob expanded to include.tsxfiles alongside.ts.This change is appropriate if the package includes TypeScript React components (which it likely does, given its exports to frontend/sdk). This expands linting coverage to JSX-containing files, a reasonable improvement.
51-51: Next.js peer dependency bumped to v16.x.The update from
^15.4.7to^16.0.5is intentional per the PR objectives to upgrade Next.js v16 across the monorepo. The learnings confirm thatnext-intl@^4.1.0(line 52) is compatible with Next.js 16, ensuring no peer dependency conflicts in this package.
54-54: EOF newline added.Minor formatting improvement; no functional impact.
packages/integrations/strapi-cms/package.json (2)
14-14: Verify the use of--preserveWatchOutputin a non-watch build context.The
--preserveWatchOutputTypeScript compiler flag is typically used with--watchto preserve output from previous builds. This script runstsconce (non-watch) before piping totsc-alias. Confirm whether this flag has the intended effect in a non-watch context, or if it's a no-op that can be safely included.
17-17: Safe glob pattern expansion to include.tsxfiles.The glob pattern for the generate script has been expanded from
generated/**/*.tstogenerated/**/*.{ts,tsx}to include TypeScript React files. This is a safe change—if no.tsxfiles are generated, the pattern simply won't match—and aligns with the broader pattern across the monorepo in this PR.packages/configs/integrations/package.json (3)
15-15: Lint glob expansion to include.tsxfiles is sound.Expanding the linting glob to include
.{ts,tsx}aligns with modern TypeScript practices and ensures that React component files are properly linted alongside pure TypeScript files. This change is consistent with the monorepo-wide modernization pattern mentioned in the PR.
18-21: No breaking dependencies found from removal ofstrapi-cmsandzendeskintegrations.The removed
@o2s/integrations.strapi-cmsand@o2s/integrations.zendeskpackages are not referenced as dependencies in any other package.json files in the monorepo, nor are they imported in any code files. The change to retain only@o2s/integrations.mockedis safe and will not break dependent packages.
14-14: No action needed—--preserveWatchOutputis a valid TypeScript compiler flag.The
--preserveWatchOutputflag is a documented TypeScript compiler option that prevents watch mode from clearing the console on each rebuild. This aligns with the PR's optimization goal of reducing resource usage while retaining earlier errors and warnings.packages/blocks/notification-list/package.json (2)
17-18: Build and lint optimizations aligned with PR objectives.The addition of
--preserveWatchOutputand inclusion of.tsxfiles in the lint glob are consistent with the repo-wide optimization strategy and improve developer experience without breaking changes.
51-51: Next.js 16.0.5 peer dependency upgrade is coordinated across the workspace.The peer dependency update aligns with the broader Next.js 16 migration documented in the PR. Based on learnings,
next-intl@^4.1.0is compatible with Next.js 16, and the application does not use experimental cache components, so no compatibility concerns.apps/frontend/package.json (4)
12-12: Lint command update aligns with PR strategy.Switching from
next lintto directeslintinvocation with expanded glob to include.tsxfiles is consistent with the optimization approach and allows finer control over linting scope.
53-59: Next.js 16 and dependency versions are compatible.The upgrade to Next.js 16.0.5, next-intl ^4.5.6, and React 19.2.0 is compatible with the application's requirements. Based on learnings:
next-auth@5.0.0-beta.30supports Next.js 16 (peerDependencies:^14.0.0-0 || ^15.0.0 || ^16.0.0)next-intlis compatible; application does not use cache components, so experimental features are not a concern
57-57: Clarify intent behind React version pinning change (^19.2.0 → 19.2.0).Both
reactandreact-domwere changed from caret ranges (^19.2.0) to exact versions (19.2.0). Given the addition of theoverridessection (lines 88–91), this appears intentional to enforce strict versions across the monorepo. However, confirm whether this change is necessary or if caret ranges would suffice alongside the overrides.Also applies to: 59-59
66-66: Next.js ecosystem tooling bumped consistently to 16.0.5.Both
@next/bundle-analyzerandeslint-config-nextare correctly updated to 16.0.5, ensuring consistency with the Next.js upgrade. Note that bundle-analyzer does not yet support Turbopack (per learnings), but this is acceptable for a development tool and does not block functionality.Also applies to: 80-80
packages/blocks/article-search/package.json (3)
17-17: ✓ Build script optimization aligns with dev task consolidation.The addition of
--preserveWatchOutputreduces TypeScript rebuild overhead by preserving intermediate compilation artifacts, supporting the PR's objective to lower CPU/RAM load during development.
18-18: ✓ Lint script correctly expanded to cover TypeScript and TSX files.Broadening the ESLint scope to include
.tsxfiles ensures consistent linting across all source files in the package and aligns with modern React/TypeScript practices.
53-53: ✓ Next.js v16 peer dependency update is compatible.The bump from
^15.4.7to^16.0.5is appropriate for this block package. Based on learnings,next-intl@^4.1.0(already specified at line 54) has been verified to work correctly with Next.js 16 in this repository. The update supports downstream consumption by frontend apps upgraded to Next.js 16 as part of this PR.packages/modules/surveyjs/package.json (3)
18-18: Lint script scope expansion looks good.Broadening the lint glob from
*.tsto*.{ts,tsx}is a sensible improvement that ensures React components and TypeScript files are consistently linted across the module. This aligns well with the module's multi-target nature (frontend, SDK, api-harmonization exports).
53-53: Next.js 16 compatibility confirmed via learnings.The bump to
next@^16.0.5is a major version upgrade. Based on retrieved learnings, next-intl 4.1.0 (which this module declares at line 54) is confirmed to work correctly with Next.js 16 in this repository context, so peer dependency alignment is solid.
17-17: The--preserveWatchOutputflag is supported in TypeScript 5.9.3 and is a valid CLI option that prevents clearing the console on each watch update. No further action needed.packages/blocks/quick-links/package.json (2)
17-17: Build script change looks good.The addition of
--preserveWatchOutputaligns with the PR's dev optimization goals and is consistent across updated packages.
51-51: Next.js 16 peer dependency bump is compatible with consuming packages.The upgrade from
^15.4.7to^16.0.5is confirmed compatible with next-intl 4.1.0 and next-auth v5.0.0-beta.30. apps/frontend already uses Next.js 16.0.5 with these dependencies, confirming no regressions in the consuming package.
What does this PR do?
devtask is too resource-heavy #420devtask to NOT spawn a separate Node.js process for each package, as each process takes up a lot of resourcesdevtask was removed for all packages except forapi-harmonization,frontendanddocsappsturbo devwe launchturbo watch devwhich delegates watching for file changes to Turbopack, which executesbuildtask in appropriate packages on demanddev task(from ~6-9 GB to 3-4 GB) and also reduced CPU load during the startup process (up to 50%)turbo.jsonfrom 100 to just 10 so that the OS is not overwhelmed with Node.js processesapi-harmonization, switched to SWC compilerfrontend, upgraded to Next.js v16 and enabled File System Caching to further speed up app startup on subsequent runsdevtaskTODO: guide how to migrate to new version in existing projects
Summary by CodeRabbit
New Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.