Commit Graph

160 Commits

Author SHA1 Message Date
dab246 a23d15a9ca TF-4136 refactor(logging): replace logError with logWarning for non-critical cases 2026-01-06 13:53:22 +07:00
dab246 73dcb6067c TF-4136 refactor(logger): unify logging format and route error reporting 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 7b8e95de9a fixup! TF-4224 Reduce ReDoS vulnerability 2026-01-06 10:16:26 +07:00
Dang Dat 9f1373c7e5 fixup! TF-4224 Reduce ReDoS vulnerability 2026-01-06 10:16:26 +07:00
Dang Dat 3d08fc9e5f 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
dab246 b3dd6a9e85 feat(ai-scribe): Fix missing HTML entity escaping creates correctness and potential security issues 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
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 e7405051d1 fixup! Use html parser instead of regex to clean composer input
Improve efficiency and add more tests in convertHtmlContentToTextContent
2025-12-19 19:03:39 +07:00
Théo Poizat a9cfe86a59 Use html parser instead of regex to clean composer input
Before sending input to the LLM, we clean the composer input to
remove html tags. We relied on regex that we not complete enough and
could be bypassed easily. So let's use the html parser available in
Dart instead.

I also added some tests.
2025-12-19 19:03:39 +07:00
Théo Poizat 4d0880b8be fixup! Extract method to convert html content to text content
Move the method in utils
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 d6e959c4d9 TF-4145 Create paywall url from workplaceFqdn 2025-11-17 14:24:30 +07:00
dab246 14ab5352a3 TF-4145 Use generateWebLink for paywall url 2025-11-17 14:24:30 +07:00
dab246 8b5fb2f030 TF-4145 Add generateWebLink and safeGenerateWebLink with FQDN validation 2025-11-17 14:24:30 +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 0a73f0e5cb TF-4058 Remove class/object are not used 2025-10-15 13:54:34 +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 b94d1900ae TF-3552 Add expect email view scrollable with long content
Signed-off-by: dab246 <tdvu@linagora.com>
2025-09-11 10:31:20 +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 aeeb47a6f8 TF-3864 Support pasting multiple address with multiple format mixed
Signed-off-by: dab246 <tdvu@linagora.com>
2025-08-19 15:07:55 +07:00
dab246 f1ae5b58b2 TF-3864 Support pasting address with display name
Signed-off-by: dab246 <tdvu@linagora.com>
2025-08-19 15:07:55 +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 8100e886d7 Support vertical scrolling email view when cursor is over calendar event description
Signed-off-by: dab246 <tdvu@linagora.com>
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
Dat Dang 78cb93ef1c Update Android API 35 (#3874) 2025-07-18 10:15:25 +07:00