Skip to content

Releases: Aimdi/XTA

aimdi187

Choose a tag to compare

@github-actions github-actions released this 31 Oct 09:01
ce78f9c

XTA — aimdi187

Web sources: new sites without an update

  • A new plugin, Web sources. Add simple sites from the list this project publishes (Lobsters, DEV Community, Lemmy.world, NASA Images and Tildes to start) or from a link to a source file. Each opens on its lists as tabs, with its search, articles in XTA's reader and pictures in a grid. Follow a list to see it in Subscriptions and groups, and, if you turn it on, in the Following timeline.
  • You decide what it reads. Before a source is added, XTA lists every site it will contact, and nothing is fetched from them until you agree. A source only reads, only from the sites it lists, and an update that asks for a new site waits for your OK.
  • Anyone can write one: a source is a short file of rules, not code. docs/web-sources.md explains how.

Fixes that arrive without an update

  • Threads, Instagram, TikTok, Pixiv, Reddit and the stock quotes can be repaired from this project's side. When one of them changes an app id, a request id, a version or the browser it expects, a published correction now reaches XTA within a day, without a new release. A correction can only replace a value of the same kind: it can never send a request anywhere else.
  • X's request ids: every install now reads X corrections from the same place, so older and newer releases get the same fixes.

X

  • Followed accounts stay current. When an account you follow changes its name, handle or picture, XTA updates it from the posts it already loads, with no extra requests.

Danbooru

  • Tag suggestions work as on the site: other names, aliases and typos lead to the right tag (kancolle → kantai_collection), with the matching part in bold.
  • Searches with more tags than Danbooru allows now run. XTA sends what the site accepts and sorts out the rest on your device.

The PC version (Linux)

  • Packages for Debian, Ubuntu and Linux Mint. One for Debian 12+, Ubuntu 24.04+ and Mint 22+, and one for Ubuntu 22.04, Mint 21, Pop!_OS 22.04 and Zorin OS 17, where aimdi186 could not start. Install with sudo apt install ./xta_*.deb.
  • The tarball installs itself: ./install.sh adds XTA to your application menu without root, and ./install.sh --uninstall removes it.
  • One window: starting XTA again brings its window to the front instead of opening a second copy, and the window reopens at the size you left it.
  • Mouse and keyboard: the mouse's back button, Alt+← and Esc go back; Home has a refresh button, and F5 or Ctrl+R refreshes the timeline; ← and → turn the pictures in the viewer.

Everything else is as in aimdi186.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. The accents on mathematical letters come from a subset of Noto Sans Math under the SIL Open Font License. Both licence texts are in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi187_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001560, above every aimdi186 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux:

  • Debian 12+, Ubuntu 24.04+, Linux Mint 22+: sudo apt install ./xta_4.12.0.187_amd64.deb
  • Ubuntu 22.04, Linux Mint 21, Pop!_OS 22.04, Zorin OS 17: sudo apt install ./xta_4.12.0.187_ubuntu22.04_amd64.deb
  • Arch Linux: sudo pacman -U xta-bin-4.12.0.187-1-x86_64.pkg.tar.zst, or build it from the attached PKGBUILD with makepkg -si
  • Other distributions: unpack xta-aimdi187-linux-x86_64.tar.gz and run ./install.sh in it for a menu entry

SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs, and xta-aimdi187-debug-symbols.zip and xta-aimdi187-linux-debug-symbols.zip hold the debug symbols for reading crash traces.

Previous release and notes

aimdi186

Choose a tag to compare

@github-actions github-actions released this 28 Oct 11:55
3aecd54

XTA — aimdi186

Swipe back from a post

  • Drag a post away to go back. An opened post slides in over the page you came from, which shrinks and darkens behind it. Drag the post to the right and it lifts off as a card that turns around your finger and swings with your speed. Let go past about a third of the screen, or throw it, and it flies off; let go sooner and it drops back into place.
  • Android's back gesture moves the card too, from either edge of the screen.
  • Two switches in Settings → Accessibility: "Swipe back from anywhere" (off: only from the edge of the screen) and "Tilt with your finger".
  • A post's row of photos and a video's seek bar keep their own swipes. With reduced motion the post appears and leaves at once, and a drag moves it flat.

