Commit Graph

3176 Commits

Author SHA1 Message Date
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
Théo Poizat 2f3bbe3bbb Do not display AI scribe if AI is not enabled in env.file 2025-12-19 19:03:39 +07:00
Théo Poizat bb23792fe3 Use bindings to better separate scribe presentation and data layer 2025-12-19 19:03:39 +07:00
Théo Poizat 6dc58e2eb6 Extract method to convert html content to text content
Editor exposes html content (so with html tags) and we do not want to send them to AI backend
2025-12-19 19:03:39 +07:00
Théo Poizat 7d7ccaf874 Open AI Scribe from text selection 2025-12-19 19:03:39 +07:00
Théo Poizat 96c95866c6 Open AI Scribe from bottom bar button 2025-12-19 19:03:39 +07:00
Théo Poizat 23065aa76d Forward text selection callback from editor view to editor 2025-12-19 19:03:39 +07:00
Théo Poizat 57124f70a8 Implement text selection mixin in mobile and web editor 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 06412f1493 fixup! TF-4186 Use super.props to include parent's properties in the props override. 2025-12-10 17:13:11 +07:00
dab246 f09694577e TF-4186 Use super.props to include parent's properties in the props override. 2025-12-10 17:13:11 +07:00
dab246 c87d3229ce TF-4186 Implement remember choose organisation server 2025-12-10 17:13:11 +07:00
dab246 0bbcfd0f75 TF-4186 Add datasource/repository for save and get company server login info 2025-12-10 17:13:11 +07:00
dab246 860154acc1 TF-4176 Change minimize behavior in mail composer 2025-12-10 09:41:11 +07:00
dab246 6974e031a8 Show UpgradeStorageWidget only when premium is available or quota exceeds 90% 2025-11-21 10:32:58 +07:00
dab246 66f807678c Fix show Your storage is almost full message in Storage section 2025-11-21 10:32:58 +07:00
Dat Dang 426977f603 Handle keyboard shortcut FocusNode causing memory leak (#4158) 2025-11-21 09:53:40 +07:00
dab246 4663f1263f fixup! Fix display empty state when no favorites are available 2025-11-20 15:28:30 +07:00
dab246 7528635da4 Fix display empty state when no favorites are available 2025-11-20 15:28:30 +07:00
dab246 6f6284c21f fix: missing To field when only other fields are filled 2025-11-20 14:21:09 +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