✨ What's new?
- Support for Instagram version 444.0.0
Languages
- Sparkle is now translated into 16 more languages, downloaded from the release page and imported in Settings as language packs
- Import several packs at once from the Files picker, see each one's coverage in the list, and remove one with a swipe
- A pack overrides a shipped catalog of the same language, so a translator can preview their corrections on device
- New Help Translate entry and a contributor guide for anyone who wants to improve a language
Interface
- Tab Editor: the launch tab, icon order, swipe behavior, per-tab hiding and messages-only mode collapse into one screen that stages the whole bar with a live preview and applies it in a single action
- Saved is its own tab entry now rather than a Reels replacement, borrowing a hidden tab's slot in the custom layout
- Hiding the tab bar generalizes from messages-only to any single-tab configuration, and is refused where it would leave no way into Sparkle settings
- App Font: import an
.otf,.ttfor.ttcand set both Instagram and Sparkle in it, previewed face by face with alphabet and figure lines before you pick
Stories
- Hide Recent Highlights: resurfaced highlights are dropped from the tray, from tapping forward, and from swiping sideways, since all three read a different list
- Filter your viewer list (Don't Follow You / You Follow / You Don't Follow / Starred) and star the people you look for
- Mention Count Badge: how many unique accounts a story mentions, redacted along with the glyph by Hide UI on Capture
- Story Audio Button: mute or unmute a story from the viewer, restoring the previous audio state on close so Feed and Reels stay isolated
Messages
- Activity notifications: online, offline, typing and read events from tracked users, with per-account lists, group-aware context and their own settings page
- Audio and upload rows expand as native submenus instead of opening an action sheet over the thread
- Look up a GIF's real name and channel from the comment and Direct menus (off by default, since each uncached lookup tells giphy.com which GIF is on screen)
Instants
- Confirm a recorded video before Instagram sends it, with the camera feed preserved if you cancel. Photo instants remain unsupported
- Toggle instant auto-save for an account straight from the action menu, which also saves the instant already on screen
Media
- Select Text in Photos: Sparkle's own select-text button and Copy All capsule replace VisionKit's, with real Liquid Glass on iOS 26 and the info overlay stepping aside while text is highlighted
Reels
- Hide Viewer Comment Bar: removes the bottom comment field from the reels viewer
Settings
- Contextual information sheets opened from section headers, in place of long footers, and included in settings search
- Sparkle's own lists use Instagram's follow control, gaining the Requested and Follow back states the previous two-state button could not express
🛠 Fixes & Improvements
- Rootful packages install to
/Libraryagain. A makefile variable overrode the build environment, so both build paths produced rootless packages and the "rootful" debs in v1.1.0 and v1.2.0 unpacked to/var/jb - Inbox seen menu and message preview unlock work again on latest Instagram, which ships a second inbox controller behind a server experiment
- The reels header hides again on the navigation bar the viewer actually uses, and comes back when the preference is turned off instead of staying gone until relaunch
- Explore and recent-search hiding repaired
- Reels opened from a profile scroll freely instead of hitting the doom-scroll cap, which now applies only to the Reels home and tab feeds
- Stories get marked as seen again
- A story no longer lists the same account several times over on a reshare, and follow state is no longer read off a localized button title
- Fixed a crash around message reactions
- Gallery backups that need a schema migration import again, including pre-rename stores. The backup file itself is never modified
- Gallery import rows update when a thumbnail finishes off screen, and retry after a render that came back empty
- Clearing finished download history is scoped to the current account
- Unfollowing asks for confirmation again now that the follow controller moved to Swift, and every prompt is worded from the account's actual state instead of announcing an unfollow as a follow
- Instants act on the media actually on screen, and keep their expanded order across sessions
- Notifications reach the right account on sideloaded multi-account installs instead of arriving generic or claiming the account is logged out
- Uploaded audio shows its real waveform instead of a static pattern
- Copied links no longer carry the
igsitracking parameter - FFmpeg frameworks are signed correctly for each output path, and bundle resources resolve per file so encoding still works on development installs
- Bundled resources stay readable when the package is installed as root