Choosing groups and folders

  • Add to group is a quick pick. Groups are chips with their marks, the account's own first, then the ones you picked last. "Search or create" finds a group or makes one ("Create “Japan” and add"). A line at the foot says where the account is, and the choice applies as the sheet closes: there is no Save, and closing it unchanged follows no one.
  • Save to folder works the same way. A long press on the bookmark shows the folders as chips: a tap files the post at once, "Create “Japan” and save" makes a folder from the search, and the foot says where the post is. Remember this folder stays.

Sort ungrouped, one by one

  • Accounts Sort ungrouped could not place can be sorted one at a time. A card per account with Open profile and how far along you are; tap a group to place it and move on, or use Several groups, Create group, Skip and Undo. Every choice is saved as you make it, and after Apply the screen goes on to the accounts left over.

Pixiv profile

  • The header in the "Kanten" style. Follow spans its own row, filled until you follow and outlined after, with Add to group beside it; the Premium badge is outlined, counts lead with the number in bold, and a line sits above the tabs.

Everything else is as in aimdi185.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. The accents on mathematical letters come from a subset of Noto Sans Math under the SIL Open Font License. Both licence texts are in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi186_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001550, above every aimdi185 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux, use the Arch package (sudo pacman -U xta-bin-4.12.0.186-1-x86_64.pkg.tar.zst), the attached PKGBUILD (makepkg -si) or the portable tarball. SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs, and xta-aimdi186-debug-symbols.zip and xta-aimdi186-linux-debug-symbols.zip hold the debug symbols for reading crash traces.

Previous release and notes

aimdi185

Choose a tag to compare

@github-actions github-actions released this 27 Oct 22:22
f1a616d

XTA — aimdi185

Home: Following in one bar

  • One bar instead of two rows. Posts | Media sit at the start; the order and filters, Feeds, search in the loaded posts and Home feed accounts at the end. The order chip shows how many filters are on; its name is in the tooltip and read out.
  • The side menu is in the Feeds sheet. The avatar has left the bar: "Open navigation menu" under "Add timeline" opens the menu, and a long press on it opens the avatar sheet.
  • Narrow screens and large text. When the names do not fit, the tabs move closer together; with large text on a small phone they get a row of their own. Nothing is cut off.
  • The bar leaves and comes back with the bottom bar, and nothing folds away on its own while you read.

The profile, flat

  • No pills, rings or boxes. Settings is a plain icon. Follow says what it is: "Subscribed" with a check, an eye-off icon when the account is hidden from the main feed, or "Subscribe", and it opens the same menu as before.
  • A tighter header. A bio's paragraphs sit closer together, the link and the join date share a row, and the private note is one flat row: "Add private note".
  • Tabs and filters are words. Posts | Replies | Media | Saved share the width when they fit, with a rounded line under the selected one. The filters below them are plain words, the selected one in bold.
  • German counts are written out, as in 1.379 and 62.646, and German profiles say "Seit August 2024" instead of "Seit August 2024 bei Twitter".

Fixes

  • Spanish, Hindi, Korean, Dutch and Romanian profiles show the join date again. They said only "Joined", without it.
  • Screen readers say which tab or filter is selected on Home's Posts | Media and the profile's filters.

Everything else is as in aimdi184.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. The accents on mathematical letters come from a subset of Noto Sans Math under the SIL Open Font License. Both licence texts are in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi185_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001540, above every aimdi184 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux, use the Arch package (sudo pacman -U xta-bin-4.12.0.185-1-x86_64.pkg.tar.zst), the attached PKGBUILD (makepkg -si) or the portable tarball. SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs, and xta-aimdi185-debug-symbols.zip and xta-aimdi185-linux-debug-symbols.zip hold the debug symbols for reading crash traces.

Previous release and notes

aimdi184

Choose a tag to compare

@github-actions github-actions released this 25 Oct 21:26
26783af

XTA — aimdi184

Motion, as in X's new app

  • Counts roll. When X sends newer numbers, an opened post's views, replies, reposts and likes roll to them: the old number slides up and out as the new one comes in. A refreshed profile's Following and Followers roll too, and so does the media viewer's "1 / 4" as you swipe.
  • The profile bar takes the banner. Once a profile's header has scrolled away, the top bar shows its banner, blurred and darkened, behind the name. Scrolling back to the top clears it.
  • A dragged row lifts. Reordering subscriptions, groups, home tabs, saved folders, Pixiv tags or Booru prompts, the row you hold grows a little and floats on a shadow while the rows around it make room.
  • A stock's price line draws itself in from left to right when its chart opens or you pick another range.

