From 953ee0de82ada728fb3fdc9ebd40ea23f668b002 Mon Sep 17 00:00:00 2001 From: faroukbmiled Date: Wed, 9 Sep 2026 23:56:22 +0100 Subject: [PATCH] sync: localization, readme, issue templates, build-from-release workflow, safari extension --- .github/workflows/buildapp-from-release.yml | 3 +- NOTES.md | 315 ++++++++++-------- README.md | 42 +-- .../Resources/ar.lproj/Localizable.strings | 1 + .../Resources/en.lproj/Localizable.strings | 1 + .../Resources/es.lproj/Localizable.strings | 1 + .../Resources/fr.lproj/Localizable.strings | 1 + .../Resources/id.lproj/Localizable.strings | 27 +- .../Resources/ja.lproj/Localizable.strings | 1 + .../Resources/ko.lproj/Localizable.strings | 1 + .../Resources/pt-BR.lproj/Localizable.strings | 1 + .../Resources/ru.lproj/Localizable.strings | 1 + .../Resources/tr.lproj/Localizable.strings | 1 + .../Resources/vi.lproj/Localizable.strings | 1 + .../zh-Hans.lproj/Localizable.strings | 1 + .../zh-Hant.lproj/Localizable.strings | 1 + 16 files changed, 230 insertions(+), 169 deletions(-) diff --git a/.github/workflows/buildapp-from-release.yml b/.github/workflows/buildapp-from-release.yml index bee6928..a5508e7 100644 --- a/.github/workflows/buildapp-from-release.yml +++ b/.github/workflows/buildapp-from-release.yml @@ -187,8 +187,7 @@ jobs: set -euo pipefail wget "$Instagram_URL" --no-verbose -O packages/com.burbn.instagram.ipa - # The IPA is user-supplied, so its version can differ from the one the - # deb was named after. Name the output after what actually got built. + # The IPA is user-supplied, so its version can differ from the deb's. PLIST="$(unzip -Z1 packages/com.burbn.instagram.ipa 'Payload/*.app/Info.plist' 2>/dev/null | awk -F/ 'NF==3' | head -1 || true)" IPA_VER="" if [ -n "$PLIST" ]; then diff --git a/NOTES.md b/NOTES.md index a38c5d1..273b51b 100644 --- a/NOTES.md +++ b/NOTES.md @@ -1,156 +1,205 @@ -[release] RyukGram v1.3.4 +[release] RyukGram v1.4.0 Updated for Instagram 446.0.0. +### ✨ Highlights +- **Setting profiles.** Keep several complete setups under names and switch between them in a tap. Give each one a color and icon, duplicate it, share it as a file, or tie it to an Instagram account so it follows your quick switch +- **MobileConfig browser.** Read and change Instagram's own internal settings from inside the app, with search, copiable details, and export or import of everything you changed +- **Story stats.** Overview numbers over your archive, a views-per-story chart, and a searchable audience list you can filter, sort and pin. Tap anyone to see every story of yours they watched and how they reacted +- **Custom fonts.** Import your own .ttf or .otf files or download from thousands online, then use them across Instagram, RyukGram, or the story text tool +- **Full-resolution photos.** Photos download at their original upload size, often far larger than the copy Instagram hands the app, with a picker showing dimensions, format and file size per option +- **Post and Reel buttons.** Reorder Instagram's own like, comment, share, repost and save buttons, hide any of them, or drop a count without hiding its button +- **View-once media while closed.** Catch disappearing DM media that arrives while Instagram is fully shut, and keep it in the log when it gets unsent +- **Update checker.** RyukGram tells you when a newer release is out, shows what changed, and keeps every past release on its own page under About + ### 🆕 New features -- A post or story downloaded to the gallery stays one item you swipe through, with a switch in Gallery Settings -- Always mute starts feed, reels, stories and DMs silent until you tap a speaker or press volume -- Auto-clear cache can run on every launch -- Backup & Restore is now Backup & Profiles, with a profile shortcut on the settings home page -- Backup, restore and storage list MobileConfig changes as their own item -- Backup, restore and storage list the duplicate download list as their own item -- Bring back the old Instagram logo in the feed header -- Call recordings are tagged auto or manual in the list -- Catch view-once media that arrives while Instagram is fully closed and keep it in the log when unsent, off by default, with size and age cleanup -- Confirm before a reaction sends in a chat — pick whether it catches only the accidental double-tap reaction or every reaction you send -- Copied text can open in a sheet first so you can edit it or copy only the part you selected -- Custom fonts for Instagram, RyukGram, or both, set under Theme -- Custom fonts in the story text tool: your imported and device fonts show up next to the built-in ones when you add text to a story -- Deleted messages log entries can open the chat and jump to where the message was -- Deleted messages log: logging view-once media you open is its own switch, off by default -- Disappearing media has its own settings page, and the mark-as-viewed button only shows when view receipts are blocked -- Doom scrolling limit can now cap the grids on audio, effect, template and remix pages too -- Duplicate download check asks before you save the same media twice, and can remove the old gallery copy first -- Expanded view shows the whole reel instead of cropping the sides -- Fake profile options now live on their own page under Profile, with the username, name, counts and badge together -- Fake username and display name for your own account, shown only on your device -- Follow indicator in follower and following lists, with its own style kept separate from the profile one -- Group any gallery files into an album, or split one back apart, from multi-select -- Hide reels in chats so they never show or open in DM threads -- Hide metrics and the two hide repost button switches now live in those pages, per button instead of all at once. Your old settings carry over -- Hold a song in any music picker to download the audio -- Hold any tab in the bottom bar to open a RyukGram screen, picked per tab under Interface > Tab bar > Tab shortcuts. Replaces the separate home, search and DM hold toggles -- Hold controls for reels: force hold-to-pause, force the options menu, or the options menu with picture in picture -- Hold the story eye button to mark every story in a reel as seen, or only the ones up to where you are -- Import your own .ttf or .otf fonts, or download from thousands online -- Indonesian translation added -- Importing a backup can send its settings to a new profile instead of the ones you're using -- Kept unsent messages can be marked with a tag, a faded bubble, a tinted bubble or any mix, with your own tag text, position, size and colors -- Link a profile to Instagram accounts and it switches with the account, with an unlinked profile covering the rest -- Long press a tracked follow request to open the profile, view the picture, filter to that user, copy the username or delete the entry -- Machine ID masking, pinned like the rest of the identifiers, with copy and manual entry -- Manage fonts in bulk from either font picker, with multi select and a delete confirmation -- Mask everything & relaunch rolls every identifier, blocks Apple attestation and clears saved logins in one tap, from Settings or the login screen button -- Messages-only mode now switches in place, no restart, whether you flip it yourself or the schedule does -- MobileConfig changes can be exported and imported from the browser menu -- New MobileConfig browser to read and change Instagram's own internal settings, with search inside a config, copiable config details and a home shortcut entry -- New Post buttons and Reel buttons pages: reorder Instagram's own like, comment, share, repost and save buttons, hide any of them, or drop a count without hiding its button -- New switch to hide the Threads button in the profile header -- New Updates page under About with the update status, what's new in your build, every past release, and switches for the automatic checks -- Optional ryuk_ prefix on saved file names, under Media saving -- Photos can download at their full upload size, often much larger than the copy Instagram hands the app -- Pick the size a photo downloads at, with the dimensions, format and file size on every option -- Playback controls for stories with speed, seek and pause, held from the ⋯ or speaker button or opened from the story menu + +#### Setting profiles +- Keep several complete setups under names and switch between them in a tap - Profiles carry a name, color and icon, and can be duplicated, exported or shared as a file -- Refresh names & photos from the story stats screen and any story viewers list +- Link a profile to Instagram accounts and it switches with the account, with an unlinked profile covering the rest - Reset a profile to defaults or turn everything off inside it, with a count of what is on and what differs -- Restored MobileConfig changes wait until you turn the browser on -- RyukGram tells you when a newer release is out, shows what changed in it, and links straight to the Telegram channel -- Saved files now share one naming scheme everywhere, stamped with the date the post went up instead of the moment you downloaded it -- Select recordings in a call log to save them to the gallery, share them, share video calls as audio only, or delete them together -- Setting profiles: keep several complete setups under names and switch between them in a tap -- Spacing between story and disappearing media overlay buttons is adjustable with a slider in the layout editor +- Importing a backup can send its settings to a new profile instead of the ones you are using +- Backup & Restore is now Backup & Profiles, with a profile shortcut on the settings home page + +#### Fonts and theme +- Import your own .ttf or .otf fonts, or download from thousands online +- Use custom fonts for Instagram, RyukGram, or both, set under Theme +- Your imported and device fonts show up in the story text tool next to the built-in ones +- Manage fonts in bulk from either font picker, with multi-select and a delete confirmation + +#### Messages +- Catch view-once media that arrives while Instagram is fully closed and keep it in the log when unsent, off by default, with size and age cleanup +- Logging view-once media you open is now its own switch in the deleted messages log, off by default +- Deleted messages log entries can open the chat and jump to where the message was +- Mark kept unsent messages with a tag, a faded bubble, a tinted bubble or any mix, with your own tag text, position, size and colors +- Confirm before a reaction sends in a chat, catching only the accidental double-tap or every reaction you send +- Hide reels in chats so they never show or open in a thread +- Messages-only mode switches in place with no restart, whether you flip it yourself or the schedule does +- The messages-only schedule can ask first and switch only when you confirm + +#### Stories +- Story stats for the archive: overview numbers, a views-per-story chart, and a searchable audience list with filters, sorting and pinned viewers on top +- Story stats compares the last 7 or 30 days against the stretch before it +- Tap someone in the audience list to see every story of yours they watched and what they reacted with +- Refresh names and photos from the story stats screen and any story viewers list +- Playback controls for stories with speed, seek and pause, held from the ⋯ or speaker button or opened from the story menu +- Hold the story eye button to mark a whole reel as seen, or only the stories up to where you are +- Disappearing media has its own settings page, and the mark-as-viewed button only shows when view receipts are blocked +- A slider in the layout editor sets the spacing between story and disappearing media overlay buttons +- Buttons placed next to each other close the gap when one of them is hidden, with a switch to turn it off + +#### Feed and reels +- New Post buttons and Reel buttons pages to reorder Instagram's own like, comment, share, repost and save buttons, hide any of them, or drop a count without hiding its button +- Hide metrics and the two hide repost switches moved into those pages, per button instead of all at once, and your old settings carry over +- Tap a reel in the feed to play it in place instead of opening the Reels player, or play first and open on a second tap +- Hold controls for reels: force hold-to-pause, force the options menu, or the options menu with picture in picture +- The reels playback menu gains a pause control +- Expanded view shows the whole reel instead of cropping the sides +- Bring back the old Instagram logo in the feed header - Status bar tap on the feed can scroll up without refreshing, or be turned off - Stop the right swipe on the feed from opening the camera -- Story and disappearing media buttons placed next to each other close the gap when one of them is hidden, with a switch to turn it off -- Story stats compares the last 7 or 30 days against the stretch before it -- Story stats for the archive: overview numbers, a views-per-story chart, and a searchable audience list with filters, sorting and pinned viewers on top -- Tap someone in the story stats audience list to see every story of yours they watched and what they reacted with -- Tapping a reel in the feed can play it in place instead of opening the Reels player, or play first and open on a second tap +- The doom-scrolling limit can cap the grids on audio, effect, template and remix pages too + +#### Profile +- Fake profile options moved to their own page under Profile, with the username, name, counts and badge together +- Fake your own username and display name, shown only on your device +- Follow indicator in follower and following lists, styled separately from the profile one +- Hide the Threads button in the profile header +- Long press a tracked follow request to open the profile, view the picture, filter to that user, copy the username or delete the entry + +#### Downloads and gallery +- Photos download at their full upload size, often much larger than the copy Instagram hands the app +- Pick the size a photo downloads at, with the dimensions, format and file size on every option +- Duplicate check asks before you save the same media twice, and can remove the old gallery copy first +- A post or story downloaded to the gallery stays one item you swipe through, with a switch in Gallery settings +- Group any gallery files into an album, or split one back apart, from multi-select +- Saved files share one naming scheme everywhere, stamped with the date the post went up instead of the moment you downloaded it +- Optional ryuk_ prefix on saved file names, under Media saving +- Hold a song in any music picker to download its audio + +#### Calls +- Call recordings are tagged auto or manual in the list +- Select recordings to save them to the gallery, share them, share video calls as audio only, or delete them together + +#### Interface and general +- Always mute starts feed, reels, stories and DMs silent until you tap a speaker or press volume +- Copied text can open in a sheet first so you can edit it or copy only the part you selected +- Hold any tab in the bottom bar to open a RyukGram screen, picked per tab under Interface, Tab bar, Tab shortcuts, replacing the separate home, search and DM hold toggles +- New MobileConfig browser to read and change Instagram's own internal settings, with search inside a config, copiable details and a home shortcut entry +- MobileConfig changes can be exported and imported from the browser menu +- Auto-clear cache can run on every launch +- Indonesian translation added + +#### Updates +- RyukGram tells you when a newer release is out, shows what changed in it, and links straight to the Telegram channel +- New Updates page under About with the update status, what is new in your build, every past release, and switches for the automatic checks - Tapping the RyukGram name or version on the settings links sheet opens the Updates page -- The reels playback menu gains a pause control -- The schedule can ask first and only switch when you confirm -- Updated for Instagram 446.0.0 + +#### Privacy +- Machine ID masking, pinned like the rest of the identifiers, with copy and manual entry +- Mask everything and relaunch rolls every identifier, blocks Apple attestation and clears saved logins in one tap, from Settings or the login screen button + +#### Backup +- Backup, restore and storage now list MobileConfig changes and the duplicate download list as their own items +- Restored MobileConfig changes wait until you turn the browser on ### 🛠 Fixes -- A broken translation now falls back to English instead of crashing the screen it is on -- A chat no longer shows as read on your other account after a quick switch -- About keeps showing the available version until you update, so dismissing the popup does not lose it -- App icon changes that fail now say why instead of showing a bare error -- Archived story viewers whose profile picture had stopped loading show up again -- Auto-clear cache no longer skips a whole period when a clear fails or gets cut short, it retries until one goes through -- Auto-clear no longer stalls after a clock change or a restored backup -- Bubble colors stay on the side you picked instead of leaking onto your own messages -- Call buttons hide again on Instagram 444 -- Calls no longer keep recording into the next call when auto-record is off -- Changing the app icon now works when Instagram is installed through SideStore or AltStore -- Chat backgrounds keep showing after a theme change on Instagram 444 -- Chats marked seen locally now drop the unread bold on accounts where nothing happened before -- Clearing the cache by hand no longer pushes the next auto-clear back -- Color pickers open as a smaller sheet that leaves the page behind it visible -- Confirmation popups no longer let the screen rotate where Instagram itself stays locked -- Data saved by older versions no longer crashes the screen that reads it -- Deleted messages log shows when an old message was originally sent, so it can't be mistaken for a new one -- Downloading a video opened from search saved the cover photo instead, now it downloads the video and offers every quality -- Downloading a whole post or story keeps its items in the order they were posted -- Export and import no longer crash Instagram while scanning what's on the device -- Fake verified badge stays put instead of vanishing on refresh -- File names no longer pick up a second extension or timestamp when the same media is saved again -- Follow confirmation works again on Instagram 443 -- Gradient bubble colors no longer vanish when you scroll a chat and come back -- Hiding tabs no longer leaves the tab bar over a reel opened from a chat, or covering the message box on the way back -- Hiding the reels header works again on Instagram 443 -- Importing only asks for a restart when what you imported actually needs one -- Instagram no longer launches into a tab you hid -- Instagram Plus story fonts unlock again, and the upgrade prompt stays away -- Icon browser drops the colour pet icons Instagram 446 removed, and a button whose icon is gone shows a marker instead of nothing -- Instants no longer crashes on a video it cannot read, and says so instead -- Instagram Plus story peek now works on DM inbox avatars, not only the stories tray -- Installing over the old pre-rename package now removes it instead of running both -- Kept unsent messages no longer disappear when a chat reloads its older history, survive a restart, and now cover older messages you never opened -- Korean translation reworked to read more naturally -- Link tracking removal now strips Instagram's new igsi parameter and works on links using a custom domain -- Long notification text now wraps and grows the pill instead of being cut off, with a limit and an ellipsis -- Long pressing an avatar outside a profile page opens and saves it in HD too + +#### Instagram 443 to 446 - Marking a story seen works again on Instagram 446 -- Masked device identifiers now stick: they are written even when Instagram never stored one, re-applied on every launch, and Instagram can no longer swap them back mid-session -- Message peek shows the chat, drops the upgrade row from the menu, and opens the chat when you tap it -- Moving between a chat and a reel no longer stacks a second tab bar under the first -- Old feed logo works again on Instagram 444 +- Story text color picker applies your color again on Instagram 446 - Note actions row shows again when you hold a note on Instagram 446 +- The icon browser drops the color pet icons Instagram 446 removed, and a button whose icon is gone shows a marker instead of nothing - Online status updates work again on Instagram 445 -- Opening an archived story no longer wipes its view, like and reaction counts, and counts already flattened are rebuilt from the saved viewers -- Reels no longer crash when scrolling away with the playback toggle on -- Release notes render properly now: sub-headings, nested bullets and inline code no longer come through as raw text -- Reverting to your real device ID no longer restores a masked value over it -- Rewinding a reel past its start now jumps to the beginning instead of doing nothing -- Saved profile pictures now keep the quality you see in the preview -- Settings carried over from an old install no longer come back with the wrong value -- Shared links now have the same tracking parameters removed as links opened in the browser -- Sharing from the gallery keeps the name you see in the list instead of a raw id -- Sharing from the expanded view names the file after the account and post date instead of a raw id -- Stories archive stops re-fetching viewers for stories that were deleted on Instagram -- Story date format now applies on accounts where Instagram uses a different timestamp style -- Story text colour picker applies your colour again on Instagram 446 - Story mentions button refreshes again when a story opens on Instagram 445 - Story viewer list header buttons are back on Instagram 445, and the reload button works for the first time -- Tab bar buttons now open the tab they show when some tabs are hidden -- Tapping a photo in a reel carousel now mutes it as intended -- The copy icon is back in the action button menus, Instagram had dropped the artwork it used -- The favourite option on comment GIFs shows its icon properly again -- The explore grid no longer flashes into view when the explore page opens with it hidden +- Call buttons hide again on Instagram 444 +- Chat backgrounds keep showing after a theme change on Instagram 444 +- The old feed logo works again on Instagram 444 +- Follow confirmation works again on Instagram 443 +- Hiding the reels header works again on Instagram 443 - The icon browser picks up the icons added in Instagram 441 -- The in-call record button now hides with Instagram's own call controls, so tapping to bring them back cannot start a recording -- The profile action button no longer overlaps the username in the profile top bar -- The Snapshots screen no longer crashes in Japanese, Turkish and Chinese -- The story viewers "Default list" option now shows translated in every language -- The unsent notification names the chat instead of saying a message was unsent, when the message itself can't be recovered -- Trimming an HDR video exports instead of failing -- Turning on the messages-only schedule asks to restart right away instead of waiting for the window to start +- Instagram Plus story fonts unlock again, and the upgrade prompt stays away +- Instagram Plus story peek now works on DM inbox avatars, not only the stories tray +- Message peek shows the chat, drops the upgrade row from the menu, and opens the chat when you tap it + +#### Messages +- Kept unsent messages no longer disappear when a chat reloads its older history, survive a restart, and now cover older messages you never opened - Unsent messages recovered from an older part of a chat now show who sent them and get logged with their content -- What's new no longer shows an older release's notes when you are on a build that has not been released yet +- The unsent notification names the chat instead of saying a message was unsent, when the message itself cannot be recovered +- Deleted messages log shows when an old message was originally sent, so it cannot be mistaken for a new one +- A chat no longer shows as read on your other account after a quick switch +- Chats marked seen locally now drop the unread bold on accounts where nothing happened before +- Bubble colors stay on the side you picked instead of leaking onto your own messages +- Gradient bubble colors no longer vanish when you scroll a chat and come back +- Moving between a chat and a reel no longer stacks a second tab bar under the first +- Hiding tabs no longer leaves the tab bar over a reel opened from a chat, or covering the message box on the way back +- Turning on the messages-only schedule asks to restart right away instead of waiting for the window to start - Your icon order and hidden tabs survive the messages-only switch instead of all coming back +#### Stories and reels +- Opening an archived story no longer wipes its view, like and reaction counts, and counts already flattened are rebuilt from the saved viewers +- Archived story viewers whose profile picture had stopped loading show up again +- The stories archive stops re-fetching viewers for stories that were deleted on Instagram +- The story viewers "Default list" option now shows translated in every language +- Story date format now applies on accounts where Instagram uses a different timestamp style +- Reels no longer crash when scrolling away with the playback toggle on +- Rewinding a reel past its start now jumps to the beginning instead of doing nothing +- Tapping a photo in a reel carousel now mutes it as intended +- Instants no longer crash on a video they cannot read, and say so instead +- The in-call record button now hides with Instagram's own call controls, so tapping to bring them back cannot start a recording +- Calls no longer keep recording into the next call when auto-record is off + +#### Downloads and files +- Downloading a video opened from search now saves the video with every quality option, instead of the cover photo +- Downloading a whole post or story keeps its items in the order they were posted +- File names no longer pick up a second extension or timestamp when the same media is saved again +- Sharing from the gallery keeps the name you see in the list instead of a raw id +- Sharing from the expanded view names the file after the account and post date instead of a raw id +- Saved profile pictures keep the quality you see in the preview +- Long pressing an avatar outside a profile page opens and saves it in HD too +- Trimming an HDR video exports instead of failing + +#### Feed, profile and interface +- Instagram no longer launches into a tab you hid +- Tab bar buttons now open the tab they show when some tabs are hidden +- The explore grid no longer flashes into view when the explore page opens with it hidden +- The profile action button no longer overlaps the username in the profile top bar +- Fake verified badge stays put instead of vanishing on refresh +- The copy icon is back in the action button menus, Instagram had dropped the artwork it used +- The favorite option on comment GIFs shows its icon properly again +- Color pickers open as a smaller sheet that leaves the page behind it visible +- Confirmation popups no longer let the screen rotate where Instagram itself stays locked +- Long notification text now wraps and grows the pill instead of being cut off, with a limit and an ellipsis +- Link tracking removal strips Instagram's new igsi parameter and works on links using a custom domain +- Shared links now have the same tracking parameters removed as links opened in the browser + +#### Privacy and identifiers +- Masked device identifiers now stick: they are written even when Instagram never stored one, re-applied on every launch, and Instagram can no longer swap them back mid-session +- Reverting to your real device ID no longer restores a masked value over it + +#### Cache, backup and settings +- Auto-clear cache no longer skips a whole period when a clear fails or gets cut short, it retries until one goes through +- Auto-clear no longer stalls after a clock change or a restored backup +- Clearing the cache by hand no longer pushes the next auto-clear back +- Export and import no longer crash Instagram while scanning what is on the device +- Importing only asks for a restart when what you imported actually needs one +- Settings carried over from an old install no longer come back with the wrong value +- Data saved by older versions no longer crashes the screen that reads it + +#### Install, updates and translations +- Changing the app icon now works when Instagram is installed through SideStore or AltStore +- App icon changes that fail now say why instead of showing a bare error +- Installing over the old pre-rename package removes it instead of running both +- The build-from-release workflow names the IPA after the Instagram version you supplied, not the one in the release +- About keeps showing the available version until you update, so dismissing the popup does not lose it +- What's new no longer shows an older release's notes when you are on a build that has not been released yet +- Release notes render properly now, so sub-headings, nested bullets and inline code no longer come through as raw text +- A broken translation falls back to English instead of crashing the screen it is on +- Korean translation reworked to read more naturally +- The Snapshots screen no longer crashes in Japanese, Turkish and Chinese + ### ⚠️ Known issues - Reopening the story text tool highlights your last custom font but starts typing in the default one until you tap it again - Unfollow confirmation does not appear on profiles on Instagram 446 diff --git a/README.md b/README.md index dfe17ee..520ddb8 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ **The Instagram tweak for iOS power users.** -`v1.3.4` · Instagram 446.0.0 | Instagram 410.1.0 +`v1.4.0` · Instagram 446.0.0 | Instagram 410.1.0 The Instagram 410 build is for older iOS versions and trails the main build on newer features. @@ -105,7 +105,7 @@ Once it is running, open the settings by holding the button at the top of your p - Stat pills on search and explore, with a page to pick and reorder them - Anonymous live viewing and toggleable live comments - Redact RyukGram's own buttons in screenshots and recordings -- Update checker that shows what changed and links to Telegram, with release notes for every past version +- Update checker with what changed, notes for every past release, and a link to Telegram ### Feed - Grid feed turns your home feed into thumbnails, each with its stats and author @@ -123,7 +123,7 @@ Once it is running, open the settings by holding the button at the top of your p - Status bar tap can scroll up only, or do nothing - Stop the right swipe on the feed from opening the camera - Confirm before a pull to refresh, or refresh only the stories tray -- Post buttons page to reorder Instagram's own like, comment, share, repost and save buttons, hide any of them, or drop their counts +- Post buttons page to reorder, hide, or drop the counts on Instagram's own like, comment, share, repost and save buttons ### Reels - Custom tap controls and an auto scroll mode @@ -132,7 +132,7 @@ Once it is running, open the settings by holding the button at the top of your p - Always visible scrubber, no auto unmute, and refresh confirmation - Expanded view that shows the whole reel instead of cropping the sides - Unlock password locked reels -- Reel buttons page to reorder or hide the sidebar buttons and their counts +- Reel buttons page to reorder, hide, or drop the counts on the sidebar buttons - Hide the header, friend avatars, and promo pills - Swipe left to open the author's profile - Show the repost date @@ -148,7 +148,7 @@ Once it is running, open the settings by holding the button at the top of your p - Save a photo story as just the image - Repost through Instagram's own flow - Full screen viewer with zoom and swipe -- Drag to arrange your overlay buttons on a live preview, with a slider for the spacing between them +- Drag your overlay buttons into place on a live preview, with a spacing slider ### Profile - Zoom or save the profile picture @@ -158,7 +158,7 @@ Once it is running, open the settings by holding the button at the top of your p - Copy notes, reveal full counts, and fake your username, name, stats and badge - Hide the Threads button in the header - Sort and search follower and following lists by mutuals, verified, and more -- Follow request tracker that logs every request, even ones cancelled before you answer +- Follow request tracker that logs every request, even ones canceled before you answer ### Profile analyzer - Follower and following scans, with mutuals and non followbacks @@ -166,34 +166,34 @@ Once it is running, open the settings by holding the button at the top of your p - Change history for name, username, bio, and picture - Inline and batch follow, unfollow, and remove - A log of every profile you open, with filters -- Per check toggles, with a badge for gains and losses since your last look +- Per-check toggles, with a badge for gains and losses since your last look ### Saving - HD downloads up to 1080p, with a quality picker and preview -- Full resolution photos pulled at their original upload size, or picked per size +- Full-resolution photos at their original upload size, or picked per size - Audio only and raw photo options - Download manager with live speed, filters, swipe actions, and bulk select - Download history that survives a restart, with redownload and a keep window -- Duplicate check that warns before you save the same media twice, and can drop the old gallery copy first +- Duplicate check before you save the same media twice, dropping the old gallery copy if you want - Auto retry for downloads that drop offline - Save into a dedicated RyukGram album -- Advanced encoding panel for codec, bitrate, resolution, and more +- Advanced encoding panel for codec, bitrate, and resolution - One clean filename everywhere, stamped with the date the post went up -- Optional ryuk_ prefix on saved filenames +- Optional `ryuk_` prefix on saved filenames - Optional download confirmation ### Gallery -- A private in app library that every download can mirror into +- A private in-app library that every download can mirror into - Images, video, audio, and animated GIFs - Filter by type, source, uploader, date, and favorites, with folders - Sort by date, name, or size, with images, videos, or favorites first - Group by user into sections or folders, from 2 to 5 columns -- A downloaded post or story stays one item you swipe through, and you can group or split albums yourself +- A downloaded post or story stays one swipeable item, and you can group or split albums yourself - Long press a user section to select all their media -- In app preview carousel +- In-app preview carousel - Pull audio and GIFs straight from the gallery - Import your own photos, videos and files into the gallery -- Grid tiles show a date chip, long press an item for its date, source and size +- Grid tiles show a date chip, and a long press gives date, source and size ### Stories and messages - Keep deleted messages, including your own unsends @@ -203,10 +203,10 @@ Once it is running, open the settings by holding the button at the top of your p - Catch view-once media that arrives while Instagram is closed - Log view-once media the moment you open it, off by default - Activity notifications for reads, online, offline, and typing, set per person -- An activity log that keeps it all as a timeline, filterable and swipe to delete +- An activity log as a timeline, filterable and swipe to delete - Accurate active status so the green dot turns off the moment someone leaves - Playback menu for story speed, seek, and pause, held from the story buttons or its menu -- Your own fonts in the story text tool, next to the built in ones +- Your own fonts in the story text tool, next to the built-in ones - Manual and automatic mark as seen - Hold the eye button to mark a whole story reel seen, or only up to where you are - Mark chats seen on your device only, the eye button stays orange until you really send it @@ -217,7 +217,7 @@ Once it is running, open the settings by holding the button at the top of your p - Turn off typing status, the vanish swipe, and view once limits - Hide shared reels in chats so they never show or open in a thread - Toggle your activity status from a dot in the DMs inbox -- Custom chat backgrounds from an image, video, or GIF, with a built in editor +- Custom chat backgrounds from an image, video, or GIF, with a built-in editor - Filter, sort, search, and pin story viewers, and see who reacted with what - Archive your own stories before they expire, viewer list included, per account - Story stats over your archive @@ -233,15 +233,15 @@ Once it is running, open the settings by holding the button at the top of your p ### Interface - A universal notification pill you can place anywhere on screen -- Mirror toasts to the iOS notification centre, in the background or while the app is open +- Mirror toasts to the iOS notification center, in the background or while the app is open - Reorder and hide tab bar icons on a live tab bar preview - Hold any tab bar tab to open a RyukGram screen, picked per tab -- Messages only mode, with a daily schedule that switches in place and inbox header shortcuts +- Messages-only mode, with a daily schedule that switches in place and inbox header shortcuts - Force Instagram into any supported language - Home shortcut button with new item badges - Bring back the old Instagram logo in the feed header - Experimental flags -- MobileConfig browser to read and change Instagram's own internal settings +- MobileConfig browser to read, change, export and import Instagram's own internal settings ### Confirm actions - Optional confirmations for likes, follows, reposts, calls, comments, and more diff --git a/src/Localization/Resources/ar.lproj/Localizable.strings b/src/Localization/Resources/ar.lproj/Localizable.strings index fc754f6..522adb6 100644 --- a/src/Localization/Resources/ar.lproj/Localizable.strings +++ b/src/Localization/Resources/ar.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "الترجمة الفيتنامية"; "French translation" = "الترجمة الفرنسية"; "Japanese translation" = "الترجمة اليابانية"; +"Indonesian translation" = "الترجمة الإندونيسية"; "Code contributions" = "مساهمات في الكود"; "Following feed mode (from InstaSane)" = "‏وضع يوميات المتابَعين (من InstaSane)‏"; "latest" = "‏الأحدث‏"; diff --git a/src/Localization/Resources/en.lproj/Localizable.strings b/src/Localization/Resources/en.lproj/Localizable.strings index be11e10..c17d18a 100644 --- a/src/Localization/Resources/en.lproj/Localizable.strings +++ b/src/Localization/Resources/en.lproj/Localizable.strings @@ -2375,6 +2375,7 @@ "Vietnamese translation" = "Vietnamese translation"; "French translation" = "French translation"; "Japanese translation" = "Japanese translation"; +"Indonesian translation" = "Indonesian translation"; "Code contributions" = "Code contributions"; "Following feed mode (from InstaSane)" = "Following feed mode (from InstaSane)"; "latest" = "latest"; diff --git a/src/Localization/Resources/es.lproj/Localizable.strings b/src/Localization/Resources/es.lproj/Localizable.strings index aa031da..a388e3a 100644 --- a/src/Localization/Resources/es.lproj/Localizable.strings +++ b/src/Localization/Resources/es.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "Traducción al vietnamita"; "French translation" = "Traducción al francés"; "Japanese translation" = "Traducción al japonés"; +"Indonesian translation" = "Traducción al indonesio"; "Code contributions" = "Contribuciones de código"; "Following feed mode (from InstaSane)" = "Modo de feed de Siguiendo (de InstaSane)"; "latest" = "última"; diff --git a/src/Localization/Resources/fr.lproj/Localizable.strings b/src/Localization/Resources/fr.lproj/Localizable.strings index 92a8ed5..29f919f 100644 --- a/src/Localization/Resources/fr.lproj/Localizable.strings +++ b/src/Localization/Resources/fr.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "Traduction vietnamienne"; "French translation" = "Traduction française"; "Japanese translation" = "Traduction japonaise"; +"Indonesian translation" = "Traduction indonésienne"; "Code contributions" = "Contributions de code"; "Following feed mode (from InstaSane)" = "Mode du fil Abonnements (depuis InstaSane)"; "latest" = "dernière"; diff --git a/src/Localization/Resources/id.lproj/Localizable.strings b/src/Localization/Resources/id.lproj/Localizable.strings index 14a184b..123d647 100644 --- a/src/Localization/Resources/id.lproj/Localizable.strings +++ b/src/Localization/Resources/id.lproj/Localizable.strings @@ -197,7 +197,7 @@ "Suppresses the \"It's time to update Instagram Beta\" nag" = "Menekan pesan \"It's time to update Instagram Beta\" yang mengganggu"; "Tap to apply" = "Ketuk untuk menerapkan"; "The selected icon will be saved and shown here the next time you open this page." = "Ikon yang dipilih akan disimpan dan ditampilkan di sini saat kamu membuka halaman ini lagi."; -"Your sideloading app replaced Instagram's icon list. Set its app icon back to Default, then refresh Instagram to get the icons back." = "Aplikasi sideload-mu mengganti daftar ikon Instagram. Setel ikon aplikasinya kembali ke Default, lalu segarkan Instagram supaya ikonnya kembali."; +"Your sideloading app replaced Instagram's icon list. Set its app icon back to Default, then refresh Instagram to get the icons back." = "Aplikasi sideload-mu mengganti daftar ikon Instagram. Setel ikon aplikasinya kembali ke Default, lalu refresh Instagram supaya ikonnya kembali."; "Toggle live comments" = "Alihkan komentar live"; "Use detailed color picker" = "Pakai pemilih warna detail"; "Used across feed, stories, reels, and DMs." = "Dipakai di feed, story, reel, dan DM."; @@ -747,7 +747,7 @@ "Story user list" = "Daftar pengguna story"; "Tapping the eye button to mark a story as seen advances to the next story automatically" = "Mengetuk tombol mata untuk menandai story sudah dilihat akan otomatis melanjutkan ke story berikutnya"; "This will send a story view receipt." = "Ini akan mengirim tanda tonton story."; -"This will send %ld story view receipts." = "Ini akan mengirim %ld tanda telah melihat story."; +"This will send %ld story view receipts." = "Ini akan mengirim %ld tanda tonton story."; "View story mentions" = "Lihat sebutan story"; "Which stories get seen-receipt blocking" = "Story mana yang mendapat pemblokiran tanda baca"; "Text tool" = "Alat teks"; @@ -932,9 +932,9 @@ "Show full date instead of \"Active 2h ago\"" = "Tampilkan tanggal lengkap, bukan \"Aktif 2 jam lalu\""; "Shows a button in DM threads to add/remove chats from the list. Long-press for more options" = "Menampilkan tombol di thread DM untuk menambah/menghapus chat dari daftar. Tekan lama untuk opsi lebih lanjut"; "Shows a notification pill when a message is unsent" = "Menampilkan pil notifikasi saat pesan dibatalkan"; -"Block view receipts" = "Blokir tanda telah dilihat"; +"Block view receipts" = "Blokir tanda tonton"; "Instagram reports a view when the media finishes playing. Block it and the media stays unopened until you send the receipt yourself." = "Instagram melaporkan tampilan begitu media selesai diputar. Blokir itu dan medianya tetap belum terbuka sampai kamu mengirim tandanya sendiri."; -"Available while view receipts are blocked." = "Tersedia selama tanda telah dilihat diblokir."; +"Available while view receipts are blocked." = "Tersedia selama tanda tonton diblokir."; "View-once photos and videos, and their buttons" = "Foto dan video sekali lihat, beserta tombolnya"; "Unsent message notification" = "Notifikasi pesan dibatalkan"; "Voice messages" = "Pesan suara"; @@ -1149,7 +1149,7 @@ "Start time" = "Waktu mulai"; "End time" = "Waktu selesai"; "Switch into Messages-only on its own during a time window" = "Beralih ke mode hanya pesan secara otomatis selama jangka waktu tertentu"; -"Turn Messages-only on by itself during a daily window (e.g. 10:00 PM – 6:00 AM) using the toggles above." = "Nyalakan Hanya pesan secara otomatis pada jendela waktu harian (misalnya 22.00 – 06.00) lewat sakelar di atas."; +"Turn Messages-only on by itself during a daily window (e.g. 10:00 PM – 6:00 AM) using the toggles above." = "Aktifkan Hanya pesan secara otomatis pada jendela waktu harian (misalnya 22.00 – 06.00) lewat sakelar di atas."; "Active now · ends %@" = "Aktif sekarang · berakhir %@"; "Next window starts %@" = "Jangka waktu berikutnya dimulai %@"; "Messages-only starting" = "Mode hanya pesan dimulai"; @@ -1497,7 +1497,7 @@ "Overwrite" = "Timpa"; "Profiles" = "Profil"; "Replaces it with your current settings." = "Menggantinya dengan pengaturanmu saat ini."; -"Reset %@ to defaults?" = "Setel ulang %@ ke bawaan?"; +"Reset %@ to defaults?" = "Reset %@ ke bawaan?"; "Saved as %@" = "Disimpan sebagai %@"; "Saved as a profile. Your current settings stay as they are." = "Disimpan sebagai profil. Pengaturanmu saat ini tetap seperti sekarang."; "Saves your current settings and switches to it." = "Menyimpan pengaturanmu saat ini lalu beralih ke sana."; @@ -1508,7 +1508,7 @@ "Switch" = "Beralih"; "Switching to a ticked account switches to this profile." = "Beralih ke akun yang dicentang akan beralih ke profil ini."; "Tap to switch. Changes stay in the profile in use. Swipe or hold for more." = "Ketuk untuk beralih. Perubahan tersimpan di profil yang sedang dipakai. Geser atau tahan untuk opsi lain."; -"Turn everything off in %@?" = "Matikan semuanya di %@?"; +"Turn everything off in %@?" = "Matikan semua di %@?"; "Turn off" = "Matikan"; "Use for other accounts" = "Pakai untuk akun lain"; "Your settings aren't saved to a profile." = "Pengaturanmu belum disimpan ke profil mana pun."; @@ -1602,10 +1602,10 @@ "MobileConfig overrides were reset after repeated crashes on launch" = "Penimpaan MobileConfig disetel ulang setelah crash berulang saat dibuka"; "Overridden" = "Ditimpa"; "Search name or config number" = "Cari nama atau nomor config"; -"Reset all overrides" = "Setel ulang semua penimpaan"; +"Reset all overrides" = "Reset semua penimpaan"; "Parameter:" = "Parameter:"; -"Reset %lu override(s)" = "Setel ulang %lu penimpaan"; -"Reset all overrides?" = "Setel ulang semua penimpaan?"; +"Reset %lu override(s)" = "Reset %lu penimpaan"; +"Reset all overrides?" = "Reset semua penimpaan?"; "%lu override(s) will be removed." = "%lu penimpaan akan dihapus."; "param" = "param"; "params" = "param"; @@ -1864,8 +1864,8 @@ "VC not found" = "VC tidak ditemukan"; "Video from Library" = "Video dari Pustaka"; "Views will be reported" = "Tampilan akan dilaporkan"; -"Disappearing media: views reported" = "Media sementara: tampilan dilaporkan"; -"Disappearing media: views blocked" = "Media sementara: tampilan diblokir"; +"Disappearing media: views reported" = "Media menghilang: tampilan dilaporkan"; +"Disappearing media: views blocked" = "Media menghilang: tampilan diblokir"; ////////////////////////////////////////////////////////////////////////////// // CHAT BACKGROUNDS // @@ -2375,6 +2375,7 @@ "Vietnamese translation" = "Terjemahan bahasa Vietnam"; "French translation" = "Terjemahan bahasa Prancis"; "Japanese translation" = "Terjemahan bahasa Jepang"; +"Indonesian translation" = "Terjemahan bahasa Indonesia"; "Code contributions" = "Kontribusi kode"; "Following feed mode (from InstaSane)" = "Mode feed mengikuti (dari InstaSane)"; "latest" = "terbaru"; @@ -3323,7 +3324,7 @@ "Drop every capture each time you open the app" = "Buang semua tangkapan setiap kali kamu membuka aplikasi"; "Trim each account by size and age" = "Pangkas tiap akun berdasarkan ukuran dan usia"; "Kept per account. A capture is dropped once it passes either limit." = "Disimpan per akun. Sebuah tangkapan dibuang begitu melewati salah satu batas."; -"With both off, captures are kept until they're unsent. Turning one on turns the other off. Anything actually unsent is saved to the log first and is never cleaned here." = "Kalau keduanya mati, tangkapan disimpan sampai dibatalkan. Menyalakan salah satu akan mematikan yang lain. Apa pun yang benar-benar dibatalkan disimpan ke log lebih dulu dan tidak pernah dibersihkan di sini."; +"With both off, captures are kept until they're unsent. Turning one on turns the other off. Anything actually unsent is saved to the log first and is never cleaned here." = "Kalau keduanya mati, tangkapan disimpan sampai dibatalkan. Mengaktifkan salah satu akan mematikan yang lain. Apa pun yang benar-benar dibatalkan disimpan ke log lebih dulu dan tidak pernah dibersihkan di sini."; "Clear when I open Instagram" = "Hapus saat aku membuka Instagram"; "Keep within size / age limits" = "Jaga dalam batas ukuran / usia"; "View-once cache" = "Cache sekali lihat"; diff --git a/src/Localization/Resources/ja.lproj/Localizable.strings b/src/Localization/Resources/ja.lproj/Localizable.strings index 91bfdfb..721e3c3 100644 --- a/src/Localization/Resources/ja.lproj/Localizable.strings +++ b/src/Localization/Resources/ja.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "ベトナム語翻訳"; "French translation" = "フランス語翻訳"; "Japanese translation" = "日本語翻訳"; +"Indonesian translation" = "インドネシア語翻訳"; "Code contributions" = "コード貢献"; "Following feed mode (from InstaSane)" = "フォロー中フィードモード(InstaSane由来)"; "latest" = "最新"; diff --git a/src/Localization/Resources/ko.lproj/Localizable.strings b/src/Localization/Resources/ko.lproj/Localizable.strings index 40e5df9..f02f179 100644 --- a/src/Localization/Resources/ko.lproj/Localizable.strings +++ b/src/Localization/Resources/ko.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "베트남어 번역"; "French translation" = "프랑스어 번역"; "Japanese translation" = "일본어 번역"; +"Indonesian translation" = "인도네시아어 번역"; "Code contributions" = "코드 기여"; "Following feed mode (from InstaSane)" = "팔로잉 피드 모드 (InstaSane 기반)"; "latest" = "최신"; diff --git a/src/Localization/Resources/pt-BR.lproj/Localizable.strings b/src/Localization/Resources/pt-BR.lproj/Localizable.strings index f99a19f..875047f 100644 --- a/src/Localization/Resources/pt-BR.lproj/Localizable.strings +++ b/src/Localization/Resources/pt-BR.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "Tradução vietnamita"; "French translation" = "Tradução francesa"; "Japanese translation" = "Tradução em japonês"; +"Indonesian translation" = "Tradução em indonésio"; "Code contributions" = "Contribuições de código"; "Following feed mode (from InstaSane)" = "Seguindo o modo de feed (do InstaSane)"; "latest" = "mais recente"; diff --git a/src/Localization/Resources/ru.lproj/Localizable.strings b/src/Localization/Resources/ru.lproj/Localizable.strings index e33bc5a..43141c0 100644 --- a/src/Localization/Resources/ru.lproj/Localizable.strings +++ b/src/Localization/Resources/ru.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "Вьетнамский перевод"; "French translation" = "Французский перевод"; "Japanese translation" = "Японский перевод"; +"Indonesian translation" = "Индонезийский перевод"; "Code contributions" = "Вклад в код"; "Following feed mode (from InstaSane)" = "Режим ленты Подписки (из InstaSane)"; "latest" = "последняя"; diff --git a/src/Localization/Resources/tr.lproj/Localizable.strings b/src/Localization/Resources/tr.lproj/Localizable.strings index 61cdab2..306ec68 100644 --- a/src/Localization/Resources/tr.lproj/Localizable.strings +++ b/src/Localization/Resources/tr.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "Vietnamca çeviri"; "French translation" = "Fransızca çeviri"; "Japanese translation" = "Japonca çeviri"; +"Indonesian translation" = "Endonezce çeviri"; "Code contributions" = "Kod katkıları"; "Following feed mode (from InstaSane)" = "Takip Edilenler akış modu (InstaSane'den)"; "latest" = "en son"; diff --git a/src/Localization/Resources/vi.lproj/Localizable.strings b/src/Localization/Resources/vi.lproj/Localizable.strings index 0fc601a..054d6dc 100644 --- a/src/Localization/Resources/vi.lproj/Localizable.strings +++ b/src/Localization/Resources/vi.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "Bản dịch tiếng Việt"; "French translation" = "Bản dịch tiếng Pháp"; "Japanese translation" = "Bản dịch tiếng Nhật"; +"Indonesian translation" = "Bản dịch tiếng Indonesia"; "Code contributions" = "Đóng góp mã"; "Following feed mode (from InstaSane)" = "Chế độ bảng tin Đang theo dõi (từ InstaSane)"; "latest" = "mới nhất"; diff --git a/src/Localization/Resources/zh-Hans.lproj/Localizable.strings b/src/Localization/Resources/zh-Hans.lproj/Localizable.strings index 2d2398a..a9f7f1a 100644 --- a/src/Localization/Resources/zh-Hans.lproj/Localizable.strings +++ b/src/Localization/Resources/zh-Hans.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "越南语翻译"; "French translation" = "法语翻译"; "Japanese translation" = "日语翻译"; +"Indonesian translation" = "印尼语翻译"; "Code contributions" = "代码贡献"; "Following feed mode (from InstaSane)" = "正在关注动态模式(来自 InstaSane)"; "latest" = "最新"; diff --git a/src/Localization/Resources/zh-Hant.lproj/Localizable.strings b/src/Localization/Resources/zh-Hant.lproj/Localizable.strings index 730b806..7a219f6 100644 --- a/src/Localization/Resources/zh-Hant.lproj/Localizable.strings +++ b/src/Localization/Resources/zh-Hant.lproj/Localizable.strings @@ -2345,6 +2345,7 @@ "Vietnamese translation" = "越南語翻譯"; "French translation" = "法語翻譯"; "Japanese translation" = "日語翻譯"; +"Indonesian translation" = "印尼語翻譯"; "Code contributions" = "程式碼貢獻"; "Following feed mode (from InstaSane)" = "追蹤中動態模式(來自 InstaSane)"; "latest" = "最新";