Commit Graph

70 Commits

Author SHA1 Message Date
Théo Poizat 03a03b9088 Fix Scribe on responsive mobile
- Button was not added in MobileResponsiveAppBar
- Mobile behavior related scripts were not correctly added for web composer
- Mobile behavior related scripts return value was not properly handled for web composer
- In responsive web, bottomsheet modal clicks were intercepted by iframe behind
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 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 03c70922a0 Fix selection coordinates in mobile
Because the HTML editor is different, we need a different selector to get the editable element.

We also need to add a small offset to the coordinates to avoid positionning the overlay icon above native selection UI in mobile. For example, Android adds a marker at the beginning and the end of the selection and we do not want to display the Scribe overlay icon above this marker.
2026-03-25 11:52:35 +07:00
dab246 50671b98ee fix(mu): avoid unwanted word-break in table elements
(cherry picked from commit b9cd9933a43c75670eb960d931ee4ea39400284a)
2026-01-12 05:16:02 +07:00
dab246 a23d15a9ca TF-4136 refactor(logging): replace logError with logWarning for non-critical cases 2026-01-06 13:53:22 +07:00
Dang Dat 060416292f fixup! TF-4224 Reduce ReDoS vulnerability 2026-01-06 10:16:26 +07:00
Dang Dat a8f90ec700 fixup! TF-4224 Reduce ReDoS vulnerability 2026-01-06 10:16:26 +07:00
Dang Dat 86dec27d67 fixup! TF-4224 Reduce ReDoS vulnerability 2026-01-06 10:16:26 +07:00
Dang Dat 2b909aeb1c TF-4224 Reduce ReDoS vulnerability 2026-01-06 10:16:26 +07:00
Dang Dat a31898185e [Memory leak] Handle dispose in MobileEditorWidget 2025-12-29 10:11:56 +07:00
dab246 2b70b660f0 hotfix(ai-scribe): With a lot of content and selecting all content, do not see the AI selection button 2025-12-23 17:26:28 +07:00
Dat H. Pham 0a8ec3fbc0 fix: add console error to log text selection failed 2025-12-19 19:03:39 +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
Théo Poizat 1a79445711 Add a method to delete selection content 2025-12-19 19:03:39 +07:00
dab246 57bfb4f88f feat(ai-scribe): Fix when using multiple composer, get multiple overlay icons 2025-12-19 19:03:39 +07:00
Théo Poizat 8ed8100e7e Add JS method to collapse selection in both composer
Collapsing a selection means removing it and keep the cursor at the
end. It will be needed by the scribe for "Insert" action where we
want to insert a text at the cursor even if the user selected text.
2025-12-19 19:03:39 +07:00
Théo Poizat 8b17fcdc54 fixup! Add text selection mixin 2025-12-19 19:03:39 +07:00
Théo Poizat 4013973110 Add text selection mixin
This mixin leverages HTML callbacks that can be set by WebView editor
to send text selection event to the composer so the composer will
receive text selection event necessary to display buttons related to
text selection.
2025-12-19 19:03:39 +07:00
dab246 aba3cbbe4c TF-4152 Fix tooltip stay out of screen in Email View 2025-11-20 11:03:54 +07:00
dab246 fa0ba5d689 TF-4142 Close link overlay when click email content view 2025-11-17 11:43:18 +07:00
dab246 f69179438f TF-4139 Fix attachment reminder mistakenly shown when replying to an email 2025-11-12 13:36:55 +07:00
dab246 846c9c6583 TF-3911 Remove window event listeners to prevent memory leaks in Email View 2025-11-03 05:18:48 +07:00
dab246 b2989521d9 TF-3911 Support mail keyboard shortcut actions in email detailed view on web 2025-11-03 05:18:48 +07:00
dab246 7d80557582 TF-4093 Make interface more compact 2025-10-16 14:15:15 +07:00
dab246 0f3002879d TF-4084 Fix cannot read or scroll emails when opening them in Twake Mail on Android chrome mobile browser 2025-10-15 14:59:39 +07:00
dab246 9600b169cc TF-4054 Add comprehensive tests for wrapPlainTextLinks 2025-10-13 13:21:56 +07:00
dab246 aa710113b0 TF-4054 Fix link detection 2025-10-13 13:21:56 +07:00
dab246 b57e2a9fb7 TF-4051 Fix text and images are truncated on mobile in received emails 2025-10-06 17:09:38 +07:00
dab246 64f4096340 Fix cannot scroll editor when disable code view in composer 2025-10-03 15:03:41 +07:00
dab246 1f83484998 TF-4009 Display a attachment reminder warning modal 2025-09-16 11:04:26 +07:00
dab246 ca1bd0dfe0 TF-3944 Remove line-height = 1px when drag & drop
Signed-off-by: dab246 <tdvu@linagora.com>
2025-08-22 11:02:01 +07:00
dab246 346b115169 TF-3944 Use new style with line height 24px in content writing of composer view
Signed-off-by: dab246 <tdvu@linagora.com>
2025-08-22 11:02:01 +07:00
dab246 801b08bc90 TF-3933 Avoid load font from google
Signed-off-by: dab246 <tdvu@linagora.com>
2025-08-11 10:05:35 +07:00
DatDang ef6008afb7 Update Thread Detail Reply toggle design 2025-07-31 16:37:10 +07:00
dab246 23ecdfbf11 TF-2948 Apply new identity view for web
Signed-off-by: dab246 <tdvu@linagora.com>
2025-07-31 14:45:59 +07:00
DatDang f86392c854 TF-3720 Thread Detail Collapse quote reply
Revert "fixup! TF-3720 Thread Detail Collapse quote reply"

