Commit Graph

79 Commits

Author SHA1 Message Date
everysingletear
7d36090e46 i18n: extract the chore list and its modals (chores namespace)
Part of #145.

Twenty-three files across the task list zone: the list and card views,
sorting and grouping, multi-select and its toolbar and help sheet,
archived tasks, the assignee card, the chore action menu, the
nudge/NFC/photo modals, the rich text editor, the scan panel, the
notification templates and the keyboard-shortcut toasts.

Extends the existing `chores` namespace, so `src/i18n/config.js` is
untouched.

English only — no translations, no behaviour change. Every t() value is
checked against this branch's base: the string must appear
character-for-character in the code it replaces (247 call sites).

Two values are matched loosely and worth naming: archived.closeMultiSelect
in both the archived view and the toolbar. The base builds that tooltip as
`${size === 0 ? 'Close' : 'Clear'} multi-select (Esc)`, so only one branch
of the ternary exists contiguously in the source. Both keys hold exactly
what each branch renders; the tooltip is kept whole so a translator can
reorder it.

Rebased on current `develop` again after #215 and #216 landed — the
dictionary conflict was theirs, not the code's. No code file in this PR
was touched upstream in the meantime.
2026-08-15 09:03:28 +08:00
Mohamad Tarbin
b095f26d61 Merge branch 'develop' into i18n/regen 2026-08-14 18:40:51 -04:00
Mo Tarbin
6bc5982294 fix: update key prop in SelectModal options to use item.id for consistency 2026-08-14 08:57:53 -04:00
everysingletear
ede1a11099 i18n: extract the remaining task, history, filter and timer screens
Part of #145.

Sixteen files that were left out of my earlier PRs because my branch also
carried unrelated changes in them. Those are stripped here: each file is
your current `develop` version with the string extraction applied on top,
nothing else.

Covered: the chore action hook and its toasts, activities and smart-insight
cards, the chore toolbar, chore history and its card, saved filters, the
timer details view, project and label modals, the notification picker,
the pending badge, the sync status indicator, the SSE settings and hook,
and the profile avatar menu.

All namespaces already exist, so `src/i18n/config.js` is untouched.
Keys added: 83 `chores`, 31 `common`, 10 `timer`, 9 `history`, 6 `labels`,
5 `projects`, 2 `filters`, 1 `settings`.

English only — no translations, no behaviour change. Every t() value is
checked to appear character-for-character in the code it replaces, or to
match the value already in your dictionary for the same key: 221 call
sites, no mismatches.

Five files from the same batch are deliberately left out. They build
translated labels in module-level constant tables, where the hook cannot
be called — `FilterBar`, `RepeatSection`, `RepeatPickerField`,
`FilterBuilderContent` and `AdvancedOptionsSection`. Those need the key
to travel as data and be resolved inside the component, which is a design
change rather than an extraction, so it deserves its own PR.
2026-08-14 11:26:24 +08:00
Mohamad Tarbin
2918eda784 Merge pull request #211 from everysingletear/i18n/settings-remainder
i18n: extract the settings screens not covered by 8c9bf0d (Part of #145)
2026-08-13 19:40:49 -04:00
Mohamad Tarbin
da1c8f1068 Merge branch 'develop' into i18n/new-namespaces 2026-08-13 19:35:17 -04:00
everysingletear
72aa57f018 i18n: extract things, history, projects, labels, filters, timer and points
Part of #145.

Fourteen files across seven feature areas that had no namespace yet: the
things create/edit modals and their history, the chore history detail and
edit modals, the activity feed, the points view and its redemption modal,
the project view with its selector and icon picker, the label view, the
advanced filter builder and the timer edit modal.

Seven new namespaces registered in `src/i18n/config.js` in one change
rather than one per PR, so the `ns:` array is touched once and my other
extraction PRs cannot conflict with this one. Namespaces stay
feature-scoped as described in #145; if you'd rather fold any of these
into `common` or `chores`, say which and I'll rework it.

Dictionaries: `history` 57 keys, `points` 50, `timer` 25, `projects` 16,
`things` 14, `filters` 13, `labels` 5.

English only — no translations, no behaviour change. Every t() value is
checked against this branch's base: the string must appear
character-for-character in the code it replaces (226 call sites).

Three values in `UserPoints` are matched loosely and worth naming. The
base builds the leaderboard heading and subtitle around a ternary —
`{mode === 'points' ? 'Points' : 'Tasks'} Leaderboard` and `Rankings based
on {…} during the selected time period` — so neither full sentence exists
contiguously in the source. Each key holds exactly what one branch
renders. The sentences are kept whole rather than split around the
ternary, since a sentence assembled from fragments cannot be reordered by
a translator.
2026-08-13 10:21:57 +08:00
everysingletear
0e98a556da i18n: extract the settings screens your pass didn't reach (settings)
Part of #145.

`8c9bf0d` localized the settings views themselves; these eight files sit
in the same zone but were not in that pass: the subscription modal, the
child-user creation and password-change modals, both payment result
views, developer settings, and the backup/restore and account-deletion
modals.

Extends the `settings` namespace you established, following its key
naming — 59 keys added to `en/settings.json`. `src/i18n/config.js` is
untouched.

English only — no translations, no behaviour change. Every t() value is
checked against this branch's base: the string must appear
character-for-character in the code it replaces (71 call sites).

One deliberate structural detail: in `BackupRestoreModal` the warning
reads `<strong>Warning:</strong> Restoring a backup will…`. The label and
the sentence are separate keys and the `<strong>` stays in the JSX, so the
emphasis survives and no markup ends up in the dictionary.

If you'd rather keep developer settings hardcoded, say so and I'll drop
that file — it is the one screen here an end user never sees.
2026-08-13 10:18:10 +08:00
everysingletear
bdac10ac57 i18n: extract shared strings into the existing common namespace
Part of #145.

Fourteen files whose user-facing strings are generic enough to belong in
`common` — loading and empty states, the confirmation modal, the shared
input modals (text/date/user/attachment viewer), the mobile nav bar, the
autocomplete input, the error screen and the file-upload error paths.

Extends the namespace that already exists, so `src/i18n/config.js` is
untouched and this cannot collide with any other extraction PR over the
`ns:` array. 28 keys added to `public/locales/en/common.json`.

English only — no translations, no behaviour change. Every t() value is
checked against this branch's base: the string must appear
character-for-character in the code it replaces (36 call sites).

One value is matched loosely and worth naming: `errorScreen.hideDetails`.
The base renders `{showDetails ? 'Hide' : 'Show'} error details`, so
neither full phrase exists contiguously in the source — only one branch of
the ternary can. Both keys hold exactly what each branch renders. The
sentence is kept whole rather than split around the ternary, because a
split sentence cannot be reordered by a translator.
2026-08-13 10:16:14 +08:00
Mohamad Tarbin
dc88fe9704 unifying the empty state across components (#184) 2026-08-02 23:16:32 -04:00
Mo Tarbin
0132408eec Unify modals and buttons style and layout 2026-07-29 10:38:20 -04:00
Mo Tarbin
a6fb3c87c4 Refactor Attchemnt Upload and fix bug with signing 2026-07-18 02:16:42 -04:00
Mo Tarbin
c929977773 add filter options for created and updated dates in SortAndGrouping component 2026-07-13 00:17:27 -04:00
Mo Tarbin
d21ec9d727 make choosing color match advance filter color selector 2026-07-12 23:34:47 -04:00
Mohamad Tarbin
ae57022102 Merge pull request #127 from donetick/add-photo-ai
Add Support for OCR and attachment on tasks, redesign AddTaskModal
2026-07-07 00:25:35 -04:00
Mo Tarbin
12d95dd4b1 Fixes and remove logs 2026-07-07 00:23:36 -04:00
Mo Tarbin
24508be4d4 feat: implement attachment browser and viewer modals, enhance chore attachment handling 2026-07-06 18:11:57 -04:00
Mohamad Tarbin
16412821bf Merge branch 'develop' into advance-filtering 2026-07-04 02:06:18 -04:00
Mo Tarbin
8e5c31f7f3 remove the old filter logic and use advance filter in myChore 2026-06-14 15:55:19 -04:00
Mo Tarbin
fe22bb1035 feat: enhance AdvancedFilterBuilder with new filtering options and UI improvements
- Introduced new filter options for due dates, points, and chore statuses.
- Refactored condition management to use selections for better state handling.
- Improved UI components for filter conditions, including chips for selection.
- Added a bottom sheet modal for filter creation and editing.
- Enhanced user experience with clear actions and previews for selected filters.
2026-06-12 21:31:17 -04:00
Mohamad Tarbin
0da9c7f965 Merge pull request #118 from donetick/capacitor-nfc-tag-scanner
add NFC capabilities for native apps
2026-06-07 16:36:24 -04:00
Mo Tarbin
48adb0b256 feat: update app version to 1.2.3, add NFC capabilities, and enhance deep link handling 2026-06-07 16:32:43 -04:00
Mo Tarbin
07c31ebde1 feat: enhance chore management with history and sync improvements
- Added support for starting and pausing chores with offline handling.
- Implemented chore history updates and deletions with pending command management.
- Enhanced sync engine to handle chore history changes and deletions.
- Introduced a PendingBadge component to display pending actions for chore history.
- Updated DeveloperSettings to include sync diagnostics and reset functionality.
- Improved user notifications for offline actions and pending commands.
- Refactored ChoreView to dynamically generate info cards based on chore history.
- Added sync status indicator with cancel all functionality for pending commands.
2026-05-12 01:10:49 -04:00
Mohamad Tarbin
cef329376b Merge branch 'main' into feature/internationalization-support 2026-03-10 23:10:48 -04:00
Mo Tarbin
fc91894336 Refactor localization handling across components
- Updated LocalizationContext to consolidate date and time formatting functions into a single `fmt` object.
- Modified ChoreCardHelpers to accept a time format parameter for due date text.
- Adjusted ChoreView, RepeatSection, TimePassedCard, and other components to utilize the new `fmt` object for date and time formatting.
- Enhanced HistoryCard and TimerEditModal to use the new localization functions for consistent date and time display.
- Refined Settings and CircleSettings to leverage the updated localization methods for subscription and member date displays.
- Improved ThingsHistory and UserActivities to format dates and times using the new localization structure.
- Ensured CalendarCard and CalendarDual components utilize the new formatting functions for better readability.
2026-03-08 23:08:37 -04:00
Mohamad Tarbin
cf70854af5 Merge pull request #61 from wjzijderveld/password-length
Aligned password requirements and increased max-length to 64
2026-02-21 11:47:14 -05:00
Mo Tarbin
4b4498e84d add NoteViewerModal for displaying chore notes and descriptions
Fix https://github.com/donetick/donetick/issues/532
2026-02-18 00:18:44 -05:00
Willem-Jan
4d58e52729 Aligned password requirements and increased max-length to 64 2026-02-15 13:18:33 +01:00
Mo Tarbin
d9d93ffad3 clean up imports and remove unused quick schedule functionality in DateModal 2026-02-10 20:38:01 -05:00
Mo Tarbin
86cfc10741 chore: update dependencies in package.json and refactor import statements in modal components 2026-02-08 01:40:33 -05:00
Mo Tarbin
492e2f2e7e refactor: update modal components to use larger size and full width with titles 2026-02-08 01:39:33 -05:00
Mo Tarbin
560cceca9b refactor: simplify menu icon logic in NavBar component 2026-02-08 01:35:45 -05:00
Mo Tarbin
d18e6412f0 feat: add quick scheduling options in DateModal with chips for today, tomorrow, weekend, and next week 2026-02-07 23:26:17 -05:00
Mo Tarbin
c9baf04505 Refactor: update condition handling for status selection in AdvancedFilterBuilder
Fix https://github.com/donetick/frontend/issues/59
2026-02-05 10:36:49 -05:00
Mo Tarbin
c20e8d1aea Refactor: optimize filter sorting with useMemo and integrate useFilters in AdvancedFilterBuilder 2026-02-04 00:22:07 -05:00
Mo Tarbin
28869498ae add points condition evaluation and update filter builder for points selection 2026-02-03 00:46:10 -05:00
Mo Tarbin
c3431b0921 Refactor: update placeholder text for filter name and replace label colors with project colors in ProjectModal 2026-02-02 19:32:25 -05:00
Mo Tarbin
96a649ca9c Scroll to the new condition when adding new field 2026-01-31 12:52:54 -05:00
Mo Tarbin
448b8fa160 feat: enhance filter functionality and UI improvements
- Added FilterView component for managing custom filters.
- Implemented temporary filter application in MyChores and custom filter hooks.
- Improved sorting of archived chores by updated date.
- Enhanced SortAndGrouping component with keyboard navigation support.
- Updated CustomFilterChips to visually indicate active filters.
- Refactored AdvancedFilterBuilder to improve usability and added listbox positioning.
- Integrated project selection caching in ProjectView for better navigation.
- Cleaned up unused imports and optimized existing code for better performance.
2026-01-27 23:50:49 -05:00
Mo Tarbin
7e35fa8710 feat: Enhance FadeModal with title and footer support; update AdvancedFilterBuilder to use fullWidth 2026-01-26 23:08:28 -05:00
Mo Tarbin
ad45bafd62 feat: Refactor Filter Section and Add Filter View
- Removed unused props and components from FilterSection.
- Introduced FilterView component to manage and display saved filters.
- Implemented swipe functionality for filter actions (edit, delete, pin).
- Enhanced AdvancedFilterBuilder with description and color selection.
- Deleted obsolete SaveFilterModal component.
- Updated NavBar to include a link to the new Filters page.
- Adjusted chore filter hooks for improved functionality and organization.
2026-01-26 17:27:27 -05:00
Mo Tarbin
2b8482cb06 feat: add custom filter chips and filter section components
- Implemented CustomFilterChips component for displaying and managing custom filters with context menu options for pinning, editing, and deleting filters.
- Created FilterSection component to integrate CustomFilterChips and provide UI for creating advanced filters and displaying active filters.
- Introduced useCustomFilters hook to manage custom filter logic, including loading, saving, updating, and deleting filters.
- Added AdvancedFilterBuilder modal for creating and editing advanced filters with dynamic condition handling.
- Implemented SaveFilterModal for saving filters with preview functionality and validation for filter names.
- Enhanced useChoreFilters and useProjectFilter hooks for improved filter management and state handling.
2026-01-26 01:58:21 -05:00
Mo Tarbin
7c8fa27aaf feat: Add unarchive functionality to ChoreView and enhance project management features
- Implemented unarchive button for archived chores in ChoreView.
- Updated chore status handling to disable actions for archived chores.
- Enhanced MyChores component to filter tasks based on project selection, including a default project.
- Improved ProjectModal to streamline project creation and editing with a new footer layout.
- Refactored ProjectView to accurately count tasks for default and user projects.
- Added project selection dropdown in AddTaskModal with default project handling.
- Updated NavBar to handle logout using apiClient.
- Enhanced ProjectSelector to manage projects with a new menu item for project management.
2026-01-17 19:35:36 -05:00
Mo Tarbin
7fbae16a53 Add Support Project 2026-01-16 12:11:03 -05:00
Mo Tarbin
ba17a5592c feat: add ProjectModal component for creating and editing projects 2026-01-01 01:32:23 -05:00
Mo Tarbin
409c5a0ba3 enhance user input validation and parsing for usernames, points, and labels 2025-10-02 21:45:25 -04:00
Mo Tarbin
d41d6bd758 feat: add sub user management features including creation, deletion, and password updates 2025-09-28 19:12:26 -04:00
Mo Tarbin
b367410aaf fix: adjust transition timeout and add UNASSIGNED color constant 2025-09-27 13:48:20 -04:00
Mo Tarbin
f27bbd318f Refactor chore management to use React Query hooks for timer and chore actions
- Replaced direct API calls with React Query hooks in ChoreView, ChoreCard, CompactChoreCard, and TimerDetails components for better state management and error handling.
- Updated ArchivedTasks to utilize useUnArchiveChore hook for restoring archived chores.
- Enhanced NotificationSetting to include device registration logic and improved user feedback for push notifications.
- Refactored TimerEditModal and TimerDetails to streamline timer session updates and deletions using hooks.
- Improved ChoreActionMenu to handle archiving and unarchiving chores with hooks.
- Adjusted various components to use getSafeBottomStyles for consistent bottom padding.
- Cleaned up unused imports and optimized loading states across components.
2025-09-21 12:46:03 -04:00
Mo Tarbin
79dfb11fa4 feat: add device token management and safe area utilities; enhance notification settings and chore components 2025-09-20 22:20:02 -04:00