dab246
2d1ecd4cc0
TF-4141 Fix nitpick comments from coderabbit
2026-01-11 22:55:49 +07:00
dab246
1661210e04
TF-4141 Add the AI needs-action option into the user settings.
2026-01-11 22:55:49 +07:00
dab246
cb0471ecb7
TF-4141 Fix cannot move when drag an email in Action required folder into other folder
2026-01-11 22:55:49 +07:00
Dat H. Pham
ed9ca0a855
TF-4141 Update typo needs-action
2026-01-11 22:55:49 +07:00
dab246
09f0ba854a
TF-4141 Remove counter of action required folder
2026-01-11 22:55:49 +07:00
dab246
8e2932658b
TF-4141 Disable drag & drop email to Action required folder
2026-01-11 22:55:49 +07:00
dab246
e8a76542cf
TF-4141 Auto refresh count emails in Action required folder when email changed
2026-01-11 22:55:49 +07:00
dab246
43cbd0d818
TF-4141 Perform load all unread action required emails when open Action required folder
2026-01-11 22:55:49 +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
bbbb04a70e
TF-4141 Add AI capability
2026-01-11 22:55:49 +07:00
dab246
fd630e9583
TF-4136 Add logError for send email exception thrower
2026-01-06 13:53:22 +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
9f1373c7e5
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
20b93cd8db
hotfix(ai-scribe): Fix text selection handler correctly gated by AI Scribe availability.
2025-12-29 05:13:18 +07:00
dab246
f45f55751f
hotfix(ai-scribe): Only implement OnTextSelectionChanged when isAIScribeAvailable is true
2025-12-29 05:13:18 +07:00
dab246
2b06dc65e3
hotfix(ai-scribe): Hide AI scribe option in user setting on mobile
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
HuyNguyen
428d95c999
Enable AI Scribe modal based on configuration and availability
2025-12-19 19:03:39 +07:00
Dat H. Pham
25ea472688
Display AI toggle in Composer
2025-12-19 19:03:39 +07:00
Dat H. Pham
3c20c005f6
Display AI Scribe togge in Preference
2025-12-19 19:03:39 +07:00
Dat H. Pham
9a46f6c663
Interactor getAIScribeConfig
2025-12-19 19:03:39 +07:00
Dat H. Pham
a915ec9881
AIConfig model
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
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
dab246
54ca4595ad
feat(ai-scribe): Fix some comments of coderabbit
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
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
dab246
7ddccf2e1c
feat(ai-scribe): Fix cannot parsing AI capability from Session
2025-12-19 19:03:39 +07:00
Théo Poizat
755e24895d
Disable AI Scribe if on mobile
2025-12-19 19:03:39 +07:00
Théo Poizat
0075fd64b6
feat: Remove .env file for AI Scribe
...
It was used at the beginning for configuration purpose but now we
have the JMAP capability, no need anymore.
2025-12-19 19:03:39 +07:00
Théo Poizat
2c364ea08a
Use endpoint from AI capability instead of direct call to LLM
2025-12-19 19:03:39 +07:00
Théo Poizat
2325df616f
Create an isAIScribeAvailable method
...
Check JMAP capability AND if AI is enabled in env.file and use this method everywhere where we checked env.file
2025-12-19 19:03:39 +07:00
Théo Poizat
8c16bd1fad
Add AI capability
2025-12-19 19:03:39 +07:00
Théo Poizat
77a56ae9b7
Export AI Scribe code from controller to a mixin
...
Avoid adding too much code in the controller
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
d369fcbf5f
Simplify observed values about text selection in composer
...
hasTextSelection had no interest.
The other two values have been put inside an object to observe only one object.
2025-12-19 19:03:39 +07:00
Théo Poizat
2228596c1c
Mutualize event listener in web editor widget
...
Instead of listening multiple times for message from editor JS side,
let's add only one listener and route inside the callback.
2025-12-19 19:03:39 +07:00
Théo Poizat
75f5817e1c
fixup! Implement text selection mixin in mobile and web editor
...
Add try/catch to JSON parse
2025-12-19 19:03:39 +07:00