Things arrive instead of popping in

  • Images fade in. Avatars, card images, link previews, video posters, the media grid, poll options, the profile banner and the faces on group boards wait on a quiet surface and fade in once fetched, instead of a spinner. One already loaded shows at once.
  • Opening a post fades its replies and the reply order bar in where the placeholders were, and the post you opened stays still. An opened post's poll bars fill in to their shares.
  • First pages fade in. A feed's first page, a profile's posts and a profile itself fade in over their placeholders. Posts that replace cached ones already on screen do not blink.
  • Notices drop in and lift away, and "New posts" floats over the feed, above its source chips, without moving the posts.
  • Translate eases. The translation fades in while the post eases to its new height, so the media and footer below glide instead of jumping. Show original does the same, and a post opened with "Show more" stays open.
  • What opens inside a feed eases to its new height: price chips, "more posts with this link", folded posts, repost runs and a revealed sensitive post. "Followed by" on a profile grows in.
  • Smaller touches. Saving pops the bookmark. The profile's scroll-to-top button grows in and shrinks away. The video mute icon cross-fades. A tapped bottom-bar tab fades its page in. The line over a loading feed fades in and out, glides with a group's progress and fills before it goes.

With reduced motion, XTA's own setting or Android's "remove animations", all of it happens at once.

Haptic feedback

  • Liking and saving tap lightly. Unliking and unsaving do not, and calm and zen mode keep it quiet.
  • Settings → Accessibility → Haptic feedback turns off every tap XTA gives: liking and saving, following from an avatar, the folder sheet, page swipes, the home filter and Pixiv's. It is on by default. Android's own buzz on a long press follows Android's touch feedback setting.

Fixes

  • The Subscriptions list stays where you had it when you unsubscribe someone or put them in or out of the main feed, instead of flashing to a spinner and jumping back to the top.

Everything else is as in aimdi183.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. The accents on mathematical letters come from a subset of Noto Sans Math under the SIL Open Font License. Both licence texts are in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi184_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001530, above every aimdi183 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux, use the Arch package (sudo pacman -U xta-bin-4.12.0.184-1-x86_64.pkg.tar.zst), the attached PKGBUILD (makepkg -si) or the portable tarball. SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs, and xta-aimdi184-debug-symbols.zip and xta-aimdi184-linux-debug-symbols.zip hold the debug symbols for reading crash traces.

Previous release and notes

aimdi183

Choose a tag to compare

@github-actions github-actions released this 25 Oct 14:30
5c10b8d

XTA — aimdi183

Abos and Gruppen take less room

  • One header row. The Gruppen | Abos switch now stands where the title was, beside search, add and the options. The search field is a 🔍 in that row: it filters the list you are looking at, its hint says which one, and Back closes it. When a narrow screen, a long translation or large text leaves too little room, the switch first drops its icons, and only when even the names do not fit does the screen go back to two rows. The first group now starts 86 points from the top of the screen instead of about 212.
  • Kompakt group tiles. ⚙ → Spalten offers Kompakt beside 2 and 3: each group becomes a slim tile with its faces beside its name and count, 60 points tall instead of 148, so more than twice as many groups fit on the screen. The tile keeps the group's colour, the pin and NSFW marks, the NSFW blur, the unread dot and the ✨ discovery button, and it grows with large text.
  • Dragging a subscription to reorder it works again. The drag failed as soon as it began.

X communities

  • A community link opens the community instead of "unable to open link": its banner, name, topic and members, a Popular tab with its posts, and an About tab with its rules and creation date. The member count opens the list of members.
  • Search has a Communities tab, and a post written in a community carries a chip that opens it.
  • Without an X account only the page itself loads; its posts, its members and the Communities search need one.

Groups

  • Saved searches in a group mean what they mean in search. A saved search such as from:nasa or list:123 was sent as a quoted phrase, so the group found nothing for it.
  • Reply and repost filters cover every member. The members now go to X as one bracketed list, so a group that hides reposts no longer shows some.
  • About a third fewer searches per refresh. Each search now holds as many members as X's 512-character limit allows, instead of 16, so a group runs into X's rate limit later. Each group loads its first page afresh the next time it opens.
  • Posts from outside a group are flagged in a pill, not a dialog. The check now compares accounts, not their names, so an account that renamed itself no longer sets it off, and saved searches are left out of it. Its info link works again.

