Commit Graph

121 Commits

Author SHA1 Message Date
cogwheel
2b44ae3e5e feat(image): Improve image attachment loading and error handling 2026-01-13 21:26:43 +05:30
cogwheel
f594982d6a feat(task_worker): Enhance image upload with conversion and pre-caching 2025-12-25 20:29:38 +05:30
cogwheel
1447ddd93c feat(chat): Improve attachment processing and loading indicator 2025-12-23 12:09:43 +05:30
cogwheel
51d9412876 feat(model): Update auto-select model description and behavior 2025-12-22 16:19:50 +05:30
cogwheel
5fd68f86fe refactor(markdown): remove deprecated stream formatter and enhance preprocessor 2025-12-22 14:07:04 +05:30
cogwheel
9e73fc93c6 feat(chat): Refactor model selection to use shared restore logic 2025-12-22 11:00:23 +05:30
cogwheel
cea1c193bf fix(chat): Reset model selection when starting new conversation 2025-12-20 22:37:07 +05:30
cogwheel
8b751785b7 feat(chat): improve assistant message pre-seeding and sync logic 2025-12-17 18:57:03 +05:30
cogwheel0
d67780dbbe feat(chat): Add folder support in new chat screen 2025-12-16 19:59:28 +05:30
cogwheel0
9018e382f7 feat(chat): Improve error handling and message versioning 2025-12-15 20:55:26 +05:30
cogwheel0
55cedc3ab8 feat(chat): Add usage statistics support for message persistence 2025-12-15 18:42:06 +05:30
cogwheel0
da63e3cbff feat(attachments): Optimize file ID extraction and image conversion 2025-12-10 19:40:38 +05:30
cogwheel0
08d5de8a68 refactor(tts): Simplify text-to-speech service by migrating to TtsManager 2025-12-08 10:28:59 +05:30
cogwheel0
324217252e refactor(streaming): Remove inactivity watchdog and related code 2025-12-07 10:32:33 +05:30
cogwheel0
ce11eed11a fix(chat): prevent rapid invalidations with safe ref check 2025-12-06 20:35:24 +05:30
cogwheel0
d7c36f3e0d feat(chat): add parent message ID for proper message linking 2025-12-06 09:33:30 +05:30
cogwheel0
c630ce8c27 feat(models): Add filters support and auto-validation for model-specific filters 2025-12-05 22:19:31 +05:30
cogwheel0
5704c5cf8a feat(socket): Add connectivity and health tracking to socket service 2025-12-04 15:05:12 +05:30
cogwheel0
c59a46d568 fix(chat): Improve server message synchronization and streaming recovery 2025-12-02 16:15:16 +05:30
cogwheel0
8005cbf6e0 feat(streaming): Improve task status polling and socket recovery 2025-12-01 11:52:04 +05:30
cogwheel0
99673db7fb feat(streaming): Improve socket reconnection and timeout handling 2025-11-29 15:02:00 +05:30
cogwheel0
4c5f12919f feat(chat): Add SVG image support for attachments 2025-11-29 11:04:59 +05:30
cogwheel0
61a3fcc83a feat(streaming): Simplify streaming logic and remove persistent tracking 2025-11-27 14:36:13 +05:30
cogwheel0
75ba0dc01d feat(chat): Add context attachment and knowledge base support 2025-11-26 22:19:19 +05:30
cogwheel0
0d49309ad1 feat(tts): Refactor text splitting and offset computation for TTS 2025-11-05 00:59:57 +05:30
cogwheel0
a05837b985 refactor(streaming): Optimize image collection and debounce mechanism 2025-11-02 22:14:45 +05:30
cogwheel0
cfadeffd24 feat(tts): add auto mode for text-to-speech engine selection 2025-11-02 21:31:13 +05:30
cogwheel0
a005c14a67 feat(api): Optimize conversation parsing with worker-based decoding 2025-11-01 14:54:08 +05:30
cogwheel0
ada6d40e5e feat(chat): Add worker manager to streaming helper for image processing 2025-11-01 00:57:40 +05:30
cogwheel0
de0f195aea feat(tts): Improve text-to-speech service with enhanced error handling and state management 2025-10-30 21:42:35 +05:30
cogwheel0
7fb199b2e4 feat: implement service failure handling in background streaming
- Added a method to send failure notifications to Flutter when the background service fails to enter the foreground.
- Implemented a broadcast receiver to handle service failure notifications and notify Flutter about the failure.
- Enhanced the persistent streaming service to attempt recovery for failed streams.
- Introduced heartbeat monitoring for SSE streams to detect stale connections and trigger recovery actions.
2025-10-28 13:59:17 +05:30
cogwheel0
5ab3b9c4e0 feat(api): pass userSettings respect function_calling preference in 2025-10-26 23:00:01 +05:30
cogwheel0
551e844c03 fix: change service declaration to non-late initialization in TextToSpeechController 2025-10-26 19:15:40 +05:30
cogwheel0
1cb8926e21 feat(chat): regenerate variants and support
Hide archived assistant variants in the linear chat view and track
previous assistant as versions so regenerated responses do not
duplicate or lose history. When regenerating, mark the previous assistant
message with an archivedVariant flag for the UI and keep it in server
history. Add a ChatMessageVersion model and a versions field to
ChatMessage to store prior generated variants. Implement
archiveLastAssistantAsVersion in chat providers to snapshot the last
assistant message into versions and reset the message for a fresh
streamed generation. Finalize flow updates to attach an adjacent archived
assistant as a version when needed so the UI can present a switcher
between current and past variants. These changes prevent duplicate
messages, preserve previous responses, and enable variant switching.
2025-10-23 22:29:28 +05:30
cogwheel0
56246507de feat(tts): add karaoke-style TTS progress bar to assistant UI
Add rendering and support for a karaoke-style text-to-speechprogress bar in assistant messages so users can see the currently
spoken sentence and highlighted word during playback.

