Skip to content

fix: lint #7433

Merged
sriramveeraghanta merged 27 commits intopreviewfrom
fix_lint
Jul 24, 2025
Merged

fix: lint #7433
sriramveeraghanta merged 27 commits intopreviewfrom
fix_lint

Conversation

@aheckmann
Copy link
Contributor

@aheckmann aheckmann commented Jul 18, 2025

Description

Why

Spend less time manually fixing builds and bugs by preventing many of those problems from landing in this repository.

What

  • Lint: Fix many errors and warnings
  • Lint: Permit unused variables which begin with _
  • Lint: Require types to be imported separately
  • Fix: Add missing live server env var
  • Lint: increase --max-warnings to current levels to support running these in CI while preventing these issues from worsening
  • Add building and linting all* apps and packages to CI
    • * Due to the large number of lint errors in apps/web and to prevent this PR from becoming too large, I have excluded apps/web from these new CI checks. We will need to address those issues in a follow up PR before re-enabling lint for that app during CI. I'm choosing shipping improvements over being perfect.

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • Code refactoring

Test Scenarios

Summary by CodeRabbit

  • New Features

    • Improved continuous integration workflows with targeted linting and build checks for API and web apps on pull requests.
    • Added support for specifying Node.js version via .nvmrc.
  • Bug Fixes

    • Enhanced error handling and type safety across multiple components and utilities.
    • Improved type annotations for props and function parameters, reducing reliance on any.
  • Refactor

    • Streamlined import statements and code style for better readability and maintainability.
    • Centralized and clarified callback and effect dependencies in React components.
    • Simplified function signatures and improved type safety in decorators and extensions.
    • Made type exports and annotations more explicit for better type safety.
    • Removed unused functions and redundant code for cleaner codebase.
  • Chores

    • Relaxed ESLint warning thresholds across several packages to allow more warnings before failing checks.
    • Updated and enforced ESLint configurations for improved TypeScript and unused variable handling.
    • Updated and added package scripts for more thorough cleaning and linting processes.
    • Added explicit module export definitions in package manifests.
  • Documentation

    • Updated example environment variable files with new configuration options.
  • Style

    • Minor adjustments to whitespace, import order, and code formatting for consistency.

Summary by CodeRabbit

Chores

  • Updated linting rules and thresholds across multiple packages to allow more warnings before failing checks.
  • Refined ESLint configurations for improved TypeScript support and intentional unused variable handling.
  • Enhanced and split GitHub Actions workflows for more targeted build and linting on pull requests.
  • Added and updated scripts for improved cleaning and linting in package management.
  • Added explicit package exports for better module resolution.

Refactor

  • Improved type safety and clarity across components and utilities by replacing any with stricter types, refining prop types, and removing redundant or unused code.
  • Centralized and memoized logic in UI components for better maintainability.
  • Updated import orders and removed redundant imports for consistency.
  • Simplified function signatures and callback dependencies.
  • Removed unused functions and code blocks.

Bug Fixes

  • Improved error handling by refining error types and checks, especially in authentication and form submission flows.
  • Adjusted dependency arrays in React hooks to ensure correct effect execution.

New Features

  • Added an .nvmrc file to specify the Node.js version for development environments.

Documentation

  • Improved code comments and removed outdated or commented-out code blocks for clarity.

Style

  • Standardized code formatting and import statement order across files.
  • Migrated some configuration files to ES module syntax for consistency.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 18, 2025

Walkthrough

This update restructures CI workflows, tightens TypeScript types, and improves code clarity across the monorepo. It replaces a monolithic build/lint workflow with targeted workflows for API and web apps, adjusts ESLint configurations to allow intentional unused variables, and refines type annotations, import orders, and error handling. Minor functional and dependency updates are included.

Changes