X search

  • More filters. The filters screen can pick a language, show only replies or hide them, show only posts with links or hide them, and bring reposts into the results.
  • Typed filters show up. Operators typed into the search bar, such as lang:de or -filter:replies, now appear as chips and in the filters screen.

Posts and profiles

  • Polls with images show. Each option's image sits at the start of its bar and opens in the media viewer.
  • Long Grok questions unfold with "Show more" instead of stopping after three lines, and a post no longer leaves an empty line above its Grok card.
  • Bold and italic Unicode letters keep their accents. Posts written in 𝐛𝐨𝐥𝐝 or 𝑖𝑡𝑎𝑙𝑖𝑐 letters showed their accents as boxes.
  • A protected profile says its posts are protected, "Only approved followers on X can see @handle's posts", instead of loading empty tabs. Your own protected account still shows its posts.
  • A profile X says does not exist says "User not found", and a suspended one says it is suspended, instead of "Oops! Something went wrong" and Retry.

Fixes

  • Esperanto no longer breaks dates and numbers. With XTA in Esperanto, an opened post, a profile, the trends list and absolute timestamps failed with "Invalid locale".
  • Afternoon times are stored correctly. A subscription, group or saved post added at 13:37 was stored as 01:37 and sorted as a morning one. Times stored before this release cannot be repaired: the AM or PM was never saved.
  • Videos have sound on the Linux desktop. XTA chose Android's audio output there too.
  • A video no longer plays on unseen after full screen. When its post was scrolled away or the screen rotated during full screen, the player kept running and held one of the three video slots until the app restarted; after three such videos, new ones stayed on their poster.
  • A home tab you just turned on is highlighted when you tap it, and Discover opened that way searches the network you came from.
  • A group no longer starts a request in the last millisecond of its time budget, only to have it time out at once.

Accessibility

  • Every icon-only button has a name for TalkBack: scroll to top on profiles, export, import, add a location, the group icon picker, and the instance, secret and search buttons of the Mastodon, Threads, Bluesky and Instagram plugins.
  • Each settings switch is read together with its title and state, as one control, instead of "On, switch".

Behind the scenes

  • A pull request that touches XTA's profile, post or community screens now runs them on an Android emulator against a stand-in for X that answers from recorded responses: a profile, a post, an account that does not exist and a community.
  • When the daily live checks find that X changed its request signing, a workflow can ask Claude for a fix as a draft pull request for review. It stays off until a key for it is set.

Everything else is as in aimdi182.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. The accents on mathematical letters come from a subset of Noto Sans Math under the SIL Open Font License. Both licence texts are in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi183_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001520, above every aimdi182 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux, use the Arch package (sudo pacman -U xta-bin-4.12.0.183-1-x86_64.pkg.tar.zst), the attached PKGBUILD (makepkg -si) or the portable tarball. SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs, and xta-aimdi183-debug-symbols.zip and xta-aimdi183-linux-debug-symbols.zip hold the debug symbols for reading crash traces.

Previous release and notes

aimdi182

Choose a tag to compare

@github-actions github-actions released this 24 Oct 05:00
96a877b

XTA — aimdi182

Groups load all their posts again

Several things left groups and the Following feed with part of their posts, or none, and a Retry notice, while X profiles still loaded.

  • A group keeps loading while you look at something else. XTA paused a group's reading whenever the app lost focus: on the desktop that was every time another window was in front, and on Android the notification shade, a system dialog or a split-screen app did the same. A group opened beside another window never loaded, and one that was loading lost its batches. Now only a hidden or backgrounded app stops reading.
  • One signed-out or locked account no longer fails batches. When an X account's session ends, X answers "Could not authenticate you", and it refuses a locked account outright. XTA showed that as an error for every batch it handed that account, instead of trying another one. It now moves on to another account, and after a few such answers that account goes to the back of the queue. Sign that account in again, or remove it, in Settings → Accounts.
  • A group shows its members' latest posts when search fails. Groups and the Following feed already fell back to your members' profiles when X rate-limited search. Now they do whenever X refuses or fails a search, so a group no longer goes blank. Offline, they keep what they already have.

