Commit Graph

12422 Commits

Author SHA1 Message Date
Mithilesh Gupta 7dddc5dfa2
feat: task unread tracking (#1857)
---------

Co-authored-by: Mithilesh Gupta <guptamithilesh@protonmail.com>
Co-authored-by: kolaente <k@knt.li>
2025-11-27 15:14:42 +01:00
kolaente 2976d6f676 fix: use shift+r for reminder shortcut on apple devices 2025-11-26 23:58:01 +01:00
kolaente 869bb6e014 docs: fix sticker link 2025-11-26 23:58:01 +01:00
kolaente f7acdf4ac1
fix: don't try to switch to project 0 when reloading the page (#1855) 2025-11-26 23:28:05 +01:00
kolaente 34575e4eb7 fix(editor): don't convert text that's pasted into a code block to markdown
Resolves https://community.vikunja.io/t/pasting-into-code-block-renders-markdown/4181
2025-11-26 23:27:33 +01:00
renovate[bot] f7bdb996ca chore(deps): update dev-dependencies 2025-11-26 13:47:07 +01:00
kolaente a4aad79f53
fix: TickTick import (#1871)
This change fixes a few issues with the TickTick import:

1. BOM (Byte Order Mark) Handling: Added stripBOM() function to properly handle UTF-8 BOM at the beginning of CSV files
2. Multi-line Status Section: Updated header detection to handle the multi-line status description in real TickTick exports
3. CSV Parser Configuration: Made the CSV parser more lenient with variable field counts and quote handling
4. Test Infrastructure: Added missing logger initialization for tests
5. Field Mapping: Fixed the core issue where CSV fields weren't being mapped to struct fields correctly

The main problem was in the newLineSkipDecoder function where:
- Header detection calculated line skip count on BOM-stripped content
- CSV decoder was also stripping BOM and applying the same skip count
- This caused inconsistent positioning and empty field mapping

Rewrote the decoder to use a scanner-based approach with consistent BOM handling.

Resolves https://github.com/go-vikunja/vikunja/issues/1870
2025-11-25 22:32:39 +00:00
kolaente 719d06a991
feat(editor): automatically save draft comments locally (#1868)
Resolves https://github.com/go-vikunja/vikunja/issues/1867
2025-11-24 22:23:58 +00:00
kolaente 8bcd7ec5f5 chore: update devenv 2025-11-24 22:47:21 +01:00
renovate[bot] 370a6230a0
chore(deps): update actions/create-github-app-token digest to 7e473ef (#1862)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-24 20:36:25 +00:00
Frederick [Bot] fd9693cb6a chore(i18n): update translations via Crowdin 2025-11-24 00:59:57 +00:00
kolaente 4b4684961b fix: emit null 2025-11-22 17:23:03 +01:00
kolaente e7c0f5fab3 fix(components): fix all type errors in FilterAutocomplete.ts
- Add type filters for label and project arrays to remove undefined values
- Add @ts-expect-error for projectId parameter in getAll call
- Add type assertion for userService.getAll empty object parameter
- Add default value for prefix in destructuring
- Add null check for match.index
- Add type assertions for union type property access (username/title)
- Add null check for autocompleteContext
- Fix Selection.near call with @ts-expect-error comment
- Add optional chaining for array access that could be undefined
2025-11-22 17:23:03 +01:00
kolaente fe9bc02d10 fix(components): use ts-expect-error in mentionSuggestion.ts
- Replace 'as any' with @ts-expect-error comment
- This is needed because projectId is used for URL replacement but not part of IAbstract
2025-11-22 17:23:03 +01:00
kolaente 412fd3a221 fix(components): add type assertions in MentionUser.vue
- Import IUser type
- Add type assertion for username from node.attrs.id
- Add type assertion for fetchAvatarBlobUrl return value
2025-11-22 17:23:03 +01:00
kolaente 642cd08b9d fix(components): add type annotations in MentionList.vue
- Import PropType and MentionNodeAttrs
- Add MentionItem interface
- Add PropType for items array and command function
2025-11-22 17:23:03 +01:00
kolaente 30101308ea fix(components): add type annotations in suggestion.ts
- Import Editor and Range types from @tiptap/core
- Add TranslateFunction type for t parameter
- Add SuggestionProps interface for props parameter
- Add type annotations for all command callbacks
- Add null check for document.getElementById result
- Add null check for props.event in onKeyDown
2025-11-22 17:23:03 +01:00
kolaente ddf018e791 fix(components): add type annotations in setLinkInEditor.ts
- Import Editor type from @tiptap/core
- Add DOMRect type for pos parameter
- Add Editor | null | undefined type for editor parameter
2025-11-22 17:23:03 +01:00
kolaente d46afda42b fix(components): add type annotations in commands.ts
- Import Editor and Range types from @tiptap/core
- Add CommandProps interface for command callback
- Add type annotations for command callback parameters
2025-11-22 17:23:03 +01:00
kolaente 3a52a86980 fix(components): add undefined checks in TipTap.vue
- Add null check for DataTransferItem from items array
- Add undefined checks for check.children[1] before accessing
- Extract secondChild variable for safer access
2025-11-22 17:23:03 +01:00
kolaente 0987e382e4 fix(components): add type annotations for event parameters in TipTap.vue
- Add Event type for triggerImageInput and addImage
- Add MouseEvent type for setLink and clickTasklistCheckbox
- Add KeyboardEvent type for setFocusToEditor
- Add type assertions for event.target as HTMLElement
2025-11-22 17:23:03 +01:00
kolaente bff5ed6403 fix(components): use correct SetContentOptions in TipTap.vue
- Replace false with {emitUpdate: false} in setContent calls
- Fix 3 SetContentOptions type errors
2025-11-22 17:23:03 +01:00
kolaente eab1a211ae fix(components): fix clipboard data null checks in TipTap.vue
- Add proper null check for clipboardData.items before accessing length
- Replace for...of loop with indexed for loop to avoid iterator issue with DataTransferItemList
2025-11-22 17:23:03 +01:00
kolaente 278eae387c fix(components): add type guards and assertions in TipTap.vue
- Add HTMLImageElement instanceof check before accessing src property
- Add type assertions for getBlobUrl return value and cache access
2025-11-22 17:23:03 +01:00
kolaente 1275cb7fc5 fix(components): correct FontAwesome icon format in TipTap.vue
- Change icon format from ['fa', 'fa-bold'] to ['fas', 'bold']
- Fix 6 icon type errors by using correct IconPrefix and IconName format
2025-11-22 17:23:03 +01:00
kolaente ab8b93e9ab fix(components): suppress complex union type error in Button.vue
- Remove BaseButtonProps extension to avoid complex union type
- Use @ts-expect-error to suppress TS2590 error caused by IconProp
- Add computed properties for variant, shadow, and wrap with proper defaults
2025-11-22 17:23:03 +01:00
kolaente d96cecec09 fix(components): use undefined instead of empty object in ImportHint
- Replace empty object with undefined to use default parameter in TaskService.getAll
2025-11-22 17:23:03 +01:00
kolaente a615afa934 fix(components): add undefined checks in GanttChartPrimitive
- Add undefined check for first row before accessing cellsByRow
- Add nullish coalescing for focusedRow.value in emit calls
2025-11-22 17:23:03 +01:00
kolaente 59fedb6757 fix(components): add type guards and null checks in Multiselect
- Add null check for multiselectRoot before passing to closeWhenClickedOutside
- Add early return for null object in select function
- Add type guards for string vs object in setSelectedObject
- Add type guards for focus method in preSelect function
- Remove invalid length check on Element type
2025-11-22 17:23:03 +01:00
kolaente 81f85a3849 fix(components): add generic constraints and null checks in AutocompleteDropdown
- Add 'extends string' constraint to generic type T
- Add null check for model.value with nullish coalescing
- Add null check for scroller before accessing properties
- Add instanceof check for HTMLElement before accessing offsetTop
2025-11-22 17:23:03 +01:00
kolaente a575159424 fix(components): handle null values in DatepickerWithValues
- Add null to date ref type to match props.modelValue type
- Convert Date to string before passing to parseDateOrString
- Add null coalescing for flatpickrDate assignment
2025-11-22 17:23:03 +01:00
kolaente 8e089f5789 chore: add TYPECHECK_ISSUES.md to .gitignore 2025-11-22 17:23:03 +01:00
kolaente 658946b029 fix: resolve readonly project type issue in AppHeader.vue
Create mutable copy of currentProject from Pinia store to satisfy type
requirements. The readonly deep object from the store has readonly tasks
array which is incompatible with IProject type.

Fixes TypeScript errors on lines 25 and 40 where readonly project was
passed to getProjectTitle() and ProjectSettingsDropdown component.

Related to issue #29 from TYPECHECK_ISSUES.md
2025-11-22 17:23:03 +01:00
kolaente f67af55204 fix: resolve readonly array type issue in Navigation.vue
Cast readonly project arrays from Pinia store to mutable IProject[] type.
The arrays are not actually mutated by the component, so the cast is safe.

Fixes TypeScript errors on lines 86, 97, 105 where readonly arrays were
incompatible with ProjectsNavigation component props.

Related to issue #28 from TYPECHECK_ISSUES.md
2025-11-22 17:23:03 +01:00
kolaente 4cd53c204d fix: add proper type definitions for CommandItem in CommandsList.vue 2025-11-22 17:23:03 +01:00
kolaente 83191eb24d fix: add null/undefined handling in GanttChart.vue 2025-11-22 17:23:03 +01:00
kolaente 618c85a0a7 fix: handle readonly arrays and type conversions in DatepickerWithRange.vue 2025-11-22 17:23:03 +01:00
kolaente cc76b87b89 fix: use proper FontAwesome icon types in EditorToolbar.vue 2025-11-22 17:23:03 +01:00
kolaente 508f91a97b fix: initialize date ref with null instead of undefined in Datepicker.vue 2025-11-22 17:23:03 +01:00
kolaente 3742234540 fix: add comprehensive null/undefined checks in Reactions.vue 2025-11-22 17:23:03 +01:00
kolaente 575cf149b0 fix: add undefined checks and null coalescing in Datepicker.vue 2025-11-22 17:23:03 +01:00
kolaente aadf0e4c17 fix: add null/undefined checks for maxPermission in AppHeader.vue 2025-11-22 17:23:03 +01:00
kolaente cdb39c945c fix: add null checks for project.maxPermission in ProjectsNavigationItem.vue 2025-11-22 17:23:03 +01:00
kolaente 8f062f21d8 fix: add null checks and type assertion in ProjectsNavigation.vue 2025-11-22 17:23:03 +01:00
kolaente 75dafd18e3 fix: return undefined instead of null in ContentLinkShare getProjectRoute() 2025-11-22 17:23:03 +01:00
kolaente 4a2f961a77 fix: ContentAuth types 2025-11-22 17:23:03 +01:00
kolaente a89855a9d1 fix: default language in App.vue types 2025-11-22 17:23:03 +01:00
kolaente 7543b3b5cd fix: types for Multiselect 2025-11-22 17:23:03 +01:00
kolaente db531ab1c4 fix: types for DatepickerInline 2025-11-22 17:23:03 +01:00
kolaente 3fadacbb76 fix: event type 2025-11-22 17:23:03 +01:00