Skip to content

Conversation

NdekoCode
Copy link
Collaborator

@NdekoCode NdekoCode commented Jun 26, 2025

🚀 Add Complete Loading Skeleton System Across Application

Add comprehensive loading skeletons to improve user experience across all major pages while data loads.

Closed #3789

Description

Please describe what you did, and why.

This PR adds a complete loading skeleton system across the entire application to make the app feel faster and smoother for users.

  • Problem: When users visit any page, they see blank screens while data loads, which feels slow and unresponsive
  • Changes: Added skeleton loading screens that show immediately while real content loads for Team pages, Kanban boards, Calendar, Reports, and many other components
  • Why useful: Users see something right away instead of waiting, making the entire app feel much faster and more responsive

The skeleton screens look like the real content but are gray animated placeholders. When real data loads, it smoothly replaces the skeletons across the entire application.

What Was Changed

Major Changes

Here are the major changes that this PR adds:

New Complete Page Skeletons:

  • New AllTeamsPageSkeleton component for the all teams page (/all-teams)
  • New TeamMemberProfilePageSkeleton component for team member profile pages (/team/[teamId]/[profileLink])
  • New TeamTasksPageSkeleton component for team tasks page (/team/tasks)
  • New KanbanPageSkeleton component for kanban board page (/kanban)
  • Optimization and Skeleton for Setting page
  • Optimization and Skeleton for calendar, 'weekly-limit,timesheet` pages

Enhanced Existing Pages with Skeleton Integration:

  • Calendar page (/calendar) - Added lazy loading with skeletons for calendar components
  • Reports Weekly Limit page (/reports/weekly-limit) - Added comprehensive skeleton and components optimization system for all components
  • Kanban page - Complete and components optimization integration with lazy-loaded components

Comprehensive Component-Level Skeletons:

  • Calendar components (SetupFullCalendar, SetupTimeSheet, AddManualTimeModal)
  • Reports components (TimeReportTable, MembersSelect, GroupBySelect, DatePicker, Pagination)
  • Kanban components (KanbanView, TaskSizes, ImageOverlapper)
  • All skeletons match real layouts exactly with proper spacing and structure

Minor Changes