X

  • Signing is lighter. Before it can sign a request, XTA reads a key from x.com's pages. It now goes straight to the script that loads the signer, as Chrome does: three downloads instead of nine, skipping X's large startup bundles. That matters on a slow connection, where the setup has 12 seconds.
  • Request ids follow X's 21 October update for search, threads, the For you timeline, profiles, replies and follows.
  • Diagnostics say why a read failed. Settings → Diagnostics → Copy report now lists each failed read with its reason and the code X answered, for example unavailable 403, never its content. If X still fails for you, that report shows what X said.

Wide windows

  • Posts stay in a reading column. On a desktop or a tablet in landscape, every post and every picture used to stretch across the whole window, so one tall picture filled the screen. Feeds and conversations now keep posts in a centred column up to 720 points wide. The mouse wheel and the scrollbar still work across the whole window.
  • The Groups board adds columns. Your choice of two or three columns now applies to phones. A wide window adds columns until each group is a compact tile, so a 1080p desktop shows 24 groups at once instead of 2.

Smoother

  • Coming back to a feed far down no longer freezes the app. Reopening a group puts you back where you were, and that used to happen in one jump, which held the app for as long as it took to lay out every post in between. It now moves there over several frames and stops as soon as you scroll.
  • The desktop app no longer reports an error when it closes. A screenshot-blocking call meant for Android ran on the desktop at shutdown.

Everything else is as in aimdi181.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. Its licence text is in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi182_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001510, above every aimdi181 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux, use the Arch package (sudo pacman -U xta-bin-4.12.0.182-1-x86_64.pkg.tar.zst), the attached PKGBUILD (makepkg -si) or the portable tarball. SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs, and xta-aimdi182-debug-symbols.zip and xta-aimdi182-linux-debug-symbols.zip hold the debug symbols for reading crash traces.

Previous release and notes

aimdi181

Choose a tag to compare

@github-actions github-actions released this 23 Oct 00:19
68957e5

XTA — aimdi181

Reddit works again without an account

This year Reddit closed the ways XTA read it without an account. old.reddit.com now sends logged-out readers to a login page, and Reddit's public .json endpoints refuse them. XTA asked old.reddit first and stopped at that login page, so every subreddit, thread and search failed.

  • Subreddits, Home's followed feed, threads, search and profiles are read from www.reddit.com. XTA uses the parts the site loads as you scroll, which Reddit still serves without an account.
  • Posts keep their pictures, galleries, videos, link previews, flair and text. The next page loads as before, and sort orders and Top's time window work.
  • Big threads show all the comments Reddit sends, and the "more" row at the top loads the next ones into the thread. If Reddit refuses, the row opens the thread on Reddit as before.
  • Posts opened from search or from a link now show their full text, pictures, video and link, not just a title.
  • Comments and posts keep their paragraphs, line breaks, lists and code blocks instead of running together.
  • NSFW posts are recognised from every mark Reddit gives them, so the NSFW setting holds.
  • A community's picture and description come from Reddit's community search. Subscriber counts are no longer shown, because Reddit shows logged-out readers weekly visitors instead.
  • Pinned posts no longer appear at the top of a subreddit, because Reddit does not include them in what it serves this way.
  • Reading with your own Reddit client ID or sign-in works as before.

X keeps reading where x.com asks for a browser check

X needs a key from its own web pages before it answers a signed-in account. Since October, x.com answers those pages with Cloudflare's "Just a moment…" browser check for some connections, VPNs among them, and XTA showed 🧾 for everything X. XTA now falls back to x.com's sign-in page, which is spared the check and holds the same key. Your session is not sent to that page.

Bluesky post search works again

Bluesky's public server stopped answering post search for readers without an account. Search now goes to Bluesky's own API, and scrolling for more loads older posts.

Motion from X's new app

X rebuilt its Android app this July. XTA now moves the way it does:

  • Liking a post plays X's heart burst. The like still stays on your device.
  • Photos grow out of the post into the viewer and shrink back when you close or pull them down.
  • Pages fade in while settling into place. On Android 14 and newer, the back gesture moves the page with your finger and shows the page behind it.

The "Remove animations" setting, Android's own animation setting, calm mode and zen mode keep things still.