- Append TTS karaoke bar to AssistantMessageWidget when the message is
  the active TTS target and playback is speaking/paused/loading.
- Implement _buildKaraokeBar to render the active sentence with a
  highlighted word span, using ConduitCard and theme styles.
- Import conduit_components for shared UI primitives.
- Extend TextToSpeechState with sentence data:
  sentences, sentenceOffsets, activeSentenceIndex, and per-word
  progress (wordStartInSentence, wordEndInSentence).
- Add provider callbacks wiring: onSentenceIndex and
  onDeviceWordProgress handlers (hooked into TTS backend).
- Prepare sentence splitting and word-progress plumbing in the TTS
  provider (prepares data used to drive the karaoke display).

This change improves UX by visually indicating the spoken sentence
and current word during TTS playback, aiding comprehension and
accessibility.
2025-10-23 17:05:35 +05:30
cogwheel0
561e7dd616 feat(tts): server-backed TTS engine selection
Introduce server TTS support and engine selection while keeping
device TTS as the default.

- Add new persistence keys for storing TTS engine and selected
  server voice (ttsEngine, ttsServerVoiceId, ttsServerVoiceName).
- Extend TextToSpeechService to support two engines:
  TtsEngine.device (FlutterTts) and TtsEngine.server (remote audio).
- Wire in an AudioPlayer and optional ApiService to fetch raw
  audio bytes from the server and play them, with event hooks
  mapped to existing lifecycle callbacks.
- Implement fallback to device TTS on server errors or empty
  responses, and ensure player lifecycle (pause/stop/dispose)
  is handled when using server engine.
- Allow engine and preferred voice to be configured before
  initialization and updated at runtime via updateSettings.

This enables selecting a server-side voice and using a remote
TTS provider while preserving compatibility with the existing
device TTS implementation.
2025-10-23 16:31:15 +05:30
cogwheel0
6c81d68e59 feat: Add Text-to-Speech settings and customization options
- Introduced new preference keys for TTS settings: voice, speech rate, pitch, and volume.
- Updated SettingsService to handle TTS settings and persist them.
- Enhanced AppSettings to include TTS-related properties.
- Implemented TTS settings UI in AppCustomizationPage, allowing users to select voice and adjust speech parameters.
- Added localization support for TTS settings in multiple languages.
2025-10-17 14:40:44 +05:30
cogwheel0
14af2a100a build: Bump Android Gradle Plugin to 8.9.1
fix(chat): Improve Markdown formatter state management

