Changelog
What changed on CustomDroid, release by release. The catalogue itself changes every night as ROM projects publish builds; this is about the site: new ROMs and guides, fixes, and changes to how it works.
RSS feed — get each new release in your feed reader
1.14.1
Fixed
- Stop the nightly import failing when GitLab rate-limits Nura
1.14.0
Added
- Find a phone by the hardware it has
Fixed
- Name the Redmi Note 14 5G and Mi 11 Ultra instead of by codename
- Redirect old Redmi K20 Pro and Redmi Note 14 5G links
- Merge the Fairphone 6's duplicate "The Fairphone" page
- Give phone pages back URLs another maker's phone was holding
- Stop showing the Mi 9T's hardware on the Zenfone 9
- Keep scraped code out of the search log
Changed
- Update dependencies and clear npm audit
- Keep the nightly run going past a failed step, and test on Node 26
1.13.0
Added
- Define the fixed list of features phones can be filtered by
- Fill phone features and the microSD slot from /e/OS too
- Link crDroid's and Sakura's olives builds to the Redmi 8A and 8A Dual
- Record which phones take a microSD card
- Add an RSS feed for the changelog
- Add a /changelog page
- Add RSS feeds for every update and for each brand
- List combined-codename builds on the phones they cover
- Show crDroid's published SHA-256 and file size on its builds
Fixed
- Read every crDroid branch back to Android 10, and mark old ones discontinued
- Keep every phone's name when AOSPA lists several under one codename
- Mark LineageOS devices it no longer maintains as discontinued
- Build /changelog's newest section up to the deployed commit
- Find a phone when its firmware build number is pasted with the name
- Untangle seeded phones that mixed two manufacturers
- Survive BlissRoms' broken devices.json
- Point Axion and RisingOS at their current homes
- Stop linking Project Sakura's lost domain
Changed
- Rename postmarketOS to Nura, keeping its old links
- Keep internal file names out of the site's changelog
1.12.0
Added
- Make device pages answer more: no-ROM reasons, update dates, spec credits
- Add a guide to generic system images
- Record when each manufacturer's own updates end
- Fill hardware specs from two more codename-keyed sources
- Add Kali NetHunter
- Add LineageOS for microG
- Add LMODroid
- Add banking app reports from readers
- Add a guide to what phone privacy costs on Android
- Add Sailfish OS as the 29th tracked OS
Fixed
- Stop the "Sensors & features" chips stacking one per line
- Redirect device URLs that moved before slugs were tracked
- Use a stated manufacturer to settle a shared codename
Changed
- Bring the backlog and runbook up to date
- Run the nightly import on our own runner
1.11.0
Added
- Replace the "Report wrong data" mailto with an anonymous review queue
- Cross-link carrier and region versions of the same model
- Compare up to three builds side by side on a device page
- Tag ROMs with curated features: Pixel-style, microG, privacy and more
- Add a per-ROM RSS feed and a read-only JSON API
- Show SHA-256, file size and GApps/vanilla variants where a ROM states them
- Link a first-party way back to stock for Motorola phones too
- Say what the latest Android is, so "up to Android 16" isn't read as the ceiling
- Add a terms of use page
- Add a guide to what commonly breaks after flashing a custom ROM
- Add a guide on when relocking the bootloader is safe
- Add a guide to choosing a GApps package
- Add a guide to restoring stock firmware and unbricking
- Add a brand-by-brand guide to unlocking the bootloader
- Surface LineageOS's install method, unlock command and pre-recovery steps
- Let device pages show only current builds
- Show when each build was last checked against its ROM's catalogue
- Offer guides and product-line brands as search shortcuts
Fixed
- Serve PixelExperience device photos through our origin too, and credit them
- Give every importer a real minimum-entries floor
- Stop LineageOS devices with a "None" list field being skipped
- Key devices on codename plus maker, so shared codenames stop merging phones
- Teach maker matching the brand spellings the D1 measurement found
- Merge duplicate device rows and stop creating them
- Give named placeholder devices real slugs, keeping old ones as redirects
- Redirect retired device slugs to the device they became
- Resolve aliased brand names and redirect retired brand URLs
- Clean up Project Elixir's brand names and codenames
- Stop codename-only model names overwriting real device names
- Stop the language switcher linking to catalogue pages that don't exist
Changed
- Update the backlog and runbook for the backlog pass
- Localise the site header and footer on translated pages
- List Linux mobile OSes apart from Android ROMs
- Link the new safety guides from every device page's "Before you flash"
- Point Download at the project's device page, with the dated file second
- Record the D1 device-identity decision and D3 as shipped
- Hide pre-fix typeahead noise in search analytics, flag resolved misses
1.10.0
Added
- Add AfterlifeOS as the 28th ROM
1.9.1
Fixed
- Fix the /e/OS import, broken by an upstream markup change
1.9.0
Added
- Answer "does it have NFC" and "is it 5G" from data we already had
- Read the hardware facts postmarketOS already publishes
- Import the LineageOS tablets, foldables and sliders we were discarding
- Research where the missing device specs could come from
- Run the recovery enrichment nightly
- Record which custom recoveries support each device
- Warn when a ROM needs specific stock firmware before you flash
- Write up the seven calls the backlog is actually blocked on
- Start a backlog with what the two reviews actually turned up
- Add a guide decoding the common flashing errors
- Give every device page an RSS feed of its ROM builds
- Add Organization and Article schema, drop the dead SearchAction
Fixed
- Stop placeholder brands overwriting real device identities
- Render ROM version strings without doubling the v
- Stop every page sharing the home page's Open Graph card
Changed
- Measure the Wikidata backfill instead of shipping it
- Say what the home page actually counts, and claim what we deliver
1.8.0
Added
- Track the four actions that mean the site worked
- Log device pages people asked for and we don't have
- Add PixelExperience as a discontinued ROM
- Add YAAP as the 26th ROM
- Add iodéOS as the 25th ROM
- Add Ubuntu Touch, and a real form-factor column
- Answer ROM and brand searches, not just device searches
- Add CalyxOS as the 23rd ROM
- Add /tablets, a custom ROM browse view for tablets
- Add a USB drivers guide and per-device driver hint
Fixed
- Stop the sitemap timing out for crawlers
- Fetch iodé's device list in one paced pass
- Log only committed searches, not every keystroke
- Fix the dev image build failing on prisma generate
Changed
- Update project notes for the new ROMs and form factor
1.7.0
Added
- Add ROM x brand pages
- Show model numbers on device pages
- Credit the LineageOS wiki for the device photos
Fixed
- Report real build freshness as sitemap lastmod
- Serve device photos through our own origin instead of hotlinking
Changed
- Describe sub-resource loading on the privacy page
- Redesign the visual identity around the device codename
1.6.0
Added
- Extract pure parse + fixture tests for the remaining 17 adapters
- Extract pure parse functions + fixture tests for 5 adapters
- Flag dormant ROM projects on the ROM pages
- Add AOSPA, VoltageOS and CherishOS ROM adapters
- Add provisional devices so attach-only ROM support is never hidden
- Add a support timeline to each device page
- Add percentage-drop drift guard to the importer
- Add ROM-to-ROM device overlap on each ROM page
Fixed
- CI: generate the Prisma client before running tests
- Drive GrapheneOS from its live overview.json instead of a hardcoded list
- Fix missing space in /best intro ("maintainedROM")
- Drop corrupt future-dated build timestamps at import time
- Fix uniqueSlug returning a still-colliding device slug
Changed
- Move the database from Neon to Aiven (CA-verified TLS)
- Docs: all 22 adapters now have parse-module + fixture tests
- Document the adapter parse-module + fixture-test pattern
- Update docs: GrapheneOS is now overview.json-driven, not a curated list
- Update docs for new ROMs, guards and recent features
- Ignore tsconfig.tsbuildinfo
1.4.0
Added
- Add buying-decision views: /best, Android-version pages, richer /newest
- Add a /newest page sorting supported phones by release date
Fixed
- Read CipherOS's full device catalogue from CipherOS/API
Changed
- Add the proxy.ts entrypoint to complete the middleware rename
- Migrate the host-redirect middleware to the Next 16.2 proxy convention
1.3.0
Added
- Add a back-up-before-flashing guide, translated into all locales
- Add Accrescent to the deGoogle guide app stores
- Link the LineageOS wiki install guide on supported device pages
- Link MicroG and add Aurora Store in the deGoogle guide
- Recommend F-Droid alongside Fossify in the deGoogle guide
- Add Fossify shoutout in the deGoogle guide and footer
- Link to Google factory images from Pixel and Nexus device pages
Fixed
- Make the db-url passthrough test hermetic to DATABASE_URL
1.2.1
Changed
- bump all deps
1.2.0
Added
- pl translation
- add japanese translation
1.1.0
Added
- Add Lunaris AOSP ROM importer
- Add Project Infinity X ROM importer
- Add SuperiorOS ROM importer
- Add AlphaDroid ROM importer
- Add postmarketOS importer and Linux distro badge
- Add CipherOS ROM importer
- Add Project Elixir ROM importer
- Add BlissRoms ROM importer
- Add Project Sakura ROM importer
1.0.0
Added
- Add unit tests for the slug and format helpers + run them in CI
- Add favicon, icons and a header logo
- Add custom 404 and error pages
- Localize the 12 guide bodies (es/de/fr)
- Localize the guides index (es/de/fr)
- Localize the about, privacy and codename pages (es/de/fr)
- Add localized home under /es, /de, /fr with hreflang
- Scaffold i18n: locale config, dictionaries, switcher components
- Add a cookie consent banner, disabled by default
- Rate-limit the search and request API endpoints
- Add a privacy policy page
Changed
- Move tests to dedicated pipeline step
0.6.3
Changed
- "::" as the site suffix
0.6.2
Fixed
- Dedup the recently-updated feed and clarify the footer
0.6.0
Added
- Add "Why install a custom ROM?" benefit guide
Fixed
- Fail the import run when an adapter returns too few entries
0.5.0
Added
- Add custom ROM guide pages (official-vs-unofficial, EOL, glossary)
- Flag stale builds and strengthen safety note on ROM pages
- Add device-page intro and strengthen flashing safety note
- Flag stale ROM builds older than six months
- Show data source per ROM build
- Add "Report wrong data" link per ROM build
- Add "Recently updated" homepage section
Changed
- Template device-page title and meta description with real ROMs
- Documentation update
0.4.2
Changed
- dependencies bump to latest versions
0.4.1
Fixed
- Fix failing build
Changed
- Bump Prisma to 7 and React / Next patches
0.4.0
Added
- Filter ROMs by Android version on device pages
- ISR for some sites
- Umami analytics
- Want a ROM feature
- Support for no-ROM devices too
- latest release date per ROM
Fixed
- Fix search.google.com issues with Product pages
0.3.0
Added
- browse-by-brand index + per-brand pages
- device thumbnails on home + ROM pages
- device thumbnails in search results
- show device images on device pages
- add PixelOS, Project Matrixx, AxionAOSP importers
- Contact email and codename help
0.2.0
Added
- Install instructions per phone
- OpenGraph images
- Search SEO improvements
- SEO improvements
- Google alias enrichment + spec-less note
- Per ROM page
- device specs + Official/Unofficial explainer on device pages
Changed
- Redirect de fly.dev domain