Everything else is as in aimdi180.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. Its licence text is in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi181_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001500, above every aimdi180 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux, use the Arch package (sudo pacman -U xta-bin-4.12.0.181-1-x86_64.pkg.tar.zst), the attached PKGBUILD (makepkg -si) or the portable tarball. SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs, and xta-aimdi181-debug-symbols.zip and xta-aimdi181-linux-debug-symbols.zip hold the debug symbols for reading crash traces.

Previous release and notes

aimdi180

Choose a tag to compare

@github-actions github-actions released this 20 Oct 15:03
d4d65d2

XTA — aimdi180

Booru: fixed, faster and more complete

Fixes

  • Unfollowing a Booru tag no longer removes a subreddit or saved search with the same name from your groups.
  • Posts a site sends without a file (deleted, restricted for guests, Flash) are left out, and a feed whose first pages your rating limit or muted tags hid entirely offers Load more instead of ending.
  • Gelbooru and its forks get the rating limit in the form they understand. GIFs play, tag names such as girls'_frontline read correctly, and Gelbooru 0.2 forks' tag suggestions work.
  • Clearer messages when a site needs a login and API key, or a search goes past Danbooru's tag limit. A feed the site says is too deep now ends instead of failing on every scroll.

Faster

  • Requests are paced per site and back off after a rate limit or a server error.
  • Danbooru tiles load the smallest picture that fills them, Latest and Popular ask for their first page at once, and the viewer loads the next and previous pictures ahead.
  • Pictures cached more than 30 days ago are removed. Settings → Data shows the image cache's size, with a Clear button.

New

  • Tap a tag to search it, long-press for its actions. Artist, character and series tags open their own page. Danbooru pools open in pool order, and Danbooru and e621 translation notes show over the picture.
  • Copy tags as a prompt, in the order you choose.
  • Blacklist rules can use score:, id:, width:, height:, favcount:, tagcount:, user:, filetype:, md5:, parent: and source:. A feed says how many posts the blacklist hid, and Show puts them back.
  • Metatag suggestions as you type, and Danbooru's and e621's related tags over search results.
  • Download all on search results, tag pages and pools, skipping files already downloaded, with file name templates.
  • Each site keeps its own rating cap, blacklist, login and key. Raising the cap past Sensitive asks first.
  • Following marks the posts new since your last visit. Latest and Following open with their last page when there is no network.
  • Links to booru posts open in the Booru viewer.

Errors and loading no longer move what you are reading

  • Loading is a thin line over the top of what is loading, instead of a bar or a spinner that pushed everything down.
  • A failure while the posts are still on screen floats on a small pill over them.
  • A page that fails at the end of a list is one row: Retry, with the reason behind ⓘ, instead of a large error block.
  • Empty footers take no space, and a notice retrying on its own stays one row while it counts down.
  • Ticker pages keep their price and chart while a new range loads.
  • RSS and Booru show "some feeds failed" as a warning in their chip row, not as a row above the posts.

Smaller and more private

  • About 6 MB smaller APKs (arm64: 83.2 MB instead of 89.3 MB), and a smaller installed app. Debug symbols are published beside the release instead of shipped in it, and two native libraries nothing loads are left out.
  • On Android 12 and later, setting up a new phone from the old one no longer copies XTA's data, including your accounts. Cloud backup was already off. XTA's own export remains the way to move your setup.

Everything else is as in aimdi179.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. Its licence text is in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi180_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001490, above every aimdi179 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux, use the Arch package (sudo pacman -U xta-bin-4.12.0.180-1-x86_64.pkg.tar.zst), the attached PKGBUILD (makepkg -si) or the portable tarball. SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs, and xta-aimdi180-debug-symbols.zip and xta-aimdi180-linux-debug-symbols.zip hold the debug symbols for reading crash traces.

Previous release and notes

aimdi179

Choose a tag to compare

@github-actions github-actions released this 18 Oct 02:48
5cc8ad8

XTA — aimdi179

Substack: steadier feeds, faster articles, more to read with

Feeds that load, and stay yours

  • Every publication you follow is refreshed, not only the first 24.
  • A rate limit is said plainly and waits before asking again, instead of trying every fallback and failing.
  • A custom domain that does not answer no longer shows another publication's posts.
  • One post is one post, whether it came from the API or the RSS feed, for read state, likes, saves and offline copies.
  • Following is never overwritten by a publication found while browsing.
  • The feed opens at once with what it showed last time, and asks again only for publications that are out of date.