- Explicitly clear the streaming formatter when switching conversations to prevent state leakage.
- Implement defensive checks to ensure the formatter is always associated with the correct message, resetting it if a mismatch is detected.
- Refine the formatter seeding logic to only use existing content in resume scenarios, preventing content duplication.
- Add detailed logging to the chat provider for better debugging of streaming and formatter behavior.
2025-10-16 11:34:13 +05:30
cogwheel0
e73c5ee93a feat: add composer autofocus management for improved chat input experience
- Introduced ComposerAutofocusEnabled provider to manage the auto-focus state of the chat composer, allowing for better control over user interactions.
- Updated ModernChatInput to respect the autofocus setting, ensuring the keyboard behavior aligns with user intent and context.
- Enhanced ChatPage to suppress auto-focus when opening the slide drawer, improving user experience during navigation.
- Refactored SlideDrawer to include an onOpenStart callback for dismissing the keyboard, ensuring a smoother transition when the drawer is opened.
2025-10-10 15:22:54 +05:30
cogwheel0
fabb1df63a feat: enhance text-to-speech functionality with markdown support
- Integrated markdown conversion in TextToSpeechController to clean text before speech synthesis, ensuring only valid content is spoken.
- Updated VoiceCallService to utilize markdown conversion for responses, improving the clarity of spoken content.
- Enhanced VoiceCallPage to display cleaned text from markdown, providing a better user experience during voice interactions.
2025-10-09 00:20:36 +05:30
cogwheel0
f8098670f9 refactor: improve chat message handling and remote task monitoring
- Removed the InactivityWatchdog implementation to streamline typing indicator management.
- Introduced a Timer-based remote task monitoring system to check task status periodically.
- Enhanced the logic for managing streaming assistant states and task synchronization.
- Improved overall code clarity and maintainability by consolidating task monitoring logic.
2025-10-03 01:02:29 +05:30
cogwheel0
ff02af1e89 refactor: centralize conversation cache management
- Introduced a new method `refreshConversationsCache` to streamline the invalidation of the conversations provider and optionally the folders provider.
- Updated various components to utilize the new cache management method, enhancing code clarity and reducing redundancy.
- This refactor improves the efficiency of conversation and folder synchronization across the application.
2025-10-02 00:30:14 +05:30
cogwheel0
d899ca5f70 refactor: update streaming helper to use conversation delta listener
- Replaced direct stream handling for chat and channel events in `attachUnifiedChunkedStreaming` with a new `RegisterConversationDeltaListener` parameter for improved encapsulation and flexibility.
- Removed the previous chat and channel event stream parameters, streamlining the function signature and enhancing code clarity.
- Updated the `regenerateMessage` and `_sendMessageInternal` methods to utilize the new listener registration, improving the management of conversation delta events.
- Enhanced error handling for delta listeners, ensuring robust logging of errors during event processing.
2025-10-01 19:46:21 +05:30
cogwheel0
f15a8eda79 refactor: streamline conversation delta stream handling
- Replaced direct stream access in the `regenerateMessage` and `_sendMessageInternal` methods with a new helper function `_conversationDeltaStream` for better encapsulation and reusability.
- Improved the management of chat and channel event streams by utilizing the new helper function, enhancing code clarity and maintainability.
- Removed the previous `conversationDeltaEventsProvider` as it is no longer necessary with the new implementation, simplifying the provider structure.
2025-10-01 19:20:46 +05:30
cogwheel0
8a8ba76298 refactor: update providers to use keepAlive for enhanced state management
- Changed multiple provider annotations to `@Riverpod(keepAlive: true)` to improve state retention and management across the application.
- This update aligns with recent enhancements in state management practices, ensuring better performance and user experience throughout the app.
2025-10-01 18:32:16 +05:30
cogwheel0
21cff39c1c Revert "refactor: remove unused code"
This reverts commit 03bb03446b.
2025-10-01 00:47:29 +05:30
cogwheel0
03bb03446b refactor: remove unused code 2025-10-01 00:35:56 +05:30
cogwheel0
46bd057089 refactor: enhance chat message handling and scrolling behavior
- Added `sendMessageWithContainer` function to facilitate message sending with a ProviderContainer.
- Updated `_ChatPageState` to improve scroll behavior, ensuring smoother auto-scrolling when near the bottom of the chat.
- Refactored scroll logic to simplify conditions for showing and hiding the scroll-to-bottom button.
- Adjusted the `OptimizedList` widget to correctly handle item indexing based on the reverse property, enhancing list performance and usability.
2025-09-30 21:17:11 +05:30
cogwheel0
7debb7a055 chore: update markdown dependency and refactor streaming handling
- Added `markdown` dependency version `^7.2.1` in `pubspec.yaml`.
- Updated `pubspec.lock` to reflect the direct dependency change.
- Refactored `streaming_helper.dart` to utilize `StreamingResponseController` for better stream management.
- Enhanced `ChatMessagesNotifier` to handle message streams with improved formatting and error handling.
- Updated `StreamingMarkdownWidget` to streamline markdown rendering and support new configurations.
2025-09-30 20:49:02 +05:30
cogwheel0
375c961412 fix: add comment for ChatMessagesNotifier class
Resolves analyzer errors from previous commit.
2025-09-30 15:04:20 +05:30