Commit Graph

146 Commits

Author SHA1 Message Date
dab246 2a3325ab7a TF-4265 Add integration test for attachment reminder on mobile 2026-04-07 13:20:25 +07:00
dab246 55e27c78ed TF-4265 Additional config for include and exclude keywords 2026-04-07 13:20:25 +07:00
dab246 1071bb49cf TF-4265 Add exclude list support to AttachmentTextDetector 2026-04-07 13:20:25 +07:00
dab246 beb323874b TF-4392 [Team Mailbox] Auto save draft email team mailbox when edit 2026-04-01 18:08:12 +07:00
dab246 db8ae35c9d TF-4392 [Team Mailbox] Move email to trash on delete in Email List View 2026-04-01 18:08:12 +07:00
dab246 6a245f228a TF-4404 Fix missing subject when perform Mail to attendees action in event email 2026-03-27 10:36:23 +07:00
dab246 28d5036667 TF-4378 Migrate scribe-mobile branch to master branch 2026-03-25 11:52:35 +07:00
Théo Poizat 2ab6e0df02 [Scribe] Add Improve button (#4335) 2026-03-25 11:52:35 +07:00
Théo Poizat 46a12745a5 Ensure replace function respect new lines in every editor 2026-03-25 11:52:35 +07:00
Théo Poizat 7a6a49fc7b Display Scribe mobile (bottomsheet) only when responsive mobile
Previosuly, we display Scribe mobile (bottomsheet) if platform was mobile, so also Android or iOS tablet.

Now we choose to display Scribe mobile relatively to display screens instead of platform to display the desktop Scribe (context menu) for tablets.
2026-03-25 11:52:35 +07:00
Théo Poizat 40030fe88e Properly escape HTML in every Scribe actions
In recent commits I separated how we could add text in the editor. So
we need to escape HTML in both method that add text:
insertTextInEditor and setTextInEditor.

I had to extract the HTML escape part of
convertTextContentToHtmlContent because when using setTextInEditor we
do not need to convert \n to <br>.
2026-03-25 11:52:35 +07:00
Théo Poizat cf8ed16ed0 Use warning logs instead of error logs for Scribe 2026-03-25 11:52:35 +07:00
Théo Poizat b5606626f4 Fix more Scribe mobile issues
- Add getSavedSelection to check saved selection without consuming it
- Distinguish between setText (replace all) and insertText (at cursor) operations
- Fix replace callback to use setText when no selection exists
- Clean up saved selection state after restoration in HTML utils
- Move mobile editor focus and selection restore to appropriate callbacks
2026-03-25 11:52:35 +07:00
Théo Poizat be7f28f270 Fix Scribe mobile issues
- Fix Scribe replace on mobile when opened from menu bar (to be complete
this fix needs this PR https://github.com/Enough-Software/enough_html_editor/pull/37)
- Ensure all mobile editor call are awaited
- Do not clear text if a selection has been restored (which mean we replace a selection)
- Avoid collapseToEnd crash
2026-03-25 11:52:35 +07:00
Théo Poizat 752f42dc7d Ensure editor is focused before calling insert HTML
enough_html_editor uses execCommand to insert HTML. However
execCommand only works if the contenteditable element is focused. So
inserting or replacing Scribe result do not work if the user did not
click before in the composer.

Here we manually focus the contenteditable element to fix this before
inserting content.
2026-03-25 11:52:35 +07:00
Théo Poizat 84176cb113 Hide keyboard and selection icons when Scribe mobile modal opened
When opening Scribe mobile modal, we now unfocus the composer to hide the keyboard and the selection start and end icons from the OS.

Add new methods to save, restore, and clear text selection in HTML editor. These methods allow preserving and restoring user selection state when opening the Scribe mobile modal so that the "replace" action still works.
2026-03-25 11:52:35 +07:00
Théo Poizat 9e601caa86 Enable AI scribe in mobile 2026-03-25 11:52:35 +07:00
dab246 d256b5ca52 TF-4367 Update logic apply Reply/Forward prefix for subject when compose email 2026-03-11 13:33:28 +07:00
dab246 2052fdbe5e TF-4227 Add integration test on mobile for case display_view_with_all_email_with_tag_scenario 2026-01-19 11:34:43 +07:00
dab246 03b3d1181f TF-4195 Add Label as to email context menu 2026-01-19 11:34:43 +07:00
dab246 1514136f39 TF-4136 Replace logError to logWarning for some place 2026-01-15 09:46:51 +07:00
dab246 df5ed118b3 TF-4141 should not show inkwell effect when user drag email into virtual folder 2026-01-11 22:55:49 +07:00
dab246 a23d15a9ca TF-4136 refactor(logging): replace logError with logWarning for non-critical cases 2026-01-06 13:53:22 +07:00
dab246 20b93cd8db hotfix(ai-scribe): Fix text selection handler correctly gated by AI Scribe availability. 2025-12-29 05:13:18 +07:00
dab246 29b54a76ee hotfix(ai-scribe): fix Safari keyboard input issue in AI Scribe search bar dialog 2025-12-23 17:27:26 +07:00
dab246 6e09d853fd feat(ai-scribe): Fix the English locale file `(intl_en.arb)` is missing all three AI Scribe keys
feat(ai-scribe): Fix async function declared without proper return type annotation.

feat(ai-scribe): Fix Async operations not properly awaited.

feat(ai-scribe): Fix inconsistent capitalization between button labels.

feat(ai-scribe): Fix GenerateAITextFailure check will never match.

feat(ai-scribe): Fix consider validating text input for predefined actions.

feat(ai-scribe): Using a subshell for directory isolation.

feat(ai-scribe): Fix verify the mock usage or document intent.

feat(ai-scribe): Using a more conventional import for Offset.

feat(ai-scribe): Adding error handling for consistency

feat(ai-scribe): Remove `fromJson` and `toJson` of AIResponse

feat(ai-scribe): Using constants for role values.

feat(ai-scribe): Using a more specific import.

feat(ai-scribe): Using Timer for cleaner lifecycle management

feat(ai-scribe): Adding error handling to fromMap() for consistency.

feat(ai-scribe): Disposing the ValueNotifier

feat(ai-scribe): Redundant null check after assignment

feat(ai-scribe): Fix calling `registerSelectionChangeListener` multiple times may be inefficient.

feat(ai-scribe): Safer type handling for JavaScript callback args

feat(ai-scribe): Fix async callbacks not awaited in switch statement.

feat(ai-scribe): Fix binding lifecycle mismatch for GetAIScribeConfigInteractor

feat(ai-scribe): Fix ai prompts

feat(ai-scribe): Fix unawaited async call to `_setupSelectionListener`

feat(ai-scribe): Fix switch cases use top-origin coordinates while `PositionedDirectional(bottom:)`` expects bottom-origin coordinates.

feat(ai-scribe): Adding error handling for selection listener setup.
2025-12-19 19:03:39 +07:00
dab246 6e56a50713 feat(ai-scribe): Load AI scribe config in dashboard 2025-12-19 19:03:39 +07:00
dab246 a686b5d334 feat(ai-scribe): Adding error handling for async operations 2025-12-19 19:03:39 +07:00
Théo Poizat c78f6b8a76 Improve text replace in Scribe
- Delete selection content before inserting
- Insert correct HTML
2025-12-19 19:03:39 +07:00
dab246 27393d4cc8 feat(ai-scribe): Add method to collapse selection and insert/replace callback 2025-12-19 19:03:39 +07:00
dab246 860393fc90 feat(ai-scribe): Improve data & domain layer for ai scribe 2025-12-19 19:03:39 +07:00
dab246 1a1b8f489f feat(ai-scribe): Improve UI for AI Scribe suggestion modal 2025-12-19 19:03:39 +07:00
dab246 582b1ebe97 feat(ai-scribe): reorganize abstractions and update dialog modal UI 2025-12-19 19:03:39 +07:00
dab246 6f6284c21f fix: missing To field when only other fields are filled 2025-11-20 14:21:09 +07:00
dab246 fa0ba5d689 TF-4142 Close link overlay when click email content view 2025-11-17 11:43:18 +07:00
dab246 249520b711 TF-4142 Implement hyperlink insertion 2025-11-17 11:43:18 +07:00
dab246 972b20ec16 TF-4050 Preview and download uploaded file in composer on web 2025-11-11 17:48:33 +07:00
dab246 11d47b5b00 TF-3911 Fix shortcutType was not in use in handleComposerShortcutAction method 2025-11-03 05:18:48 +07:00
dab246 fd7e349929 TF-3911 Support keyboard shortcut actions ESC to close multiple composer on web
Signed-off-by: dab246 <tdvu@linagora.com>
2025-11-03 05:18:48 +07:00
dab246 6c86682111 TF-3911 Support keyboard shortcut actions ESC to close composer on web 2025-11-03 05:18:48 +07:00
dab246 3a9b8d8205 TF-4124 fix: support localhost addresses in email validation 2025-10-28 16:44:19 +07:00
dab246 bddf29c604 hotfix: Do not add Reply-To to recipients field collapsed when unfocus
(cherry picked from commit aa0c27ce1c9d7fdd579d0f25c6b7d8f4b50adf70)
2025-10-14 09:34:52 +07:00
dab246 783fa9e3fc TF-4013 Fix the issue where recipients cannot be moved during drag & drop and ellipsize the text.
(cherry picked from commit 033ba2aaee3acae9c4adcfd791832e9adee0efdc)
2025-10-14 09:34:52 +07:00
dab246 bfdd6af3f7 TF-4013 Unified UX between mobile and web
(cherry picked from commit 298afd1871aedc3549191b16796241aec9b4552d)
2025-10-14 09:34:52 +07:00
dab246 69d2e59f35 TF-4013 Expand all recipients fields when focus
(cherry picked from commit 0eb80e70bb22e7b6f1bb8552aa6ecd6ca9ab304f)
2025-10-14 09:34:52 +07:00
dab246 dd1d1f10fd TF-4013 Collapse all recipients fields when unfocus
(cherry picked from commit cd2c2db33a242d22a06265dca5fa4601753957ab)
2025-10-14 09:34:52 +07:00
dab246 993cdb235a TF-4029 Fix singular vs plural for attachments 2025-09-19 12:19:06 +07:00
dab246 88eeb42424 Fix cannot send email after close attachment reminder dialog 2025-09-18 18:09:40 +07:00
dab246 1f83484998 TF-4009 Display a attachment reminder warning modal 2025-09-16 11:04:26 +07:00
dab246 77b1222149 TF-3986 Change style for over quota flow when send or save draft email 2025-09-15 05:05:20 +07:00