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.
- 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
Signed-off-by: xtex <xtex@astrafall.org>
Previously, a single broad state object caused unnecessary recompositions of the entire ChatListContent screen on unrelated changes (connectionStatus, updateState, activeChatId, search, proxy, selection). Now state is split by responsibility: - uiState: chrome, overlays, navigation flags - foldersState: folders, selected folder, loading, scroll position - chatsState: active chat list - searchState: search queries and results - selectionState: selection and active chat Benefits: - Unrelated updates no longer recompose the whole chat list - Chat list subscribes to a narrower flow, reducing noise - State model aligns better with actual screen use-cases, improving maintainability - Removed redundant ChatListStore intermediate layer Additionally, added a fast path in the repository for point updates by chatId to avoid rebuilding the entire list on individual item changes.
This preserves readable stacktraces under R8 so crash diagnostics are easier without fully disabling minification.
- filter out outgoing messages from notifications by tracking and verifying the current user's ID - refine chat mute logic to correctly handle default notification scope settings - optimize notification performance by pre-rendering messages with local data and preloading assets asynchronously - improve `FcmPushService` robustness with explicit wake lock management, JSON validation, and processing timeouts - fix `TdNotificationService` shutdown logic to ensure wake locks are released and monitoring jobs are cancelled - simplify `NotificationReplyReceiver` by removing redundant chat fetching and manual notification updates after a reply - enhance membership checks and sender resolution with improved caching and timeout handling
Resolve provider fallback through a single FCM -> UnifiedPush -> GMS-less priority function so unavailable providers downgrade predictably without unintended jumps.
Replace cached MessagingStyle objects with plain history entries and add safe PendingIntent/action builders with a fallback notification path so notification rendering failures no longer crash the app.
Escape single quotes in Turkish string resources (startup_connecting and permissions_required_description) to avoid formatting/parsing issues. Remove the obsolete revenue_title entry from presentation/src/main/res/values-tr/strings.xml.
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.