File(s) / Group Change Summary
.github/workflows/build-test-pull-request.yml Deleted: Removed monolithic CI workflow for linting/building server and Node.js components.
.github/workflows/pull-request-build-lint-api.yml,
.github/workflows/pull-request-build-lint-web-apps.yml
Added: New targeted CI workflows for API and web apps with branch and file filters.
.nvmrc Added: Specifies Node.js LTS version "jod" for nvm.
apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx,
apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx
Refactor: Replaced ternary with explicit if-else in ToggleSwitch handlers.
apps/admin/package.json,
apps/live/package.json,
apps/space/package.json,
packages/editor/package.json,
packages/hooks/package.json,
packages/propel/package.json,
packages/services/package.json,
packages/shared-state/package.json,
packages/types/package.json,
packages/ui/package.json,
packages/utils/package.json
Lint: Increased allowed ESLint warnings in check:lint scripts.
apps/live/src/ce/types/common.d.ts,
packages/types/src/page/extended.ts
Type: Changed empty object type aliases to never or object.
apps/live/src/core/helpers/logger.ts,
apps/live/src/core/hocuspocus-server.ts,
apps/space/core/store/instance.store.ts,
apps/space/core/store/issue-detail.store.ts,
apps/space/core/store/profile.store.ts,
apps/space/helpers/date-time.helper.ts,
apps/space/helpers/string.helper.ts,
packages/utils/src/string.ts
Style: Renamed unused error variables in catch blocks to prefixed underscores (_err, _error).
apps/live/src/core/services/api.service.ts,
apps/space/app/[workspaceSlug]/[projectId]/page.ts,
apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx,
apps/web/core/components/workspace/create-workspace-form.tsx
Type: Improved type annotations for parameters and props.
apps/space/core/components/account/auth-forms/password.tsx,
apps/space/core/hooks/use-intersection-observer.tsx,
apps/web/app/(all)/onboarding/page.tsx
Refactor: Replaced short-circuit with explicit conditional checks.
apps/space/core/components/account/oauth/github-button.tsx,
apps/space/core/components/account/oauth/gitlab-button.tsx,
apps/space/core/components/account/oauth/google-button.tsx,
packages/editor/src/core/extensions/mentions/utils.ts,
packages/types/src/dashboard.ts,
packages/types/src/issues/activity/issue_activity.ts,
packages/types/src/issues/issue.ts,
packages/types/src/module/modules.ts,
packages/types/src/users.ts,
packages/types/src/workspace-notifications.ts,
packages/logger/src/config.ts
Style: Reordered import statements for clarity.
apps/space/core/components/issues/filters/applied-filters/filters-list.tsx,
apps/space/core/components/issues/filters/applied-filters/priority.tsx,
apps/space/core/components/issues/filters/applied-filters/root.tsx
Type: Strengthened filter prop types and improved route param typing.
apps/space/core/components/issues/issue-layouts/kanban/base-kanban-root.tsx,
apps/space/core/components/issues/issue-layouts/list/base-list-root.tsx
Hook: Expanded useCallback dependencies for issue loading functions.
apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx,
apps/web/app/(all)/accounts/set-password/page.tsx,
apps/web/app/(all)/profile/security/page.tsx
Error Handling: Improved type safety in error handling (using unknown, explicit type guards).
apps/web/app/(all)/create-workspace/page.tsx Type: Added explicit type annotation to useState for workspace creation form.
apps/web/core/components/issues/issue-layouts/kanban/kanban-group.tsx,
apps/web/core/components/issues/issue-layouts/list/list-group.tsx,
apps/web/core/components/issues/issue-layouts/quick-add/root.tsx
Style: Removed extra whitespace in import statements.
package.json Scripts: Enhanced clean script, added ci:lint, updated turbo version, added resolutions.
packages/constants/src/analytics/common.ts Type: Added optional prefix/suffix to i18nProps, changed index signature type to unknown.
packages/constants/src/auth.ts Type: Restricted message fields to `string
packages/constants/src/issue/common.ts Enum: Added "team_project" alias to EIssueGroupByToServerOptions.
packages/constants/src/issue/layout.ts Type: Changed icon type to string, removed unused layouts.
packages/constants/src/settings.ts Import: Changed import path for PROFILE_SETTINGS.
packages/decorators/src/controller.ts,
packages/decorators/src/websocket-controller.ts
Type: Constructor signatures changed from any[] to unknown[].
packages/decorators/src/rest.ts,
packages/decorators/src/websocket.ts
Decorator: Simplified method decorator signatures, added ESLint directive.
packages/decorators/tsconfig.json Config: Included root-level .ts files in compilation.
packages/editor/src/core/components/editors/editor-content.tsx Prop: Forwards id prop to nested EditorContent.
packages/editor/src/core/components/links/link-edit-view.tsx Refactor: Centralized and memoized link removal logic, updated effect dependencies.
packages/editor/src/core/components/links/link-view.tsx Hook: Expanded useEffect dependencies for link preview state.
packages/editor/src/core/extensions/code/lowlight-plugin.ts Style: Changed // @ts-ignore to // @ts-expect-error.
packages/editor/src/core/extensions/custom-image/components/upload-status.tsx Hook: Added displayStatus to useEffect dependencies for upload animation.
packages/editor/src/core/extensions/table/table/table-controls.ts,
packages/editor/src/core/extensions/table/table/table-view.tsx
Type: Removed unused parameters, improved type annotations, cleaned up import comments.
packages/editor/src/core/helpers/scroll-to-node.ts,
packages/editor/src/core/types/editor.ts
Type: Narrowed scroll behavior parameter to string literals `"auto"
packages/editor/src/core/hooks/use-editor.ts Hook: Added provider to useImperativeHandle dependencies.
packages/editor/src/core/types/mention.ts,
packages/editor/src/core/types/slash-commands-suggestion.ts
Import: Removed unused imports, reordered import statements.
packages/editor/tailwind.config.js Config: Migrated from CommonJS to ES module syntax for Tailwind config.
packages/eslint-config/library.js,
packages/eslint-config/next.js
Lint: Enhanced unused-vars rule to ignore variables/args/errors prefixed with _.
packages/eslint-config/server.js Lint: Major update—TypeScript support, Prettier, import plugin, ignore patterns, explicit rules.
packages/i18n/src/hooks/use-translation.ts,
packages/i18n/src/store/index.ts
Type: Changed translation params from any to unknown, improved message type checks.
packages/logger/package.json Package: Added exports map for types, import, and require fields.
packages/ui/src/icons/priority-icon.tsx Type: Exported TIssuePriorities type alias.
packages/ui/src/sortable/sortable.stories.tsx Type: Made Sortable story generic, improved type safety in story definition.
packages/ui/src/sortable/sortable.tsx Import: Reordered imports for clarity.
packages/utils/src/string.ts Removal: Deleted objToQueryParams export, renamed unused error variables.
apps/web/.eslintignore Added: Ignored core/local-db/worker/wa-sqlite/src/* directory from ESLint.
apps/web/package.json Lint: Increased allowed ESLint warnings in check:lint script to 821.
packages/types/src/issues/activity/issue_comment.ts Cleanup: Removed duplicate imports.

Sequence Diagram(s)

sequenceDiagram
    participant Dev as Developer
    participant GitHub as GitHub Actions
    participant API as API Lint/Build Workflow
    participant Web as Web Apps Lint/Build Workflow

    Dev->>GitHub: Open/sync PR targeting preview branch
    alt Changes in apps/api/**
        GitHub->>API: Trigger Build and Lint API Workflow
        API->>API: Checkout, setup Python, install deps, run ruff linter
    else Changes in web app files (tsx, jsx, css, json)
        GitHub->>Web: Trigger Build and Lint Web Apps Workflow
        Web->>Web: Checkout, setup Node, install deps, build, run lint
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~15–25 minutes

Possibly related PRs

Suggested labels

🧹chore, 🌟improvement, ready to merge

Suggested reviewers

  • pablohashescobar
  • prateekshourya29

Poem

A bunny hops through fields of code,
With types now strict and imports in a row,
CI now checks just what it should,
And linting rules are understood.
Hop, hop, hooray! The code is neat—
This garden’s now a tidy treat! 🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 241b8ce and f2d3706.

📒 Files selected for processing (1)
  • package.json (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • 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). (2)
  • GitHub Check: Analyze (javascript)
  • GitHub Check: build-and-lint
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix_lint

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

This comment was marked as outdated.

@sriramveeraghanta sriramveeraghanta changed the title Development fixes fix: lint errors and warning and adding missing env variables Jul 18, 2025
@aheckmann aheckmann force-pushed the fix_lint branch 2 times, most recently from cdb3fbf to 0e9f2f0 Compare July 18, 2025 15:50
@aheckmann aheckmann requested a review from Copilot July 18, 2025 15:55
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR focuses on fixing lint errors and warnings throughout the codebase while adding a missing environment variable. The changes involve standardizing unused variable naming conventions, cleaning up TypeScript types, and reorganizing import statements for better consistency.

  • Remove unused function and fix linting errors related to unused variables by prefixing them with underscore
  • Update TypeScript configurations and ESLint rules to allow variables beginning with _ to be unused
  • Add missing live server environment variable and improve type safety across multiple packages

Reviewed Changes

Copilot reviewed 81 out of 84 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/utils/src/string.ts Removes unused objToQueryParams function and renames unused error variables
packages/eslint-config/* Updates ESLint rules to ignore unused variables with underscore prefix
packages/types/src/* Reorders imports and improves type definitions
packages/editor/src/* Fixes dependency arrays, removes unused parameters, and improves type safety
apps/web/core/* Improves error handling and type definitions
apps/space/* Updates dependency arrays and error variable naming
apps/live/* Major refactor with improved type safety and error handling
Comments suppressed due to low confidence (1)

packages/ui/src/sortable/sortable.stories.tsx:12

  • [nitpick] The type name 'StoryItem' is generic and could be more descriptive. Consider renaming it to 'SortableStoryItem' to better reflect its purpose in the Sortable component story.
type StoryItem = { id: string; name: string };

@aheckmann aheckmann changed the title fix: lint errors and warning and adding missing env variables fix: lint Jul 18, 2025
@aheckmann aheckmann force-pushed the fix_lint branch 2 times, most recently from b5a2e27 to ce47b4a Compare July 22, 2025 00:08
}
},
[fetchNextPublicIssues]
[anchor, getIssueLoader, fetchNextPublicIssues]
Copy link
Member

Choose a reason for hiding this comment

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

This requires resting the Kanban Layout.

@aheckmann aheckmann marked this pull request as ready for review July 22, 2025 16:41
Copy link
Contributor

@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: 6

🔭 Outside diff range comments (1)
apps/space/core/hooks/use-intersection-observer.tsx (1)

39-43: Dependency list risks endless re-subscriptions

The comment says adding callback triggered an infinite loop, yet the dependency array still contains callback and containerRef.current.
Both references are unstable by default:

  • callback – if it’s recreated on every render, this hook will tear-down and recreate the observer each time, thrashing performance and risking loops.
  • containerRef.current – the value is not reactive; React will treat the literal value seen during render as constant, so changes to .current won’t retrigger the effect anyway.

A safer pattern is:

-  }, [rootMargin, callback, elementRef, containerRef.current]);
+  // Hold mutable refs to avoid effect churn
+  }, [rootMargin, elementRef, containerRef]);

Or keep callback out of the deps and reference it via a useRef inside the effect.

-  if (entries[entries.length - 1].isIntersecting) {
-    if (callback) {
-      callback();
-    }
-  }
+  const savedCb = useRef<(() => void) | undefined>();
+  useEffect(() => { savedCb.current = callback; }, [callback]);
+  ...
+    if (entries[entries.length - 1].isIntersecting) {
+      savedCb.current?.();
+    }

This removes the loop while still invoking the latest callback.

♻️ Duplicate comments (4)
packages/editor/src/core/hooks/use-editor.ts (1)

274-274: Adding provider to dependencies is necessary for correctness.

While the past review comment raised valid concerns about potential re-renders, including provider in the dependency array is functionally necessary since several imperative handle methods (emitRealTimeUpdate, listenToRealTimeUpdate, setProviderDocument) directly use the provider instance.

To mitigate unnecessary re-renders, ensure the provider object reference remains stable across renders in the consuming components.

packages/types/src/page/extended.ts (1)

1-1: Consider using Record<string, unknown> for better type safety.

The change from {} to object is an improvement, but using Record<string, unknown> would provide more explicit type safety and better communicate the intended structure.

-export type TPageExtended = object;
+export type TPageExtended = Record<string, unknown>;
packages/editor/src/core/components/links/link-view.tsx (1)

31-31: Dependency array fix addresses ESLint warning correctly.

The addition of [prevFrom, props.from] to the dependency array correctly addresses the missing dependencies ESLint warning. The effect logic is safe from infinite re-renders due to the guard condition if (props.from !== prevFrom), which ensures the state only updates when props.from actually changes.

Note: This addresses the previous concern about multiple useEffect triggers - the guard condition prevents unnecessary state updates.

packages/constants/src/issue/common.ts (1)

32-33: Acknowledge the duplicate enum value pattern.

While this creates duplicate enum values (similar to the existing "project" member), the comment on line 113 indicates this distinction is needed for different UI contexts (team issues vs my issues), even though they map to the same server value.

🧹 Nitpick comments (15)
apps/space/helpers/string.helper.ts (1)

18-23: Avoid creating an unused _err variable – prefer a parameter-less catch and document intent

Since the error is intentionally ignored, you can rely on the ES2019 / TS4.4+ parameter-less catch {} syntax and add a short comment to clarify that the failure is non-critical. This removes the extraneous identifier while keeping lint happy.

-  } catch (_err) {}
+  } catch {
+    // Ignored: clipboard copy failure in legacy browsers is non-blocking
+  }
packages/shared-state/package.json (1)

9-11: Raising --max-warnings to 4: make sure this ceiling is tracked in CI

Allowing warnings is reasonable for an incremental cleanup, but consider adding a TODO (or tracking issue) so the cap trends back toward zero rather than creeping upward.

packages/types/package.json (1)

20-24: Consider documenting the rationale for --max-warnings 36

As with other packages, add a comment in README or package.json explaining the interim target so future contributors know this is intentional and temporary.

apps/space/helpers/date-time.helper.ts (1)

38-38: Silently swallowing errors may hide parsing issues

Renaming the param to _err is fine for eslint, but the catch block still suppresses all failures.
Consider at least logging (e.g. console.debug) or adding Sentry-style telemetry so bad inputs can be surfaced during QA.

-  } catch (_err) {
-    return undefined;
+  } catch (_err) {
+    // TODO: decide whether to surface or log the error
+    return undefined;
   }
apps/space/core/store/instance.store.ts (1)

67-75: Swallowing the real error hinders debugging

Renaming to _error keeps ESLint happy, but the underlying exception is silently discarded. Hydrating this.error with a static message makes post-mortem analysis impossible.

Consider logging or attaching the original error for observability, e.g.:

-    } catch (_error) {
+    } catch (error) {
       runInAction(() => {
         this.isLoading = false;
-        this.error = {
-          status: "error",
-          message: "Failed to fetch instance info",
-        };
+        console.error("fetchInstanceInfo failed:", error);
+        this.error = {
+          status: "error",
+          message: error instanceof Error ? error.message : "Failed to fetch instance info",
+        };
       });
     }
apps/space/package.json (1)

11-12: Increasing --max-warnings to 27 risks warning creep

Ratcheting lint thresholds upward is fine as a temporary measure, but plan to bring the number back down over time; otherwise the codebase will silently accumulate new issues.

packages/utils/package.json (1)

16-17: Same note on relaxed lint threshold

--max-warnings 20 is acceptable short-term. Track this number in CI dashboards so it trends downward.

package.json (1)

16-16: Use a cross-platform cleaner instead of multiple rm -rf invocations

rm -rf works only on POSIX shells; Windows runners (or local contributors on Windows) will break. Consider rimraf, which ships a portable binary and can accept multiple paths in a single call.

-    "clean": "turbo run clean && rm -rf .turbo && rm -rf .next && rm -rf node_modules && rm -rf dist",
+    "clean": "turbo run clean && rimraf .turbo .next node_modules dist",

You’ll need a dev-dependency:

   "devDependencies": {
     "prettier": "latest",
     "prettier-plugin-tailwindcss": "^0.5.4",
+    "rimraf": "^5.0.5",
     "turbo": "^2.5.5"
   },
apps/space/core/components/issues/filters/applied-filters/filters-list.tsx (1)

40-44: Avoid the cast by narrowing filterValue earlier

The assertion to TFilters["priority"] is harmless but unnecessary.
A small refactor removes the cast and makes the intent clearer:

-              {filterKey === "priority" && (
-                <AppliedPriorityFilters
-                  handleRemove={(val) => handleRemoveFilter("priority", val)}
-                  values={(filterValue ?? []) as TFilters["priority"]}
-                />
-              )}
+              {filterKey === "priority" && (
+                <AppliedPriorityFilters
+                  handleRemove={(val) => handleRemoveFilter("priority", val)}
+                  values={(filterValue ?? [])}
+                />
+              )}

Because the branch already guards on filterKey === "priority", TypeScript narrows filterValue to TFilters["priority"] automatically.

apps/admin/package.json (1)

13-13: Raising --max-warnings to 19 only postpones lint debt

Consider tracking the existing violations and lowering this threshold over time (or turning specific rules to warn) rather than broadly allowing 19 new warnings per run. Otherwise the warning count may silently grow.

If CI must pass today, create a follow-up ticket to bring the limit back to zero.

.github/workflows/pull-request-build-lint-web-apps.yml (2)

19-21: Consider relaxing the requested reviewers condition.

The condition github.event.pull_request.requested_reviewers != null might be too restrictive. This would prevent the workflow from running on PRs that don't have explicitly requested reviewers, even if they're ready for review through other means (like team assignments or automatic reviewer assignment rules).

Consider using a condition that focuses on the draft status:

-    if: |
-      github.event.pull_request.draft == false &&
-      github.event.pull_request.requested_reviewers != null
+    if: github.event.pull_request.draft == false

33-34: Consider adding dependency caching for faster builds.

Adding yarn cache could significantly speed up workflow execution by avoiding re-downloading dependencies on every run.

Add caching after the Node.js setup step:

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version-file: ".nvmrc"
+          cache: "yarn"
.github/workflows/pull-request-build-lint-api.yml (3)

15-17: Same reviewer condition concern as the web workflow.

The condition requiring requested_reviewers != null may be too restrictive and prevent the workflow from running on valid PRs.

Consider the same fix as suggested for the web workflow:

-    if: |
-      github.event.pull_request.draft == false &&
-      github.event.pull_request.requested_reviewers != null
+    if: github.event.pull_request.draft == false

24-25: Fix misleading step name.

The step name says "Install Pylint" but actually installs ruff, which could confuse maintainers.

-      - name: Install Pylint
+      - name: Install ruff
         run: python -m pip install ruff

26-29: Consider adding Python dependency caching and improving ruff output.

Two improvements could enhance this workflow:

  1. Add caching for pip dependencies to speed up builds
  2. Add flags to ruff for better CI output
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
           python-version: "3.x"
+          cache: "pip"
       - name: Install ruff
         run: python -m pip install ruff
       - name: Install API Dependencies
         run: cd apps/api && pip install -r requirements.txt
       - name: Lint apps/api
-        run: ruff check --fix apps/api
+        run: ruff check --fix --show-fixes --diff apps/api

The additional flags provide better visibility into what changes ruff makes during the CI run.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 763a28a and b4f98bd.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (93)
  • .github/workflows/build-test-pull-request.yml (0 hunks)
  • .github/workflows/pull-request-build-lint-api.yml (1 hunks)
  • .github/workflows/pull-request-build-lint-web-apps.yml (1 hunks)
  • .nvmrc (1 hunks)
  • apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx (1 hunks)
  • apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx (1 hunks)
  • apps/admin/package.json (1 hunks)
  • apps/live/.env.example (1 hunks)
  • apps/live/package.json (2 hunks)
  • apps/live/src/ce/types/common.d.ts (1 hunks)
  • apps/live/src/core/helpers/logger.ts (1 hunks)
  • apps/live/src/core/hocuspocus-server.ts (1 hunks)
  • apps/live/src/core/services/api.service.ts (1 hunks)
  • apps/space/app/[workspaceSlug]/[projectId]/page.ts (2 hunks)
  • apps/space/core/components/account/auth-forms/password.tsx (1 hunks)
  • apps/space/core/components/account/oauth/github-button.tsx (1 hunks)
  • apps/space/core/components/account/oauth/gitlab-button.tsx (1 hunks)
  • apps/space/core/components/account/oauth/google-button.tsx (1 hunks)
  • apps/space/core/components/issues/filters/applied-filters/filters-list.tsx (1 hunks)
  • apps/space/core/components/issues/filters/applied-filters/priority.tsx (2 hunks)
  • apps/space/core/components/issues/filters/applied-filters/root.tsx (2 hunks)
  • apps/space/core/components/issues/issue-layouts/kanban/base-kanban-root.tsx (1 hunks)
  • apps/space/core/components/issues/issue-layouts/list/base-list-root.tsx (1 hunks)
  • apps/space/core/hooks/use-intersection-observer.tsx (1 hunks)
  • apps/space/core/store/instance.store.ts (1 hunks)
  • apps/space/core/store/issue-detail.store.ts (8 hunks)
  • apps/space/core/store/profile.store.ts (2 hunks)
  • apps/space/helpers/date-time.helper.ts (1 hunks)
  • apps/space/helpers/string.helper.ts (1 hunks)
  • apps/space/package.json (2 hunks)
  • apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx (2 hunks)
  • apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx (2 hunks)
  • apps/web/app/(all)/accounts/set-password/page.tsx (1 hunks)
  • apps/web/app/(all)/create-workspace/page.tsx (2 hunks)
  • apps/web/app/(all)/onboarding/page.tsx (1 hunks)
  • apps/web/app/(all)/profile/security/page.tsx (2 hunks)
  • apps/web/core/components/issues/issue-layouts/kanban/kanban-group.tsx (1 hunks)
  • apps/web/core/components/issues/issue-layouts/list/list-group.tsx (1 hunks)
  • apps/web/core/components/issues/issue-layouts/quick-add/root.tsx (1 hunks)
  • apps/web/core/components/workspace/create-workspace-form.tsx (1 hunks)
  • apps/web/core/components/workspace/settings/members-list.tsx (1 hunks)
  • package.json (2 hunks)
  • packages/constants/src/analytics/common.ts (1 hunks)
  • packages/constants/src/auth.ts (3 hunks)
  • packages/constants/src/issue/common.ts (1 hunks)
  • packages/constants/src/issue/layout.ts (1 hunks)
  • packages/constants/src/settings.ts (1 hunks)
  • packages/decorators/src/controller.ts (1 hunks)
  • packages/decorators/src/rest.ts (3 hunks)
  • packages/decorators/src/websocket-controller.ts (2 hunks)
  • packages/decorators/src/websocket.ts (1 hunks)
  • packages/decorators/tsconfig.json (1 hunks)
  • packages/editor/package.json (1 hunks)
  • packages/editor/src/core/components/editors/editor-content.tsx (1 hunks)
  • packages/editor/src/core/components/links/link-edit-view.tsx (3 hunks)
  • packages/editor/src/core/components/links/link-view.tsx (1 hunks)
  • packages/editor/src/core/extensions/code/lowlight-plugin.ts (1 hunks)
  • packages/editor/src/core/extensions/custom-image/components/upload-status.tsx (1 hunks)
  • packages/editor/src/core/extensions/mentions/utils.ts (1 hunks)
  • packages/editor/src/core/extensions/table/table/table-controls.ts (1 hunks)
  • packages/editor/src/core/extensions/table/table/table-view.tsx (3 hunks)
  • packages/editor/src/core/helpers/scroll-to-node.ts (1 hunks)
  • packages/editor/src/core/hooks/use-editor.ts (1 hunks)
  • packages/editor/src/core/types/editor.ts (1 hunks)
  • packages/editor/src/core/types/mention.ts (1 hunks)
  • packages/editor/src/core/types/slash-commands-suggestion.ts (1 hunks)
  • packages/editor/tailwind.config.js (1 hunks)
  • packages/eslint-config/library.js (1 hunks)
  • packages/eslint-config/next.js (1 hunks)
  • packages/eslint-config/server.js (1 hunks)
  • packages/hooks/package.json (1 hunks)
  • packages/i18n/src/hooks/use-translation.ts (1 hunks)
  • packages/i18n/src/store/index.ts (4 hunks)
  • packages/logger/package.json (1 hunks)
  • packages/logger/src/config.ts (1 hunks)
  • packages/propel/package.json (1 hunks)
  • packages/services/package.json (1 hunks)
  • packages/shared-state/package.json (1 hunks)
  • packages/types/package.json (1 hunks)
  • packages/types/src/dashboard.ts (1 hunks)
  • packages/types/src/issues/activity/issue_activity.ts (1 hunks)
  • packages/types/src/issues/activity/issue_comment.ts (1 hunks)
  • packages/types/src/issues/issue.ts (1 hunks)
  • packages/types/src/module/modules.ts (1 hunks)
  • packages/types/src/page/extended.ts (1 hunks)
  • packages/types/src/users.ts (1 hunks)
  • packages/types/src/workspace-notifications.ts (1 hunks)
  • packages/ui/package.json (2 hunks)
  • packages/ui/src/icons/priority-icon.tsx (1 hunks)
  • packages/ui/src/sortable/sortable.stories.tsx (2 hunks)
  • packages/ui/src/sortable/sortable.tsx (1 hunks)
  • packages/utils/package.json (1 hunks)
  • packages/utils/src/string.ts (2 hunks)
🧠 Learnings (33)
packages/logger/src/config.ts (2)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/read.tsx:11-12
Timestamp: 2024-11-28T07:02:15.514Z
Learning: Some components are still in core and have not been moved yet, so their import paths remain the same.

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

apps/space/helpers/date-time.helper.ts (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

packages/editor/src/core/types/slash-commands-suggestion.ts (2)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

packages/ui/package.json (2)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/space/core/components/account/oauth/github-button.tsx (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

packages/editor/src/core/components/editors/editor-content.tsx (1)

Learnt from: prateekshourya29
PR: #7188
File: web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx:40-45
Timestamp: 2025-06-18T09:46:08.566Z
Learning: When reviewing breadcrumb components that accept projectId or similar props, check if empty strings are being passed during loading states, which can result in invalid URLs. The preferred approach is to handle these loading states internally within the component rather than requiring each consumer to manage the loading logic.

packages/decorators/tsconfig.json (1)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

apps/space/core/components/issues/filters/applied-filters/filters-list.tsx (1)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

apps/live/src/core/hocuspocus-server.ts (1)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/workspace/filter.store.ts:135-177
Timestamp: 2025-06-16T07:21:23.688Z
Learning: Try-catch blocks that only re-throw errors (catch (error) { throw error; }) without any additional processing, logging, cleanup, or error transformation are redundant and can be safely removed as the error will naturally propagate up the call stack.

packages/editor/src/core/extensions/mentions/utils.ts (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

packages/types/src/issues/issue.ts (1)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

packages/types/src/module/modules.ts (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/read.tsx:11-12
Timestamp: 2024-11-28T07:02:15.514Z
Learning: Some components are still in core and have not been moved yet, so their import paths remain the same.

packages/types/src/issues/activity/issue_activity.ts (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/read.tsx:11-12
Timestamp: 2024-11-28T07:02:15.514Z
Learning: Some components are still in core and have not been moved yet, so their import paths remain the same.

apps/space/core/store/profile.store.ts (1)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/workspace/filter.store.ts:135-177
Timestamp: 2025-06-16T07:21:23.688Z
Learning: Try-catch blocks that only re-throw errors (catch (error) { throw error; }) without any additional processing, logging, cleanup, or error transformation are redundant and can be safely removed as the error will naturally propagate up the call stack.

apps/web/core/components/issues/issue-layouts/quick-add/root.tsx (1)

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

packages/editor/tailwind.config.js (2)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/space/core/components/account/auth-forms/password.tsx (1)

Learnt from: gakshita
PR: #7393
File: apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx:104-104
Timestamp: 2025-07-14T11:22:43.964Z
Learning: In the Plane project's SMTP configuration implementation, the email configuration form (email-config-form.tsx) hardcodes ENABLE_SMTP to "1" in form submission because the form is only rendered when SMTP is enabled. The enable/disable functionality is managed at the page level (page.tsx) with a toggle, and the form only handles configuration details when SMTP is already enabled.

packages/i18n/src/hooks/use-translation.ts (1)

Learnt from: janreges
PR: #6743
File: packages/i18n/src/store/index.ts:160-161
Timestamp: 2025-03-11T19:42:41.769Z
Learning: In the Plane project, the file 'packages/i18n/src/store/index.ts' already includes support for Polish language translations with the case "pl".

apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx (1)

Learnt from: gakshita
PR: #7393
File: apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx:104-104
Timestamp: 2025-07-14T11:22:43.964Z
Learning: In the Plane project's SMTP configuration implementation, the email configuration form (email-config-form.tsx) hardcodes ENABLE_SMTP to "1" in form submission because the form is only rendered when SMTP is enabled. The enable/disable functionality is managed at the page level (page.tsx) with a toggle, and the form only handles configuration details when SMTP is already enabled.

packages/constants/src/issue/common.ts (3)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

Learnt from: prateekshourya29
PR: #7094
File: web/core/store/user/base-permissions.store.ts:196-201
Timestamp: 2025-05-28T09:53:44.635Z
Learning: All role enums in this codebase (EUserPermissions, EUserWorkspaceRoles, EUserProjectRoles) use the same consistent numeric values: ADMIN = 20, MEMBER = 15, GUEST = 5. None of these enums have a value of 0, so truthy checks work correctly with these enum values.

Learnt from: prateekshourya29
PR: #7094
File: web/core/store/user/base-permissions.store.ts:196-201
Timestamp: 2025-05-28T09:53:44.635Z
Learning: The EUserPermissions enum in this codebase uses numeric values: ADMIN = 20, MEMBER = 15, GUEST = 5. All roles in this enum are always numbers, not string values.

apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx (1)

Learnt from: gakshita
PR: #7393
File: apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx:104-104
Timestamp: 2025-07-14T11:22:43.964Z
Learning: In the Plane project's SMTP configuration implementation, the email configuration form (email-config-form.tsx) hardcodes ENABLE_SMTP to "1" in form submission because the form is only rendered when SMTP is enabled. The enable/disable functionality is managed at the page level (page.tsx) with a toggle, and the form only handles configuration details when SMTP is already enabled.

apps/space/app/[workspaceSlug]/[projectId]/page.ts (2)

Learnt from: prateekshourya29
PR: #7188
File: web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx:40-45
Timestamp: 2025-06-18T09:46:08.566Z
Learning: When reviewing breadcrumb components that accept projectId or similar props, check if empty strings are being passed during loading states, which can result in invalid URLs. The preferred approach is to handle these loading states internally within the component rather than requiring each consumer to manage the loading logic.

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

packages/ui/src/sortable/sortable.stories.tsx (1)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

apps/space/core/store/issue-detail.store.ts (3)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/workspace/filter.store.ts:135-177
Timestamp: 2025-06-16T07:21:23.688Z
Learning: Try-catch blocks that only re-throw errors (catch (error) { throw error; }) without any additional processing, logging, cleanup, or error transformation are redundant and can be safely removed as the error will naturally propagate up the call stack.

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

apps/space/core/components/issues/filters/applied-filters/root.tsx (2)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

apps/web/app/(all)/accounts/set-password/page.tsx (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

packages/constants/src/issue/layout.ts (1)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

apps/web/app/(all)/profile/security/page.tsx (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

packages/constants/src/auth.ts (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

apps/space/core/components/issues/issue-layouts/kanban/base-kanban-root.tsx (1)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

packages/i18n/src/store/index.ts (1)

Learnt from: janreges
PR: #6743
File: packages/i18n/src/store/index.ts:160-161
Timestamp: 2025-03-11T19:42:41.769Z
Learning: In the Plane project, the file 'packages/i18n/src/store/index.ts' already includes support for Polish language translations with the case "pl".

apps/space/core/components/account/oauth/gitlab-button.tsx (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

🧬 Code Graph Analysis (8)
apps/web/app/(all)/create-workspace/page.tsx (1)
packages/types/src/workspace.ts (1)
  • IWorkspace (14-29)
apps/web/core/components/workspace/create-workspace-form.tsx (1)
packages/types/src/workspace.ts (1)
  • IWorkspace (14-29)
apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx (1)
packages/utils/src/auth.ts (1)
  • authErrorHandler (308-369)
apps/space/core/components/issues/filters/applied-filters/root.tsx (1)
packages/constants/src/issue/layout.ts (1)
  • TIssueLayout (3-3)
apps/web/app/(all)/profile/security/page.tsx (1)
packages/utils/src/auth.ts (1)
  • authErrorHandler (308-369)
apps/space/core/components/issues/filters/applied-filters/priority.tsx (1)
packages/ui/src/icons/priority-icon.tsx (2)
  • TIssuePriorities (5-5)
  • PriorityIcon (15-78)
packages/i18n/src/store/index.ts (1)
packages/i18n/src/types/language.ts (1)
  • TLanguage (1-20)
packages/eslint-config/server.js (2)
packages/eslint-config/next.js (2)
  • require (1-1)
  • project (2-2)
packages/eslint-config/library.js (2)
  • require (1-1)
  • project (3-3)
💤 Files with no reviewable changes (1)
  • .github/workflows/build-test-pull-request.yml
🧰 Additional context used
🧠 Learnings (33)
packages/logger/src/config.ts (2)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/read.tsx:11-12
Timestamp: 2024-11-28T07:02:15.514Z
Learning: Some components are still in core and have not been moved yet, so their import paths remain the same.

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

apps/space/helpers/date-time.helper.ts (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

packages/editor/src/core/types/slash-commands-suggestion.ts (2)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

packages/ui/package.json (2)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/space/core/components/account/oauth/github-button.tsx (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

packages/editor/src/core/components/editors/editor-content.tsx (1)

Learnt from: prateekshourya29
PR: #7188
File: web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx:40-45
Timestamp: 2025-06-18T09:46:08.566Z
Learning: When reviewing breadcrumb components that accept projectId or similar props, check if empty strings are being passed during loading states, which can result in invalid URLs. The preferred approach is to handle these loading states internally within the component rather than requiring each consumer to manage the loading logic.

packages/decorators/tsconfig.json (1)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

apps/space/core/components/issues/filters/applied-filters/filters-list.tsx (1)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

apps/live/src/core/hocuspocus-server.ts (1)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/workspace/filter.store.ts:135-177
Timestamp: 2025-06-16T07:21:23.688Z
Learning: Try-catch blocks that only re-throw errors (catch (error) { throw error; }) without any additional processing, logging, cleanup, or error transformation are redundant and can be safely removed as the error will naturally propagate up the call stack.

packages/editor/src/core/extensions/mentions/utils.ts (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

packages/types/src/issues/issue.ts (1)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

packages/types/src/module/modules.ts (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/read.tsx:11-12
Timestamp: 2024-11-28T07:02:15.514Z
Learning: Some components are still in core and have not been moved yet, so their import paths remain the same.

packages/types/src/issues/activity/issue_activity.ts (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/read.tsx:11-12
Timestamp: 2024-11-28T07:02:15.514Z
Learning: Some components are still in core and have not been moved yet, so their import paths remain the same.

apps/space/core/store/profile.store.ts (1)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/workspace/filter.store.ts:135-177
Timestamp: 2025-06-16T07:21:23.688Z
Learning: Try-catch blocks that only re-throw errors (catch (error) { throw error; }) without any additional processing, logging, cleanup, or error transformation are redundant and can be safely removed as the error will naturally propagate up the call stack.

apps/web/core/components/issues/issue-layouts/quick-add/root.tsx (1)

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

packages/editor/tailwind.config.js (2)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

Learnt from: vamsikrishnamathala
PR: #7061
File: web/core/components/workspace-notifications/root.tsx:18-18
Timestamp: 2025-05-14T13:16:23.323Z
Learning: In the Plane project codebase, the path alias @/plane-web resolves to the ce directory, making imports like @/plane-web/hooks/use-notification-preview correctly resolve to files in web/ce/hooks/.

apps/space/core/components/account/auth-forms/password.tsx (1)

Learnt from: gakshita
PR: #7393
File: apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx:104-104
Timestamp: 2025-07-14T11:22:43.964Z
Learning: In the Plane project's SMTP configuration implementation, the email configuration form (email-config-form.tsx) hardcodes ENABLE_SMTP to "1" in form submission because the form is only rendered when SMTP is enabled. The enable/disable functionality is managed at the page level (page.tsx) with a toggle, and the form only handles configuration details when SMTP is already enabled.

packages/i18n/src/hooks/use-translation.ts (1)

Learnt from: janreges
PR: #6743
File: packages/i18n/src/store/index.ts:160-161
Timestamp: 2025-03-11T19:42:41.769Z
Learning: In the Plane project, the file 'packages/i18n/src/store/index.ts' already includes support for Polish language translations with the case "pl".

apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx (1)

Learnt from: gakshita
PR: #7393
File: apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx:104-104
Timestamp: 2025-07-14T11:22:43.964Z
Learning: In the Plane project's SMTP configuration implementation, the email configuration form (email-config-form.tsx) hardcodes ENABLE_SMTP to "1" in form submission because the form is only rendered when SMTP is enabled. The enable/disable functionality is managed at the page level (page.tsx) with a toggle, and the form only handles configuration details when SMTP is already enabled.

packages/constants/src/issue/common.ts (3)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

Learnt from: prateekshourya29
PR: #7094
File: web/core/store/user/base-permissions.store.ts:196-201
Timestamp: 2025-05-28T09:53:44.635Z
Learning: All role enums in this codebase (EUserPermissions, EUserWorkspaceRoles, EUserProjectRoles) use the same consistent numeric values: ADMIN = 20, MEMBER = 15, GUEST = 5. None of these enums have a value of 0, so truthy checks work correctly with these enum values.

Learnt from: prateekshourya29
PR: #7094
File: web/core/store/user/base-permissions.store.ts:196-201
Timestamp: 2025-05-28T09:53:44.635Z
Learning: The EUserPermissions enum in this codebase uses numeric values: ADMIN = 20, MEMBER = 15, GUEST = 5. All roles in this enum are always numbers, not string values.

apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx (1)

Learnt from: gakshita
PR: #7393
File: apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx:104-104
Timestamp: 2025-07-14T11:22:43.964Z
Learning: In the Plane project's SMTP configuration implementation, the email configuration form (email-config-form.tsx) hardcodes ENABLE_SMTP to "1" in form submission because the form is only rendered when SMTP is enabled. The enable/disable functionality is managed at the page level (page.tsx) with a toggle, and the form only handles configuration details when SMTP is already enabled.

apps/space/app/[workspaceSlug]/[projectId]/page.ts (2)

Learnt from: prateekshourya29
PR: #7188
File: web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/header.tsx:40-45
Timestamp: 2025-06-18T09:46:08.566Z
Learning: When reviewing breadcrumb components that accept projectId or similar props, check if empty strings are being passed during loading states, which can result in invalid URLs. The preferred approach is to handle these loading states internally within the component rather than requiring each consumer to manage the loading logic.

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

packages/ui/src/sortable/sortable.stories.tsx (1)

Learnt from: lifeiscontent
PR: #7164
File: packages/ui/.storybook/main.ts:24-47
Timestamp: 2025-06-04T16:22:44.344Z
Learning: In packages/ui/.storybook/main.ts, the webpackFinal function intentionally overrides the CSS loader strategy by finding and replacing existing CSS rules. This is a temporary workaround for a known upstream issue in Storybook's CSS handling that has been communicated to the Storybook maintainers. The current implementation should not be changed until the upstream issue is resolved.

apps/space/core/store/issue-detail.store.ts (3)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/workspace/filter.store.ts:135-177
Timestamp: 2025-06-16T07:21:23.688Z
Learning: Try-catch blocks that only re-throw errors (catch (error) { throw error; }) without any additional processing, logging, cleanup, or error transformation are redundant and can be safely removed as the error will naturally propagate up the call stack.

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

apps/space/core/components/issues/filters/applied-filters/root.tsx (2)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

apps/web/app/(all)/accounts/set-password/page.tsx (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

packages/constants/src/issue/layout.ts (1)

Learnt from: mathalav55
PR: #6452
File: web/helpers/issue.helper.ts:6-6
Timestamp: 2025-01-24T09:37:19.339Z
Learning: In the Plane codebase, ISSUE_DISPLAY_FILTERS_BY_LAYOUT and ISSUE_DISPLAY_FILTERS_BY_PAGE are two distinct constants serving different purposes - one for layout-level filters and another for page-level filters. They are not interchangeable and should coexist.

apps/web/app/(all)/profile/security/page.tsx (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

packages/constants/src/auth.ts (1)

Learnt from: prateekshourya29
PR: #7363
File: apps/web/helpers/react-hook-form.helper.ts:9-19
Timestamp: 2025-07-08T13:41:19.928Z
Learning: In the apps/web/helpers/react-hook-form.helper.ts file, the getNestedError function's FieldError detection logic using "message" property check is sufficient for their use case, and more robust type checking is not required.

apps/space/core/components/issues/issue-layouts/kanban/base-kanban-root.tsx (1)

Learnt from: vamsikrishnamathala
PR: #7214
File: web/core/store/issue/helpers/base-issues.store.ts:117-117
Timestamp: 2025-06-16T07:23:39.497Z
Learning: In the updateIssueDates method of BaseIssuesStore (web/core/store/issue/helpers/base-issues.store.ts), the projectId parameter is intentionally made optional to support override implementations in subclasses. The base implementation requires projectId and includes an early return check, but making it optional allows derived classes to override the method with different parameter requirements.

packages/i18n/src/store/index.ts (1)

Learnt from: janreges
PR: #6743
File: packages/i18n/src/store/index.ts:160-161
Timestamp: 2025-03-11T19:42:41.769Z
Learning: In the Plane project, the file 'packages/i18n/src/store/index.ts' already includes support for Polish language translations with the case "pl".

apps/space/core/components/account/oauth/gitlab-button.tsx (1)

Learnt from: mathalav55
PR: #6107
File: web/ce/components/workspace-notifications/sidebar/notification-card/options/archive.tsx:11-14
Timestamp: 2024-11-28T07:02:54.664Z
Learning: When components are still located in core, it's appropriate for files to import them using @/components/..., and the migration to the new import paths is not necessary in such cases.

🧬 Code Graph Analysis (8)
apps/web/app/(all)/create-workspace/page.tsx (1)
packages/types/src/workspace.ts (1)
  • IWorkspace (14-29)
apps/web/core/components/workspace/create-workspace-form.tsx (1)
packages/types/src/workspace.ts (1)
  • IWorkspace (14-29)
apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx (1)
packages/utils/src/auth.ts (1)
  • authErrorHandler (308-369)
apps/space/core/components/issues/filters/applied-filters/root.tsx (1)
packages/constants/src/issue/layout.ts (1)
  • TIssueLayout (3-3)
apps/web/app/(all)/profile/security/page.tsx (1)
packages/utils/src/auth.ts (1)
  • authErrorHandler (308-369)
apps/space/core/components/issues/filters/applied-filters/priority.tsx (1)
packages/ui/src/icons/priority-icon.tsx (2)
  • TIssuePriorities (5-5)
  • PriorityIcon (15-78)
packages/i18n/src/store/index.ts (1)
packages/i18n/src/types/language.ts (1)
  • TLanguage (1-20)
packages/eslint-config/server.js (2)
packages/eslint-config/next.js (2)
  • require (1-1)
  • project (2-2)
packages/eslint-config/library.js (2)
  • require (1-1)
  • project (3-3)
🔇 Additional comments (104)
packages/editor/src/core/extensions/table/table/table-controls.ts (1)

21-21: LGTM! Unused parameter removal improves code quality.

The removal of the unused direct parameter from the handleTripleClickOn function signature aligns with the PR's linting improvements. The function's core logic remains intact and continues to properly handle triple-click events on table cells.

apps/space/core/components/issues/issue-layouts/list/base-list-root.tsx (1)

44-44: LGTM! Correct exhaustive-deps fix.

Adding anchor to the dependency array is the right fix since the callback uses this value. This ensures the callback updates when anchor changes, preventing stale closure issues.

apps/space/core/components/issues/issue-layouts/kanban/base-kanban-root.tsx (1)

40-40: LGTM! Comprehensive exhaustive-deps fix.

Adding both anchor and getIssueLoader to the dependency array correctly addresses the ESLint warning. The callback uses both values, so they must be included to prevent stale closure issues.

packages/decorators/tsconfig.json (1)

13-13: LGTM! Resolves ESLint/TSConfig configuration conflict.

The inclusion of root-level TypeScript files is necessary to resolve the configuration conflict mentioned in previous discussions. This change ensures all relevant TypeScript files are properly included in the compilation scope.

packages/decorators/src/controller.ts (1)

19-19: Excellent type safety improvement.

Changing from any[] to unknown[] in the constructor signature provides better type safety while maintaining compatibility. This aligns with TypeScript best practices by requiring proper type checking before usage.

packages/decorators/src/websocket.ts (1)

9-9: Good cleanup - removing unused parameter.

Removing the unused descriptor: PropertyDescriptor parameter simplifies the decorator signature while maintaining full functionality. The decorator correctly sets metadata using only target and propertyKey.

packages/decorators/src/websocket-controller.ts (3)

10-10: Consistent type safety improvement.

The constructor signature change from any[] to unknown[] maintains consistency with the similar improvement in controller.ts and enhances type safety.


37-38: Improved runtime safety with better method checking.

The enhanced check first verifies the existence of the ws property before checking its type. This prevents potential runtime errors if router.ws is undefined and makes the code more defensive.


40-53: Robust WebSocket error handling implementation.

The error handling in the WebSocket handler is comprehensive, including proper error logging, graceful WebSocket closure with appropriate error codes, and fallback error messages. This ensures WebSocket connections are properly managed even when handler methods throw exceptions.

packages/decorators/src/rest.ts (3)

13-13: Appropriate ESLint suppression for class decorator context.

The ESLint directive suppressing the unsafe function type warning is justified here, as the Function type is appropriate for a class decorator that needs to work with any constructor function.


28-28: Consistent parameter cleanup in method decorators.

Removing the unused PropertyDescriptor parameter aligns with similar cleanups in other decorator files and simplifies the function signature while maintaining full decorator functionality.


48-48: Good cleanup - removing unused parameter in Middleware decorator.

The removal of the unused PropertyDescriptor parameter is consistent with other decorator simplifications in this PR and improves code clarity without affecting functionality.

packages/constants/src/settings.ts (1)

1-1: Import-path clarification looks correct

Pointing explicitly to "./profile" instead of "." removes any ambiguity and prevents silent resolution to index.ts should one appear in the folder later on.

packages/logger/src/config.ts (1)

1-1: Import reorder is harmless

Bringing the built-in path import to the top complies with our “node-built-ins first” lint rule. No functional impact.

packages/editor/src/core/types/slash-commands-suggestion.ts (1)

2-2: OK – style-only change

Moving the react type import below third-party imports is consistent with the updated ESLint ordering rule.

apps/space/core/components/account/oauth/gitlab-button.tsx (1)

3-3: Consistent import grouping achieved

Import order now matches the sibling OAuth button components – keeps lint happy and improves diff readability.

packages/types/src/issues/activity/issue_activity.ts (1)

1-3: Import reorder looks good

The re-ordering improves grouping (external vs. local) without changing the public surface. 👍

apps/space/core/components/account/oauth/github-button.tsx (1)

3-3: Import-order change looks good

Alphabetical / framework-first ordering keeps diffs minimal. No other action needed.

apps/web/core/components/workspace/settings/members-list.tsx (1)

50-52: LGTM – indentation tweak only

Indentation now matches adjacent declarations; no functional impact.

packages/ui/src/sortable/sortable.tsx (1)

2-2: Import re-ordering complies with lint rules

Moving React after third-party import resolves the eslint import/order rule. No concerns.

packages/editor/package.json (1)

27-27: Raising --max-warnings to 30 risks masking new issues

Accepting 30 warnings unblocks CI, but it also lowers quality gates.
Recommend adding a follow-up ticket to ratchet this value back down incrementally, or enforce @typescript-eslint/no-explicit-any, etc., in new/changed files.

apps/space/core/components/account/oauth/google-button.tsx (1)

3-3: Import reordering looks good.

The reordering of the useSearchParams import aligns with the broader import organization improvements across the codebase.

packages/propel/package.json (1)

7-7: Lint warning threshold adjustment aligns with PR objectives.

Increasing the maximum warnings from 0 to 7 follows the stated strategy of setting thresholds to current levels to enable CI lint checks without allowing issues to worsen.

packages/types/src/dashboard.ts (1)

5-5: Import reordering improves code organization.

The reordering of the TStateGroups import maintains consistency with the broader import organization improvements across the codebase.

packages/types/src/issues/activity/issue_comment.ts (1)

1-4: Excellent cleanup of duplicate imports.

Consolidating the duplicate import statements into a single block at the top improves code maintainability and eliminates redundancy without affecting functionality.

packages/editor/src/core/extensions/mentions/utils.ts (1)

6-7: LGTM! Import organization improvement.

Moving the helper imports together improves code organization and readability without affecting functionality.

apps/space/core/store/profile.store.ts (1)

94-94: LGTM! Proper handling of unused catch parameters.

Renaming catch parameters to _error correctly indicates they are intentionally unused while preserving meaningful error handling logic.

Also applies to: 121-121

packages/hooks/package.json (1)

16-16: LGTM! Pragmatic approach to enable linting in CI.

Increasing max-warnings to 6 allows existing lint issues while preventing regression, aligning with the PR's strategy to enable CI linting without blocking development.

apps/space/core/hooks/use-intersection-observer.tsx (1)

21-24: Minor style-only change – looks good
The explicit if check is clearer than the short-circuit call; no functional impact.

apps/space/package.json (1)

67-68: Confirm plugin ↔ typescript compatibility

@typescript-eslint/eslint-plugin@8.36.0 targets TypeScript ≥ 5.3. You’re on TS 5.8.3, which is compatible, but make sure all workspaces use a consistent plugin/runtime pair to avoid parser mismatches.

apps/live/src/ce/types/common.d.ts (1)

1-1: TAdditionalDocumentTypes safely restricted to never

I’ve verified all usages of TAdditionalDocumentTypes—it only feeds into TDocumentTypes (effectively collapsing to "project_page"), which is consumed in:

  • apps/live/src/ce/lib/fetch-document.ts
  • apps/live/src/ce/lib/update-document.ts
  • apps/live/src/core/extensions/index.ts

None of these rely on any additional values, so the tighter never definition won’t break existing behavior. This change is safe to merge.

apps/web/app/(all)/onboarding/page.tsx (1)

48-50: Good refactoring for improved readability.

Converting the short-circuit evaluation to an explicit if statement improves code clarity without changing the logic. This makes the conditional execution more explicit and easier to understand.

packages/editor/src/core/extensions/code/lowlight-plugin.ts (1)

121-133: Excellent TypeScript best practice improvement.

Converting @ts-ignore to @ts-expect-error is a good practice that provides better type safety. Unlike @ts-ignore, @ts-expect-error will cause a lint error if the underlying type issues are resolved, helping maintain code quality over time.

packages/constants/src/issue/layout.ts (2)

17-17: Good type safety improvement.

Changing the icon property type from any to string improves type safety and aligns with the broader type refinement efforts across the codebase.


14-29: Removal of non-List/Kanban layouts from SITES_ISSUE_LAYOUTS is safe
Verified that SITES_ISSUE_LAYOUTS is only imported in

  • apps/space/core/components/issues/navbar/layout-selection.tsx
    and that removing "calendar", "spreadsheet", and "gantt" merely hides those buttons in the layout selector. All calendar, spreadsheet, and Gantt view logic (loaders, HOCs, filters) use separate constants and code paths and remain untouched. No other references to SITES_ISSUE_LAYOUTS exist in the codebase.
apps/space/core/components/account/auth-forms/password.tsx (1)

112-114: LGTM! Explicit conditional improves clarity.

The refactor from short-circuit evaluation to an explicit if statement makes the intent clearer and aligns with the broader linting improvements in this PR.

apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/cycles/(list)/mobile-header.tsx (1)

5-5: Excellent type safety improvement!

Replacing the generic any type with the specific LucideIcon type provides better type safety and IntelliSense support.

Also applies to: 14-14

apps/space/core/store/issue-detail.store.ts (1)

197-197: Consistent error parameter naming follows linting conventions.

Renaming catch block error parameters to _error clearly indicates these errors are intentionally unused, aligning with ESLint conventions and the broader linting improvements in this PR.

Also applies to: 225-225, 291-291, 325-325, 359-359, 379-379, 411-411, 432-432

apps/space/app/[workspaceSlug]/[projectId]/page.ts (2)

13-13: Improved type safety for search parameters.

The refined type annotation clearly documents the expected query parameters and provides better type safety compared to the generic any type.


26-26: Good addition of error logging for debugging.

Adding console.error before notFound() improves debugging by providing visibility into what errors cause the 404 response.

packages/editor/src/core/extensions/table/table/table-view.tsx (2)

149-149: LGTM! Excellent type safety improvement.

The change from (args: any) => {} to (_args: unknown) => {} improves type safety by replacing any with unknown and uses the underscore prefix to indicate intentional non-use of the parameter, which aligns with the updated ESLint rules.

Also applies to: 177-177


218-218: LGTM! Proper handling of unused destructured parameter.

The change from [colorName, colorValue] to [_, colorValue] correctly indicates that the color name is intentionally unused, which aligns with the linting rule updates and improves code clarity.

packages/logger/package.json (1)

10-16: LGTM! Modern package configuration improvement.

The addition of the exports field is an excellent enhancement that provides explicit control over package entry points for different module systems. This aligns with modern Node.js best practices and ensures proper module resolution for both ESM and CommonJS consumers.

packages/editor/src/core/extensions/custom-image/components/upload-status.tsx (1)

55-55: LGTM! Correct dependency array fix.

Adding displayStatus to the dependency array fixes a React Hooks rule violation since displayStatus is used within the effect callback. This ensures the animation effect properly restarts when the display status changes, preventing stale closure issues.

apps/live/src/core/services/api.service.ts (1)

39-39: LGTM! Excellent type safety improvement.

The type refinement from any to Record<string, unknown> | null | string significantly improves type safety by restricting the data parameter to specific, meaningful types while maintaining flexibility for common HTTP DELETE request patterns.

packages/eslint-config/library.js (1)

43-50: LGTM! Smart ESLint rule enhancement.

The enhanced configuration for @typescript-eslint/no-unused-vars is excellent - it maintains the warning level while providing sensible exceptions for intentionally unused variables, arguments, and caught errors prefixed with _. This supports the common pattern of indicating intentional non-use and aligns perfectly with the code changes throughout this PR.

package.json (3)

19-19: Nice targeted CI lint script

The ci:lint command cleanly scopes out apps/web, matching the PR narrative. 👍


24-24: Confirm lockfile update after Turbo bump

Upgrading turbo from 2.5.42.5.5 is safe, but make sure yarn.lock (or pnpm-lock.yaml) reflects the new version so CI reproduces the change.


35-36: Pinning @types/express to avoid TS drift looks good

apps/live/.env.example (1)

1-1: Port variable addition looks good

PORT=3100 aligns with LIVE_BASE_URL and avoids hard-coding in code. No issues spotted.

packages/types/src/issues/issue.ts (1)

2-2: Pure import-order shuffle – no functional impact
Change keeps style linters happy. 👍

packages/types/src/module/modules.ts (1)

1-1: Import reorder only — nothing else changed, safe to merge.

packages/types/src/workspace-notifications.ts (1)

2-2: Import reorder only — LGTM.

packages/types/src/users.ts (1)

1-2: Import-order tweak looks good

The reorder aligns with the prevailing style in sibling files and keeps enum imports grouped separately. No further action required.

apps/web/core/components/issues/issue-layouts/quick-add/root.tsx (1)

9-10: Whitespace cleanup acknowledged

Pure formatting; no functional impact. 👍

packages/ui/package.json (2)

20-20: LGTM: Lint threshold adjustment aligns with PR objectives.

The increase to 94 max warnings is consistent with the PR's goal of setting thresholds to current levels to enable CI lint checks without allowing regression.


40-40: Good addition: Enhanced type safety with @plane/types dependency.

Adding the @plane/types dependency will improve type consistency across the UI package and support better type safety throughout the codebase.

apps/web/core/components/issues/issue-layouts/list/list-group.tsx (1)

8-8: LGTM: Clean import formatting.

Removed extra whitespace in the import statement, improving code consistency.

apps/web/core/components/issues/issue-layouts/kanban/kanban-group.tsx (1)

9-9: LGTM: Consistent import formatting improvement.

Removed extra whitespace in the import statement, maintaining consistency with similar fixes across issue layout components.

apps/admin/app/(all)/(dashboard)/authentication/gitlab/page.tsx (1)

69-73: LGTM: Improved readability with explicit conditional logic.

Refactoring the ternary operator to an explicit if-else statement makes the toggle logic clearer and more maintainable.

apps/web/app/(all)/create-workspace/page.tsx (2)

33-33: Excellent: Enhanced type safety with explicit generic type annotation.

Adding the explicit Pick<IWorkspace, "name" | "slug" | "organization_size"> type annotation improves type safety and clearly documents which workspace properties are managed by this state.


104-104: Good: Removed unsafe type casting.

Passing setDefaultValues directly without casting to any preserves proper type checking and maintains type safety throughout the component hierarchy.

packages/ui/src/icons/priority-icon.tsx (1)

5-5: Good type safety improvement!

Exporting TIssuePriorities enables better type consistency across the codebase by allowing other components to import this type instead of duplicating it or using less specific types like string[].

apps/live/package.json (2)

13-13: Lint threshold increase aligns with PR objectives.

The change from --max-warnings 0 to --max-warnings 10 aligns with the PR's goal of allowing existing lint warnings while preventing the situation from worsening.


62-63: Dependencies are valid
TypeScript 5.8.3 is a published release on npm, and the ws package is actively used in apps/live/src/server.ts and apps/live/src/core/hocuspocus-server.ts. No further action is required.

apps/admin/app/(all)/(dashboard)/authentication/google/page.tsx (1)

70-74: Good readability improvement!

The refactor from inline ternary to explicit if-else statement improves code readability while maintaining the exact same logic. This change aligns with linting best practices for handling complex conditional operations.

packages/editor/tailwind.config.js (1)

1-6: Good module syntax modernization!

The conversion from CommonJS (require/module.exports) to ES module syntax (import/export default) modernizes the code while preserving the exact same functionality. This aligns with current JavaScript/TypeScript best practices.

packages/utils/src/string.ts (3)

251-253: Good error handling variable naming!

The rename from err to _err aligns with the updated ESLint configuration that ignores unused variables prefixed with underscore. This is a best practice when catching errors that aren't actually used in the error handling logic.


280-282: Consistent error variable naming!

Same improvement as in the substringMatch function - renaming to _err indicates the error is intentionally unused and aligns with the project's linting standards.


1-349: Removal of objToQueryParams is Safe

No occurrences of objToQueryParams were found anywhere in the codebase—including direct usage or imports from @plane/utils/.../string. You can safely remove this function without breaking existing code.

apps/web/app/(all)/accounts/set-password/page.tsx (1)

98-99: Excellent type safety improvement in error handling.

The change from implicit any to explicit unknown with targeted type casting follows TypeScript best practices for error handling. This maintains the same runtime behavior while enforcing more explicit type handling.

packages/i18n/src/hooks/use-translation.ts (1)

8-8: Good type safety improvement for translation parameters.

Changing from Record<string, any> to Record<string, unknown> improves type safety by removing the overly permissive any type while maintaining compatibility.

packages/constants/src/analytics/common.ts (1)

9-11: Well-structured interface improvement.

Adding explicit optional properties (prefix, suffix) and changing the index signature from any to unknown improves both type safety and API documentation. The interface now clearly indicates expected properties while maintaining flexibility.

apps/space/core/components/issues/filters/applied-filters/priority.tsx (3)

4-4: Excellent import of specific priority type.

Importing the specific TIssuePriorities type from @plane/ui enables stronger typing throughout the component.


8-8: Strong typing improvement for values prop.

Changing from generic string[] to specific TIssuePriorities[] provides better type safety and prevents invalid priority values from being passed.


20-20: Removed unnecessary type assertion.

With proper typing in place, the type assertion as any is no longer needed. The priority parameter is now correctly typed as TIssuePriorities.

packages/editor/src/core/types/editor.ts (1)

114-114: More precise typing for scroll behavior parameter.

Narrowing the behavior parameter from generic ScrollBehavior to the specific union "auto" | "smooth" | "instant" improves type safety and makes the supported values explicit. This aligns the interface with the actual implementation.

apps/web/core/components/workspace/create-workspace-form.tsx (1)

32-32: Excellent type refinement for better type safety.

The narrowing of setDefaultValues from accepting the full IWorkspace object to only the specific properties used in the form ("name" | "slug" | "organization_size") is a great improvement. This change ensures type consistency with the defaultValues prop and prevents incorrect usage of the setter with irrelevant properties.

packages/constants/src/auth.ts (2)

1-2: Good addition of ReactNode import for improved type safety.

Adding the ReactNode import supports the type refinement of the message properties below.


75-75: Excellent type safety improvement.

Changing the message property type from any to string | ReactNode in both TAuthErrorInfo and TAdminAuthErrorInfo types significantly improves type safety. This allows for both string messages and React elements while eliminating the unsafe any type.

Also applies to: 95-95

apps/web/app/(all)/profile/security/page.tsx (2)

17-17: Good addition of EAuthenticationErrorCodes type import.

This supports the improved type safety in the error handling logic below.


90-94: Excellent error handling improvements with better type safety.

The changes demonstrate several best practices:

  • Using unknown instead of any for catch parameters
  • Explicit and safe type casting to Error & { error_code?: string }
  • Conditional error code handling to prevent issues when error_code is undefined
  • Safe property access using optional chaining in the toast notification

These improvements align perfectly with the PR's goal of enhancing type safety across the codebase.

packages/ui/src/sortable/sortable.stories.tsx (3)

12-13: Great type safety improvements with explicit StoryItem type.

Defining an explicit StoryItem type and making the Story type generic over it significantly improves type safety and makes the story more self-documenting.


25-25: Good replacement of any type with explicit StoryItem type.

Changing the render function parameter from any to the explicit StoryItem type improves type safety and provides better IntelliSense support.


30-31: Excellent removal of unnecessary any type annotations.

Removing the explicit any type annotations and relying on TypeScript's type inference is a better practice that maintains type safety while reducing code verbosity.

apps/web/app/(all)/[workspaceSlug]/(settings)/settings/account/security/page.tsx (2)

17-17: Good addition of EAuthenticationErrorCodes type import.

This supports the improved type safety in the error handling logic below.


90-94: Excellent consistent error handling improvements.

The error handling improvements here mirror those in apps/web/app/(all)/profile/security/page.tsx, demonstrating good consistency across similar components:

  • Using unknown instead of any for catch parameters
  • Safe type casting and conditional error code handling
  • Proper use of optional chaining for safe property access

This consistency enhances maintainability and aligns with the PR's type safety objectives.

packages/eslint-config/next.js (1)

42-49: LGTM! Good configuration for handling intentionally unused variables.

The updated @typescript-eslint/no-unused-vars rule configuration properly allows unused variables, arguments, and caught errors that start with an underscore while still warning about genuinely unused identifiers. This is a standard pattern for indicating intentionally unused variables and aligns well with the PR's objective of addressing linting issues.

packages/editor/src/core/helpers/scroll-to-node.ts (1)

35-39: LGTM! Improved type safety and readability.

The function signature refactor provides two improvements:

  1. Multi-line format enhances readability
  2. Narrowing the behavior parameter type from generic ScrollBehavior to the explicit union "auto" | "smooth" | "instant" improves type safety and prevents potential runtime errors with invalid scroll behavior values.
apps/space/core/components/issues/filters/applied-filters/root.tsx (2)

10-10: Good addition of type import for better type safety.

Adding the TIssueLayout type import enables proper typing of the board property in the query parameters object, improving type safety.


42-56: Excellent refactor improving type safety and readability.

The refactoring provides several improvements:

  1. Type Safety: Replaced the any typed params variable with a properly typed object having explicit optional properties
  2. Readability: Direct property assignments are clearer than repeated object spreading operations
  3. Explicitness: Using native URLSearchParams instead of a utility function makes the query string construction more transparent
  4. Maintainability: The typed structure makes it easier to understand and modify the expected query parameters

The functional behavior remains identical while significantly improving code quality.

.github/workflows/pull-request-build-lint-web-apps.yml (1)

1-14: Well-structured workflow with appropriate triggers.

The workflow configuration properly targets web app changes with good file type filters and excludes API files. The trigger conditions are appropriate for the intended scope.

packages/editor/src/core/components/links/link-edit-view.tsx (3)

46-50: Good refactoring to centralize link removal logic.

The removeLink callback properly encapsulates the link removal functionality with correct dependencies and clean separation of concerns.


65-65: Correct dependency array for the cleanup effect.

The updated dependencies [removeLink, linkRemoved, initialUrl] properly reflect the values used within the effect callback.


114-114: Improved dependency array addresses previous review concern.

The updated dependencies correctly include positionRef as a stable reference rather than its individual properties, which resolves the previous review comment about potential unnecessary re-renders.

packages/i18n/src/store/index.ts (4)

139-139: Good type safety improvement by removing explicit any annotations.

Removing the Promise<any> return type annotations allows TypeScript to infer the correct types, improving type safety without affecting functionality.

Also applies to: 156-156


190-190: Enhanced type safety with precise message validation.

The strict string type check typeof message !== "string" ensures only valid string messages are processed, preventing potential runtime errors with non-string values.


193-193: Excellent removal of unsafe type casting.

Removing the as any cast improves type safety now that the message is guaranteed to be a string through the previous validation check.


210-210: Type safety improvement with unknown over any.

Changing the parameter type to Record<string, unknown> enhances type safety by requiring explicit type checking, following TypeScript best practices.

packages/eslint-config/server.js (5)

1-2: Proper path resolution setup for TypeScript integration.

The path resolution using node:path and resolving to tsconfig.json follows the established pattern in other ESLint configs and correctly supports TypeScript configuration.


5-5: Enhanced linting configuration with TypeScript and Prettier integration.

The updated extends configuration properly integrates Prettier formatting and TypeScript-specific linting rules, following modern best practices.


10-17: Correct TypeScript plugin and import resolver configuration.

The plugin configuration and TypeScript import resolver setup will properly handle module resolution and enable TypeScript-aware linting rules.


18-18: Appropriate ignore patterns for ESLint.

The ignore patterns correctly exclude hidden JavaScript files and node_modules, following ESLint best practices to avoid linting generated or third-party code.


23-33: Well-configured TypeScript linting rules.

The TypeScript rules appropriately warn about explicit any usage while allowing unused variables prefixed with underscore, which is a common convention for intentionally unused parameters and follows the PR objectives.

import { observer } from "mobx-react";
// ui
import { GanttChartSquare, LayoutGrid, List } from "lucide-react";
import { GanttChartSquare, LayoutGrid, List, type LucideIcon } from "lucide-react";
Copy link
Collaborator

Choose a reason for hiding this comment

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

import type is preferred because type thing can cause module resolution issues and end up creating references to files causing cycles

Copy link
Contributor Author

Choose a reason for hiding this comment

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

i'll address in a follow up PR b/c this needs to be addressed in the eslint rules which will cause hundreds of more changes, too much for this PR.

@aheckmann aheckmann force-pushed the fix_lint branch 2 times, most recently from de6bd22 to b414b6e Compare July 24, 2025 15:43
@aheckmann aheckmann requested a review from lifeiscontent July 24, 2025 15:44
(step) =>
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
// @ts-expect-error
Copy link
Member

Choose a reason for hiding this comment

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

@aaryan610 We changed this from ts-expect-error to ts-ignore in the past right?
Please verify if this requires any testing.

}
};
}, [uploadStatus]);
}, [displayStatus, uploadStatus]);
Copy link
Member

Choose a reason for hiding this comment

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

Change in useEffect Dependencies will have unnecessary rerendering affects. @aaryan610 Please take a look at this.

},
}),
[editor]
[editor, provider]
Copy link
Member

Choose a reason for hiding this comment

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

@aaryan610 Please verify these changes

onStateChange: (callback: () => void) => () => void;
// eslint-disable-next-line no-undef
scrollToNodeViaDOMCoordinates: (behavior?: ScrollBehavior, position?: number) => void;
scrollToNodeViaDOMCoordinates: (behavior?: "auto" | "smooth" | "instant", position?: number) => void;
Copy link
Member

Choose a reason for hiding this comment

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

@aaryan610 Verify these changes

Copy link
Contributor

@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: 0

🧹 Nitpick comments (1)
apps/web/package.json (1)

11-11: Hard-coding --max-warnings 821 effectively disables lint gating

Bumping the threshold from 0 to 821 means new warnings can silently creep in until the codebase hits that cap, undermining the whole “fail-fast” intent of the lint stage. Consider an incremental strategy instead:

-    "check:lint": "eslint . --max-warnings 821",
+    # Allow current debt, but fail on *any* new warnings introduced in the diff.
+    "check:lint": "eslint . --max-warnings $(node scripts/eslint-baseline.js)",

where eslint-baseline.js outputs the baseline count captured once in CI. This lets the pipeline block on regressions while giving the team time to pay down the backlog.

At minimum, add a TODO with a plan to drive this number back to 0.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 993fa0e and 241b8ce.

📒 Files selected for processing (2)
  • apps/web/.eslintignore (1 hunks)
  • apps/web/package.json (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • apps/web/.eslintignore
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: lifeiscontent
PR: makeplane/plane#7004
File: tests/integration-tests/tests/auth.setup.ts:11-14
Timestamp: 2025-06-06T19:03:04.891Z
Learning: When setting up Playwright authentication for integration tests, use multiple authentication setups (admin.setup.ts, user.setup.ts, logged-out.setup.ts) with separate projects in playwright.config.ts rather than a single shared authentication state. This prevents architectural debt and makes it easier to test different user roles and logged-out scenarios.
⏰ 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). (2)
  • GitHub Check: Analyze (javascript)
  • GitHub Check: build-and-lint

@sriramveeraghanta sriramveeraghanta merged commit 57479f4 into preview Jul 24, 2025
6 of 7 checks passed
@sriramveeraghanta sriramveeraghanta deleted the fix_lint branch July 24, 2025 20:14
@aheckmann aheckmann restored the fix_lint branch July 24, 2025 20:33
@aheckmann aheckmann deleted the fix_lint branch July 24, 2025 20:33
lifeiscontent pushed a commit that referenced this pull request Aug 18, 2025
* chore: fix lint

* fix: constants check:lint command

* chore(lint): permit unused vars which begin w/ _

* chore: rm dead code

* fix(lint): more lint fixes to constants pkg

* fix(lint): lint the live server

- fix lint issues

* chore: improve clean script

* fix(lint): more lint

* chore: set live server process title

* chore(deps): update to turbo@2.5.5

* chore(live): target node22

* fix(dev): add missing ui pkg dependency

* fix(dev): lint decorators

* fix(dev): lint space app

* fix(dev): address lint issues in types pkg

* fix(dev): lint editor pkg

* chore(dev): moar lint

* fix(dev): live server exit code

* chore: address PR feedback

* fix(lint): better TPageExtended type

* chore: refactor

* chore: revert most live server changes

* fix: few more lint issues

* chore: enable ci checks

Ensure we can build + confirm that lint is not getting worse.

* chore: address PR feedback

* fix: web lint warning added to package.json

* fix: ci:lint command

---------

Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
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.

4 participants