Skip to content

Lumen Android 1.0.0

Choose a tag to compare

@krambovic krambovic released this 26 Jul 22:08

🚀 انتشار اولین نسخه کلاینت LUMEN

با افتخار اولین نسخه از کلاینت LUMEN را برای دسترسی آسان‌تر، سریع‌تر و بهتر به اینترنت آزاد منتشر می‌کنیم.

با همکاری تیم VOXI در ایران، تلاش کرده‌ایم برنامه‌ای بهینه، پایدار و کاربرپسند برای کاربران ایران، روسیه و چین توسعه دهیم. این تنها آغاز راه است و با همکاری و بازخورد کاربران، LUMEN را هر روز بهتر و کامل‌تر خواهیم کرد.

📢 کانال رسمی VOXI: @VOXINET


🚀 First Release of the LUMEN Client

We are proud to announce the first release of the LUMEN client, designed to provide easier, faster, and more reliable access to the free internet.

In collaboration with the VOXI team in Iran, we have developed an optimized, stable, and user-friendly application for users in Iran, Russia, and China. This is just the beginning, and with continued collaboration and community feedback, we will keep improving and expanding LUMEN.

📢 Official VOXI Channel: @VOXINET


🚀 Первая версия клиента LUMEN

Мы рады представить первую версию клиента LUMEN, созданного для более удобного, быстрого и стабильного доступа к свободному интернету.

Совместно с командой VOXI в Иране мы разработали оптимизированное, стабильное и удобное приложение для пользователей Ирана, России и Китая. Это только начало, и благодаря сотрудничеству и отзывам пользователей мы продолжим активно развивать и совершенствовать LUMEN.

📢 Официальный канал VOXI: @VOXINET

Lumen Android 1.0.0

  • feat: user-created server groups. Create, rename and delete your own groups next to the built-in ones, assign servers from the per-server menu or by multi-select, and move them back out. Deleting a group never deletes its servers — they return to the default bucket. Membership is keyed on a stable node key rather than the database row id, so it survives a subscription refresh that re-imports every node.
  • feat: launcher icon picker. Customization now offers three tiles — Follow system, Light and Dark — backed by <activity-alias> entries. The switch is written so that every intermediate state keeps exactly one launcher entry enabled, even if the process is killed mid-switch, and the stored choice is re-applied on startup so a reinstall does not silently revert it.
  • feat: full provider card for subscriptions. The announcement, description and banner are rendered, together with buttons for whatever links the panel actually sent — Channel/Bot, Support, Email, Website, Premium. Buttons appear only for links that exist, so a plain subscription looks exactly as before. hide-url is honoured.
  • feature: complete subscription header support. profile-description, announce-url, telegram-url, support-url, support-email, profile-web-page-url / homepage, premium-url, the banner-* family, hide-url and sort-order are now read, typed and validated. Header names are matched case-insensitively, documented alternatives (subscription-name, content-disposition) are accepted, and the same parameters may arrive as body comments — HTTP headers win.
  • feature: provider metadata is persistent. The announcement, links and update interval are stored in the database instead of living in memory, so they survive a restart. A refresh that returns fewer headers no longer erases values the panel sent earlier — the same rule the traffic counters already followed.
  • feature: device DNS resolvers are used for bootstrap. The bootstrap resolver was hard-coded to 1.1.1.1; it now prefers the resolvers the current network reports, falling back to 1.1.1.1 only when none is usable. On carriers that block or hijack UDP/53 to public resolvers, the client could previously not even resolve the tunnel endpoint's own hostname.
  • fix: DNS exchange failures on subscriptions that worked everywhere else. When a node's profile carried a private DNS address (a WireGuard/AmneziaWG DNS = line, often 10.x.x.x), dns.final pointed straight at it. sing-box has no failover for dns.final — it is exactly one server — so a resolver that nothing answers on inside the tunnel killed every single name lookup while the tunnel itself was healthy, producing endless dns exchange failed. The profile resolver is now raced against the proxied resolver, so it still wins when it works and no longer takes everything down when it does not. Desktop was unaffected because it does not route all DNS through the proxy by default.
  • fix: bind: address already in use on the local HTTP inbound. Reconnects and server switches could die with start inbound/http[http-in]: listen tcp 127.0.0.1:10809: bind: address already in use. Port-conflict recovery covered only the SOCKS inbound, so retries re-picked that port and hit the same HTTP conflict every time — which is why changing the port in settings did not help. The HTTP inbound is now conflict-checked and relocated the same way.
  • fix: base64 subscription fields shown raw. A panel sending base64:... for profile-title, profile-description, announce, banner-text or banner-button-text had that literal string displayed. Only the title was ever decoded. The decoder now handles all of them, accepts a case-insensitive prefix, the URL-safe alphabet and missing padding, leaves an unprefixed value alone even when it looks like base64, and falls back to the raw text instead of blanking the card on malformed input.

Virustotal 0/67

Full Changelog: android-v0.9.9...android-v1.0.0