What's Changed
Added
- Added native Pixiv Ugoira animation playback in timelines, artwork details, and media viewers on Android, iOS, macOS, and Desktop, with coordinated autoplay, loading progress, and retry controls.
- Added Pixiv Ugoira export as MP4 on Android, iOS, and macOS. Exports preserve the original frame timing and include progress, cancellation, and an option to export at a smaller resolution when the device cannot encode the original size.
- Added a draggable post-details panel to the media viewer on Android and iOS. Drag up to read the full post, view quoted posts, and use post actions without leaving the viewer. A new appearance setting controls whether post details are shown.
- Added Bluesky uploads for MP4 and MOV videos and animated GIFs, including media attached to quote posts. GIF uploads retain their animated presentation.
Improved
- Bluesky home timelines now hide replies to accounts you do not follow while keeping self-replies and replies to your own posts.
- Unified adaptive native lists across iOS timelines, profiles, search, discovery, local history, and user lists. Column counts now follow the available width, while standard post-detail screens remain centered in a single column.
- Improved initial timeline loading and native pull-to-refresh on iOS. Initial content no longer waits for the refresh indicator to finish appearing, loading placeholders avoid unnecessary insertion animations, and refresh completion stays coordinated with content updates.
- Reduced memory use for large media uploads and draft attachments by streaming file data. Animated GIFs bypass still-image compression, and upload filenames and MIME types are normalized from the actual file contents where recognized.
- Improved media imports on iOS and macOS by retaining file-backed attachments until draft saving finishes. The iOS photo picker preserves original GIF and video files, shows video attachment tiles, and prevents sending before selected media has finished loading.
- Improved upload validation and error handling, including Mastodon instance media limits and explicit failures when a service does not return a media ID. X and Bluesky video uploads wait for processing to finish before publishing the post.
- Improved posting visibility selection and validation when accounts or posting targets change. Saved visibility choices fall back to supported options, and multi-account posting uses the options shared by its targets.
- Improved login platform discovery with concurrent server probes and timeouts while preserving the priority of native service detection over compatibility fallbacks.
- Made long-post and quote folding consistent across Android, iOS, macOS, Desktop, and Web. Folding follows rendered content height, and the expand control appears only when content actually exceeds the folding threshold.
- Aligned icons more consistently in stretched post-action bars, keeping their spacing stable as counters change.
- Included Pixiv animation files in cache clearing, with Ugoira cache sizes included in Android and Desktop storage totals.
Fixed
- Fixed notification and mention feeds losing or merging entries through automatic reply-chain collapsing. Separate notifications about the same post now retain their own identities and notification timestamps while sharing updated post content.
- Fixed X notifications omitting posts contained in timeline modules and losing quote or repost presentation in referenced posts.
- Fixed overlapping timeline pages moving already loaded posts to the bottom when loading older content. Existing posts can update without changing their reading position.
- Fixed duplicate timeline and media keys causing crashes on Android and Desktop, including repeated attachments and item identity collisions across accounts.
- Fixed opening or returning from a media viewer selecting the wrong attachment when the same media appears more than once on Android and Desktop. Carousel selection now follows the attachment's position rather than its URL.
- Fixed crashes when adding list members whose profiles were not cached. Concurrent additions are deduplicated, and existing memberships remain recognized even when their profile data is missing.
- Fixed cancelled sends leaving drafts stuck in a sending state. Unsent destinations remain retryable, and destinations that already published successfully are removed before cancellation can cause them to be retried.
- Fixed Bluesky video saving by resolving downloadable video blobs instead of saving HLS playlists, including videos in quoted posts. Downloaded files also use the correct media filename and extension.
- Fixed X Article images appearing in the wrong order and embedded videos rendering as still images instead of playable video blocks.
- Fixed HTML entities such as
&appearing undecoded in translations supplied by X. - Fixed relative links in Mastodon posts and profiles, Pixiv captions, FANBOX articles, and Android RSS content by resolving them against the source page.
- Fixed iOS timeline jumps during pagination, refreshes, incoming posts, and changes to measured cell heights. Reading positions also survive temporary loading placeholders, rotation, and window resizing more reliably.
- Fixed iOS timelines carrying a previous list's scroll position into a different list or account. Search results also keep separate list state when the query or account changes.
- Fixed late-loading post headers and top sections remaining offscreen when an iOS list is at the top, including during pull-to-refresh, while preserving the reading position when already scrolled down.
- Fixed iOS media carousels retaining outdated item dimensions after rotation or resizing.
- Fixed an Apple-platform video playback crash when a previous looping video was still loading as the shared player was reused.
- Fixed iPad tab-bar crashes when rotating or resizing between sidebar and compact layouts.
- Fixed iOS media swipe-to-dismiss gestures failing with embedded pager views, and media failing to return to its original position after a cancelled dismissal drag. Post-sheet interactions no longer trigger the viewer's dismissal gesture.
- Fixed clipped or inconsistently sized iOS media summaries by showing profile names and handles on separate lines and measuring the summary together with its media controls.
- Fixed extra horizontal padding in plain-style Weibo detail headers on iOS.
- Fixed custom post-action layouts inserting disabled placeholders for unavailable actions. Unsupported actions are omitted, and empty action bars no longer leave unnecessary spacing.
- Fixed Android crashes when opening malformed links or links without an available handler. Failed link launches now show an error instead of crashing.
- Fixed Android media-grid crashes when an attachment list shrinks during an update.
- Made file-based media replacement on macOS preserve the existing destination until the new export has been copied successfully.
Performance and Internal Changes
- Reduced redundant ancestor processing when collapsing long reply chains, improving large-thread and mixed-timeline loading performance.
- Reduced unnecessary iOS timeline snapshot rebuilds and offscreen measurements. Visible cells refine cached heights, and rapid content updates are coalesced before reaching the collection view.
- Added regression coverage for iOS reading positions, refresh and resize behavior, media-sheet gestures, Pixiv playback and MP4 encoding, streaming uploads, draft cancellation, notification identities, list membership, duplicate media selection, HTML links, and invalid Android links.
- Updated Compose Multiplatform to
1.12.1, Material 3 to1.5.0-alpha29, Coil to3.6.3, Ktor to3.6.0, Media3 to1.11.1, Sentry to8.58.0, AndroidX Core to1.19.1, CrashKiOS to0.10.0, QRose to1.3.0, ColorPicker Compose to1.3.0, Desktop Navigation 3 to1.1.2, and Bluesky lexicons to2026.09.22. - Updated Android Gradle Plugin to
9.4.1, Gradle to9.8.0, the BuildConfig plugin to6.1.1, and the dependency-updates plugin to0.64.0.
Full Changelog: 1.7.6...1.7.7