Commit Graph

175 Commits

Author SHA1 Message Date
Dat H. Pham b14bb6acc0 Update ADR for OIDC token refresh 2026-02-10 16:58:58 +07:00
dab246 e55283abb8 fix: Add log trace to send log to Sentry and print to web console for validate refresh token 2026-02-10 16:58:58 +07:00
dab246 b3e5ab0df4 fix(cnb): skip local email cache and add safe email/state cache clearing
(cherry picked from commit 0e7f589df58240badc1d2340e9856882aa075b63)
2026-01-29 18:00:36 +07:00
dab246 31ed2feae4 TF-4171 Display tag in mailbox list 2026-01-19 11:34:43 +07:00
dab246 f1a86091e1 TF-4136 Fix cannot load app when init sentry is failed 2026-01-15 09:46:51 +07:00
dab246 abe42d6e22 TF-4136 Fix event reconstruction drops fields from the original event. 2026-01-15 09:46:51 +07:00
dab246 6601a48984 TF-4136 Fix DeviceInfoPlugin is instantiated on every access. 2026-01-15 09:46:51 +07:00
dab246 72e4343398 TF-4136 Remove check sentry dio interceptors duplicated 2026-01-15 09:46:51 +07:00
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 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
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