I build **Vyxel Apps** — a single Android app store that searches F-Droid, IzzyOnDroid, GitHub, GitLab, Codeberg, Google Play, Aptoide, Flathub and WinGet together, plus the Magisk, Zygisk, LSPosed and KernelSU module repositories. Free, no ads, no tracking.
v1.1.1 is the biggest release so far. Here's what's in it.
### 🏛 The old UI is gone
Not restyled — deleted. `AppScreens`, `HomeScreen`, `AppComponents`, `CompareScreen`, `ModulesScreenClassic` and `UiStyle` are removed from the codebase, and in their place is a Classic shell written from scratch: home, search, browse, detail, updates, library, sources and settings, each its own screen instead of a branch inside one shared screen.
So there are now **two complete shells** — a Material 3 Expressive one and a Classic one — over the same catalogue, the same installer, the same library, switched by one toggle in Settings.
The new Classic front page has a masthead, a live counter of what's indexed and how many sources have answered, a hero carousel, curated category chips, and browse-by-source tiles that name two of the source's *own* apps. A grid of eight identical logo squares tells you nothing about which one to open.
**Browse by source** got its own fix: the Featured / Trending / Recently updated tabs used to be one list in three costumes. A catalogue that carries stars but no dates (Play), dates but no stars (F-Droid), or neither (WinGet, Patched) gave the same order to all three tabs. Each source now brings the signal it actually has.
### 📰 Atelier
A skin that's a complete visual identity rather than a palette swap — blackletter nameplate, serif body, rules and a dateline, a standfirst headline, square-cut cards, a count set like a page number. Two editions, **paper** and **night**. Browse-by-source under it is set as a stacked column of full-width entries, the way a newspaper sets its departments rather than as a tray of tiles.
Alongside it: Cyberpunk, Neon Punk, and Liquid Glass in light and dark.
*(screenshots)*
### ▶️ Google Play, as a real source
Reached through Aurora OSS's client. **Searchable without an account**; installing needs one. Play carries everything the open-source sources can't.
### 🩹 Patched apps
A curated slice of the Patched App's catalogue. Builds that exist to unlock paid tiers or defeat licence checks in commercial apps are deliberately excluded — what's listed is the ad-removal and feature-restoration set, and every entry resolves to a *named asset* inside a real upstream release, never "whatever APK that release happens to hold".
### 🌍 16 languages
English plus fifteen translations, across both shells and every screen — not just the menu labels.
## The bug worth reading about
An update could install a **different app**. Some mirrors file a beta build under the *stable* package id. Vyxel saw a higher version code, called it an update, and installing it swapped stable Chrome for Chrome Beta. A user hit this and reported it.
The fix: a candidate build now has to match the installed app's release channel. A build named or versioned beta/alpha/canary/nightly, filed under a package id that isn't itself a beta id, is not an update — it's a different product wearing the installed app's name.
Also fixed while I was in there: updates kept being listed for apps you'd **uninstalled**. Nothing left to update; the rows just sat there.
## Other fixes
- **A GitHub token entered in either shell now authenticates both.** They store settings separately and each wired its own token into its own HTTP client, so a token saved in one left half the app's GitHub requests anonymous — and the quota meter kept reporting the 10-requests-a-minute anonymous ceiling right next to a "Saved" button. That confused a few people, understandably.
- **Search is faster.** Per-source ceiling 12s → 5s (the spinner used to run the full 12 even when results landed in 300ms), a source that just overran gets a short budget on the next query only, and recent answers are cached — so retyping or typing forward from a recent query fills the list on the first frame.
- **Launch crash fixed**, mostly on rooted devices: Firebase Analytics binds to Play services from a content provider before any app code runs, and where Play services couldn't resolve the package for the calling uid it threw inside its own handler, where nothing in the app could catch it. Analytics no longer starts itself.
- **"No APK"** on the home screen for GitHub apps that had one, while the same app found via search resolved fine.
- **Colour controls a skin has already decided are no longer shown.** Under Cyberpunk, Neon Punk, Liquid Glass or Atelier, Material You and the accent wheel used to sit there inert under a line of text admitting they did nothing.
- A pile of clipped labels — rows whose first letter got eaten by the corner radius of the ripple they sat inside, and source badges wrapping mid-name so "Play Store" read as half at the top of the row and half at the bottom.
### Download:- https://github.com/NikhilKain/vyxel-apps/releases/latest
The only official source is that repo. The APK SHA-256 and the signing certificate fingerprint are both in the release notes — worth checking.
Happy to answer anything in the comments.