Articles

  • Opening an article is faster: it is read once, off the screen's thread when it is long, and the last 16 opened stay ready.
  • Paid posts show their free part with the paid badge. A paid post without one shows its preview, not the publisher's page.
  • Embedded players load when you tap them, so nothing contacts YouTube or Spotify until then.
  • Text can be selected and copied.
  • Replies nested very deep are kept, and forms and blocks that only work on the web are replaced by a note with a link.
  • New settings for the article font (serif or sans) and the column width.
  • Read time is shown on cards and at the top of articles.

Native reader (preview, off by default)

In Substack's settings (Settings → Plugin store, then the settings button on Substack), Native reader (preview) shows articles without a web view. Footnotes open in a sheet and images in the full-screen viewer. Your place is kept, and contents and find work. Saved posts read their images from the device. You can highlight passages and share them as Markdown.

Library, podcasts and links

  • Paid and Saved feed filters.
  • Library search looks inside the text of posts kept on the device, and shows the matching passage.
  • Podcast speed from 0.8× to 2×, and each episode resumes where you left it.
  • Mark posts read as you scroll past, an option, off by default.
  • Export and import your follows as OPML.
  • Links to Substack posts on their own domains open in the app, after a short check. Other links still open in the browser.

Everything else is as in aimdi178.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. Its licence text is in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi179_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001480, above every aimdi178 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux, use the Arch package (sudo pacman -U xta-bin-4.12.0.179-1-x86_64.pkg.tar.zst), the attached PKGBUILD (makepkg -si) or the portable tarball. SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs.

Previous release and notes

aimdi178

Choose a tag to compare

@github-actions github-actions released this 13 Oct 18:27
027ba7a

XTA — aimdi178

Booru: safer sign-in, steadier feeds

This release fixes 17 problems in the Booru plugin.

Your login and API key

  • Never shown in error messages. A failed request used to print them on screen.
  • Sent only to their own site. A key entered for one site was sent to every site you switched to. Settings now say which site the key belongs to.
  • Sent only as a pair. A login without its key, or a key without its login, is no longer sent at all.

Feeds

  • Changing the site, rating limit or blacklist starts the feeds over, so posts from two sites no longer mix, and a post's tags, comments and wiki come from its own site.
  • A page that fails to load says so and offers Retry, instead of asking again every time you scroll. The end of a feed is marked.
  • Following shows its failures. When none of your tags load you get the error with Retry. When some fail, a notice says so above the rest, instead of "No recent posts".
  • No more "No posts yet" flash. A feed shows its loading skeleton until the first page arrives.
  • Popular opens on a day the site has already reached, so it should no longer be empty early in the day in Asia and Australia.
  • Pages that arrive late are dropped, so a refresh is never mixed with the list it replaced, and a screen you leave stops asking for more.

Messages and sites

  • Clearer refusals. A site that refuses guests, or puts a browser check in front of apps, now says so. A busy site asks you to try again later.
  • "Updated", not "Posted". On Safebooru, Rule34 and similar sites, the only date sent is when a post last changed, and it is now labelled that way.
  • hypnohub.net is added as a Gelbooru 0.2 site, not Moebooru.

Downloads and videos

  • Readable file names. Downloads no longer contain %20 and the like, and long names keep their beginning, where sites put their name and the post number.
  • Danbooru animations download as a playable video, not a zip of frames.
  • Videos wait for a tap when "Load media only on tap" is on.

Everything else is as in aimdi177.

Licence note

The downloadable voices use sherpa-onnx, whose library includes espeak-ng under GPL-3.0. Its licence text is in Settings → About → Licences. XTA's own source code stays MIT.

Installation

For most Android phones, use xta-aimdi178_arm64-v8a.apk. Universal, ARMv7 and x86_64 APKs are also supplied. The base version code is 400001470, above every aimdi177 variant. The app ID (com.aimdi.xta) and release signing identity are unchanged for in-place updates.

For Linux, use the Arch package (sudo pacman -U xta-bin-4.12.0.178-1-x86_64.pkg.tar.zst), the attached PKGBUILD (makepkg -si) or the portable tarball. SHA256SUMS-linux lists their checksums. See docs/desktop.md.

The release workflow checks translations, skill synchronization, analysis and the full Flutter test suite on the tagged source before building. release-build.json and SHA256SUMS accompany the APKs.

Previous release and notes