Commit Graph

394 Commits

Author SHA1 Message Date
cogwheel0
bdd90b32fa feat: Add keyboard dismiss on scroll 2025-11-05 14:12:58 +05:30
cogwheel0
d52794f2c5 feat: Add Korean language support and localization files 2025-11-05 14:00:10 +05:30
cogwheel0
b9ec730fad feat(conversation): Enhance source parsing and normalization for OpenWebUI messages 2025-11-05 13:10:00 +05:30
cogwheel0
0d49309ad1 feat(tts): Refactor text splitting and offset computation for TTS 2025-11-05 00:59:57 +05:30
cogwheel0
3424af60f9 feat(l10n): Add silence duration settings for speech-to-text 2025-11-05 00:48:20 +05:30
cogwheel0
1bb2cbae25 feat(voice): add voice silence duration configuration 2025-11-05 00:33:17 +05:30
cogwheel0
a3b5c4f5b7 feat(audio): replace record package with mic_stream_recorder 2025-11-05 00:09:35 +05:30
cogwheel0
24c8c27d51 feat(tts): Remove pitch and volume sliders from app customization page 2025-11-04 23:14:23 +05:30
cogwheel0
715849aff3 feat(tts): add speech rate support for text-to-speech generation 2025-11-03 00:44:24 +05:30
cogwheel0
1a570f4a08 feat(voice-input): improve server-side speech detection with silence auto-stop 2025-11-03 00:36:25 +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
da249eaa31 feat(l10n): Add speech-to-text localization strings for settings 2025-11-02 19:03:58 +05:30
cogwheel0
86339715b1 feat(sts): add server side speech-to-text 2025-11-02 19:03:36 +05:30
cogwheel0
6ef36899a7 feat(ui): Adjust spacing and font weight in app customization page 2025-11-02 17:46:15 +05:30
cogwheel0
8321e3c721 feat(l10n): Update English localization with voice call states and model capabilities 2025-11-02 17:44:23 +05:30
cogwheel0
e15392ea59 refactor(socket): remove unused connection state management code 2025-11-01 22:51:32 +05:30
cogwheel0
8cc7a23477 fix(streaming): refactor to not force session id 2025-11-01 22:41:38 +05:30
cogwheel0
2cad6cc87c feat(model): Add robust id and name parsing with validation 2025-11-01 22:32:07 +05:30
cogwheel0
71d63ac157 refactor(network): Replace read with watch for providers in image handling 2025-11-01 15:42:08 +05:30
cogwheel0
877b403914 refactor(api): Improve data parsing with normalized list handling 2025-11-01 15:29:54 +05:30
cogwheel0
fe09583c6b feat(api): Improve file and prompt parsing with type safety 2025-11-01 15:21:34 +05:30
cogwheel0
42ef62d565 feat(api): Improve file and knowledge base data parsing with normalization 2025-11-01 15:15:38 +05:30
cogwheel0
073e0cf458 feat(folders): Improve folder management and parsing logic 2025-11-01 15:04:50 +05:30
cogwheel0
a005c14a67 feat(api): Optimize conversation parsing with worker-based decoding 2025-11-01 14:54:08 +05:30
cogwheel0
a374c744ef refactor(api): Migrate conversation parsing to worker-based approach 2025-11-01 01:46:46 +05:30
cogwheel0
ada6d40e5e feat(chat): Add worker manager to streaming helper for image processing 2025-11-01 00:57:40 +05:30
cogwheel0
5d33e5fe65 fix: server side tts on ios 2025-10-31 23:20:04 +05:30
cogwheel0
cf87d255d3 feat(settings): Allow unlimited quick pill selections 2025-10-30 22:44:08 +05:30
cogwheel0
a00d64fc26 feat(transport): Improve socket transport mode selection and localization 2025-10-30 22:32:59 +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
44149d5f81 feat(tts): add server default voice retrieval and integrate it into 2025-10-30 16:10:20 +05:30
cogwheel0
0e98f2ab2a refactor(storage): remove remember-credentials and improve error logging and handling 2025-10-30 14:28:00 +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
dded22f1ec feat: enhance error boundary widget with improved error handling and UI updates
- Added a method to ignore specific errors related to RenderFlex overflow.
- Refactored the error display layout to use a centered scrollable view.
- Improved visual presentation with a gradient background for the error icon and updated button styles for retry functionality.
2025-10-26 23:16:34 +05:30
cogwheel0
5ab3b9c4e0 feat(api): pass userSettings respect function_calling preference in 2025-10-26 23:00:01 +05:30
cogwheel0
ae48fcc035 feat(sse): add SSEStreamParser to parse Dio SSE streams and extract 2025-10-26 22:33:53 +05:30
cogwheel0
551e844c03 fix: change service declaration to non-late initialization in TextToSpeechController 2025-10-26 19:15:40 +05:30
cogwheel0
2b44e38a2e feat(i18n/socket): add WebSocket error messages and show connect errors 2025-10-25 14:24:49 +05:30
cogwheel0
a2d786109c feat(tts): initialize and sync TTS with app settings for calls 2025-10-24 00:58:46 +05:30
cogwheel0
15299ecd82 feat(chat): dismiss after send to recover screen space 2025-10-24 00:39:43 +05:30
cogwheel0
9c2cf347a7 feat(chat): inline action panel with context menu edit flow 2025-10-24 00:31:29 +05:30
cogwheel0
c1eae6608d feat: pass button BuildContext to conversation menu to position it 2025-10-23 23:38:32 +05:30
cogwheel0
625631c096 feat: add scr color tokens and use them for drawers
Introduce scrimMedium and scrimStrong color tokens to the shared
theme color tokens and propagate them through constructors, copyWith,
and lerp so scrim values interpolate and can be overridden.

