b7446
[!WARNING] Release Format Update: Linux releases will soon use .tar.gz archives instead of .zip. Please make the necessary changes to your deployment scripts.
llama.android : Rewrite Android binding (w/o cpu_features dep) (#17413)
UI: implement basic UI components
util: implement performance monitor; wrap it with a viewmodel
util: implement user preferences utility
UI: implement core flow's screens
UI: add a new MainActivity; update manifest
[WIP] DI: implement simple local vm factory provider
UI: disable triggering drawer via gesture; enable alert dialog on back navigation inside conversation and benchmark
UI: allow drawer's gesture control only on Home and Settings screens; enable alert dialog on back navigation inside conversation and benchmark
UI: split a nested parent settings screen into separate child settings screens
UI: polish system prompt setup UI
Deps: bump Kotlin plugin; introduce KSP; apply in :app subproject
DB: setup Room database
data: introduce repo for System Prompt; flow data from Room to VM
bugfix: properly handle user's quitting conversation screen while tokens in generation
UI: rename
ModeSelectiontoModelLoadingfor better clarityUI: update app name to be more Arm
UI: polish conversation screen
data: code polish
UI: code polish
bugfix: handle user quitting on model loading
UI: locks user in alert dialog when model is unloading
vm: replace token metrics stubs with actual implementation
UI: refactor top app bars
nit: combine temperatureMetrics and useFahrenheit
DI: introduce Hilt plugin + processor + lib dependencies
DI: make app Hilt injectable
DI: make viewmodels Hilt injectable
DI: replace manual DI with Hilt DI
UI: optimize AppContent's composing
bugfix: wait for model to load before navigating to benchmark screen; use NavigationActions instead of raw navController
UI: navigation with more natural animated transitions
DI: Optimize AppModule
Feature: Introduce ModelRepository and ModelsManagementViewModel; update AppModule
UI: polish UI for ModelsManagementScreen; inject ModelsManagementVieModel
DI: abstract the protocol of SystemPromptRepository; update AppModule
data: [WIP] prepare for ModelRepository refactor & impl
data: introduce Model entity and DAO; update DI module
UI: replace Models Management screen's stubbing with instrumentation
UI: polish sort order menu
data: import local model with file picker
bugfix: use List instead of Collection for ModelDao's deletion
data: add a util file for extracting file name & size and model metadata
UI: enrich ModelManagementState; extract filename to show correct importing UI
UI: implement multiple models deletion; update Models Management screen
UI: handle back navigation when user is in multi-selection mode
util: extract file size formatting into ModelUtils
UI: add a confirmation step when user picks a file; refactor model import overlay into AlertDialog
UI: extract a shared ModelCard component
UI: replace model selection screen's data stubbing; add empty view
nit: tidy SystemPromptViewModel
Util: split FileUtils from ModelUtils; extract copy methods into FileUtils
data: pass through getModelById from ModelDao into ModelRepository
core: extract conversation and benchmark logics into InferenceManager; add logs and missing state updates in stub InferenceEngine
vm: split mono MainViewModel into separate individual ViewModels
vm: merge SystemPromptViewModel into ModelLoadingViewModel
core: break down InferenceManager due to Interface Segregation Principle
UI: show model card in Model Loading screen
UI: show model card in Conversation screen
UI: unify Model Card components
core: swap in LLamaAndroid and mark stub engine for testing only
data: allow canceling the ongoing model import
UI: update UI ongoing model import's cancellation
LLama: update engine state after handling the cancellation of sendUserPrompt
VM: handle the cancellation of ongoing token generation
LLama: refactor loadModel by splitting the system prompt setting into a separate method
feature: check for available space before copying local model
UI: centralize the AppScaffold and modularize its configs
UI: refactor BottomBarConfig.ModelsManagement APIs
UI: combine TopBarConfig and BottomBarConfig into each route's ScaffoldConfig
UI: replace ugly optional as casts in AppScaffold with extension functions
UI: fix the typo
totalGbinStorageMetricsUI: remove code duplication in sort menu
LLama: add ModelUnloadingState to engine State; add missing state checks in stub engine; fix instrumentation engine's error messages
UI: refactor back handling by removing centralized BackHandlerSetup and UnloadModelConfirmationDialog from AppContent
UI: implement BenchmarkScreen's individual back handling
LLama: add a new Initializing state; ; add two extension properties; rename LibraryLoaded state to Initialized
UI: Introduce an abstract ViewModel to handle additional model unloading logics
UI: expose a single facade ModelUnloadDialogHandler; move UnloadModelState into ModelUnloadingViewModel.kt
UI: migrate ModelLoadingScreen onto ModelLoadingViewModel; update & refine ModelLoadingScreen
UI: migrate ConversationViewModel onto ModelLoadingViewModel; update & refine ConversationScreen
nit: extract app name into a constant value; remove unused onBackPressed callbacks
UI: update AppContent to pass in correct navigation callbacks
nit: polish ModelLoadingScreen UI
core: throw Exception instead of returning null if model fails to load
navigation: sink model loading state management from AppContent down into ModelLoadingScreen; pass ModelLoadingMetrics to Benchmark and Conversation screens
gguf: add GGUF metadata data holder and its corresponding extractor implementation
DB: introduce Kotlin serialization extension's library and plugin; add Room runtime library
GGUF: make GgufMetadata serializable in order to be compatible with Room
nit: refactor data.local package structure
nit: rename lastUsed field to dateLastUsed; add dateAdded field
UI: refactor ModelCard UI to show GGUF metadata
UI: update ModelSelectionScreen with a preselect mechanism
UI: polish model card
nit: allow deselect model on Model Selection screen
nit: revert accidental committing of debug code
UI: polish ModelLoading screen
util: extract formatting helper functions from FileUtils into a new FormatUtils
UI: polish model cards on Benchmark and Conversation screens to show model loading metrics
UI: show a Snack bar to warn user that system prompt is not always supported
UI: handle back press on Model Selection screen
UI: finally support theme modes; remove hardcoded color schemes, default to dynamic color scheme implementation
feature: support searching on Model Selection screen
nit: move scaffold related UI components into a separate package
UI: extract InfoView out into a separate file for reusability
data: move Model related actions (query, filter, sort) into ModelInfo file
UI: animate FAB on model preselection states
feature: support filtering in Model Management screen
ui: show empty models info in Model Management screen
ui: add filter off icon to "Clear filters" menu item
[WIP] ui: polish Benchmark screen; implement its bottom app bar
ui: polish Benchmark screen; implement its bottom app bar's rerun and share
nit: disable mode selection's radio buttons when loading model
feature: implement Conversation screen's bottom app bar
pkg: restructure BottomAppBars into separate files in a child package
pkg: restructure TopBarApps into separate files in a child package
pkg: restructure system metrics into a separate file
UI: polish Conversation screen
data: update system prompt presets
UI: allow hide or show model card on Conversation & Benchmark screens; fix message arrangement
data: update & enhance system prompt presets
deps: introduce Retrofit2
data: implement HuggingFace data model, data source with Retrofit API
data: update Model data repository to support fetching HuggingFace models
[WIP] UI: replace the HuggingFace stub in Model Management screen with actual API call
UI: map language codes into country Emojis
ui: add "clear results" action to Benchmark screen
nit: print current pp & tg in llama-bench
UI: disable landscape mode; prevent duplicated benchmark running
llama: migrate C/CXX flags into CMakeList
[WIP] llama: ABI split builds five .so artifacts.
However, all .so are performing on SVE level
[WIP] llama: ABI split where five tiers are built sequentially.
[WIP] llama: disable OpenMP in ABI split since most SoCs are big.LITTLE
[WIP] llama: enable KleidiAI and disable tier 4 due to
+sve+sve2bug caused byggml_add_cpu_backend_variant_implas explained below
if (NOT SME_ENABLED MATCHES -1)
...
set(PRIVATE_ARCH_FLAGS "-fno-tree-vectorize;${PRIVATE_ARCH_FLAGS}+sve+sve2")
...
core: add Google's cpu_features as a submodule
core: implement cpu_detector native lib
core: swap out hardcoded LlamaAndroid library loading
core: add back OpenMP due to huge perf loss on TG128
misc: reorg the pkg structure
misc: rename LlamaAndroid related class to InferenceEngine prefixes
[WIP] lib: move GgufMetadata into the lib submodule
lib: expose GgufMetadataReader as interface only
lib: replace the naive & plain SharedPreferences with DataStore implementation
lib: hide the internal implementations, only expose a facade and interfaces
lib: expose Arm features
di: add a stub TierDetection; provide both actual impl and stub in AppModule
UI: add visualizer UI for Arm features
misc: UI polish
lib: refactored InferenceEngineLoader; added a
NONELlama TierUI: support
NONELlama Tier in general settingslib: optimize engine loader; always perform a fresh detection when cache is null
remote: add HuggingFaceModelDetails data class
remote: refine HuggingFaceModel data class
nit: remove
trendingScorefield from HuggingFace model entities, weird...remote: refactor HuggingFaceApiService; implement download feature in HuggingFaceRemoteDataSource
remote: fix the incorrect parse of HuggingFace's inconsistent & weird JSON response
UI: scaffold Models Management screen and view model
UI: implement a dialog UI to show fetched HuggingFace models.
UI: use a broadcast receiver to listen for download complete events and show local import dialog.
data: handle network exceptions elegantly
pkg: restructure
data's packagesdata: extract local file info, copy and cleanup logics into LocalFileDataSource
nit: minor UI patch; add missing comments
bugfix: tapping "Home" in navigation drawer should simply close it without any navigation action.
UI: improve autoscroll during token generation
lib: tested on JFrog Artifactory for Maven publishing
UI: show RAM warning if model too large
UI: polish model management screen's error dialog
util: add more items into the mapping table of ISO 639-1 language code to ISO 3166-1 country code
llm: properly propagate error to UI upon failing to load selected model
UI: avoid duplicated calculation of token metrics
lib: read & validate the magic number from the picked source file before executing the import
UI: add "Learn More" hyperlinks to Error dialog upon model import failures
lib: refactor the GgufMetadataReader to take InputStream instead of absolute path as argument
lib: fix the
SIMDtypo in Tier descriptioncore: verify model file path is readable
lib: add UnsupportedArchitectureException for triaged error message
util: split FormatUtils into multiple utils for better readability
UI: change benchmark screen from raw markdown to table view
bugfix: reset preselection upon running the preselected model
misc: linter issue
bugfix: fix the malfunctioning monitoring switch
UI: update Arm features indicator; fix the broken hyperlinks
UI: add quick action buttons to benchmark screen's result card
UI: hide share fab after clearing all benchmark results
UI: fix the model unload dialog message; elevate the model card and hide it by default on Conversation screen;
UI: hide the stubbing actions in Conversation screen
UI: add show/hide stats control to conversation screen's assistant message bubble; fix placeholder
UI: add a info button to explain token metrics
misc: remove the redundant
Companionadded due to refactoringUI: show corresponding system metrics detailed info upon tapping RAM / storage / temperature indicator
UI: add info button to System Prompt switch; expand the model card by default
UI: disable tag & language chips; add section headers to explain what they are
misc: replace top bar indicator's spacer with padding
UI: merge the Model Selection and Model Management into a unified Models screen
UI: split the ModelsManagementViewModel from a unified ModelsViewModel due to huge complexity
UI: add model loading in progress view; polish the empty model info view
UI: polish the bottom bars and info view when no models found; show loading in progress while fetching models
build: [BREAKING] bump the versions of libraries and plugins
UI: fix the breaking build
UI: add Tooltip on Import FAB for user onboarding
UI: adds AppPreferences to track user onboarding status
UI: tracks user's first success on importing a model
data: add hand crafted rules to filter the models fetched from HuggingFace API
UI: update app name & about; polish top bars' indicators & buttons
UI: polish Hugging Face download dialog UI
UX: implement onboarding tooltips for model import and onboarding
misc: use sentence case for CTA button labels
[WIP] UI: add Arm color palette from Philip.Watson3
UI: address Rojin's UX feedbacks
UI: address Rojin's UX feedbacks - part 2
UI: update Arm color palette from Philip.Watson3
data: make sure fetch preselected models in the same order of their IDs
UI: fix UI issues in the generic settings screen and navigation drawer
nit: address Rojin's feedbacks on model import message again
nit: append
®to allArmlabelsUI: extract a reusable InfoAlertDialog
core: support GGML_CPU_ALL_VARIANTS on Android!
core: restructure Kleidi-Llama library
core: organizing cmake arguments
data: sort preselected models according to device's available RAM
app: update adaptive + themed + legacy icons and app name
UI: fix the font size auto scaling for ArmFeaturesVisualizer
core: further improve the performance on native methods
UI: minor color palette changes; emphasize the bottom bar FABs; fix Settings Screen menu item label
UI: make more room for assistant message bubble's width
UI: better usage of tertiary colors to highlight model cards but not for warnings
UI: fix the layout issue on large font sizes
lib: support x86-64 by dynamically set Arm related definitions
lib: replace the factory pattern for deprecated tiered lib loading with single instance pattern
llama: update the library name in JNI and CMake project
llama: update the library's package name and namespace
llama: update the app's package name and namespace
app: bump ksp version
app: remove deprecated SystemUIController from accompanist by migrating to EdgeToEdge
app: extract AppContent from MainActivity to a separate file in ui package
lib: add File version for GGUF Magic number verification
lib: perform engine state check inclusively instead of exclusively
lib: change
LlamaTiertoArmCpuTierlib: remove kleidi-llama related namings
cleanup: remove Arm AI Chat/Playground app source code; replace with the basic sample app from https://github.com/hanyin-arm/Arm-AI-Chat-Sample
Note: the full Google Play version of AI Chat app will be open will be open sourced in another repo soon, therefore didn't go through the trouble of pruning the history using git filter-repo here.
[WIP] doc: update main and Android README docs; add self to code owners
lib: revert System.load back to System.loadLibrary
jni: introduce a logging util to filter different logging levels on different build types
lib: enable app optimization
doc: replace stub Google Play app URL with the actual link add screenshots; add my GitHub ID to maintainer list
Remove cpu_features
Fix linters issues in editorconfig-checker job
https://github.com/ggml-org/llama.cpp/actions/runs/19548770247/job/55974800633?pr=17413
Remove unnecessary Android CMake flag
purge include/cpu_features directory
Co-authored-by: Han Yin han.yin@arm.com
macOS/iOS:
Linux:
Windows:
- Windows x64 (CPU)
- Windows arm64 (CPU)
- Windows x64 (CUDA 12)
- Windows x64 (CUDA 13)
- Windows x64 (Vulkan)
- Windows x64 (SYCL)
- Windows x64 (HIP)
openEuler: