Han Yin
|
57c3a9dda7
|
lib: replace the naive & plain SharedPreferences with DataStore implementation
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
130cba9aa6
|
lib: expose GgufMetadataReader as interface only
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
6a5bc94ff1
|
[WIP] lib: move GgufMetadata into the lib submodule
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
4b3f6ef8d7
|
misc: rename LlamaAndroid related class to InferenceEngine prefixes
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
72822f0236
|
misc: reorg the pkg structure
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
b59c59e5c3
|
core: add back OpenMP due to huge perf loss on TG128
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
53ac8af67a
|
core: swap out hardcoded LlamaAndroid library loading
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
1b79db877d
|
core: implement cpu_detector native lib
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
98c8f5e59e
|
[WIP] llama: enable KleidiAI and disable tier 4 due to `+sve+sve2` bug caused by `ggml_add_cpu_backend_variant_impl` as explained below
```CMake
if (NOT SME_ENABLED MATCHES -1)
...
set(PRIVATE_ARCH_FLAGS "-fno-tree-vectorize;${PRIVATE_ARCH_FLAGS}+sve+sve2")
...
```
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
ead41ff655
|
[WIP] llama: disable OpenMP in ABI split since most SoCs are big.LITTLE
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
3884bbcb86
|
[WIP] llama: ABI split where five tiers are built sequentially.
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
75d1abe24a
|
[WIP] llama: ABI split builds five .so artifacts.
However, all .so are performing on SVE level
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
eab502a735
|
llama: migrate C/CXX flags into CMakeList
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
512fe1be4e
|
UI: disable landscape mode; prevent duplicated benchmark running
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
a4c66c4baf
|
nit: print current pp & tg in llama-bench
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
bbf0420bac
|
ui: add "clear results" action to Benchmark screen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
49df3aea9a
|
UI: map language codes into country Emojis
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
0c7e1fc7a2
|
[WIP] UI: replace the HuggingFace stub in Model Management screen with actual API call
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
cfbd271c84
|
data: update Model data repository to support fetching HuggingFace models
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
48fa0b23dc
|
data: implement HuggingFace data model, data source with Retrofit API
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
4b2f769ba8
|
deps: introduce Retrofit2
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
fe6eafe154
|
data: update & enhance system prompt presets
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
81ad468c78
|
UI: allow hide or show model card on Conversation & Benchmark screens; fix message arrangement
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
43d9d300aa
|
data: update system prompt presets
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
27edf0775d
|
UI: polish Conversation screen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
379be5d6c3
|
pkg: restructure system metrics into a separate file
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
b1831c4053
|
pkg: restructure TopBarApps into separate files in a child package
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
3c539dc146
|
pkg: restructure BottomAppBars into separate files in a child package
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
0bcb182d17
|
feature: implement Conversation screen's bottom app bar
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
d3011d48e6
|
nit: disable mode selection's radio buttons when loading model
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
0dec7fb2a3
|
ui: polish Benchmark screen; implement its bottom app bar's rerun and share
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
32f37a4316
|
[WIP] ui: polish Benchmark screen; implement its bottom app bar
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
ec907d01ba
|
ui: add filter off icon to "Clear filters" menu item
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
9e4ba94d66
|
ui: show empty models info in Model Management screen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
dd0367b970
|
feature: support filtering in Model Management screen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
d97e28a6d8
|
UI: animate FAB on model preselection states
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
05c620cc52
|
data: move Model related actions (query, filter, sort) into ModelInfo file
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
ef3791207b
|
UI: extract InfoView out into a separate file for reusability
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
73330596ae
|
nit: move scaffold related UI components into a separate package
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
77edad5a01
|
feature: support searching on Model Selection screen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
2b3ba770dd
|
UI: finally support theme modes; remove hardcoded color schemes, default to dynamic color scheme implementation
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
a8dc825aef
|
UI: handle back press on Model Selection screen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
d1b018e375
|
UI: show a Snack bar to warn user that system prompt is not always supported
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
56a7272858
|
UI: polish model cards on Benchmark and Conversation screens to show model loading metrics
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
10ca2fa834
|
util: extract formatting helper functions from FileUtils into a new FormatUtils
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
d7afcc41d5
|
UI: polish ModelLoading screen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
57b5001f5c
|
nit: revert accidental committing of debug code
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
ec47fa3d14
|
nit: allow deselect model on Model Selection screen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
6b74c49e6b
|
UI: polish model card
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
c12ef7a779
|
UI: update ModelSelectionScreen with a preselect mechanism
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
b81a0c6e6d
|
UI: refactor ModelCard UI to show GGUF metadata
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
9056f27a91
|
nit: rename lastUsed field to dateLastUsed; add dateAdded field
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
7540c2a8b9
|
nit: refactor data.local package structure
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
7ed79319e5
|
GGUF: make GgufMetadata serializable in order to be compatible with Room
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
8ae0c3d2fa
|
DB: introduce Kotlin serialization extension's library and plugin; add Room runtime library
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
67499727ef
|
gguf: add GGUF metadata data holder and its corresponding extractor implementation
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
a9466c0370
|
navigation: sink model loading state management from AppContent down into ModelLoadingScreen; pass ModelLoadingMetrics to Benchmark and Conversation screens
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
8a682ff85d
|
core: throw Exception instead of returning null if model fails to load
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
f313362ced
|
nit: polish ModelLoadingScreen UI
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
1d508f367e
|
UI: update AppContent to pass in correct navigation callbacks
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
0d65c4b06b
|
nit: extract app name into a constant value; remove unused onBackPressed callbacks
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
9f1d26ac95
|
UI: migrate ConversationViewModel onto ModelLoadingViewModel; update & refine ConversationScreen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
cb508be782
|
UI: migrate ModelLoadingScreen onto ModelLoadingViewModel; update & refine ModelLoadingScreen
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
f61c512223
|
UI: expose a single facade ModelUnloadDialogHandler; move UnloadModelState into ModelUnloadingViewModel.kt
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
c5a3ac7eb1
|
UI: Introduce an abstract ViewModel to handle additional model unloading logics
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
e1c77c6bbd
|
LLama: add a new Initializing state; ; add two extension properties; rename LibraryLoaded state to Initialized
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
ba40d689a1
|
UI: implement BenchmarkScreen's individual back handling
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
8203ddb97a
|
UI: refactor back handling by removing centralized BackHandlerSetup and UnloadModelConfirmationDialog from AppContent
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
c08d02d233
|
LLama: add ModelUnloadingState to engine State; add missing state checks in stub engine; fix instrumentation engine's error messages
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
481ba6e9d3
|
UI: remove code duplication in sort menu
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
41615be5ae
|
UI: fix the typo `totalGb` in `StorageMetrics`
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
69f2bd62f9
|
UI: replace ugly optional as casts in AppScaffold with extension functions
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
e269da655f
|
UI: combine TopBarConfig and BottomBarConfig into each route's ScaffoldConfig
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
225c5435c5
|
UI: refactor BottomBarConfig.ModelsManagement APIs
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
63fc56d603
|
UI: centralize the AppScaffold and modularize its configs
|
2025-10-28 11:39:17 -07:00 |
Han Yin
|
72e97b93c5
|
feature: check for available space before copying local model
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
65d4a57a8b
|
LLama: refactor loadModel by splitting the system prompt setting into a separate method
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
9f77155535
|
VM: handle the cancellation of ongoing token generation
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
46859c10f0
|
LLama: update engine state after handling the cancellation of sendUserPrompt
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
06448a60a5
|
UI: update UI ongoing model import's cancellation
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
9ba74a9d3d
|
data: allow canceling the ongoing model import
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
d70b8fe323
|
core: swap in LLamaAndroid and mark stub engine for testing only
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
c2426a42e5
|
UI: unify Model Card components
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
434933f5b3
|
UI: show model card in Conversation screen
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
9769467723
|
UI: show model card in Model Loading screen
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
9cfa74f754
|
core: break down InferenceManager due to Interface Segregation Principle
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
286ed05f13
|
vm: merge SystemPromptViewModel into ModelLoadingViewModel
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
23d411d86e
|
vm: split mono MainViewModel into separate individual ViewModels
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
32d778bb8e
|
core: extract conversation and benchmark logics into InferenceManager; add logs and missing state updates in stub InferenceEngine
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
51b120f464
|
data: pass through getModelById from ModelDao into ModelRepository
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
59f5caa699
|
Util: split FileUtils from ModelUtils; extract copy methods into FileUtils
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
4913ad0dae
|
nit: tidy SystemPromptViewModel
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
2614f91226
|
UI: replace model selection screen's data stubbing; add empty view
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
6b48f7473f
|
UI: extract a shared ModelCard component
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
0d41e75ca5
|
UI: add a confirmation step when user picks a file; refactor model import overlay into AlertDialog
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
1bebd1bb07
|
util: extract file size formatting into ModelUtils
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
561fe0222f
|
UI: handle back navigation when user is in multi-selection mode
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
2d6b8856f6
|
UI: implement multiple models deletion; update Models Management screen
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
025e3d2417
|
UI: enrich ModelManagementState; extract filename to show correct importing UI
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
adfbfe3ffb
|
data: add a util file for extracting file name & size and model metadata
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
290a6bfebe
|
bugfix: use List instead of Collection for ModelDao's deletion
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
5de0b5d6d0
|
data: import local model with file picker
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
a3ebdac58f
|
UI: polish sort order menu
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
760d66c97d
|
UI: replace Models Management screen's stubbing with instrumentation
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
bc93c384a7
|
data: introduce Model entity and DAO; update DI module
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
f5e2edda87
|
data: [WIP] prepare for ModelRepository refactor & impl
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
b6cc8f0c01
|
DI: abstract the protocol of SystemPromptRepository; update AppModule
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
eebc05b559
|
UI: polish UI for ModelsManagementScreen; inject ModelsManagementVieModel
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
6e82bb37d3
|
Feature: Introduce ModelRepository and ModelsManagementViewModel; update AppModule
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
aedf442632
|
DI: Optimize AppModule
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
d60bba9b8f
|
UI: navigation with more natural animated transitions
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
511df35704
|
bugfix: wait for model to load before navigating to benchmark screen; use NavigationActions instead of raw navController
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
ea11ee3c94
|
UI: optimize AppContent's composing
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
0afd087f35
|
DI: replace manual DI with Hilt DI
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
a1f6e7e476
|
DI: make viewmodels Hilt injectable
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
564b095427
|
DI: make app Hilt injectable
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
65741a7e64
|
DI: introduce Hilt plugin + processor + lib dependencies
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
af0d68d611
|
nit: combine temperatureMetrics and useFahrenheit
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
5e4972e93e
|
UI: refactor top app bars
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
2a41c0e354
|
vm: replace token metrics stubs with actual implementation
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
e47e3b77ee
|
UI: locks user in alert dialog when model is unloading
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
6b341b0fbe
|
bugfix: handle user quitting on model loading
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
e8b84c6ebf
|
UI: code polish
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
fddf060d92
|
data: code polish
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
3b499ac7e4
|
UI: polish conversation screen
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
64ebdc67a6
|
UI: update app name to be more Arm
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
55681847e9
|
UI: rename `ModeSelection` to `ModelLoading` for better clarity
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
75c986afc5
|
bugfix: properly handle user's quitting conversation screen while tokens in generation
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
4848bf93d0
|
data: introduce repo for System Prompt; flow data from Room to VM
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
5596d5203b
|
DB: setup Room database
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
4046cd16fd
|
Deps: bump Kotlin plugin; introduce KSP; apply in :app subproject
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
5868eaa66b
|
UI: polish system prompt setup UI
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
a7ee3d305f
|
UI: split a nested parent settings screen into separate child settings screens
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
65c09b2b32
|
UI: allow drawer's gesture control only on Home and Settings screens; enable alert dialog on back navigation inside conversation and benchmark
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
648b97818e
|
UI: disable triggering drawer via gesture; enable alert dialog on back navigation inside conversation and benchmark
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
a7ae8b7ce0
|
[WIP] DI: implement simple local vm factory provider
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
ca2b7772ce
|
UI: add a new MainActivity; update manifest
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
7e5c80cee9
|
UI: implement core flow's screens
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
5ad65919e9
|
util: implement user preferences utility
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
46bd638c5f
|
util: implement performance monitor; wrap it with a viewmodel
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
4dd755e25b
|
UI: implement basic UI components
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
32608fb225
|
UI: app navigation
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
3f913ce440
|
LLM: stub a local inference engine for faster iteration
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
3787fbddb0
|
data: define data models for LLM and system prompts
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
697d778db7
|
UI: define theme, color palette, typography and shape
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
cbe7133742
|
UI: introduce new dependencies, update versions & references
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
44a522dbc8
|
UI: move existing UI src files into `legacy` package
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
37f3e1c415
|
Feature: use local llama_context for benchmarking; support context init with custom context size
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
6d2279e9cd
|
REWRITE JNI bridge; Update viewmodel
|
2025-10-28 11:39:16 -07:00 |
Han Yin
|
e1bc87610e
|
Perf: allocate `llama_batch` on stack with `llama_batch_init`
|
2025-10-28 11:39:16 -07:00 |