Conversation
…dead scope wiring
better crop in pic editor (no casino)
- add phone number placeholder using libphonenumber example numbers - add SIM card country auto detection via TelephonyManager - now using getCountryForPhone for searching country by code - add getExampleNumber tests
…f `bg_color` change (#214)
…211) - Allow sending null instead of empty object when sending event to client - Add custom throttle when sending "changed" event for sensors to respect refresh rate parameter, because passing sampling period doesn't guarantee that it will send update for sensors at specified rate > samplingPeriodUs - The rate sensor events are delivered at. **This is only a hint to the system. Events may be received faster or slower than the specified rate. Usually events are received faster.** - Wrap all evaluateJavascript calls to `webapp.post` to make them asynchronous - Refactor `stopSensor` function to accept 1 or many types as list and remove specific code for device orientation
Introduce androidx-compose-ui = "1.11.0-beta02" and update Compose UI module entries to use version.ref = "androidx-compose-ui" (ui, ui-graphics, ui-tooling, ui-tooling-preview). This centralizes the Compose UI version instead of relying on the runtime version, ensuring consistent UI artifact versions.
Refactor TypingDots to draw with Canvas and a single animated phase for smoother, cheaper animations. Introduce ChatContentTopBarUiState and pass selectedCount/canRevokeSelected to ChatContentTopBar to reduce recompositions and avoid recalculating derived selection data in the top bar. Prevent redundant state updates and store intents in ChatStoreFactory and DefaultChatComponent by guarding against unchanged values. Debounce duplicate bottom-reached reports in ChatContent (track lastReportedBottomState) and use snapshot data for unread/visibility logic. Misc: wire through topBarState fields throughout ChatContentTopBar to centralize UI state.
Enable Gradle configuration cache and simplify APK and OSS dependency handling. - Added org.gradle.configuration-cache=true to gradle.properties. - Replaced a custom APK rename task with a Sync task that copies *.apk into the releases/ directory (imports Sync, removes builtArtifacts-based renaming logic, and cleans existing monogram-*.apk files before copying). The assemble<Variant> tasks now finalize by the new copy task. - Adjusted DependencyTask handling for OSS licenses to use explicit buildDir generated JSON file paths, depend on the release task by name, ensure destination directory exists, and copy the release dependencies.json to the debug location if present.
Add res/raw/keep.xml to both app and presentation modules to prevent resource shrinking from removing string and plural resources. The XML declares the tools namespace and uses tools:keep=@string/*,@plurals/* to retain these resources during build (resource shrinker/R8).
Introduce targeted media-path updates and one-shot cache reset support. Change updateMediaPath signature to include chatId and messageId and implement per-message update in in-memory and Room data sources; add queries to clear cached media paths and avatar paths in DAOs. Add clearCachedMediaPaths / clearCachedChatAvatarPaths / clearCachedAvatarPaths implementations across in-memory and Room sources. Remove eager chat avatar file preloading from ChatCache and adjust TdFileHelper to prefer valid stored/cache paths and avoid falling back to stale cache. Replace FileUpdateHandler usage in MessageRepository with messageDownloadFlow handling and add a hard cache reset guarded by a KeyValue flag; update DI to provide StickerPathDao and KeyValueDao.
- add `androidx.core:core-splashscreen` dependency - implement `installSplashScreen` in `MainActivity` with a custom exit animation - add splash screen themes and drawables for light, dark, and system modes - implement dynamic startup theme resolution based on app night mode settings (System, Light, Dark, Scheduled, or Brightness) - update `StartupContent` with improved animations and conditional logo visibility for Android 12+ - add a smooth transition overlay between the splash screen and the main app content - update `AndroidManifest.xml` to use the new startup theme by default
- add support for batch saving multiple files at once - add audio messages to downloadable content types - implement unique filename resolution to prevent overwriting existing files - improve download status reporting and error handling - update Scoped Storage implementation with `IS_PENDING` flag for better reliability - refactor `DownloadUtils` to share logic between single and batch operations
- add support for forwarded message content in `DocumentMessageBubble`, `AudioMessageBubble`, and `ChatAlbumMessageBubble` - display sender name in group chat album bubbles - fix reaction source in channel albums to use the last message instead of the first - ensure album messages are sorted by date and ID to maintain consistent display - refactor `ChatAlbumMessageBubble` to use `MessageMetadata` and improve padding for reply/forward content - fix reply swipe action in albums to target the last message
- add `splash_logo_monochrome.xml` with light, dark, and API 31 dynamic color variants - update splash and startup backgrounds to use the new monochrome logo - replace hardcoded splash background colors with system dynamic colors for API 31+
- add "Paste image" option to the text context menu - implement `contentReceiver` to handle image URIs from clipboard - update `InputTextField` to use `TextFieldState` for improved content handling - add localized strings for "Paste image" action across multiple languages
Move notification service startup after the first Compose frame and lazily initialize warmup/sponsor sync in Koin to reduce startup pressure.
Use rememberSaveable and derivedStateOf across chat surfaces, add stable keys for dynamic lazy lists, and throttle pagination triggers to cut recomposition and scroll churn.
- introduce `ChatScrollCommand` for unified handling of viewport restoration, jumping to messages, and scrolling to bottom - implement `ChatViewportCacheEntry` to store anchor message ID and precise pixel offsets - add staged scrolling to handle large distance jumps more efficiently - update `CacheProvider` and `CachePreferences` to persist and retrieve detailed viewport state - replace simple message ID scrolling with the new command-based system in `ChatContent` - enhance logic for restoring scroll position when opening chats or topic threads - optimize viewport snapshot capturing and saving on lifecycle events
Ensure startForegroundNotification() is called immediately when the service starts to satisfy startForegroundService() timing requirements on Android 8+. The FCM provider check was moved after starting the foreground notification (and wakelock acquisition was reordered) so the service can properly enter foreground before being stopped for FCM. Also add handling to stop the foreground service and return when FCM is selected if the service is already running.
- adjust `ChatTopBar`, `ChatListTopBar`, and `ChatInputBar` to handle specific padding and inset requirements for tablet devices - introduce a header overlay in `ChatContent` for improved visual consistency on tablets - replace static member count strings with `plurals` resources across multiple languages (en, pt-br, hy, ru, sk, es, uk, zh-cn) - optimize `MessageLoading` logic to better merge previous message states and reactions during updates - fix `AlbumMessageBubbleContainer` to correctly toggle sender avatar and name visibility based on message grouping (same-sender logic) - remove redundant `activeChatId` parameter from `ChatListItem` and simplify its background color selection logic
- introduce `shouldGroupSenderBlock` to centralize message grouping logic based on sender ID, name, custom title, and date breaks - update `MessageBubbleContainer` and `AlbumMessageBubbleContainer` to use the new grouping logic - expand `remember` keys to include sender metadata and message IDs for more accurate recomposition - ensure messages with invalid sender IDs (<= 0) are not grouped together
- prevent showing summary and translation options when original text can be restored - disable message forwarding in the options menu when viewing translated or summarized content - update original text restoration logic to properly clear transformed state instead of overwriting it - add a visual separator line before the attribution text in AI-generated content - ensure read date metadata is preserved when creating the options menu message state
Consolidate and simplify startup overlay effects and state tracking. Introduces startupChild and wasStartupActive to more robustly detect startup transitions, replaces two LaunchedEffect blocks with a single effect keyed on isStartupActive and startupChild?.component, and centralizes the logic that shows/hides and clears the startupOverlayComponent (preserving the existing delay timings). This reduces race conditions and makes overlay lifecycle easier to reason about.
- introduce `LocalTabletInterfaceEnabled` CompositionLocal to provide tablet layout preference across the app - add "Tablet Interface" switch in Chat Settings to toggle split-screen layout on supported devices - update `MainContent` to respect the tablet interface preference when deciding whether to show the expanded layout - integrate `LocalTabletInterfaceEnabled` into `AuthContent`, `ChatContent`, `ProfileContent`, and various TopBar components to gate tablet-specific UI logic - persist the tablet interface state in `AppPreferences` - add localized strings for the new setting in multiple languages (English, Portuguese, Armenian, Russian, Slovak, Spanish, Ukrainian, Chinese)
Set `createdAtStart = true` for `OfflineWarmup` and `SponsorSyncManager` in the Koin module to ensure these services start immediately on application launch.
- add `rawText` parameter to `MessageText` to ensure text blocks use unformatted source strings for entity mapping - implement `safeSubstring` and add bounds checking via `coerceIn` when calculating offsets in `MessageText`, `Mappers`, and `MessageUtils` - pass `content.caption` or `content.text` as `rawText` across all message bubble types (Photo, Video, Document, GIF, etc.) - update `TextMessageBubble` to include text and entities in its `AnimatedContent` target state to ensure synchronized updates during edits - move `rememberMessageInlineContent` inside the `AnimatedContent` block in `TextMessageBubble` to fix stale inline content during transitions
This keeps proxy management fully user-controlled and removes legacy external telega syncing, selection rules, and UI/prefs wiring across layers.
- implement automated proxy switching based on network type (Wi-Fi, Mobile, VPN, Other) - add support for proxy "Network Rules" with modes: Direct, Best Proxy, Last Used, and Specific Proxy - introduce configurable fallback behavior when a selected proxy is unavailable - implement proxy list sorting by active status, latency, server name, type, or status - add ability to mark proxies as favorites and hide offline proxies from the list - implement proxy list import and export via JSON files - support copying proxy configurations as deep-link URLs (`tg://proxy`) - update `ConnectionManager` to dynamically apply proxy rules on network changes - refine proxy item UI with favorite indicators, detailed status, and a new options menu - update localized strings across multiple languages to support new proxy features
…edCircularRecorderScreen` fix #221 - introduce `SessionAudioRecorder` using `MediaRecorder` to capture audio independently from video segments - update `CircularTranscoder` to merge the independent audio session file with concatenated video segments - increase output resolution to 640x640 and adjust bitrate/frame rate for better quality - implement `handleSegmentError` and enhance cleanup logic to ensure audio/video files are deleted on cancellation or failure - fix zoom handling by explicitly updating `currentZoomRatio` during transformation gestures - refine `QualitySelector` to prefer HD with a fallback to SD - ensure audio session stops and cleans up across lifecycle events and recording states
- improve brightness and volume gesture reliability by using accumulated drag deltas and specific control zones (33% width) - prevent vertical dismissal gestures when video controls are hidden or the player is locked - add `allowZoom` and `allowDismiss` flags to `detectZoomAndDismissGestures` for more granular gesture control - sync volume gesture increments with system audio steps using `roundToInt` - ensure gesture overlays only trigger when dragging within the designated side zones
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.