Scribe is always composed of menu (aka category) and submenu (aka action) :
- submenu item UI was already in an UI only component. I moved it to items folder.
- menu item UI was mixed in a component with desktop related UX. So I extract the UI to create an UI only component. I moved it also to items folder.
In Scribe desktop, the suggestion is displayed in a popup.
In Scribe mobile, it will be displayed in a full screen modal.
But it share the same logic about loading, success and error.
So here I extract this logic and use it in the AI Scribe desktop to be able to use it later in AI Scribe mobile.
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.
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.
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.
- 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