Skip to content
All services

Technical review · TN Launcher

Claude: TN Launcher review

A closer look at an Android launcher rebuild, its verified functionality, vendor integration boundaries and the checks still needed before testing on a vehicle.

This is a read-only planning review. No code changes, commits, pushes or physical-device operations were carried out during the review.

Explore the project status
Loading indicator with dots on dark blue background

Project reference

The project

Function first. Design follows.

TN Launcher, package vn.tnlauncher.app, is a replacement launcher for Wincavn LIMO GREEN SID 170+ PRO on the VinFast Limo Green, running Android 10/API 29.

The current phase is functional reconstruction. Full feature parity remains incomplete, and the iPadOS-style Figma phase is NOT_READY and has not begun.

A deliberate sequence

Analyse the original APK, reconstruct functionality, develop the Figma design, test on Android 10, then move to a physical device only with permission.

Eleven Project Knowledge files were received, GitHub was synchronised and the Knowledge Graph was checked as part of this review.

Feature coverage

What works, and what remains.

Completed features are marked IMPLEMENTED and EMULATOR_VERIFIED in Codex's test reports. Those tests were not rerun during this review.

Home & apps

Home and lifecycle handling, real apps through PackageManager, a Dock with six favourites plus Apps and Settings, and a Drawer with accent-insensitive Vietnamese search.

Personalisation

Persistence and recovery, settings and themes, SAF and live wallpapers, icons and typography are implemented. Home folders, app information and system-confirmed app removal are also covered.

Everyday utilities

A real widget host on a separate screen, global search, Wi-Fi and date settings, and a clock updated each minute. V-01 provides safe degradation when vendor integration is absent or denied.

Still to implement

Native Android gaps include dragging and resizing widgets directly on Home, plus folders in the Dock. CORE-11 third-party shortcuts, UI-05 skin plugins, V-14 projection and V-15 voice have not started.

Blocked work

CAM-02/03/04, V-05, V-06, RADIO-01, AUDIO-01, NAV-01/02, DISPLAY-01, BOOT-01 and V-16 remain BLOCKED. The twelve manual vendor entries are only STATIC_VERIFIED.

Integration boundaries

Opening a screen is not proof of integration.

All vendor contracts remain STATIC_VERIFIED. An Activity opening does not establish that playback, cameras or vehicle data work, or that calling a vendor interface is safe.

Binder toolkit

RemoteTools → com.syu.ms.toolkit uses IRemoteToolkit transaction 1, IRemoteModule transactions 1-4 and IModuleCallback. Modules 0, 1, 4 and 7 have HIGH confidence.

No UID/signature-check evidence was identified. This does not establish ordinary-app access or safety: register has side effects, and cmd has no acknowledgement.

Camera contracts

GPIO/UEvent or CAN feeds mask main134; fourcamera2 owns a type 2008 window. Gaps remain in FOURCAMERA2_BROADCAST_*: the .fullscreen action differs from the Launcher branch, and no inbound receiver was found.

CAN & speed

Module7/update1049 maps gears as 1D/2N/3R/4P. The active producer, units and freshness are unknown. Speed branches use GPS × 3.6 or CAN ÷ 10, depending on a flag.

Media updates

MUSIC sends snapshots and BTAV sends partial patches to the default HOME. Sender authentication and background-service restrictions still need to be resolved.

Navigation startup

MainActivity waits for callback28 before LaunchNavi → cmd24 → the default map. A direct LaunchNavi call potentially losing a command during cold start is a static inference, not a reproduced result.

Native library

libsyu_jni.so was not found in the 34 APKs inspected. It may exist in firmware, so its absence from those APKs does not establish that it is missing altogether.

Architecture & tooling

A focused Android foundation.

One app module uses Kotlin, Android Views/ViewBinding, ViewModel/StateFlow, constructor injection and Preferences DataStore with a recovery snapshot.

Build toolchain
Gradle 8.11.1, AGP 8.10.1, Kotlin 2.1.21 and process-scoped JDK 21.
Android versions
Minimum API 29; compile and target API 35.
Manifest boundary
REQUEST_DELETE_PACKAGES only. No service, boot receiver or vendor permissions.
Vendor adapter
WincavnIntegration.kt exposes twelve manual Activity entries with component, exported and permission checks. Navigation points to com.syu.onekeynavi.MainActivity with ACTION_MAIN.

Technical reference

Repository & knowledge

A checked snapshot of the code.

At review time, main remained at 6a02097a… dated 15/10/2026, 08:38 UTC, with no newer commit than the recorded baseline.

Repository record

Recent commits include 15dc34f, 4491b15, 03a0a6c and bfbf053. Commits 15dc34f and 6a02097 were pushed by huuthitv2007 with Codex as co-author; the repository owner is huuthitv95.

AGENTS.md, including all 22 items, STATUS.md, EXECPLAN.md, feature-parity-matrix.md, wincavn-integration.md and compatibility-report.md were read in full.

Only the 13-item contents of original-launcher-analysis.md, a 37 KB document, were reviewed. The resource inventory and architecture.md were not opened.

Knowledge Graph

The 365 KB .ua/knowledge-graph.json at 6a02097 contains 321 nodes, 449 edges, eight layers and nine tours, matching the recorded baseline.

All 68/68 LF-normalised contentHash values match the code at HEAD. The graph is consistent with the current code.

Its gitCommitHash still reads 15dc34f and sourceSnapshotNote still says “not committed”. These are stale descriptions, not evidence of a data mismatch. The graph used a bounded manual refresh rather than a stock incremental update.

Important boundary

EMULATOR_GATE_PASSED applies only to the Android scope. There is no DEVICE_VERIFIED or AUTOMOTIVE_VERIFIED status.

Verification

Emulator results, with clear limits.

Committed test reports record a passing build, 25/25 unit tests and lint with zero errors and 51 warnings. These results were not independently rerun in this review.

API 29 profiles, animation scale 1.0
ProfileInstrumentationE2E
1280×720@16033/339/9
1920×1080@32033/339/9

APK 22c3c663…ff763c, 17,544,918 bytes, was not on GitHub, so its actual bytes could not be checked.

Remaining test risks

SwiftShader at 1920 showed 66.67% jank with p95 of 125 ms. SurfaceFlinger SIGABRT occurred at animation scale 0.0, with the cause unresolved. Vehicle rollback has not been verified.

Next analysis priorities

Resolve the unknowns before moving forward.

Further static analysis requires local APKs. The priority is to understand the underlying platform and data contracts before any authorised physical-device work.

  1. 01 · Platform

    Trace native behaviour

    Identify the platform/native and factory branches actually in use, including the origin of libsyu_jni.

  2. 02 · Vehicle data

    Check CAN provenance

    Resolve the active CAN producer, measurement units and data freshness for V-06.

  3. 03 · Camera actions

    Investigate the mismatch

    Clarify the camera broadcast action discrepancy and the unresolved inbound-receiver path.

Alderr & Page · United Arab Emirates

A clearer website starts with a conversation.

For your business website, we offer elegant mobile-first design, redesigns, WhatsApp integration, contact forms and ongoing maintenance. Plans start at 400 AED.

Explore our website services or tell us what your customers need to find, understand and do.