Define scrim tokens as black with different alpha values per theme
mode (lighter alpha in light mode stronger in dark mode) to create
a consistent darkening effect for overlays.

Refactor ChatPage to use the new scrim tokens for drawer scrims and
format a RegExp call for readability. This replaces previous use of
overlay tokens for platform-specific scrims to provide clearer
semantics and better visual control for modal/drawer backdrops.
2025-10-23 23:27:11 +05:30
cogwheel0
5d898aaca0 refactor: improve composer layout and constrain height
the modern chat input composer layout to better handle vertical
space and alignment. Change the row crossAxisAlignment from
center to end so controls align to the input bottom. Wrap the animated
container with a ConstrainedBox that limits the composer max height to
25% of the screen, preventing excessive growth on tall displays.

Reorder and clean up the AnimatedContainer/decoration block, extracting
the composer radius constant and preserving styling (background color,
border color/width). Move the text field and inline mic into the same
row structure under the constrained container and retain the isActive
flag and padding. These changes prevent layout overflow, ensure a
consistent border radius, and improve visual alignment of controls.
2025-10-23 23:19:41 +05:30
cogwheel0
be62358270 feat(chat): strip reasoning when copying
Remove internal reasoning from copied message text to avoidleaking implementation details or developer-only when a
user content from the chat- In chat_pagecopyMessage, cleaning steps to:
  - <details type="ing">...</details blocks
  - <think>think> and <ing>...</reason> tags
 - trim leftover whitespace before writing to the clipboard
- In assistant_message_widget._buildSegmentedContent, remove an
  unused hasMediaAbove calculation and a conditional spacer that added
  extra top padding before reasoning tiles. This simplifies rendering
  logic and avoids relying on removed spacing behavior.
2025-10-23 22:37:06 +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
0df4b4f050 feat(ui): support authenticated image loading with cache manager
Add Riverpod-aware image header and cache manager support for network
images used in avatar and markdown widgets. Convert AvatarImage to a
ConsumerWidget and read a self-signed cache manager and HTTP headers
from Riverpod so CachedNetworkImage can send auth/custom headers and use
the provided cache manager. In Markdown image builder, obtain headers
and cache manager from a ProviderContainer (via ProviderScope.containerOf)
to enable the same authenticated loading in non-consumer contexts.

Introduce image_header_utils.dart to centralize building Authorization
and custom headers from auth/api providers, with helpers for Ref,
WidgetRef, and ProviderContainer. Add dependency adjustments in
pubspec.lock for flutter_cache_manager and http marked as direct main.

These changes ensure protected images (self-signed or auth-required)
load correctly across the app and reuse the configured cache manager.
2025-10-23 17:36:31 +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
8ec411d6aa feat(tts): server chunked playback queue on server pathRefactor server-backedTS path to perform sentence chunking and
queued playback via a dedicated _startServerChunkedPlayback method
instead of generating a single monolithic audio blob.

This change simplifies the server flow, avoids constructing an entire
audio buffer in memory, and enables smoother playback and error
recovery. On errors, the code still falls back to device TTS.
2025-10-23 16:46:24 +05:30