Commit Graph

61 Commits

Author SHA1 Message Date
Théo Poizat 34e1dffa0a Add lottie package
To display lottie animation in web
2026-02-09 23:29:43 +07:00
Théo Poizat 7a4d0dbf46 Add missing languages in Scribe
To fit languages supported in tmail settings
2026-02-03 14:26:28 +07:00
Théo Poizat 5f2e4512bc Ensure fallback to English for unsupported locales in Scribe
- Implement locale validation with fallback to 'en'
- Disable automatic default locale setting
2026-02-03 14:26:28 +07:00
Théo Poizat 8b71b1e995 Fix some Scribe translations
- Added missing translations
- Removed missing translations
- Some small translations updates
2026-02-03 14:26:28 +07:00
Théo Poizat d739b61c83 Fix Scribe translations by using multiple_localization package
Even if all keys were translated, Scribe UI was always in default
language.

In short, it is not possible to load multiple localization delegates
with different .arb files. But we need these translations to be
located in a separate file because in the future we will move Scribe
in a separate module.

See
https://github.com/Innim/flutter_multiple_localization for more
explanation.
2026-02-03 14:26:28 +07:00
dab246 94fd6f8071 TF-4195 Add Label to Thread 2026-01-19 11:34:43 +07:00
dab246 5b94e23427 TF-4193 Update missing dependency in pubspec.lock of scribe module 2026-01-19 11:34:43 +07:00
dab246 b6f7f7d846 TF-4136 Fix duplicate Executor instance creation. 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 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 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
Théo Poizat 68e55a0e22 Improve AI Scribe prompts
- Mutualize some commands
- Avoid unexpected behavior
2025-12-19 19:03:39 +07:00
dab246 088b922b0e feat(ai-scribe): Fix alignment of prompt when AI button at very right of composer or response have long result but at the bottom of composer 2025-12-19 19:03:39 +07:00
dab246 89eb1ecc71 feat(ai-scribe): Fix click on response text of AI, dialog to be disappeared 2025-12-19 19:03:39 +07:00
Théo Poizat 9a8989a310 Make the AI Scribe suggestion success selectable text 2025-12-19 19:03:39 +07:00
dab246 fd33ccf5e4 feat(ai-scribe): Auto hide Replace action when perform prompt in new email without content 2025-12-19 19:03:39 +07:00
dab246 d62b3db985 feat(ai-scribe): Add Enter to send prompt directly and Shift + Enter to add new line 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 863bc115bb feat(ai-scribe): Fix click outside during scribe generating response, scribe be closed 2025-12-19 19:03:39 +07:00
dab246 96b73aa971 feat(ai-scribe): Avoid the prompt being obscured when there is a lot of content. 2025-12-19 19:03:39 +07:00
dab246 3e337d7f3d feat(ai-scribe): Allow scroll the prompt's response is long 2025-12-19 19:03:39 +07:00
dab246 ea8dedda46 feat(ai-scribe): Fix generate ai text is failed 2025-12-19 19:03:39 +07:00
Théo Poizat 3fe54e1847 Add Intl for Replace text 2025-12-19 19:03:39 +07:00
dab246 af5f316e31 feat(ai-scribe): Optimize imports to avoid having too many lines of code in a single file 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 63d9a5d740 Strong typing AI exceptions 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 253f22c600 Remove value now unused
No more API key and url needed because everything is managed by the backend.

Also backend does not accept a model parameter for the moment.
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 4d8d688afb Fix AI scribe menu going off screen to the top
If it was opened at the top of the composer, it could go off screen to the top.

modalHeight was missing so the calculateModalPosition method could not protect the AI scribe menu to go off screen from the top.
2025-12-19 19:03:39 +07:00
Théo Poizat c7886614cd Add tests to AI scribe calculcateModalPosition 2025-12-19 19:03:39 +07:00
Théo Poizat d1bec5af24 Use ValueNotifier instead of setState in AIScribeBar 2025-12-19 19:03:39 +07:00
Théo Poizat 0b139a41d2 Remove unused categoryKeys 2025-12-19 19:03:39 +07:00
Théo Poizat 0b8a814ad6 Show AI Scribe submenu on hover instead of on click 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 96c95866c6 Open AI Scribe from bottom bar button 2025-12-19 19:03:39 +07:00
Théo Poizat b122928a38 Add methods to display AI scribe 2025-12-19 19:03:39 +07:00
Théo Poizat dced5b5dc7 Add AI scribe widgets
- Button : the button with sparkle icon to display AI scribe
- Menu : the menu where you can select the action (eg: translate)
- Bar : the input where you can write a custom action
- Suggestion : the wrapper of the result of the LLM
2025-12-19 19:03:39 +07:00
Théo Poizat aaf60cf222 Update AI models default and optional values
To have stronger code
2025-12-19 19:03:39 +07:00
Théo Poizat 0c787d3d98 Throw error if AI API return null or empty reponse 2025-12-19 19:03:39 +07:00
Théo Poizat c858ac40f5 Add translations for scribe module
Added a separated ScribeLocalizations to keep it separated from main app.
2025-12-19 19:03:39 +07:00
Théo Poizat 2557c68a94 Use absolute path for scribe files 2025-12-19 19:03:39 +07:00