This reverts commit 2104530977664f892702fba5e5bc6fb3e5768b19.

TF-3720 Thread Detail adjust receiver size

TF-3720 Thread Detail refactor email receiver alignment
2025-07-21 05:34:53 +07:00
dab246 5744e4782d TF-3846 Fix Notion email always not wrap in mobile view
Signed-off-by: dab246 <tdvu@linagora.com>
2025-07-02 18:23:10 +07:00
dab246 798f570491 TF-3734 Fix cannot open email as new tab on safari v16.6
Signed-off-by: dab246 <tdvu@linagora.com>
2025-05-22 17:20:28 +07:00
dab246 70ed5bcaab TF-3703 Fix have to scroll left-right to read some parts of email
Signed-off-by: dab246 <tdvu@linagora.com>
2025-05-04 23:10:28 -07:00
dab246 ac569387d4 TF-3691 Support HTML escaping in search snippets
Signed-off-by: dab246 <tdvu@linagora.com>
2025-05-04 23:04:10 -07:00
dab246 3337a608be TF-3627 Remove right padding editor scroll bar in composer
Signed-off-by: dab246 <tdvu@linagora.com>
2025-04-16 19:59:47 -07:00
dab246 b8b4557fd7 TF-3627 Fix two scrollbar with different look
Signed-off-by: dab246 <tdvu@linagora.com>
2025-04-16 19:59:47 -07:00
dab246 c6bb268a75 TF-3622 Synchronize all style attributes in html and write E2E for it.
Signed-off-by: dab246 <tdvu@linagora.com>
2025-04-14 01:55:26 -07:00
dab246 3248f44cf2 TF-3622 Add integration test for case deformed inlined image
Signed-off-by: dab246 <tdvu@linagora.com>
2025-04-14 01:55:26 -07:00
dab246 551ef15276 TF-3622 Fix deformed inlined image
Signed-off-by: dab246 <tdvu@linagora.com>
2025-04-14 01:55:26 -07:00
dab246 7523ddf07b Prevents the content from automatically wrapping to the next line
Signed-off-by: dab246 <tdvu@linagora.com>
2025-04-08 23:43:53 -07:00
dab246 75b675002c Add div tag with markdown style when isTextTable is true for email content text/plain
Signed-off-by: dab246 <tdvu@linagora.com>
2025-04-08 23:43:53 -07:00
dab246 0b9bb3530c Fix appear save draft dialog when reload editing composer
Signed-off-by: dab246 <tdvu@linagora.com>
2025-04-01 04:40:13 -07:00