Commit Graph
29 Commits
Author SHA1 Message Date
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 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 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 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 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
Théo Poizat 7e0c98b080 Add scribe module 2025-12-19 19:03:39 +07:00
Théo Poizat 26593b50ef Move AI env var from main to scribe package 2025-12-19 19:03:39 +07:00
Théo Poizat f19993bb30 Use json_serializable and const to improve AI data model 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 2ccb203610 Add AI text state 2025-12-19 19:03:39 +07:00
Théo Poizat 1e2718e678 Add AI text interactor 2025-12-19 19:03:39 +07:00
Théo Poizat 52295c8c0c Add AI repository implementation 2025-12-19 19:03:39 +07:00
Théo Poizat 6564e50b74 Add AI data source implementation 2025-12-19 19:03:39 +07:00
Théo Poizat 63489b1b44 Add AI abstract repository 2025-12-19 19:03:39 +07:00
Théo Poizat c734987347 Add AI abstract datasource 2025-12-19 19:03:39 +07:00
Théo Poizat eaa30918cc Add AI API request, AI API response and AI message model 2025-12-19 19:03:39 +07:00
Théo Poizat b3e111b9bf Add AI prompts
This part will be highly reworked soon because :
- prompts will come from a remote JSON file
- menu will be build depending of prompts that will contains translations

I think it should also be moved in another module later.
2025-12-19 19:03:39 +07:00
Théo Poizat 29e90f256f Add AI related env var
AI_ENABLED allows to test AI features only in some wanted environment.

AI_API_KEY and AI_API_URL allows to call the LLM while we wait for tmail backend endpoints.
It will be removed when tmail backend endpoints are ready.
2025-12-19 19:03:39 +07:00
Théo Poizat fb31488c99 Add sparkle icon 2025-12-19 19:03:39 +07:00