Skip to content

fix: resolve all type errors#1049

Closed
kolaente wants to merge 274 commits intomainfrom
fix-type-errors
Closed

fix: resolve all type errors#1049
kolaente wants to merge 274 commits intomainfrom
fix-type-errors

Conversation

@kolaente
Copy link
Member

No description provided.

@kolaente kolaente changed the title Fix type errors fix: resolve all type errors Jun 30, 2025
@kolaente kolaente force-pushed the fix-type-errors branch 2 times, most recently from 7a009d6 to 93fa6fe Compare July 3, 2025 10:16
@kolaente kolaente marked this pull request as ready for review July 3, 2025 10:16
Claude Code and others added 26 commits July 3, 2025 16:54
- Convert v-for index parameters to strings in template expressions
- Ensure formatPermissionTitle receives string parameters
- Fix function call compatibility in permission handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add null check before calling setDate to prevent TypeScript error
when modelValue is null, which is allowed by the component props.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Update notification service to return NotificationModel instances
- Fix function parameter types (Event -> MouseEvent, add type annotations)
- Add null checks for popup element and notification properties
- Use type assertions for notification union types in switch statements

This ensures the toText() method is available and all type checking passes.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
ProjectSettingsDropdown:
- Allow null subscription parameter in setSubscriptionInStore function
- Remove non-existent utilities import

ProjectWrapper:
- Fix readonly type issues with getViewTitle function parameter
- Add proper null handling in currentProject computed property

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add explicit type annotations for function parameters
- Fix EventTarget property access with proper type casting
- Handle multiple input types (string  < /dev/null |  Date | null) in updateDateInQuery
- Fix service calls with proper parameter typing
- Add null checks and type guards for date handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Replace replaceAll() with regex for ES2020 compatibility
- Add optional chaining for potentially undefined tokenToDelete

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Use type assertion for authProvider property access
- Add explicit type annotation for blob parameter in canvas callback

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
CalDAV:
- Use type assertion for token property access (API response includes token field)
- Fix service create call with proper type casting

TOTP:
- Fix service get call with type assertion for empty object parameter

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Deletion settings:
- Add null fallback for deletionScheduledAt to ensure string < /dev/null | Date parameter

General settings:
- Use type assertion for authProvider property access
- Add type casting for readonly store data in computed properties
- Add null checks for array index access to prevent null index errors
- Fix readonly array type issues with explicit type annotations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…nfig

The NodeNext module resolution in the root tsconfig.json was causing 1000+
TypeScript errors by enforcing stricter Node.js module semantics that conflict
with Vue.js/Vite bundler expectations. Removing this setting restores the
appropriate ESNext module resolution for frontend components while allowing
individual sub-configurations to use their optimal module resolution strategies.

This reduces type errors from 1000+ down to ~200-300 legitimate type safety
issues that need individual fixes.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add claude-code package to devenv.nix for development tooling support.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Update lock file with latest versions of devenv dependencies including
git-hooks.nix and nixpkgs.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix Flow syntax to TypeScript in ITaskBucket interface (?ITask -> ITask  < /dev/null |  null)
- Change TaskBucketModel to use null instead of undefined for interface compliance
- Add missing projectViewId property to BucketModel
- Fix projectId type from string to number in BucketModel

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix FilterPopup initialization with proper TaskFilterParams default values
- Add type guard for route.name to handle string  < /dev/null |  symbol type in Filters
- Fix missing parameter in change() function call

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add null coalescing for baseStore.currentProject.maxRight
- Convert ISO string dates to Date objects for task creation
- Ensure proper Date type compliance for startDate and endDate

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive null checks for project.value throughout component
- Fix readonly type compatibility with proper casting for isSavedFilter
- Add explicit typing for drag event parameter
- Fix setTimeout return type casting for browser environment
- Add null coalescing for baseStore.currentProject.maxRight
- Fix type compatibility issues with project store updates
- Ensure proper null safety for all project property access

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add null check and type casting for isSavedFilter function call
- Fix duplicate IProject import declaration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
The SortBy interface was missing the 'position' property which is used
in ProjectList.vue for default sorting. This caused TypeScript errors
when trying to use {position: 'asc'} as sort parameters.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…f Date | undefined

Task model properties like dueDate, startDate, endDate, and doneAt are
defined as Date | null, but DateTableCell expected Date | undefined.
This was causing type assignment errors in ProjectTable.vue.

Updated the component to handle null values properly with appropriate
null checks in the template.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
The isSavedFilter function was expecting a mutable IProject but receiving
readonly projects from the store. Since the function only needs the 'id'
property and doesn't mutate the project, it can safely accept readonly
project objects.

Changed parameter type to Pick<IProject, 'id'>  < /dev/null |  null to be more flexible
and eliminate readonly assignment errors.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Fixed multiple TypeScript errors in ProjectList.vue:

- Added null checks for project access in template (project?.isArchived, project?.id)
- Added null checks for project.maxRight in canWrite computed
- Fixed index signature issue by typing tasksById as Record<number, boolean>
- Added proper type annotation for saveTaskPosition event parameter
- Added null check for canDragTasks computed property

