Commit Graph

856 Commits

Author SHA1 Message Date
dab246 b6f7f7d846 TF-4136 Fix duplicate Executor instance creation. 2026-01-15 09:46:51 +07:00
dab246 944029d16c TF-4136 Move Sentry duplication guard, but keep interceptor ordering last (not first) 2026-01-15 09:46:51 +07:00
dab246 1514136f39 TF-4136 Replace logError to logWarning for some place 2026-01-15 09:46:51 +07:00
dab246 fedb8fed93 TF-4136 Apply early exit to prevent string operation in log 2026-01-15 09:46:51 +07:00
dab246 95534e28e0 TF-4136 security(sentry): scrub sensitive headers without mutating HTTP payloads 2026-01-15 09:46:51 +07:00
dab246 ec75bb3cab TF-4136 Add config Sentry 2026-01-15 09:46:51 +07:00
dab246 ad768f1552 TF-4223 Fix welcome email is not well displayed 2026-01-12 05:16:02 +07:00
dab246 6f455cc728 fix(mu): email content not displayed due to sanitize html
(cherry picked from commit 2f06e52d81864a62d6e588bb24a6845e20371bf4)
2026-01-12 05:16:02 +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 0e49c18f9d TF-4141 Add Action required folder to left menu 2026-01-11 22:55:49 +07:00
dab246 61b8c95123 TF-4141 Show AI action tag in list emails 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 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 b4fdc55a07 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 782d21d796 fixup! TF-4224 Reduce ReDoS vulnerability 2026-01-06 10:16:26 +07:00
Dang Dat 8e0276114e 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
Dang Dat a286dd5dd8 [Memory leak] Remove listener and dispose 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
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
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
Théo Poizat fb31488c99 Add sparkle icon 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
Dat Vu 8f034105a5 TF-4148 Add link to common settings in mobile application (#4149) 2025-11-17 22:32:48 +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 249520b711 TF-4142 Implement hyperlink insertion 2025-11-17 11:43:18 +07:00
dab246 620d155dc3 TF-4146 Should handle time for email view 2025-11-13 10:36:15 +07:00