Here are the minor changes that this PR adds:

  • Added proper TypeScript types for all skeleton components
  • Added JSDoc comments to explain how skeletons work
  • Used consistent styling across all skeleton components (bg-[#F0F0F0] dark:bg-[#353741] animate-pulse)
  • Added support for dark mode and responsive design across all skeletons
  • Implemented lazy loading with Next.js dynamic imports for better performance
  • Added Suspense fallbacks for smooth loading transitions
  • Preserved all existing functionality while adding skeleton loading states

How to Test This PR

Please explain clearly how to test the changes locally:

  1. Run the app with yarn web:dev
  2. Open the browser at http://localhost:3030
  3. Navigate to these pages and watch for skeleton loading:

Team Pages:

  • /all-teams - Should show team grid skeleton with header and member cards
  • /team/[teamId]/[profileLink] - Should show profile skeleton with breadcrumb, email, and member grid
  • /team/tasks - Should show task table skeleton with breadcrumb, filters, and table structure

Kanban Page:

  • /kanban - Should show kanban board skeleton with columns and cards
  • Try switching between different views and employees

Calendar Page:

  • /calendar - Should show calendar skeleton with date picker and calendar grid
  • Test switching between Calendar and TimeSheet views

Reports Page:

  • /reports/weekly-limit - Should show reports skeleton with filters, tables, and pagination
  • Try changing date ranges and member selections
  1. Check that:
    • Skeletons appear immediately when page loads
    • Real content smoothly replaces skeletons
    • Skeletons look similar to real content layout
    • Works in both light and dark mode
    • Works on mobile and desktop screens
    • All interactive elements work after skeletons load

If you have slow internet, you can see the skeletons better by:

  • Opening browser dev tools
  • Go to Network tab
  • Set throttling to "Slow 3G"
  • Refresh the pages to see longer skeleton display

Screenshots (if needed)

Before After
(Blank white screens while loading) (Gray skeleton animations while loading)

Current screenshots

Screen.Recording.2025-06-26.at.18.52.23.mov

Now users see animated gray skeletons that match each page layout while data loads, then smooth transition to real content across the entire application.

Related Issues

Please list related issues, tasks or discussions:

  • Improves user experience across the entire application
  • Covers complete workflows: Team management, Kanban boards, Calendar scheduling, and Reports analysis
  • Part of ongoing performance optimization work to enhance perceived loading speed
  • Provides consistent loading experience across all major application features

Type of Change

  • Bug fix (fixes a problem)
  • New feature (adds functionality)
  • Breaking change (requires changes elsewhere)
  • Documentation update

✅ Checklist

Please confirm you did the following before asking for review:

  • My code follows the project coding style
  • I reviewed my own code and added comments where needed
  • I tested my changes locally
  • I updated or created related documentation if needed
  • No new warnings or errors are introduced

Notes for the Reviewer (Optional)

Add here any context, help, or known issues for the person reviewing:

  • Page-level skeletons are in apps/web/core/components/layouts/skeletons/ folder
  • Component-level skeletons are in apps/web/core/components/common/skeleton/ folder
  • Each skeleton matches the exact layout of its real page/component
  • Covers: All Teams, Team Profile, Team Tasks, Kanban, Calendar, Reports
  • Skeletons only show when data is actually loading, not when data exists
  • All existing functionality works exactly the same as before
  • Complete coverage across major application workflows for consistent user experience
  • Uses Next.js dynamic imports with proper Suspense fallbacks for optimal performance

Summary by CodeRabbit

  • New Features

    • Added unified, full-page skeleton loaders for team profiles, tasks, calendar, dashboards, Kanban, profile, reports, settings, and timesheet pages.
    • Introduced dynamic lazy loading with suspense and pixel-perfect skeletons for key components across dashboards, settings, profiles, and team pages.
    • Implemented new skeleton components for tables, filters, modals, side menus, and cards to improve loading feedback and user experience.
  • Refactor

    • Modularized daily plan components and relocated them for improved maintainability.
    • Optimized progress bar components with memoization to enhance rendering performance.
    • Updated imports and component structure to support lazy loading and new skeletons throughout the app.
  • Style

    • Reordered and standardized CSS utility classes for consistency and readability.
    • Improved dark mode support for borders and backgrounds in skeleton and card components.
  • Chores

    • Removed redundant comments, unused code, and local skeleton implementations in favor of centralized shared skeleton components.
  • Documentation

    • Extended exports and interfaces to include new skeleton and lazy-loaded components, clarifying API boundaries.

NdekoCode added 17 commits June 26, 2025 08:49
…on components

- Replaced `SettingsPersonalSkeleton` with `SettingsPageSkeleton` for a more comprehensive loading experience in settings.
- Introduced `SettingsLoading` component to provide a consistent loading state for settings pages.
- Updated `SettingsLayout` to utilize the new skeleton components, improving user experience during data fetching.
- Implemented lazy loading for various team settings components, optimizing performance and responsiveness during loading states.
…on components

- Updated `SettingsLayout` to utilize `LazyLeftSideSettingMenu` for improved performance during loading.
- Refactored `SettingsPageSkeleton` to integrate `TitleBlockSkeleton` and enhance the loading experience.
- Introduced `LoadingApp` component for consistent loading states across the application.
- Implemented lazy loading for various settings components, optimizing user experience during data fetching.
- Improved overall structure and responsiveness of settings-related components.
- Introduced `TimeActivityPageSkeleton` for a complete loading state representation of the Time and Activity page, including headers, statistics cards, and data tables.
- Created `TimeActivityHeaderSkeleton`, `CardTimeAndActivitySkeleton`, `ActivityTableSkeleton`, and `TimeActivityTableSkeleton` for modular loading states of individual components.
- Implemented lazy loading for the main components of the Time and Activity page to enhance performance during data fetching.
- Updated `page-component.tsx` to utilize the new skeleton components, providing a unified loading experience while data is being loaded.
- Introduced `TimesheetPageSkeleton` component to provide a complete loading state for the Timesheet page, integrating seamlessly with the `MainLayout`.
- Updated `TimeSheetPageContent` to utilize the new skeleton component, enhancing user experience during data fetching by displaying a unified loading interface while data is being loaded.
…ates

- Introduced `CalendarPageSkeleton`, `SetupFullCalendarSkeleton`, `SetupTimeSheetSkeleton`, and `AddManualTimeModalSkeleton` to provide a comprehensive loading experience for the Calendar page.
- Integrated dynamic imports with Suspense for main components, enhancing user experience during data fetching by displaying unified loading interfaces.
- Updated `CalendarPage` to utilize the new skeleton components, ensuring a seamless loading state representation while data is being loaded.
- Introduced various skeleton components including `ReportsPageSkeleton`, `TimeReportTableSkeleton`, `TimeReportTableByMemberSkeleton`, and others to enhance loading states for the Weekly Limit report page.
- Integrated dynamic imports for main components, improving user experience during data fetching by displaying loading interfaces.
- Updated `WeeklyLimitReport` to utilize the new skeleton components, ensuring a seamless loading experience while data is being loaded.
…ard pages

- Introduced `AppUrlsDashboardPageSkeleton` and `TeamDashboardPageSkeleton` to provide comprehensive loading states for their respective pages.
- Created individual skeleton components such as `ProductivityHeaderSkeleton`, `ProductivityStatsSkeleton`, and `TeamStatsGridSkeleton` for modular loading representations.
- Updated relevant pages to utilize the new skeleton components, enhancing user experience during data fetching by displaying unified loading interfaces.
- Implemented lazy loading for main components to optimize performance while data is being loaded.
- Changed label display to a span with adjusted text size for better visual consistency.
- Updated button text size for ascending and descending sort options to enhance clarity.
… page

- Introduced various skeleton components for the profile page, including `ProfilePageSkeleton`, `UserProfileDetailSkeleton`, and `UserProfileTaskSkeleton`, to enhance loading states and user experience during data fetching.
- Implemented dynamic imports for heavy components such as user profile details, tasks, and filters, optimizing performance while data is being loaded.
- Updated the profile page to utilize the new skeleton components, ensuring a seamless loading experience and improved visual feedback for users.
…tor imports

- Introduced `AllPlans`, `EmptyPlans`, and `PlanHeader` components to improve the daily plan feature, providing better structure and functionality.
- Added `ActivityCalendarSkeleton` for improved loading states in the activity calendar.
- Refactored existing components to utilize the new skeletons, ensuring a consistent loading experience across the daily plan section.
- Updated imports to streamline component usage and enhance code organization.
- Removed the obsolete `ScreenCalendar` component to simplify the codebase.
…g and skeletons

- Refactored profile page to utilize new lazy-loaded components for improved performance, including `LazyUserProfileDetail`, `LazyUserProfileTask`, and others.
- Updated the dashboard's `TaskTimerSection` to replace the direct `Timer` component with `LazyTimer`, enhancing loading efficiency.
- Consolidated skeleton components for various profile and task sections, ensuring a consistent loading experience across the application.
- Improved code organization by centralizing dynamic imports in `optimized-tasks-components` for better maintainability.
- Removed unused imports from various components, including  from profile and  from dashboard.
- Streamlined import statements in settings and daily plan components for better organization.
- Enhanced code maintainability by eliminating obsolete components and ensuring only necessary imports are retained.
…ion and improved structure

- Introduced memoization for various components in the profile and user task sections to optimize rendering performance and reduce unnecessary re-renders.
- Refactored the profile page to utilize new memoized components such as `MemberNotFoundMessage`, `BreadcrumbSection`, `UserProfileSection`, and `ActivityFilterTabs`, improving code organization and readability.
- Updated the `UserProfileTask` component to include memoized displays for current time and active tasks, enhancing performance and user experience.
- Streamlined conditional rendering logic with memoized values to improve clarity and maintainability of the codebase.
- Introduced `KanbanPageSkeleton` component to provide a complete loading state for the Kanban page, ensuring a consistent and visually appealing loading experience.
- Updated the Kanban page to utilize the new skeleton, replacing previous loading indicators with a unified structure that integrates seamlessly with the `MainLayout`.
- Enhanced the loading experience by displaying a comprehensive skeleton layout that matches the actual page structure, improving user feedback during data fetching.
…memoized components

- Removed unnecessary memoized components and conditional rendering logic from the `UserProfileTask` component to streamline its structure and improve readability.
- Consolidated the display of current time and active tasks directly within the main render logic, enhancing performance and reducing complexity.
- Updated the rendering logic for task lists and headers to ensure clarity and maintainability of the codebase.
…experience

- Introduced `AllTeamsPageSkeleton`, `TeamMemberProfilePageSkeleton`, and `TeamTasksPageSkeleton` to provide comprehensive loading states for their respective pages, ensuring a consistent and visually appealing loading experience.
- Updated the `AllTeamsPage`, `Team`, and `TeamTask` components to utilize the new skeletons, replacing previous loading indicators with a unified structure that integrates seamlessly with the `MainLayout`.
- Enhanced user feedback during data fetching by displaying detailed skeleton layouts that match the actual page structures, improving overall user experience.
… in loop

- Updated the loop in `SegmentedProgressBar` to eliminate the unused index variable, improving code clarity and maintainability.
- This change enhances the readability of the component while maintaining its functionality.
@NdekoCode NdekoCode self-assigned this Jun 26, 2025
@NdekoCode NdekoCode added enhancement New feature or request WEB Web app Improvement Improvement Ever Teams performance labels Jun 26, 2025
Copy link
Contributor

coderabbitai bot commented Jun 26, 2025

Walkthrough

This change introduces comprehensive lazy loading and pixel-perfect skeleton loading states across high-impact components and pages in the Ever Teams web application. It modularizes skeleton components, applies dynamic imports with Suspense and fallbacks, and unifies loading UX for dashboards, profiles, settings, kanban, timesheet, and daily plan features, improving performance and code organization.

Changes

File(s) / Group Change Summary
apps/web/app/[locale]/(main)/(teams)/team/[teamId]/[profileLink]/page.tsx, ... (team, dashboard, kanban, calendar, profile, reports, settings, tasks, etc.) Added conditional rendering of unified skeleton components for loading states; replaced direct imports with dynamic/lazy-loaded components using Suspense and skeleton fallbacks; minor className and layout adjustments for consistency.
apps/web/core/components/common/skeleton/*.tsx, apps/web/core/components/layouts/skeletons/*.tsx Added new modular skeleton components for dashboards, kanban, calendar, profile, reports, team tasks, settings, and time/activity pages; each provides a full-page or section-level skeleton UI matching the respective feature's layout.
apps/web/core/components/optimized-components.tsx Introduced a central module exporting dynamically imported (lazy-loaded) components with skeleton loading fallbacks for major UI blocks (profile, tasks, tabs, timer, modals, etc.).
apps/web/core/components/daily-plan/all-plans.tsx, plan-header.tsx, empty-plans.tsx, index.ts Modularized and exported daily plan components (AllPlans, PlanHeader, EmptyPlans) from a dedicated directory, removing their previous inline implementation from user-profile-plans.tsx.
apps/web/core/components/users/user-profile-plans.tsx Removed inline implementations of AllPlans, PlanHeader, and EmptyPlans; refactored task count calculation via memoization; now imports plan components from the new daily-plan module.
apps/web/core/components/duplicated-components/_progress-bar.tsx Refactored progress bar components with memoization and modularization for improved rendering performance; added a virtualized segmented progress bar.
apps/web/core/hooks/auth/use-authenticate-user.ts, apps/web/core/types/interfaces/user/user.ts Added a userLoading property to the authentication hook and its return type for improved loading state tracking.
Various components (filters, sort popover, activity-level-cell, task-block-card, etc.) Minor className reordering and formatting changes for consistency; no logic changes.
Removed: apps/web/core/components/activities/screen-calendar.tsx, skeletons from timesheet-skeletons.tsx Deleted obsolete or relocated skeleton/component implementations.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Page
    participant LazyComponent
    participant Skeleton

    User->>Page: Navigates to feature page (e.g., Profile, Dashboard)
    Page->>Page: Run hooks, fetch data
    alt Data or component loading
        Page->>Skeleton: Render skeleton fallback
    else Data and component ready
        Page->>LazyComponent: Render dynamically imported component
        LazyComponent-->>Page: Display loaded content
    end
Loading

Assessment against linked issues

Objective (Issue #) Addressed Explanation
Refactor heavy/complex components to be lazy-loaded using dynamic imports (next/dynamic) (#3789)
Ensure skeletons/unified loading placeholders are shown during data/component loading (#3789)
No layout/UI break or side effects after lazy loading (#3789)
Use of memoization (React.memo, useMemo) to reduce re-renders where possible (#3789)

Assessment against linked issues: Out-of-scope changes

Code Change (file_path) Explanation
None found

Possibly related PRs

  • [Feat]-Web: improve kanban and dashboard with pdf export and skeletons #3911: The main PR and the retrieved PR both introduce and enhance skeleton loading components and implement conditional rendering of these skeletons during data loading states in various pages, including team profile and team tasks pages, indicating a direct relation in improving loading UX with skeleton placeholders.
  • change position of 'Delete this plan' button #3322: The main PR refactors and modularizes the AllPlans, PlanHeader, and EmptyPlans components by removing their implementations from user-profile-plans.tsx and relocating them to a separate daily-plan module, while the retrieved PR modifies the UI and state logic specifically within the AllPlans component to reposition the "Delete this plan" button and improve deletion confirmation UX; thus, both PRs involve the AllPlans component but focus on different aspects—one on code modularization and the other on UI behavior—making them related at the component level but addressing distinct concerns.

Suggested labels

feature, UI/UX

Suggested reviewers

  • CREDO23
  • Innocent-Akim
  • paradoxe35

Poem

A rabbit hopped through fields of code,
With skeletons and lazy loads bestowed.
Dashboards, profiles, plans anew,
All shimmer now in loading hue.
No more waiting, just a glance—
The UI dances, apps enhance!
🐇✨

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

yarn install v1.22.22
[1/4] Resolving packages...
(node:21560) [DEP0169] DeprecationWarning: url.parse() behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for url.parse() vulnerabilities.
(Use node --trace-deprecation ... to show where the warning was created)
error Couldn't find package "@ever-teams/eslint-config@" required by "@ever-teams/types@" on the "npm" registry.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate Unit Tests
  • Create PR with Unit Tests
  • Post Copyable Unit Tests in Comment
  • Commit Unit Tests in branch feature/complete-application-skeleton-system

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 auto-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.

Copy link

⚠️ Unused code detected in the following changed files:

  • apps/web/core/components/common/loading-app.tsx
  • apps/web/core/components/common/skeleton/app-urls-dashboard-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/calendar-component-skeletons.tsx
  • apps/web/core/components/common/skeleton/calendar-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/productivity-header-skeleton.tsx
  • apps/web/core/components/common/skeleton/productivity-stats-skeleton.tsx
  • apps/web/core/components/common/skeleton/profile-component-skeletons.tsx
  • apps/web/core/components/common/skeleton/profile-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/reports-component-skeletons.tsx
  • apps/web/core/components/common/skeleton/reports-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/settings-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/task-details-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/team-dashboard-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/team-stats-grid-skeleton.tsx
  • apps/web/core/components/common/skeleton/time-activity-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/time-activity-skeletons.tsx
  • apps/web/core/components/common/skeleton/timesheet-page-skeleton.tsx
  • apps/web/core/components/duplicated-components/_progress-bar.tsx
  • apps/web/core/components/layouts/app/authenticator.tsx
  • apps/web/core/components/layouts/skeletons/all-teams-page-skeleton.tsx
  • apps/web/core/components/layouts/skeletons/kanban-page-skeleton.tsx
  • apps/web/core/components/layouts/skeletons/team-member-profile-page-skeleton.tsx
  • apps/web/core/components/layouts/skeletons/team-tasks-page-skeleton.tsx
  • apps/web/core/components/tasks/kanban.tsx
  • apps/web/core/types/interfaces/user/user.ts

Please review these files and clean up the unused code.

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

PR Summary

Major enhancement implementing a comprehensive loading skeleton system across the Ever Teams application for improved perceived performance and user experience.

  • Created centralized skeleton system in apps/web/core/components/common/skeleton/ with consistent styling (bg-[#F0F0F0] dark:bg-[#353741] animate-pulse)
  • Implemented Next.js dynamic imports with Suspense boundaries in apps/web/core/components/optimized-components.tsx for optimized lazy loading
  • Added new page-level skeletons in apps/web/core/components/layouts/skeletons/ matching exact layouts of AllTeams, TeamTasks, Kanban pages
  • Enhanced user authentication flow with new userLoading state in apps/web/core/types/interfaces/user/user.ts for consistent loading handling
  • Restructured daily plan components with proper skeleton integration and component organization in apps/web/core/components/daily-plan/

67 files reviewed, 49 comments
Edit PR Review Bot Settings | Greptile

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: 14

🧹 Nitpick comments (8)
apps/web/core/components/tasks/task-block-card.tsx (1)

81-81: Prefer one styling system for border colours

Mixing a hard-coded hex (border-[#F7F7F8]) with a Tailwind token (dark:border-gray-700) can lead to maintenance drift. Consider switching the light-mode value to the nearest Tailwind shade for consistency with the rest of the codebase.

- className="flex flex-col my-2.5 rounded-2xl bg-white dark:bg-dark--theme-light p-4 relative border border-[#F7F7F8] dark:border-gray-700"
+ className="flex flex-col my-2.5 rounded-2xl bg-white dark:bg-dark--theme-light p-4 relative border border-gray-100 dark:border-gray-700"

This keeps both themes on the same token system and makes future palette tweaks easier.

apps/web/core/components/daily-plan/plan-header.tsx (1)

76-83: Consider adding input validation and accessibility.

The number input for planned time could benefit from:

  • Min/max validation
  • Accessibility labels
  • Enter key handling for better UX
 <input
 	min={0}
+	max={24}
 	type="number"
+	aria-label="Planned work time in hours"
+	onKeyDown={(e) => {
+		if (e.key === 'Enter') {
+			updateDailyPlan({ workTimePlanned: time }, plan.id ?? '');
+			setEditTime(false);
+		}
+	}}
 	className={clsxm(
 		'p-0 text-xs font-medium text-center bg-transparent border-b outline-none max-w-[54px]'
 	)}
 	onChange={(e) => setTime(parseFloat(e.target.value))}
 />
apps/web/core/components/pages/time-and-activity/page-component.tsx (1)

103-107: Verify the loading condition logic.

The condition loading && (!rapportDailyActivity || !activeTeam) might be too restrictive. Consider if the skeleton should be shown when either:

  1. loading is true (regardless of data state), OR
  2. Critical data is missing (regardless of loading state)
-	if (loading && (!rapportDailyActivity || !activeTeam)) {
+	if (loading || !rapportDailyActivity || !activeTeam) {
 		return <TimeActivityPageSkeleton showTimer={isTrackingEnabled} fullWidth={fullWidth} />;
 	}

This would show the skeleton whenever any critical requirement is missing, providing a more consistent loading experience.

apps/web/app/[locale]/(main)/settings/team/page.tsx (1)

78-79: Remove development comment.

The comment referencing "Medium article pattern" appears to be a development note that should be removed.

	{
		ssr: false
-		// Note: No loading property for accordion content (Medium article pattern)
	}
apps/web/app/[locale]/(main)/reports/weekly-limit/page.tsx (1)

184-187: Consider enhancing the loading condition

The loading check could be more comprehensive to handle edge cases where data might be empty but not loading.

-// IMPORTANT: This must be AFTER all hooks to avoid "Rendered fewer hooks than expected" error
-if (!organization || !organizationLimits || getTimeLimitReportLoading) {
-	return <ReportsPageSkeleton showTimer={isTrackingEnabled} fullWidth={false} />;
-}
+// IMPORTANT: This must be AFTER all hooks to avoid "Rendered fewer hooks than expected" error
+if (!organization || !organizationLimits || getTimeLimitReportLoading || !timeLimitsReports) {
+	return <ReportsPageSkeleton showTimer={isTrackingEnabled} fullWidth={false} />;
+}
apps/web/core/components/optimized-components.tsx (1)

88-108: Consider adding skeleton fallbacks for consistency

The LazyTimer, LazyJoinTeamModal, and LazyCreateTeamModal components don't have skeleton loading fallbacks, while other components do. For consistency in the loading experience, consider adding appropriate skeletons.

export const LazyTimer = dynamic(
	() => import('@/core/components/timer/timer').then((mod) => ({ default: mod.Timer })),
	{
-		ssr: false
+		ssr: false,
+		loading: () => <div className="w-full h-32 bg-[#F0F0F0] dark:bg-[#353741] animate-pulse rounded-lg" />
	}
);

export const LazyJoinTeamModal = dynamic(
	() => import('@/core/components/features/teams/join-team-modal').then((mod) => ({ default: mod.JoinTeamModal })),
	{
-		ssr: false
+		ssr: false,
+		loading: () => <div className="w-96 h-64 bg-[#F0F0F0] dark:bg-[#353741] animate-pulse rounded-lg" />
	}
);

export const LazyCreateTeamModal = dynamic(
	() =>
		import('@/core/components/features/teams/create-team-modal').then((mod) => ({ default: mod.CreateTeamModal })),
	{
-		ssr: false
+		ssr: false,
+		loading: () => <div className="w-96 h-64 bg-[#F0F0F0] dark:bg-[#353741] animate-pulse rounded-lg" />
	}
);
apps/web/core/components/common/skeleton/profile-component-skeletons.tsx (1)

296-296: Fix typo in component name.

The component name has a typo - "Screenshoot" should be "Screenshot".

-export const ScreenshootTabSkeleton: FC<SkeletonProps> = ({ className }) => {
+export const ScreenshotTabSkeleton: FC<SkeletonProps> = ({ className }) => {

Don't forget to update the corresponding references in the default export and any usage.

apps/web/core/components/projects/filters-card-modal.tsx (1)

216-224: Redundant closeModal() call

handleApplyFilters() already invokes closeModal(), so calling it again immediately afterwards is unnecessary.

-	handleApplyFilters();
-	closeModal();
+	handleApplyFilters();
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 2a66d4e and a2bba94.

📒 Files selected for processing (68)
  • apps/web/app/[locale]/(main)/(teams)/team/[teamId]/[profileLink]/page.tsx (2 hunks)
  • apps/web/app/[locale]/(main)/(teams)/team/tasks/page.tsx (6 hunks)
  • apps/web/app/[locale]/(main)/calendar/page.tsx (4 hunks)
  • apps/web/app/[locale]/(main)/dashboard/app-url/[teamId]/page.tsx (4 hunks)
  • apps/web/app/[locale]/(main)/dashboard/team-dashboard/[teamId]/page.tsx (4 hunks)
  • apps/web/app/[locale]/(main)/kanban/page.tsx (3 hunks)
  • apps/web/app/[locale]/(main)/profile/[memberId]/page.tsx (6 hunks)
  • apps/web/app/[locale]/(main)/reports/weekly-limit/page.tsx (5 hunks)
  • apps/web/app/[locale]/(main)/settings/layout.tsx (2 hunks)
  • apps/web/app/[locale]/(main)/settings/loading.tsx (1 hunks)
  • apps/web/app/[locale]/(main)/settings/personal/page.tsx (3 hunks)
  • apps/web/app/[locale]/(main)/settings/team/page.tsx (8 hunks)
  • apps/web/core/components/activities/activity-calendar.tsx (1 hunks)
  • apps/web/core/components/activities/screen-calendar.tsx (0 hunks)
  • apps/web/core/components/common/global-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/loading-app.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/activity-calendar-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/app-urls-dashboard-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/calendar-component-skeletons.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/calendar-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/productivity-header-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/productivity-stats-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/profile-component-skeletons.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/profile-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/reports-component-skeletons.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/reports-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/rich-text-editor-skeleton.tsx (5 hunks)
  • apps/web/core/components/common/skeleton/settings-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/settings-skeletons.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/task-details-page-skeleton.tsx (8 hunks)
  • apps/web/core/components/common/skeleton/team-dashboard-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/team-stats-grid-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/time-activity-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/time-activity-skeletons.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/timesheet-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/common/skeleton/timesheet-skeletons.tsx (9 hunks)
  • apps/web/core/components/common/sort-popover.tsx (3 hunks)
  • apps/web/core/components/daily-plan/all-plans.tsx (1 hunks)
  • apps/web/core/components/daily-plan/empty-plans.tsx (1 hunks)
  • apps/web/core/components/daily-plan/index.ts (1 hunks)
  • apps/web/core/components/daily-plan/plan-header.tsx (1 hunks)
  • apps/web/core/components/duplicated-components/_progress-bar.tsx (3 hunks)
  • apps/web/core/components/layouts/app/authenticator.tsx (2 hunks)
  • apps/web/core/components/layouts/skeletons/all-teams-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/layouts/skeletons/kanban-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/layouts/skeletons/team-member-profile-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/layouts/skeletons/team-tasks-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/optimized-components.tsx (1 hunks)
  • apps/web/core/components/pages/dashboard/dashboard-header.tsx (0 hunks)
  • apps/web/core/components/pages/dashboard/task-timer-section.tsx (2 hunks)
  • apps/web/core/components/pages/dashboard/team-dashboard/team-stats-table.tsx (0 hunks)
  • apps/web/core/components/pages/profile/user-profile-tasks.tsx (4 hunks)
  • apps/web/core/components/pages/projects/page-component.tsx (0 hunks)
  • apps/web/core/components/pages/task/task-details.tsx (2 hunks)
  • apps/web/core/components/pages/teams/all-teams/page-component.tsx (2 hunks)
  • apps/web/core/components/pages/time-and-activity/activity-level-cell.tsx (2 hunks)
  • apps/web/core/components/pages/time-and-activity/page-component.tsx (5 hunks)
  • apps/web/core/components/pages/timesheet/timesheet-page-content.tsx (6 hunks)
  • apps/web/core/components/projects/filters-card-modal.tsx (11 hunks)
  • apps/web/core/components/tasks/daily-plan/future-tasks.tsx (3 hunks)
  • apps/web/core/components/tasks/daily-plan/outstanding-all.tsx (1 hunks)
  • apps/web/core/components/tasks/daily-plan/outstanding-date.tsx (2 hunks)
  • apps/web/core/components/tasks/daily-plan/past-tasks.tsx (2 hunks)
  • apps/web/core/components/tasks/kanban.tsx (0 hunks)
  • apps/web/core/components/tasks/task-block-card.tsx (1 hunks)
  • apps/web/core/components/users/user-profile-plans.tsx (5 hunks)
  • apps/web/core/hooks/auth/use-authenticate-user.ts (1 hunks)
  • apps/web/core/types/interfaces/user/user.ts (1 hunks)
💤 Files with no reviewable changes (5)
  • apps/web/core/components/tasks/kanban.tsx
  • apps/web/core/components/pages/projects/page-component.tsx
  • apps/web/core/components/pages/dashboard/team-dashboard/team-stats-table.tsx
  • apps/web/core/components/pages/dashboard/dashboard-header.tsx
  • apps/web/core/components/activities/screen-calendar.tsx
🧰 Additional context used
🧠 Learnings (60)
📓 Common learnings
Learnt from: NdekoCode
PR: ever-co/ever-teams#3887
File: apps/web/core/query/keys/index.ts:41-58
Timestamp: 2025-06-07T04:31:16.865Z
Learning: The team uses a progressive migration approach for React Query implementation, where query key infrastructure is added first before implementing the hooks/services that use them. This results in intentionally unused code during intermediate migration states.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
apps/web/core/components/tasks/daily-plan/outstanding-all.tsx (4)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
apps/web/app/[locale]/(main)/settings/loading.tsx (1)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
apps/web/core/components/daily-plan/index.ts (2)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
apps/web/core/components/pages/dashboard/task-timer-section.tsx (7)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
apps/web/core/components/common/sort-popover.tsx (5)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/lib/layout/main-layout.tsx:63-63
Timestamp: 2024-10-25T14:59:25.183Z
Learning: In the `ever-teams` codebase, custom CSS classes may include unconventional or non-standard Tailwind CSS syntax, such as `group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12`, which are intentional and should not be flagged as issues.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
apps/web/app/[locale]/(main)/(teams)/team/[teamId]/[profileLink]/page.tsx (8)
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: CREDO23
PR: ever-co/ever-teams#3532
File: apps/web/components/pages/team/tasks/DropdownMenuTask.tsx:20-21
Timestamp: 2025-01-21T18:44:28.130Z
Learning: In the Ever Teams application, task assignment operations require member information obtained through the `useTeamMemberCard` hook, which needs the team member object as an argument. This member object is typically found by matching the current user's ID with the employee user ID in the active team's members list.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
apps/web/core/components/common/skeleton/productivity-header-skeleton.tsx (8)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:407-413
Timestamp: 2024-11-25T18:44:57.271Z
Learning: In React applications using Headless UI, when using `Listbox.Option` with `as={Fragment}`, it's acceptable to keep the `key` prop on the `Listbox.Option` component, as per the Headless UI documentation.
apps/web/core/hooks/auth/use-authenticate-user.ts (1)
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
apps/web/core/components/daily-plan/empty-plans.tsx (6)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
apps/web/core/components/tasks/task-block-card.tsx (8)
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/lib/layout/main-layout.tsx:63-63
Timestamp: 2024-10-25T14:59:25.183Z
Learning: In the `ever-teams` codebase, custom CSS classes may include unconventional or non-standard Tailwind CSS syntax, such as `group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12`, which are intentional and should not be flagged as issues.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3185
File: apps/web/lib/settings/task-statuses-form.tsx:187-199
Timestamp: 2024-11-07T14:04:24.336Z
Learning: In `apps/web/lib/settings/task-statuses-form.tsx`, when generating colors in the `getRandomColor` function, prefer to keep generating them randomly to have more than five colors, even if it might affect color accessibility.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
apps/web/app/[locale]/(main)/kanban/page.tsx (8)
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
apps/web/core/components/common/skeleton/activity-calendar-skeleton.tsx (2)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
apps/web/app/[locale]/(main)/settings/personal/page.tsx (1)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
apps/web/app/[locale]/(main)/dashboard/app-url/[teamId]/page.tsx (10)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
apps/web/core/components/common/skeleton/team-stats-grid-skeleton.tsx (6)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
apps/web/core/components/pages/task/task-details.tsx (7)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/components/pages/kanban/menu-kanban-card.tsx:85-85
Timestamp: 2024-11-20T19:57:48.324Z
Learning: We are gradually migrating from 'taskName' to 'title' as we make changes to the remaining files.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
apps/web/core/components/tasks/daily-plan/past-tasks.tsx (9)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:29-29
Timestamp: 2024-10-28T17:22:19.947Z
Learning: In `apps/web/app/stores/team-tasks.ts`, tasks should be sorted alphabetically, not by `createdAt` date.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/components/pages/kanban/menu-kanban-card.tsx:85-85
Timestamp: 2024-11-20T19:57:48.324Z
Learning: We are gradually migrating from 'taskName' to 'title' as we make changes to the remaining files.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/FrequencySelect.tsx:67-79
Timestamp: 2024-10-30T16:25:19.910Z
Learning: The date range selection functionality for the date range options in the `FilterTaskActionMenu` component will be implemented in a future PR.
apps/web/core/components/pages/time-and-activity/activity-level-cell.tsx (8)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/lib/layout/main-layout.tsx:63-63
Timestamp: 2024-10-25T14:59:25.183Z
Learning: In the `ever-teams` codebase, custom CSS classes may include unconventional or non-standard Tailwind CSS syntax, such as `group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12`, which are intentional and should not be flagged as issues.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
apps/web/core/components/common/skeleton/task-details-page-skeleton.tsx (13)
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/components/pages/kanban/menu-kanban-card.tsx:85-85
Timestamp: 2024-11-20T19:57:48.324Z
Learning: We are gradually migrating from 'taskName' to 'title' as we make changes to the remaining files.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:29-29
Timestamp: 2024-10-28T17:22:19.947Z
Learning: In `apps/web/app/stores/team-tasks.ts`, tasks should be sorted alphabetically, not by `createdAt` date.
Learnt from: CREDO23
PR: ever-co/ever-teams#3350
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:142-142
Timestamp: 2024-11-19T20:00:06.323Z
Learning: In the `TaskSecondaryInfo` component, rendering the `EpicParent` component twice is intentional and should not be flagged as an issue.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:407-413
Timestamp: 2024-11-25T18:44:57.271Z
Learning: In React applications using Headless UI, when using `Listbox.Option` with `as={Fragment}`, it's acceptable to keep the `key` prop on the `Listbox.Option` component, as per the Headless UI documentation.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/lib/layout/main-layout.tsx:63-63
Timestamp: 2024-10-25T14:59:25.183Z
Learning: In the `ever-teams` codebase, custom CSS classes may include unconventional or non-standard Tailwind CSS syntax, such as `group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12`, which are intentional and should not be flagged as issues.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
apps/web/core/components/pages/teams/all-teams/page-component.tsx (11)
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: CREDO23
PR: ever-co/ever-teams#3532
File: apps/web/components/pages/team/tasks/DropdownMenuTask.tsx:20-21
Timestamp: 2025-01-21T18:44:28.130Z
Learning: In the Ever Teams application, task assignment operations require member information obtained through the `useTeamMemberCard` hook, which needs the team member object as an argument. This member object is typically found by matching the current user's ID with the employee user ID in the active team's members list.
apps/web/core/components/pages/profile/user-profile-tasks.tsx (10)
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: CREDO23
PR: ever-co/ever-teams#3532
File: apps/web/components/pages/team/tasks/DropdownMenuTask.tsx:20-21
Timestamp: 2025-01-21T18:44:28.130Z
Learning: In the Ever Teams application, task assignment operations require member information obtained through the `useTeamMemberCard` hook, which needs the team member object as an argument. This member object is typically found by matching the current user's ID with the employee user ID in the active team's members list.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
apps/web/app/[locale]/(main)/settings/team/page.tsx (5)
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3532
File: apps/web/components/pages/team/tasks/DropdownMenuTask.tsx:20-21
Timestamp: 2025-01-21T18:44:28.130Z
Learning: In the Ever Teams application, task assignment operations require member information obtained through the `useTeamMemberCard` hook, which needs the team member object as an argument. This member object is typically found by matching the current user's ID with the employee user ID in the active team's members list.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
apps/web/core/components/pages/time-and-activity/page-component.tsx (10)
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
Learnt from: CREDO23
PR: ever-co/ever-teams#3392
File: apps/web/app/[locale]/reports/weekly-limit/components/group-by-select.tsx:42-51
Timestamp: 2024-12-05T09:04:08.049Z
Learning: In the `GroupBySelect` component (`apps/web/app/[locale]/reports/weekly-limit/components/group-by-select.tsx`), only one option can be selected at a time; two options cannot be selected simultaneously.
apps/web/core/components/tasks/daily-plan/outstanding-date.tsx (9)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:29-29
Timestamp: 2024-10-28T17:22:19.947Z
Learning: In `apps/web/app/stores/team-tasks.ts`, tasks should be sorted alphabetically, not by `createdAt` date.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/components/pages/kanban/menu-kanban-card.tsx:85-85
Timestamp: 2024-11-20T19:57:48.324Z
Learning: We are gradually migrating from 'taskName' to 'title' as we make changes to the remaining files.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
apps/web/core/components/common/skeleton/time-activity-page-skeleton.tsx (5)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
apps/web/app/[locale]/(main)/(teams)/team/tasks/page.tsx (13)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:29-29
Timestamp: 2024-10-28T17:22:19.947Z
Learning: In `apps/web/app/stores/team-tasks.ts`, tasks should be sorted alphabetically, not by `createdAt` date.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3887
File: apps/web/core/query/keys/index.ts:41-58
Timestamp: 2025-06-07T04:31:16.865Z
Learning: The team uses a progressive migration approach for React Query implementation, where query key infrastructure is added first before implementing the hooks/services that use them. This results in intentionally unused code during intermediate migration states.
Learnt from: CREDO23
PR: ever-co/ever-teams#3532
File: apps/web/components/pages/team/tasks/DropdownMenuTask.tsx:20-21
Timestamp: 2025-01-21T18:44:28.130Z
Learning: In the Ever Teams application, task assignment operations require member information obtained through the `useTeamMemberCard` hook, which needs the team member object as an argument. This member object is typically found by matching the current user's ID with the employee user ID in the active team's members list.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:407-413
Timestamp: 2024-11-25T18:44:57.271Z
Learning: In React applications using Headless UI, when using `Listbox.Option` with `as={Fragment}`, it's acceptable to keep the `key` prop on the `Listbox.Option` component, as per the Headless UI documentation.
apps/web/core/components/common/skeleton/productivity-stats-skeleton.tsx (7)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:407-413
Timestamp: 2024-11-25T18:44:57.271Z
Learning: In React applications using Headless UI, when using `Listbox.Option` with `as={Fragment}`, it's acceptable to keep the `key` prop on the `Listbox.Option` component, as per the Headless UI documentation.
apps/web/app/[locale]/(main)/calendar/page.tsx (10)
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3887
File: apps/web/core/query/keys/index.ts:41-58
Timestamp: 2025-06-07T04:31:16.865Z
Learning: The team uses a progressive migration approach for React Query implementation, where query key infrastructure is added first before implementing the hooks/services that use them. This results in intentionally unused code during intermediate migration states.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
apps/web/core/components/tasks/daily-plan/future-tasks.tsx (9)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:29-29
Timestamp: 2024-10-28T17:22:19.947Z
Learning: In `apps/web/app/stores/team-tasks.ts`, tasks should be sorted alphabetically, not by `createdAt` date.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/components/pages/kanban/menu-kanban-card.tsx:85-85
Timestamp: 2024-11-20T19:57:48.324Z
Learning: We are gradually migrating from 'taskName' to 'title' as we make changes to the remaining files.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
apps/web/app/[locale]/(main)/settings/layout.tsx (6)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
apps/web/core/components/common/skeleton/timesheet-page-skeleton.tsx (6)
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
apps/web/core/components/common/loading-app.tsx (7)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
apps/web/core/components/layouts/app/authenticator.tsx (9)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3887
File: apps/web/core/query/keys/index.ts:41-58
Timestamp: 2025-06-07T04:31:16.865Z
Learning: The team uses a progressive migration approach for React Query implementation, where query key infrastructure is added first before implementing the hooks/services that use them. This results in intentionally unused code during intermediate migration states.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
apps/web/app/[locale]/(main)/dashboard/team-dashboard/[teamId]/page.tsx (11)
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
apps/web/core/components/pages/timesheet/timesheet-page-content.tsx (11)
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
apps/web/core/components/common/skeleton/rich-text-editor-skeleton.tsx (3)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/lib/layout/main-layout.tsx:63-63
Timestamp: 2024-10-25T14:59:25.183Z
Learning: In the `ever-teams` codebase, custom CSS classes may include unconventional or non-standard Tailwind CSS syntax, such as `group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12`, which are intentional and should not be flagged as issues.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
apps/web/core/components/common/skeleton/reports-page-skeleton.tsx (3)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3392
File: apps/web/app/[locale]/reports/weekly-limit/components/group-by-select.tsx:42-51
Timestamp: 2024-12-05T09:04:08.049Z
Learning: In the `GroupBySelect` component (`apps/web/app/[locale]/reports/weekly-limit/components/group-by-select.tsx`), only one option can be selected at a time; two options cannot be selected simultaneously.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
apps/web/core/components/common/skeleton/profile-page-skeleton.tsx (6)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
apps/web/core/components/common/skeleton/team-dashboard-page-skeleton.tsx (9)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
apps/web/core/components/projects/filters-card-modal.tsx (13)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/lib/layout/main-layout.tsx:63-63
Timestamp: 2024-10-25T14:59:25.183Z
Learning: In the `ever-teams` codebase, custom CSS classes may include unconventional or non-standard Tailwind CSS syntax, such as `group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12`, which are intentional and should not be flagged as issues.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:407-413
Timestamp: 2024-11-25T18:44:57.271Z
Learning: In React applications using Headless UI, when using `Listbox.Option` with `as={Fragment}`, it's acceptable to keep the `key` prop on the `Listbox.Option` component, as per the Headless UI documentation.
Learnt from: CREDO23
PR: ever-co/ever-teams#3392
File: apps/web/app/[locale]/reports/weekly-limit/components/group-by-select.tsx:42-51
Timestamp: 2024-12-05T09:04:08.049Z
Learning: In the `GroupBySelect` component (`apps/web/app/[locale]/reports/weekly-limit/components/group-by-select.tsx`), only one option can be selected at a time; two options cannot be selected simultaneously.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
apps/web/core/components/common/skeleton/calendar-page-skeleton.tsx (2)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
apps/web/core/components/daily-plan/plan-header.tsx (7)
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
apps/web/core/components/common/skeleton/timesheet-skeletons.tsx (8)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/lib/layout/main-layout.tsx:63-63
Timestamp: 2024-10-25T14:59:25.183Z
Learning: In the `ever-teams` codebase, custom CSS classes may include unconventional or non-standard Tailwind CSS syntax, such as `group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12`, which are intentional and should not be flagged as issues.
apps/web/app/[locale]/(main)/profile/[memberId]/page.tsx (14)
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:407-413
Timestamp: 2024-11-25T18:44:57.271Z
Learning: In React applications using Headless UI, when using `Listbox.Option` with `as={Fragment}`, it's acceptable to keep the `key` prop on the `Listbox.Option` component, as per the Headless UI documentation.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3887
File: apps/web/core/query/keys/index.ts:41-58
Timestamp: 2025-06-07T04:31:16.865Z
Learning: The team uses a progressive migration approach for React Query implementation, where query key infrastructure is added first before implementing the hooks/services that use them. This results in intentionally unused code during intermediate migration states.
Learnt from: CREDO23
PR: ever-co/ever-teams#3532
File: apps/web/components/pages/team/tasks/DropdownMenuTask.tsx:20-21
Timestamp: 2025-01-21T18:44:28.130Z
Learning: In the Ever Teams application, task assignment operations require member information obtained through the `useTeamMemberCard` hook, which needs the team member object as an argument. This member object is typically found by matching the current user's ID with the employee user ID in the active team's members list.
apps/web/core/components/layouts/skeletons/team-member-profile-page-skeleton.tsx (7)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
Learnt from: CREDO23
PR: ever-co/ever-teams#3532
File: apps/web/components/pages/team/tasks/DropdownMenuTask.tsx:20-21
Timestamp: 2025-01-21T18:44:28.130Z
Learning: In the Ever Teams application, task assignment operations require member information obtained through the `useTeamMemberCard` hook, which needs the team member object as an argument. This member object is typically found by matching the current user's ID with the employee user ID in the active team's members list.
apps/web/core/components/layouts/skeletons/all-teams-page-skeleton.tsx (6)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
apps/web/core/components/layouts/skeletons/team-tasks-page-skeleton.tsx (4)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
apps/web/core/components/common/skeleton/app-urls-dashboard-page-skeleton.tsx (5)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
apps/web/core/components/common/skeleton/time-activity-skeletons.tsx (4)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
apps/web/core/components/common/skeleton/settings-skeletons.tsx (5)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: syns2191
PR: ever-co/ever-teams#3409
File: apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx:18-19
Timestamp: 2024-12-11T01:40:38.438Z
Learning: In the `EverTeamsLogo` component (`apps/server-web/src/renderer/components/svgs/EverTeamsLogo.tsx`), it's acceptable to have multiple elements with the same `id` attribute.
apps/web/core/components/daily-plan/all-plans.tsx (9)
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:29-29
Timestamp: 2024-10-28T17:22:19.947Z
Learning: In `apps/web/app/stores/team-tasks.ts`, tasks should be sorted alphabetically, not by `createdAt` date.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/FrequencySelect.tsx:67-79
Timestamp: 2024-10-30T16:25:19.910Z
Learning: The date range selection functionality for the date range options in the `FilterTaskActionMenu` component will be implemented in a future PR.
apps/web/core/components/layouts/skeletons/kanban-page-skeleton.tsx (6)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
apps/web/core/components/common/skeleton/calendar-component-skeletons.tsx (5)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/TimesheetFilter.tsx:30-35
Timestamp: 2024-10-30T16:31:01.294Z
Learning: In the `TimesheetFilter` component, the `Add Time` button does not need to use the `AddManualTimeModal` component, as per the user's decision.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
apps/web/core/components/optimized-components.tsx (10)
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3887
File: apps/web/core/query/keys/index.ts:41-58
Timestamp: 2025-06-07T04:31:16.865Z
Learning: The team uses a progressive migration approach for React Query implementation, where query key infrastructure is added first before implementing the hooks/services that use them. This results in intentionally unused code during intermediate migration states.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
apps/web/core/components/duplicated-components/_progress-bar.tsx (9)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: CREDO23
PR: ever-co/ever-teams#3185
File: apps/web/lib/settings/task-statuses-form.tsx:187-199
Timestamp: 2024-11-07T14:04:24.336Z
Learning: In `apps/web/lib/settings/task-statuses-form.tsx`, when generating colors in the `getRandomColor` function, prefer to keep generating them randomly to have more than five colors, even if it might affect color accessibility.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:132-217
Timestamp: 2024-10-25T15:17:29.070Z
Learning: Components derived from shadcn-ui have already been checked for performance optimizations; additional performance optimizations may not be necessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
apps/web/core/components/users/user-profile-plans.tsx (10)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: Innocent-Akim
PR: ever-co/ever-teams#3208
File: apps/web/app/[locale]/timesheet/components/FrequencySelect.tsx:67-79
Timestamp: 2024-10-30T16:25:19.910Z
Learning: The date range selection functionality for the date range options in the `FilterTaskActionMenu` component will be implemented in a future PR.
apps/web/core/components/common/skeleton/profile-component-skeletons.tsx (6)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/app/stores/team-tasks.ts:39-40
Timestamp: 2024-10-28T17:23:01.110Z
Learning: The `favoriteTasksAtom` in `apps/web/app/stores/team-tasks.ts` is important for future implementations and should not be removed, even if it appears unused currently.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
apps/web/core/components/common/global-skeleton.tsx (9)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/app-sidebar.tsx:49-55
Timestamp: 2024-10-28T17:16:03.609Z
Learning: In `apps/web/components/app-sidebar.tsx`, hardcoded sample user data is intentionally included and should not be removed.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
apps/web/app/[locale]/(main)/reports/weekly-limit/page.tsx (7)
Learnt from: CREDO23
PR: ever-co/ever-teams#3392
File: apps/web/app/[locale]/reports/weekly-limit/components/group-by-select.tsx:42-51
Timestamp: 2024-12-05T09:04:08.049Z
Learning: In the `GroupBySelect` component (`apps/web/app/[locale]/reports/weekly-limit/components/group-by-select.tsx`), only one option can be selected at a time; two options cannot be selected simultaneously.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3887
File: apps/web/core/query/keys/index.ts:41-58
Timestamp: 2025-06-07T04:31:16.865Z
Learning: The team uses a progressive migration approach for React Query implementation, where query key infrastructure is added first before implementing the hooks/services that use them. This results in intentionally unused code during intermediate migration states.
🧬 Code Graph Analysis (21)
apps/web/core/components/pages/dashboard/task-timer-section.tsx (1)
apps/web/core/components/optimized-components.tsx (1)
  • LazyTimer (88-93)
apps/web/app/[locale]/(main)/(teams)/team/[teamId]/[profileLink]/page.tsx (1)
apps/web/core/components/layouts/skeletons/team-member-profile-page-skeleton.tsx (1)
  • TeamMemberProfilePageSkeleton (16-131)
apps/web/core/components/daily-plan/empty-plans.tsx (2)
apps/web/core/components/users/user-profile-plans.tsx (1)
  • FilterTabs (39-39)
apps/web/app/[locale]/next-intl.d.ts (1)
  • useTranslations (24-24)
apps/web/app/[locale]/(main)/kanban/page.tsx (1)
apps/web/core/components/layouts/skeletons/kanban-page-skeleton.tsx (1)
  • KanbanPageSkeleton (16-175)
apps/web/app/[locale]/(main)/dashboard/app-url/[teamId]/page.tsx (2)
apps/web/core/components/common/skeleton/productivity-header-skeleton.tsx (1)
  • ProductivityHeaderSkeleton (11-20)
apps/web/core/components/common/skeleton/productivity-stats-skeleton.tsx (1)
  • ProductivityStatsSkeleton (11-33)
apps/web/core/components/pages/task/task-details.tsx (1)
apps/web/core/components/common/skeleton/rich-text-editor-skeleton.tsx (1)
  • DetailsAsideSkeleton (109-138)
apps/web/core/components/pages/teams/all-teams/page-component.tsx (1)
apps/web/core/components/layouts/skeletons/all-teams-page-skeleton.tsx (1)
  • AllTeamsPageSkeleton (16-132)
apps/web/core/components/pages/profile/user-profile-tasks.tsx (2)
apps/web/core/components/optimized-components.tsx (2)
  • LazyTaskCard (13-19)
  • LazyActivityCalendar (20-26)
apps/web/core/components/common/skeleton/activity-calendar-skeleton.tsx (1)
  • ActivityCalendarSkeleton (3-19)
apps/web/app/[locale]/(main)/(teams)/team/tasks/page.tsx (1)
apps/web/core/components/layouts/skeletons/team-tasks-page-skeleton.tsx (1)
  • TeamTasksPageSkeleton (16-155)
apps/web/app/[locale]/(main)/calendar/page.tsx (5)
apps/web/core/components/common/skeleton/calendar-component-skeletons.tsx (3)
  • SetupFullCalendarSkeleton (16-106)
  • SetupTimeSheetSkeleton (112-206)
  • AddManualTimeModalSkeleton (212-245)
apps/web/core/components/common/skeleton/calendar-page-skeleton.tsx (1)
  • CalendarPageSkeleton (16-186)
apps/web/app/[locale]/(main)/layout.tsx (1)
  • MainLayout (4-11)
apps/web/core/components/layouts/default-layout/footer.tsx (1)
  • Footer (12-42)
apps/server-web/src/renderer/libs/utils/clsxm.ts (1)
  • clsxm (5-7)
apps/web/core/components/layouts/app/authenticator.tsx (3)
apps/web/core/components/common/loader.tsx (1)
  • BackdropLoader (46-90)
apps/web/core/components/common/skeleton/modal-skeleton.tsx (1)
  • ModalSkeleton (8-45)
apps/web/core/components/optimized-components.tsx (2)
  • LazyCreateTeamModal (102-108)
  • LazyJoinTeamModal (95-100)
apps/web/app/[locale]/(main)/dashboard/team-dashboard/[teamId]/page.tsx (2)
apps/web/core/components/common/skeleton/team-stats-grid-skeleton.tsx (1)
  • TeamStatsGridSkeleton (11-29)
apps/web/core/components/common/skeleton/team-dashboard-page-skeleton.tsx (1)
  • TeamDashboardPageSkeleton (17-152)
apps/web/core/components/common/skeleton/rich-text-editor-skeleton.tsx (1)
apps/server-web/src/renderer/libs/utils/clsxm.ts (1)
  • clsxm (5-7)
apps/web/core/components/projects/filters-card-modal.tsx (1)
apps/web/core/components/common/ever-card.tsx (1)
  • EverCard (9-24)
apps/web/core/components/common/skeleton/settings-page-skeleton.tsx (1)
apps/web/core/components/common/skeleton/task-details-page-skeleton.tsx (1)
  • TitleBlockSkeleton (61-93)
apps/web/core/components/common/skeleton/timesheet-skeletons.tsx (1)
apps/server-web/src/renderer/libs/utils/clsxm.ts (1)
  • clsxm (5-7)
apps/web/core/components/daily-plan/all-plans.tsx (11)
apps/web/core/components/users/user-profile-plans.tsx (1)
  • FilterTabs (39-39)
apps/web/core/types/schemas/user/user.schema.ts (1)
  • TUser (164-164)
apps/web/core/types/schemas/task/daily-plan.schema.ts (1)
  • TDailyPlan (94-94)
apps/web/core/stores/common/header-tabs.ts (1)
  • dailyPlanViewHeaderTabs (8-8)
apps/web/core/hooks/daily-plans/use-filter-date-range.ts (1)
  • filterDailyPlan (89-99)
apps/web/core/lib/helpers/drag-and-drop.ts (1)
  • handleDragAndDrop (5-37)
apps/web/core/lib/helpers/date-and-time.ts (1)
  • formatDayPlanDate (176-187)
apps/web/core/components/daily-plan/plan-header.tsx (1)
  • PlanHeader (17-163)
apps/web/core/components/tasks/daily-plan/table-view/index.tsx (1)
  • DailyPlanTasksTableView (29-76)
apps/web/core/components/optimized-components.tsx (1)
  • LazyTaskCard (13-19)
apps/web/core/components/daily-plan/empty-plans.tsx (1)
  • EmptyPlans (7-18)
apps/web/core/components/optimized-components.tsx (2)
apps/web/core/components/common/skeleton/activity-calendar-skeleton.tsx (1)
  • ActivityCalendarSkeleton (3-19)
apps/web/core/components/common/skeleton/profile-component-skeletons.tsx (6)
  • UserProfileDetailSkeleton (16-30)
  • UserProfileTaskSkeleton (170-199)
  • TaskFilterSkeleton (325-400)
  • AppsTabSkeleton (205-246)
  • VisitedSitesTabSkeleton (252-293)
  • ScreenshootTabSkeleton (299-319)
apps/web/core/components/duplicated-components/_progress-bar.tsx (1)
apps/server-web/src/renderer/libs/utils/clsxm.ts (1)
  • clsxm (5-7)
apps/web/core/components/users/user-profile-plans.tsx (2)
apps/web/core/components/tasks/daily-plan/task-estimated-count.tsx (2)
  • getTotalTasks (50-64)
  • estimatedTotalTime (32-48)
apps/web/core/hooks/daily-plans/use-daily-plan.ts (1)
  • FilterTabs (30-30)
apps/web/core/components/common/global-skeleton.tsx (2)
apps/web/core/stores/common/full-width.ts (1)
  • fullWidthState (3-3)
apps/web/core/components/common/skeleton/app-sidebar-skeleton.tsx (1)
  • AppSidebarSkeleton (16-120)
🪛 GitHub Actions: Knip Review - Cleanup Unused Code - WEB
apps/web/core/types/interfaces/user/user.ts

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/productivity-header-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/team-stats-grid-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/task-details-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/time-activity-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/productivity-stats-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/timesheet-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/loading-app.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/layouts/app/authenticator.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/reports-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/profile-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/team-dashboard-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/calendar-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/settings-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/layouts/skeletons/team-member-profile-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/layouts/skeletons/all-teams-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/layouts/skeletons/team-tasks-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/app-urls-dashboard-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/time-activity-skeletons.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/layouts/skeletons/kanban-page-skeleton.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/calendar-component-skeletons.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/duplicated-components/_progress-bar.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/profile-component-skeletons.tsx

[error] 1-1: Unused code detected in this file.

apps/web/core/components/common/skeleton/reports-component-skeletons.tsx

[error] 1-1: Unused code detected in this file.

🪛 GitHub Check: Cspell
apps/web/core/components/duplicated-components/_progress-bar.tsx

[warning] 108-108:
Unknown word (nécessaire)


[warning] 108-108:
Unknown word (quand)


[warning] 108-108:
Unknown word (seulement)

🪛 GitHub Actions: Check Spelling and Typos with cspell
apps/web/core/components/duplicated-components/_progress-bar.tsx

[warning] 108-108: cspell: Unknown word 'seulement' detected.


[warning] 108-108: cspell: Unknown word 'quand' detected.


[warning] 108-108: cspell: Unknown word 'nécessaire' detected.

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: deploy
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (102)
apps/web/core/components/common/sort-popover.tsx (1)

19-19: Good standardization of text sizes and label handling.

The changes improve consistency by using Tailwind's predefined text-xs utility class and properly handling label text wrapping.

Also applies to: 34-34, 44-44

apps/web/core/components/duplicated-components/_progress-bar.tsx (1)

137-207: ```shell
#!/bin/bash

Re-run usage checks without restricting file types

echo "=== Searching for SegmentedProgressBar usage ==="
rg "SegmentedProgressBar" -A 2

echo -e "\n=== Searching for SegmentedProgressBarVirtualized usage ==="
rg "SegmentedProgressBarVirtualized" -A 2


</details>
<details>
<summary>apps/web/core/components/common/skeleton/calendar-component-skeletons.tsx (1)</summary>

`1-251`: ```shell
#!/bin/bash
# Re-run searches without relying on file-type configs

echo "=== Checking SetupFullCalendarSkeleton usage ==="
rg "SetupFullCalendarSkeleton" --glob "*.tsx" --glob "*.ts" -n

echo -e "\n=== Checking SetupTimeSheetSkeleton usage ==="
rg "SetupTimeSheetSkeleton" --glob "*.tsx" --glob "*.ts" -n

echo -e "\n=== Checking AddManualTimeModalSkeleton usage ==="
rg "AddManualTimeModalSkeleton" --glob "*.tsx" --glob "*.ts" -n

echo -e "\n=== Checking imports from calendar-component-skeletons.tsx ==="
rg "calendar-component-skeletons" --glob "*.tsx" --glob "*.ts" -n -A2
apps/web/core/components/tasks/daily-plan/outstanding-all.tsx (1)

1-1: LGTM! Import path updated correctly.

The import path change aligns with the component refactoring that moved daily plan components to a dedicated directory, improving code organization.

apps/web/core/types/interfaces/user/user.ts (1)

69-69: LGTM! New property supports enhanced loading states.

The userLoading property enables components to conditionally render skeleton UIs during user data fetching, aligning with the PR's skeleton loading system implementation.

The pipeline failure about unused code is likely a false positive since this property was just added and may not have full usage across all components yet.

apps/web/core/components/pages/task/task-details.tsx (1)

8-8: LGTM! Skeleton component rename improves consistency.

The change from TaskDetailsAsideSkeleton to DetailsAsideSkeleton aligns with the broader effort to standardize skeleton component naming and improve reusability across the application.

Also applies to: 39-39

apps/web/app/[locale]/(main)/settings/loading.tsx (1)

1-5: LGTM! Clean loading component following Next.js conventions.

The component correctly implements Next.js route-level loading using the skeleton pattern, providing a smooth loading experience for the settings pages.

apps/web/core/hooks/auth/use-authenticate-user.ts (1)

114-114: LGTM! Property correctly exposes user data loading state.

The userLoading property appropriately exposes userDataQuery.isFetching to enable components to conditionally render skeleton UIs during user data fetching, supporting the comprehensive loading state improvements.

apps/web/app/[locale]/(main)/(teams)/team/[teamId]/[profileLink]/page.tsx (1)

20-20: Excellent implementation of page-level skeleton loading.

The skeleton implementation correctly follows React hooks rules by placing the early return after all hooks, preventing the "Rendered fewer hooks than expected" error. The loading conditions are appropriate and the comments clearly explain the logic.

Also applies to: 74-78

apps/web/core/components/daily-plan/index.ts (1)

7-10: Good modularization of daily-plan components.

The new exports support the refactoring effort to centralize daily-plan related components, improving code organization and reusability across the application.

apps/web/core/components/tasks/daily-plan/past-tasks.tsx (1)

3-3: Clean import reorganization supporting modularization.

The updated imports correctly reference the new locations of EmptyPlans and PlanHeader components after their migration to the daily-plan directory, supporting better code organization.

Also applies to: 17-17

apps/web/core/components/activities/activity-calendar.tsx (1)

10-10: LGTM! Skeleton consolidation aligns with PR objectives.

The replacement of the local ActivityCalendarSkeleton with a shared component from the common skeleton directory successfully consolidates loading states across the application, which is exactly what this PR aims to achieve.

apps/web/core/components/common/skeleton/productivity-header-skeleton.tsx (1)

1-23: Address the unused code detection.

The pipeline failure indicates unused code in this file. Please verify that this skeleton component is actually being imported and used somewhere in the codebase.

#!/bin/bash
# Description: Search for usage of ProductivityHeaderSkeleton component
# Expected: Find imports and usages of this component

echo "Searching for ProductivityHeaderSkeleton imports..."
rg -A 3 "ProductivityHeaderSkeleton"

echo -e "\nSearching for productivity-header-skeleton imports..."
rg -A 3 "productivity-header-skeleton"
apps/web/core/components/tasks/daily-plan/outstanding-date.tsx (2)

3-3: LGTM! Import path update reflects component modularization.

The updated import path correctly reflects the relocation of EmptyPlans and PlanHeader components from the user-profile-plans module to the dedicated daily-plan directory, improving component organization and reusability.


57-58: LGTM! Minor CSS class reordering.

The class reordering maintains functionality while improving consistency.

apps/web/core/components/pages/profile/user-profile-tasks.tsx (5)

5-5: LGTM! Suspense import added for lazy loading.

The addition of Suspense import supports the lazy loading implementation with proper loading fallbacks.


8-12: LGTM! Import updates support component modularization and lazy loading.

The import path updates reflect the daily-plan component modularization, and the addition of lazy components and skeleton imports properly supports the lazy loading strategy outlined in the PR objectives.


82-82: LGTM! TaskCard replaced with lazy-loaded version.

The replacement with LazyTaskCard improves bundle loading by deferring the component load until needed.


97-101: LGTM! Proper Suspense implementation for ActivityCalendar.

The LazyActivityCalendar is correctly wrapped in Suspense with ActivityCalendarSkeleton as fallback, providing a smooth loading experience for users while the component loads asynchronously.


119-119: LGTM! Consistent lazy loading for task list items.

The replacement with LazyTaskCard in the task list maintains consistency with the lazy loading strategy throughout the component.

apps/web/core/components/daily-plan/empty-plans.tsx (1)

1-18: LGTM! Well-implemented modular component.

The EmptyPlans component is properly extracted from the user-profile-plans module and follows React best practices with:

  • Proper TypeScript typing with FilterTabs interface
  • Internationalization support via useTranslations
  • Conditional messaging based on planMode
  • Clean, readable implementation

This modularization improves component reusability across different daily plan contexts.

apps/web/core/components/common/skeleton/productivity-stats-skeleton.tsx (1)

1-36: Well-structured skeleton component with proper TypeScript integration.

The component follows excellent patterns with consistent styling, dark mode support, and proper JSDoc documentation. The three-column layout appropriately mirrors the actual ProductivityStats component structure.

Regarding the pipeline failure indicating "unused code" - based on the retrieved learnings about progressive migration approaches in this codebase, this is expected behavior during the skeleton system rollout where infrastructure components are added before their usage.

apps/web/core/components/common/skeleton/profile-page-skeleton.tsx (1)

1-58: Excellent page-level skeleton implementation with proper layout integration.

This component demonstrates excellent architecture by seamlessly integrating with the existing MainLayout structure while providing comprehensive skeleton coverage for the profile page. The props interface is well-designed with sensible defaults, and the component properly uses sub-skeleton components for modularity.

Similar to the previous skeleton component, the pipeline failure indicating "unused code" is expected during the progressive migration approach used in this codebase.

apps/web/app/[locale]/(main)/settings/personal/page.tsx (2)

55-55: CSS class reordering improves consistency.

The reordering of flexbox classes maintains the same functionality while following a consistent ordering pattern.


115-118: Proper integration with skeleton loading system.

The addition of showPageSkeleton: true enables unified loading skeleton functionality, which aligns perfectly with the PR objectives for improving loading states across the application.

apps/web/core/components/pages/teams/all-teams/page-component.tsx (3)

21-21: Clean import of skeleton component.

The import follows the established pattern for skeleton components in this skeleton system implementation.


40-44: Correct early return placement and skeleton integration.

The early return for the skeleton is properly placed after all hooks, which prevents React's "Rendered fewer hooks than expected" error. The condition check and skeleton usage align perfectly with the loading state requirements.


51-55: Improved CSS class organization.

The reordering of flexbox and layout classes enhances consistency and readability while maintaining the same visual layout and functionality.

apps/web/core/components/tasks/daily-plan/future-tasks.tsx (2)

3-3: Correct import path update for relocated components.

The import path change from @/core/components/users/user-profile-plans to @/core/components/daily-plan properly reflects the component relocation described in the AI summary, where EmptyPlans and PlanHeader were moved to the daily-plan module.


72-73: Consistent CSS class ordering improvements.

The reordering of CSS classes improves consistency throughout the component while maintaining the same visual appearance and functionality.

Also applies to: 182-182, 185-185

apps/web/core/components/common/skeleton/task-details-page-skeleton.tsx (2)

3-8: LGTM! Component import renaming improves consistency.

The renaming from TaskDetailsAsideSkeleton to DetailsAsideSkeleton and TaskTitleBlockSkeleton to TitleBlockSkeleton makes these skeleton components more generic and reusable across different contexts.


1-1: The previous ripgrep invocation didn’t recognize .tsx as a file type, so let’s search across all .ts/.tsx files using glob patterns:

#!/bin/bash
echo "=== Verifying skeleton component usage across .ts/.tsx files ==="
for comp in DetailsAsideSkeleton TitleBlockSkeleton TaskDetailsPageSkeleton TaskDetailsHeaderSkeleton TaskDetailsCompactSkeleton; do
  echo ">>> Searching for $comp"
  rg -A3 "$comp" --glob '*.ts' --glob '*.tsx'
done
apps/web/app/[locale]/(main)/(teams)/team/tasks/page.tsx (1)

72-74: LGTM! Correct hook placement prevents React violations.

The early return is properly placed after all hooks, preventing "Rendered fewer hooks than expected" errors. The comment clearly explains this important implementation detail.

apps/web/core/components/daily-plan/plan-header.tsx (1)

17-163: LGTM! Well-structured component with good performance optimizations.

The PlanHeader component demonstrates excellent React practices:

  • Proper use of useMemo and useCallback for performance optimization
  • Clear separation of concerns with helper functions
  • Appropriate conditional rendering based on permissions and plan mode
  • Good state management for editable time functionality

The implementation correctly handles different plan modes and provides a comprehensive view of daily plan statistics.

apps/web/app/[locale]/(main)/kanban/page.tsx (2)

263-268: LGTM! Correct implementation of unified skeleton loading.

The early return pattern is properly implemented:

  • Correct hook placement after all hooks
  • Appropriate loading conditions checking for data availability
  • Consistent with the skeleton loading pattern used across the application
  • Clear comment explaining the hook placement requirement

445-451: LGTM! Simplified conditional rendering improves clarity.

The conditional rendering is streamlined and uses the lazy-loaded LazyKanbanView component when data is available, falling back to KanbanViewSkeleton when filtered board has no keys.

apps/web/core/components/pages/time-and-activity/page-component.tsx (2)

20-40: LGTM! Excellent lazy loading implementation for performance optimization.

The dynamic imports are well-structured:

  • Proper use of ssr: false for client-side components
  • Consistent naming convention with Lazy prefix
  • Clean module resolution with destructuring where needed

This will improve bundle splitting and initial load performance.


127-155: LGTM! Consistent usage of lazy-loaded components.

The lazy-loaded components are used appropriately throughout the render method, maintaining the same props and functionality while benefiting from code splitting.

apps/web/core/components/pages/timesheet/timesheet-page-content.tsx (2)

48-48: Good addition of unified page skeleton.

The import of TimesheetPageSkeleton aligns with the consistent skeleton loading pattern across the application.


378-378: Approve comment simplifications for lazy components.

The comment updates for lazy-loaded components improve readability while maintaining the performance benefits of dynamic imports with skeleton fallbacks.

Also applies to: 402-402, 428-428, 450-450

apps/web/app/[locale]/(main)/dashboard/team-dashboard/[teamId]/page.tsx (4)

19-20: Good addition of skeleton component imports.

The imports of TeamDashboardPageSkeleton and TeamStatsGridSkeleton follow the consistent skeleton loading pattern established across the application.


46-56: Excellent lazy loading implementation with skeleton fallback.

The LazyTeamStatsGrid component properly implements:

  • Dynamic import with module selection
  • Server-side rendering disabled for performance
  • Skeleton fallback during loading

This follows the established pattern and improves performance through code splitting.


92-95: Proper implementation of early return pattern.

The loading condition and early return are well-implemented:

  • Correctly placed after all hooks to avoid React errors
  • Clear loading condition checking both loading state and data availability
  • Good comment explaining the importance of hook ordering

The condition loading && (!rapportDailyActivity || rapportDailyActivity.length === 0) is more appropriate than some other implementations in this PR.


124-127: Clean integration of lazy-loaded component.

The LazyTeamStatsGrid is properly integrated with appropriate props, maintaining the existing functionality while adding loading optimization.

apps/web/core/components/common/skeleton/team-stats-grid-skeleton.tsx (1)

1-32: Excellent skeleton component implementation with minor concern.

The TeamStatsGridSkeleton component is well-implemented with:

  • Proper TypeScript interface and documentation
  • Responsive grid layout (5 columns) matching the real component
  • Consistent dark mode support and pulse animations
  • Appropriate card structure with title and value placeholders

However, there's a pipeline failure indicating unused code. Since this component is imported and used in the team dashboard page, this might be a false positive related to the default export or tool configuration.

Let me verify the component usage to confirm it's not actually unused:

#!/bin/bash
# Search for usage of TeamStatsGridSkeleton across the codebase
echo "=== Searching for TeamStatsGridSkeleton usage ==="
rg -A 3 -B 3 "TeamStatsGridSkeleton"

echo -e "\n=== Checking imports ==="
rg "from.*team-stats-grid-skeleton"

echo -e "\n=== Checking if component is used in lazy loading ==="
rg -A 5 "LazyTeamStatsGrid"
apps/web/app/[locale]/(main)/dashboard/app-url/[teamId]/page.tsx (4)

34-36: Good addition of skeleton component imports.

The imports follow the consistent skeleton loading pattern established across the application, including the full-page skeleton and component-specific skeletons.


50-72: Excellent lazy loading implementation for productivity components.

The lazy-loaded LazyProductivityHeader and LazyProductivityStats components are well-implemented:

  • Proper dynamic imports with module selection
  • Server-side rendering disabled for client-side optimization
  • Appropriate skeleton fallbacks during loading

This approach improves performance through code splitting while maintaining user experience with loading placeholders.


285-288: Proper early return pattern implementation.

The loading condition and early return are correctly implemented:

  • Placed after all hooks to avoid React errors
  • Appropriate loading condition checking both loading state and data availability
  • Returns unified page skeleton for consistent user experience

327-332: Clean integration of lazy-loaded components.

The LazyProductivityHeader and LazyProductivityStats components are properly integrated with appropriate props, maintaining existing functionality while adding performance optimization.

apps/web/core/components/layouts/app/authenticator.tsx (4)

1-1: Good addition of client directive.

The 'use client' directive ensures this component runs in the client environment, which is appropriate for authentication and modal handling.


8-14: Excellent import of lazy components and skeletons.

The imports of Suspense, BackdropLoader, GlobalSkeleton, ModalSkeleton, and lazy components align with the performance optimization strategy across the application.


62-71: Improved loading state handling.

The updated loading logic provides better user experience by showing visible loading indicators instead of empty fragments:

  • BackdropLoader for pages with skeleton support to prevent blank pages and browser crashes
  • GlobalSkeleton as fallback for other cases

This addresses the issue mentioned in the comment about direct URL access causing problems.


77-88: Excellent modal lazy loading implementation.

The refactoring of modals to use Suspense with lazy-loaded components (LazyCreateTeamModal and LazyJoinTeamModal) provides several benefits:

  • Code splitting for better performance
  • ModalSkeleton fallback during loading
  • Cleaner component structure

This follows the established pattern of lazy loading heavy components across the application.

However, there's a pipeline failure indicating unused code. Let me verify the component usage:

#!/bin/bash
# Check if the imports are actually used
echo "=== Checking BackdropLoader usage ==="
rg -A 2 -B 2 "BackdropLoader"

echo -e "\n=== Checking GlobalSkeleton usage ==="
rg -A 2 -B 2 "GlobalSkeleton"

echo -e "\n=== Checking lazy modal usage ==="
rg -A 2 -B 2 "LazyCreateTeamModal|LazyJoinTeamModal"

echo -e "\n=== Checking ModalSkeleton usage ==="
rg -A 2 -B 2 "ModalSkeleton"

Also applies to: 91-98

apps/web/app/[locale]/(main)/settings/layout.tsx (1)

3-5: LGTM! Good use of dynamic imports with skeleton fallbacks.

The implementation correctly uses dynamic imports with SSR disabled for the settings menu component, which will improve initial page load performance.

Also applies to: 18-28

apps/web/core/components/common/loading-app.tsx (1)

1-85: ```shell
#!/bin/bash

Search for direct imports of LoadingApp excluding its own file

grep -R "LoadingApp" -n . | grep -v "apps/web/core/components/common/loading-app.tsx"

Search for references to loading-app in dynamic imports or paths

grep -R "loading-app" -n . | grep -v "apps/web/core/components/common/loading-app.tsx"


</details>
<details>
<summary>apps/web/core/components/common/skeleton/timesheet-page-skeleton.tsx (2)</summary>

`11-20`: **LGTM! Well-structured skeleton component.**

The skeleton component properly integrates with MainLayout and provides comprehensive placeholders for all timesheet page sections. The JSDoc comment clearly describes the component's purpose and structure.

---

`1-238`: ```shell
#!/bin/bash
# Inspect usage of TimesheetPageSkeleton in the timesheet-page-content component
rg "TimesheetPageSkeleton" -n -C 3 apps/web/core/components/pages/timesheet/timesheet-page-content.tsx
apps/web/app/[locale]/(main)/settings/team/page.tsx (1)

27-91: LGTM! Excellent implementation of lazy loading with proper skeleton fallbacks.

The dynamic imports are correctly configured with SSR disabled and each component is properly wrapped in Suspense with appropriate skeleton fallbacks.

apps/web/core/components/common/skeleton/team-dashboard-page-skeleton.tsx (2)

11-21: LGTM! Excellent skeleton implementation with clear documentation.

The component provides a comprehensive skeleton that perfectly matches the team dashboard layout. The section markers (✅ SKELETON:) make it easy to understand which parts correspond to the actual page sections.


1-154: Verify component integration in team dashboard.

The pipeline indicates unused code. Please ensure this skeleton is properly imported and used in the team dashboard page.

#!/bin/bash
# Description: Verify TeamDashboardPageSkeleton usage

# Search for imports of TeamDashboardPageSkeleton
rg "TeamDashboardPageSkeleton" --type tsx --type ts -A 2 -B 2

# Check the specific team dashboard page file mentioned in the summary
fd -e tsx -e ts . | xargs rg -l "teamId.*page" | xargs rg -l "TeamDashboardPageSkeleton"
apps/web/core/components/layouts/skeletons/team-member-profile-page-skeleton.tsx (1)

1-134: Well-structured skeleton component with comprehensive coverage

The skeleton implementation is excellent - it properly integrates with MainLayout, preserves the page structure, and includes detailed placeholders for all UI sections. The consistent styling with pulse animations and dark mode support aligns well with the codebase patterns.

Regarding the pipeline failure about unused code: This appears to be a false positive. According to the AI summary, this skeleton is actually used in the page component at apps/web/app/[locale]/(main)/(teams)/team/[teamId]/[profileLink]/page.tsx. The warning likely occurs because the component is dynamically imported, which static analysis tools sometimes miss.

apps/web/core/components/common/skeleton/reports-page-skeleton.tsx (1)

1-153: Comprehensive Reports page skeleton with excellent detail

The skeleton accurately represents the Reports page layout with proper placeholders for breadcrumbs, filters, multiple report tables, and pagination. The implementation maintains consistency with the design system and provides good visual feedback during loading.

The pipeline failure about unused code is expected for dynamically imported components. Based on the context, this skeleton is utilized in apps/web/app/[locale]/(main)/reports/weekly-limit/page.tsx through dynamic imports.

apps/web/core/components/common/skeleton/time-activity-page-skeleton.tsx (1)

1-230: Exceptionally detailed Time Activity skeleton implementation

This skeleton provides comprehensive coverage for the Time and Activity page with well-structured placeholders for statistics cards, daily activity sections, and complex table layouts. The use of the Card component and proper spacing creates an accurate representation of the actual page layout.

The pipeline warning about unused code is consistent with other skeleton files and is likely due to dynamic imports used in the Time and Activity page component.

apps/web/core/components/common/skeleton/app-urls-dashboard-page-skeleton.tsx (1)

1-177: Well-crafted App URLs Dashboard skeleton with chart support

The skeleton effectively represents the dashboard layout including the productivity chart area, complex tables with icon placeholders, and detailed pagination controls. The attention to detail in representing different cell types (icons, progress bars, etc.) provides excellent visual continuity during loading.

As with other skeleton files, the unused code warning is expected due to the dynamic import pattern used throughout the application.

apps/web/app/[locale]/(main)/profile/[memberId]/page.tsx (4)

94-98: Excellent placement of skeleton loading state

Great attention to React hook rules by placing the skeleton return statement after all hooks. This prevents the "Rendered fewer hooks than expected" error that could occur if the early return happened before hook declarations. The comment clearly documents this important consideration.


145-153: Proper Suspense boundary implementation for Timer

Good use of Suspense with the TimerSkeleton fallback for the lazy-loaded Timer component. This provides a smooth loading experience for this frequently updated component.


171-172: Nice UX enhancement with transitions

The addition of hover states and transition effects improves the user experience when switching between activity filter tabs. The font weight change for the active tab provides clear visual feedback.


100-101: ```shell
#!/bin/bash

Search for all occurrences of unwrappedParams.memberId in TS and TSX files

rg -n "unwrappedParams.memberId" -g ".ts" -g ".tsx"

Search for the specific condition members.length > 0 && !unwrappedParams.memberId across the codebase

rg -n "members.length > 0 && !unwrappedParams.memberId" -g ".ts" -g ".tsx"


</details>
<details>
<summary>apps/web/core/components/common/skeleton/rich-text-editor-skeleton.tsx (1)</summary>

`109-109`: **Good refactoring to make the component more generic.**

Renaming from `TaskDetailsAsideSkeleton` to `DetailsAsideSkeleton` improves reusability by removing the task-specific naming, allowing this skeleton to be used for other types of detail sidebars.

</details>
<details>
<summary>apps/web/core/components/users/user-profile-plans.tsx (1)</summary>

`157-173`: **Excellent performance optimization with memoized task counts.**

The introduction of `totalTasksDailyPlansMap` effectively memoizes expensive task count calculations, preventing unnecessary recalculations on each render. The implementation correctly handles all tab types and user-specific filtering.

</details>
<details>
<summary>apps/web/core/components/common/skeleton/timesheet-skeletons.tsx (1)</summary>

`82-261`: **CSS class reordering looks good.**

The CSS class reordering improves consistency without affecting functionality.

</details>
<details>
<summary>apps/web/app/[locale]/(main)/calendar/page.tsx (3)</summary>

`27-50`: **Well-implemented lazy loading with proper skeleton fallbacks.**

The dynamic imports with `ssr: false` and skeleton loading states provide a smooth user experience while improving initial page load performance.

---

`67-69`: **Good defensive programming with early return.**

Returning the skeleton component when `activeTeam` is not available prevents potential runtime errors and provides a consistent loading experience.

---

`81-88`: **Clean refactoring from switch to object map.**

The object map pattern with memoization is more maintainable and performant than the switch statement.

</details>
<details>
<summary>apps/web/core/components/common/skeleton/calendar-page-skeleton.tsx (1)</summary>

`16-186`: **Well-structured skeleton component with comprehensive coverage**

The skeleton accurately mimics the calendar page layout with proper integration into MainLayout, responsive design considerations, and dark mode support. The pulse animations and color schemes are consistent with the design system.

</details>
<details>
<summary>apps/web/app/[locale]/(main)/reports/weekly-limit/page.tsx (1)</summary>

`31-102`: **Excellent implementation of dynamic imports with skeleton fallbacks**

The lazy loading strategy with dedicated skeleton components for each UI element provides granular loading states and improves initial page load performance.

</details>
<details>
<summary>apps/web/core/components/layouts/skeletons/kanban-page-skeleton.tsx (1)</summary>

`16-174`: **Comprehensive kanban skeleton with pixel-perfect layout matching**

The skeleton accurately represents all kanban UI elements including breadcrumbs, filters, columns, and task cards. The implementation maintains layout integrity during loading.

</details>
<details>
<summary>apps/web/core/components/layouts/skeletons/team-tasks-page-skeleton.tsx (1)</summary>

`16-155`: **Well-implemented team tasks skeleton with accurate layout representation**

The skeleton component properly mimics the team tasks page structure including breadcrumbs, status badges, filters, task table, and pagination. The implementation follows established patterns.

</details>
<details>
<summary>apps/web/core/components/daily-plan/all-plans.tsx (2)</summary>

`28-204`: **Well-structured daily plans component with drag-and-drop functionality**

The component effectively handles plan filtering, view modes, and drag-and-drop reordering. Good use of lazy loading for performance optimization.

---

`75-76`: I wasn’t able to locate the component imports or the `handleDragAndDrop` definition yet. Let’s dump the top of the file around the `@ts-ignore` and find the helper signature so we can see the exact types in use:


```shell
#!/bin/bash
# Show imports and onDragEnd usage (first 200 lines)
sed -n '1,200p' apps/web/core/components/daily-plan/all-plans.tsx

# Find where handleDragAndDrop is defined, with a few lines of context
rg -n "export const handleDragAndDrop" -A5 -B2 apps/web
apps/web/core/components/common/skeleton/settings-page-skeleton.tsx (2)

13-17: Excellent component documentation and structure

The JSDoc comments clearly explain the component's purpose and structure. The integration with MainLayout without "swallowing it up" shows thoughtful design consideration.


1-192: ```shell
#!/bin/bash

Description: Verify usage of exported skeleton components across all TS/TSX files without relying on predefined types

echo "=== Checking SettingsPageSkeleton usage ==="
rg "SettingsPageSkeleton" -g ".ts" -g ".tsx" -A2 -B2 || echo "No occurrences found"

echo "=== Checking LeftSideSettingMenuSkeleton usage ==="
rg "LeftSideSettingMenuSkeleton" -g ".ts" -g ".tsx" -A2 -B2 || echo "No occurrences found"

echo "=== Checking SettingsContentPageSkeleton usage ==="
rg "SettingsContentPageSkeleton" -g ".ts" -g ".tsx" -A2 -B2 || echo "No occurrences found"


</details>
<details>
<summary>apps/web/core/components/common/global-skeleton.tsx (3)</summary>

`1-12`: **Excellent refactoring with performance optimizations**

The addition of the `"use client"` directive, lazy loading of `AppSidebarSkeleton`, and integration with `SidebarProvider` demonstrates good architectural improvements. The TypeScript interface for props is properly defined.

---

`15-26`: **Well-structured layout integration**

The integration with `AppContainer`, `SidebarProvider`, and responsive styling using the `fullWidthState` atom shows thoughtful design. The header styling maintains consistency with the existing design system.

---

`52-83`: **Consistent skeleton structure with good modularity**

The skeleton content is well-organized into logical sections (task input, content blocks) with consistent styling patterns. The use of `Container` components with `fullWidth` prop ensures responsive behavior.

</details>
<details>
<summary>apps/web/core/components/optimized-components.tsx (2)</summary>

`1-26`: **Excellent lazy loading implementation with proper skeleton fallbacks**

The use of Next.js dynamic imports with `ssr: false` and skeleton loading components provides optimal performance and user experience. The import path restructuring using `then()` is correctly implemented.

---

`28-51`: **Well-organized component priorities with appropriate skeletons**

The prioritization comments (Priority 1: Profile, Priority 2: Task components marked as CRITICAL) help understand the loading importance. The skeleton fallbacks match the component complexity appropriately.

</details>
<details>
<summary>apps/web/core/components/common/skeleton/settings-skeletons.tsx (4)</summary>

`1-51`: **Excellent component structure and documentation**

The `TeamSettingFormSkeleton` component is well-structured with clear JSDoc documentation. The layout matches typical form patterns with avatar, form fields, and action buttons. The styling is consistent with the design system.

---

`57-98`: **Well-designed table skeleton structure**

The `InvitationSettingSkeleton` accurately represents an invitation management interface with form and table elements. The grid layout and responsive design considerations are properly implemented.

---

`154-186`: **Effective grid-based integration skeleton**

The `IntegrationSettingSkeleton` uses an appropriate grid layout for integration cards. The card structure with icon, name, description, and toggle switch matches typical integration UI patterns.

---

`248-274`: **Appropriate danger zone styling**

The `DangerZoneTeamSkeleton` correctly uses red-themed backgrounds (`bg-red-50`, `dark:bg-red-900/20`) to indicate dangerous actions, maintaining visual consistency with typical danger zone UIs.

</details>
<details>
<summary>apps/web/core/components/common/skeleton/time-activity-skeletons.tsx (3)</summary>

`70-177`: **Comprehensive and well-structured activity table skeleton**

The `ActivityTableSkeleton` component excellently captures the complexity of daily activity tables with proper header sections, member/project/task cells, and pagination. The structure demonstrates attention to detail in matching the real component layout.

---

`183-274`: **Excellent weekly view table skeleton structure**

The `TimeActivityTableSkeleton` properly represents weekly grouped data with summary statistics and comprehensive table rows. The Card wrapper and layout structure align well with typical weekly reporting interfaces.

---

`1-282`: To confidently rule out false positives, let’s search all TS/TSX files without restricting by file type:


```shell
#!/bin/bash
# Search for any imports or references to the skeleton file or its exports

echo "=== Searching for direct imports from time-activity-skeletons.tsx ==="
rg "from ['\"].*time-activity-skeletons" -g "*.ts" -g "*.tsx"

echo

echo "=== Searching for individual component references ==="
components=(
  TimeActivityHeaderSkeleton
  CardTimeAndActivitySkeleton
  ActivityTableSkeleton
  TimeActivityTableSkeleton
)
for comp in "${components[@]}"; do
  echo "---- $comp ----"
  rg "$comp" -g "*.ts" -g "*.tsx" || echo "No references found for $comp"
  echo
done
apps/web/core/components/common/skeleton/profile-component-skeletons.tsx (2)

1-411: Excellent skeleton component implementation with comprehensive coverage.

This file provides a well-structured set of skeleton components for profile-related UI elements. The implementation follows best practices with TypeScript interfaces, JSDoc documentation, consistent styling patterns, and proper dark mode support. The pixel-perfect approach to matching real component layouts will enhance user experience during loading states.


1-1: Acknowledge unused code as part of progressive migration.

The pipeline failure indicates unused code, which aligns with the team's progressive migration approach where skeleton infrastructure is added before full integration. This is expected behavior during the skeleton system rollout.

Based on retrieved learnings, the team uses a progressive migration approach where infrastructure components like these skeletons are added first before implementing the services that use them, resulting in intentionally unused code during intermediate migration states.

apps/web/core/components/common/skeleton/reports-component-skeletons.tsx (2)

1-233: Well-implemented skeleton components for reports functionality.

This file provides comprehensive skeleton components for reports-related UI elements. The implementation maintains consistency with the profile skeletons, follows TypeScript best practices, includes proper JSDoc documentation, and uses consistent styling patterns with dark mode support. The table skeletons accurately represent complex data structures with appropriate visual hierarchy.


1-1: Acknowledge unused code as part of progressive migration.

The pipeline failure for unused code is expected behavior during the skeleton system implementation phase. These components will be integrated as the lazy loading and progressive enhancement features are rolled out.

This aligns with the team's established progressive migration approach where skeleton infrastructure is added before full integration.

apps/web/core/components/pages/time-and-activity/activity-level-cell.tsx (2)

11-12: Utility-class re-ordering is okay

The swap to flex gap-2 items-center is purely cosmetic and has no functional impact. Looks good.


27-29: Same here – no functional change

Just acknowledging the identical cosmetic tweak in the “active” branch.

apps/web/core/components/projects/filters-card-modal.tsx (2)

240-241: shadow="custom" is silently ignored by EverCard

EverCard only applies a shadow when shadow === 'bigger'; any other value is effectively a no-op. If you intended to get a different shadow style, either:

-<EverCard className="w-full h-full border" shadow="custom">
+<EverCard className="w-full h-full border" shadow="bigger">

or leave the prop off entirely and style via className.


136-138: Status filter stores name instead of id

handleStatusChange persists status.value (the name) while every other filter stores the entity id.
This is fine if status names are globally unique and immutable, but it’s inconsistent and can break when two statuses share the same name or the name changes.

Consider switching to IDs for parity with the other filters.

Copy link

⚠️ Unused code detected in the following changed files:

  • apps/web/core/components/common/loading-app.tsx
  • apps/web/core/components/common/skeleton/app-urls-dashboard-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/calendar-component-skeletons.tsx
  • apps/web/core/components/common/skeleton/calendar-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/productivity-header-skeleton.tsx
  • apps/web/core/components/common/skeleton/productivity-stats-skeleton.tsx
  • apps/web/core/components/common/skeleton/profile-component-skeletons.tsx
  • apps/web/core/components/common/skeleton/profile-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/reports-component-skeletons.tsx
  • apps/web/core/components/common/skeleton/reports-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/settings-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/task-details-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/team-dashboard-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/team-stats-grid-skeleton.tsx
  • apps/web/core/components/common/skeleton/time-activity-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/time-activity-skeletons.tsx
  • apps/web/core/components/common/skeleton/timesheet-page-skeleton.tsx
  • apps/web/core/components/duplicated-components/_progress-bar.tsx
  • apps/web/core/components/layouts/app/authenticator.tsx
  • apps/web/core/components/layouts/skeletons/all-teams-page-skeleton.tsx
  • apps/web/core/components/layouts/skeletons/kanban-page-skeleton.tsx
  • apps/web/core/components/layouts/skeletons/team-member-profile-page-skeleton.tsx
  • apps/web/core/components/layouts/skeletons/team-tasks-page-skeleton.tsx
  • apps/web/core/components/tasks/kanban.tsx
  • apps/web/core/types/interfaces/user/user.ts

Please review these files and clean up the unused code.

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

♻️ Duplicate comments (1)
apps/web/core/components/duplicated-components/_progress-bar.tsx (1)

45-45: Fix inconsistent progress value usage in style.

You're using the raw progress prop instead of the parsed progressValue for the width style, which could cause layout issues when progress is a string.

-	const progressStyle = useMemo(() => ({ width: progress }), [progress]);
+	const progressStyle = useMemo(() => ({ width: `${progressValue}%` }), [progressValue]);
🧹 Nitpick comments (3)
apps/web/core/components/duplicated-components/_progress-bar.tsx (3)

102-113: Simplify segment generation by removing unnecessary Map usage.

The Map-based approach adds unnecessary complexity without performance benefits. A simple array generation would be more readable and equally efficient.

-	// Optimized memoization of segments with Map
-	const segments = useMemo(() => {
-		const segmentMap = new Map<number, { isActive: boolean; key: string }>();
-
-		for (let i = 0; i < totalSegments; i++) {
-			segmentMap.set(i, {
-				isActive: i < activeSegments,
-				key: `segment-${i}-${activeSegments}` // Stable key that only changes when necessary
-			});
-		}
-
-		return segmentMap;
-	}, [totalSegments, activeSegments]);
+	// Generate segments array
+	const segments = useMemo(() => {
+		return Array.from({ length: totalSegments }, (_, i) => ({
+			isActive: i < activeSegments,
+			key: `segment-${i}-${activeSegments}` // Stable key that only changes when necessary
+		}));
+	}, [totalSegments, activeSegments]);

116-124: Eliminate redundant memoization in segment rendering.

The renderedSegments memoization creates an additional layer of complexity. You can render segments directly in the JSX since the segments array is already memoized.

-	// Optimized generation of segments
-	const renderedSegments = useMemo(() => {
-		const segmentElements: JSX.Element[] = [];
-
-		for (const [, { isActive, key }] of segments) {
-			segmentElements.push(<ProgressSegment key={key} isActive={isActive} colorClass={colorClass} />);
-		}
-
-		return segmentElements;
-	}, [segments, colorClass]);

And update the JSX to:

-				{renderedSegments}
+				{segments.map(({ isActive, key }) => (
+					<ProgressSegment key={key} isActive={isActive} colorClass={colorClass} />
+				))}

46-52: Consider reducing over-memoization for simple object creation.

Memoizing simple object creation like backgroundStyle and containerClassName may not provide significant performance benefits and adds complexity. These optimizations are likely premature.

-	const backgroundStyle = useMemo(() => ({ backgroundColor }), [backgroundColor]);
-
-	// Memoization of CSS classes
-	const containerClassName = useMemo(
-		() => clsxm('flex justify-between items-center relative', className),
-		[className]
-	);
+	const backgroundStyle = { backgroundColor };
+	const containerClassName = clsxm('flex justify-between items-center relative', className);
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between a2bba94 and 16f992d.

📒 Files selected for processing (5)
  • apps/web/app/[locale]/(main)/(teams)/team/tasks/page.tsx (6 hunks)
  • apps/web/core/components/common/skeleton/settings-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/duplicated-components/_progress-bar.tsx (3 hunks)
  • apps/web/core/components/layouts/skeletons/kanban-page-skeleton.tsx (1 hunks)
  • apps/web/core/components/pages/timesheet/timesheet-page-content.tsx (6 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • apps/web/app/[locale]/(main)/(teams)/team/tasks/page.tsx
  • apps/web/core/components/layouts/skeletons/kanban-page-skeleton.tsx
  • apps/web/core/components/common/skeleton/settings-page-skeleton.tsx
  • apps/web/core/components/pages/timesheet/timesheet-page-content.tsx
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: NdekoCode
PR: ever-co/ever-teams#3887
File: apps/web/core/query/keys/index.ts:41-58
Timestamp: 2025-06-07T04:31:16.865Z
Learning: The team uses a progressive migration approach for React Query implementation, where query key infrastructure is added first before implementing the hooks/services that use them. This results in intentionally unused code during intermediate migration states.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3234
File: apps/web/components/pages/team/tasks/TaskTable.tsx:9-13
Timestamp: 2024-11-06T17:10:06.239Z
Learning: In the `TaskTable` component (`apps/web/components/pages/team/tasks/TaskTable.tsx`), we do not need to add error handling for task fetching when using `useTeamTasks()`.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3328
File: apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx:66-78
Timestamp: 2024-11-13T05:17:33.527Z
Learning: In the `UserTeamActivity` component (`apps/web/lib/features/team/user-team-card/user-team-card-activity.tsx`), the `overflow-hidden` class is intentionally applied only to the first `Tab.Panel` because the hidden overflow is needed when the sub-component has not yet been made visible. Applying `overflow-hidden` to the other `Tab.Panel` components is not required.
apps/web/core/components/duplicated-components/_progress-bar.tsx (9)
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:45.111Z
Learning: In `apps/web/components/ui/sidebar.tsx`, modifications to the keyboard shortcut implementation within `React.useEffect` can cause build errors. The current implementation has been validated by shadcn-ui and should remain unchanged.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:14-19
Timestamp: 2024-10-25T15:16:53.869Z
Learning: In `apps/web/components/ui/sidebar.tsx`, cookie configuration enhancements including `secure` and `httpOnly` flags, and making cookie name and max age configurable via environment variables, have already been implemented in previous commits.
Learnt from: CREDO23
PR: ever-co/ever-teams#3353
File: apps/web/lib/features/task/task-input.tsx:812-815
Timestamp: 2024-11-20T19:56:12.313Z
Learning: In `apps/web/lib/features/task/task-input.tsx`, prefer using `useRef` over `useState` for `assignees` in the `AssigneesSelect` component to prevent re-renders on change.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3199
File: apps/web/components/nav-main.tsx:74-90
Timestamp: 2024-10-28T17:28:53.268Z
Learning: In `apps/web/components/nav-main.tsx`, prefer to keep className styles inline instead of extracting repeated logic into shared classes.
Learnt from: CREDO23
PR: ever-co/ever-teams#3360
File: apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx:346-354
Timestamp: 2024-11-25T18:49:15.126Z
Learning: In `apps/web/components/pages/task/details-section/blocks/task-secondary-info.tsx`, within the `ProjectDropDown` component, both parent and child state should be synchronized for better UI updates, even in controlled mode. The `onChange` function carries the parent state, and `setSelected` maintains the selected state in the child component.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:132-217
Timestamp: 2024-10-25T15:17:29.070Z
Learning: Components derived from shadcn-ui have already been checked for performance optimizations; additional performance optimizations may not be necessary.
Learnt from: NdekoCode
PR: ever-co/ever-teams#3189
File: apps/web/components/ui/sidebar.tsx:77-87
Timestamp: 2024-10-25T15:15:35.107Z
Learning: In `apps/web/components/ui/sidebar.tsx`, keyboard shortcut accessibility has already been reviewed and approved by shadcn-ui; further suggestions in this area are unnecessary.
Learnt from: CREDO23
PR: ever-co/ever-teams#3185
File: apps/web/lib/settings/task-statuses-form.tsx:187-199
Timestamp: 2024-11-07T14:04:24.336Z
Learning: In `apps/web/lib/settings/task-statuses-form.tsx`, when generating colors in the `getRandomColor` function, prefer to keep generating them randomly to have more than five colors, even if it might affect color accessibility.
Learnt from: CREDO23
PR: ever-co/ever-teams#3626
File: apps/web/app/[locale]/projects/components/page-component.tsx:119-119
Timestamp: 2025-02-28T09:17:46.802Z
Learning: In the projects page component, filtering of projects based on the active team has been moved out of the useEffect hook that fetches organization projects, and is now handled in the pagination logic instead.
🧬 Code Graph Analysis (1)
apps/web/core/components/duplicated-components/_progress-bar.tsx (1)
apps/server-web/src/renderer/libs/utils/clsxm.ts (1)
  • clsxm (5-7)
🪛 GitHub Actions: Knip Review - Cleanup Unused Code - WEB
apps/web/core/components/duplicated-components/_progress-bar.tsx

[error] 1-1: Unused code detected in this file.

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: deploy
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (1)
apps/web/core/components/duplicated-components/_progress-bar.tsx (1)

1-207: To accurately detect usage, let’s rerun searches without the unsupported --type flags and instead use glob patterns:

#!/bin/bash
echo "=== Checking for imports of progress bar components ==="
rg "from .*_progress-bar" -g "*.tsx" -g "*.ts" -A 2 -B 2

echo "=== Checking for usage of ProgressBar ==="
rg -w "ProgressBar" -g "*.tsx" -g "*.ts" -A 2 -B 2

echo "=== Checking for usage of SegmentedProgressBar ==="
rg -w "SegmentedProgressBar" -g "*.tsx" -g "*.ts" -A 2 -B 2

@NdekoCode NdekoCode merged commit a7efe17 into develop Jun 27, 2025
14 of 16 checks passed
@NdekoCode NdekoCode deleted the feature/complete-application-skeleton-system branch June 27, 2025 06:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Ever Teams Improvement Improvement performance WEB Web app
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[Performance] Optimize High-Impact Components with Lazy Loading on Ever Teams Web
1 participant