These changes ensure proper null safety and prevent runtime errors
when project data is not yet loaded.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Added new TypeScript interfaces:

- ILoginCredentials: defines the structure for login request including
  optional totpPasscode property for two-factor authentication
- IApiErrorResponse: defines the structure for API error responses
  with code and message properties

These interfaces improve type safety for authentication flows and
error handling throughout the application.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Fixed TypeScript errors in the authentication flow:

- Updated Login.vue to use ILoginCredentials interface for proper typing
  of credentials object including totpPasscode property
- Added proper type annotation for exception handling with AxiosError
- Updated auth store login function to accept typed credentials
- Added type annotation for getErrorText function parameter

These changes ensure type safety throughout the login process and
proper error handling for API responses.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Fixed multiple TypeScript errors in ViewEditForm.vue:

- Corrected import from IFilter to IFilters (proper export name)
- Added all required properties to IFilters objects (sort_by, order_by,
  filter_include_nulls, s) instead of partial objects
- Initialized view ref with modelValue to prevent undefined access
- Added null checks for filter and bucketConfiguration properties
- Added non-null assertion for template filter access
- Updated bucket configuration push to include complete IFilters object

These changes ensure proper type safety and prevent runtime errors
when working with project view configurations.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Fixed TypeScript errors in QuickActions.vue:

- Fixed string to number conversion issues by wrapping v-for indices
  with Number() for setResultRefs and arithmetic operations
- Added type assertion and null checks for result items to prevent
  unsafe type conversions and null property access
- Used 'any' type assertions where complex union types made strict
  typing impractical while maintaining functionality

These changes resolve immediate type safety issues while preserving
the component's dynamic behavior with mixed result types.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Fixed TypeScript errors in ProjectTable.vue:

- Created ActiveColumns interface with index signature to allow
  string-based property access for column configuration
- Added proper typing to ACTIVE_COLUMNS_DEFAULT constant
- Added generic type parameter to useStorage for activeColumns
- Fixed setActiveColumnsSortParam function by adding type assertions
  for key access and properly typing the reduce accumulator

These changes resolve string index signature errors and ensure
type safety when working with dynamic column configurations.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Claude Code and others added 22 commits July 3, 2025 16:55
- Fixed ProjectList.vue component ref typing with proper Vue component detection
- Fixed EditTeam.vue team member deletion to use full ITeamMember objects
- Fixed team leave functionality with proper object construction
- Progress: 172 → 166 TypeScript errors (6 more errors eliminated)
- Overall: 338 → 166 total errors (51% reduction achieved\!)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix type errors in attachment, project duplicate, reactions services
- Fix type errors in task, task collection, task comment services
- Fix type errors in team member, team project, user project services

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix type errors in auth, config, kanban, and tasks stores
- Improve type safety in state management layer

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix type errors in internationalization setup

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Update devenv.nix configuration
- Update PLAN.md with current progress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Remove duplicate import of TaskCollectionService on line 6
- Keep the import with type annotation on line 33
- Fixes TypeScript duplicate identifier error

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix implicit any type for viewId in object literals (lines 264, 307)
- Add explicit type annotation for taskIndex variable in getTaskIndicesById
- Resolve TypeScript implicit any type errors

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Change events = [] to events: string[] = []
- Fixes TypeScript inference of never[] type
- Resolves string[] not assignable to never[] error

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add null check for User component in ProjectSettingsWebhooks.vue
- Add type assertions for Multiselect component props in EditTeam.vue
- Fixes IUser type compatibility with component interfaces

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Use type assertion for readonly currentProject in removeBackground function
- Cast readonly project from store to mutable IProject type
- Fixes readonly properties cannot be assigned to mutable types errors

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add proper type declarations for service worker global scope
- Fix importScripts and addEventListener typing
- Add NotificationEvent interface for notification handling
- Remove ts-expect-error comments and improve type safety

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add explicit type annotations for migration configuration
- Fix service response type handling with proper type assertions
- Add missing maxRight property to migration config

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add proper type checking for current project object
- Prevent type errors when project is just a number vs full object
- Import IProject interface for better type definitions

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add index signature to GanttFilters interface for dynamic properties
- Fix task collection service call with proper type casting
- Improve type safety for filter parameters and task loading

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix BackgroundImageModel constructor call with proper empty object
- Improve background service thumb method call with correct parameters
- Add proper type casting for background update service response

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add TypeScript compilation options to Cypress config to fix "exports is not defined in ES module scope" error. The configuration ensures proper CommonJS module compilation while maintaining TypeScript support.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
The TypeScript configuration with module: 'commonjs' conflicted with the ES module setup in package.json, causing "exports is not defined in ES module scope" error.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@kolaente
Copy link
Member Author

kolaente commented Oct 8, 2025

Superseeded by #1528

@kolaente kolaente closed this Oct 8, 2025
@kolaente kolaente deleted the fix-type-errors branch October 8, 2025 21:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant