Skip to content

Feat/build infra refinement#2

Merged
leehack merged 17 commits into
mainfrom
feat/build-infra-refinement
Jan 31, 2026
Merged

Feat/build infra refinement#2
leehack merged 17 commits into
mainfrom
feat/build-infra-refinement

Conversation

@leehack
Copy link
Copy Markdown
Owner

@leehack leehack commented Jan 31, 2026

This pull request introduces a major overhaul to the build, distribution, and development workflow for the project, focusing on modernizing native asset management, improving cross-platform support, and streamlining the developer experience. The most significant changes include the adoption of Dart Native Assets for zero-setup binary management, the introduction of a comprehensive CI pipeline for building and releasing native binaries, consolidation of native sources and dependencies, and updated documentation to reflect the new architecture and workflows.

Native Asset Management & Distribution:

  • Migrated to the Dart Native Assets system, enabling automatic downloading and bundling of platform-specific native binaries at runtime via the hook/build.dart script for a seamless zero-setup experience. [1] [2] [3]

Continuous Integration & Release Pipeline:

  • Added a new GitHub Actions workflow (.github/workflows/build_native.yml) that builds native binaries for Android, iOS, macOS, Linux, and Windows, uploads them as artifacts, and creates GitHub Releases when a tag is pushed.

Project Structure & Dependency Management:

  • Consolidated all native sources, build scripts, and dependencies into a unified third_party/ directory, and added llama_cpp and Vulkan-Headers as submodules for improved maintainability and upgradability. [1] [2]

Documentation & Developer Workflow:

  • Updated CONTRIBUTING.md and CHANGELOG.md to describe the new architecture, zero-patch strategy for submodules, and the modern binary production/consumption lifecycle; removed outdated build/test instructions from AGENTS.md. [1] [2] [3]
  • Improved .pubignore to exclude large sources, submodules, local builds, and binaries from published packages, ensuring only necessary files are distributed.

Other Improvements:

  • Aligned versioning and binary distribution with llama.cpp release tags, and documented new features such as logging control, performance optimizations, and enhanced hardware acceleration support. [1] [2]

edab019a0 chore: cleanup build artifacts, logs, and format code
32c6bbc84 chore: move build-docker.sh to docker folder and update docs
3045df3d2 chore: remove models folder and update docker config to use external volume
17317f996 chore: organize docker files and add to .pubignore
2a1ea1a91 feat: add Docker support for Linux build and run
189b3227f chore: cleanup build hook and add explicit library loading logs
214c32a3d fix(build): resolve iOS Simulator dlopen failure by switching to static linking
9c5ce6f fix(build): force dynamic linking for Windows, Linux, and Android native assets
ac5289a fix: resolve Apple build failures by correcting deployment targets and forcing static llama.cpp
d8fe387 fix: support both static and dynamic linking on Apple platforms
146dff2 fix: explicitly pass ccache to CMake on Windows for better caching
5ed7807 refactor: optimize release process by uploading individual iOS static libraries
a5637dc chore: cleanup build-apple dependencies in workflow
3ecb1d3 fix: disable GGML_NATIVE for Apple builds to allow cross-compilation
f307e9b fix: handle ios-sim-x86_64 target in build_apple.sh
a3fb5eb fix: unify Apple architecture naming to x86_64
abab617 fix: make release job robust by using find to locate artifacts
6d53e9c perf: parallelize macOS builds and switch to arch-specific static libraries
ddce8c9 perf: parallelize Apple builds by spawning multiple runners per static library
e0364b4 fix: resolve CMake target name mismatch and fix iOS build script syntax
66824dc fix: resolve Apple build failures by fixing paths and merging static libraries
98bd60e refactor: transition to static linking on Apple platforms and unify naming to llamadart
5490dda fix(ci): use cpu backend for linux arm64 and add cpu support to build script
a6aebec fix(ci): restore missing build jobs in workflow
87ef433 refactor(build): unify native asset hook strategy and fix ios xcframework handling
757b67c fix: stabilize app shutdown and fix native resource leaks
104c5b0 chore: align versioning with llama.cpp tag b7883
02bac60 docs: update README and CHANGELOG for Pure Native Asset release
6cf082f refactor: consolidate build infra into third_party and update llama.cpp to b7883
0bcc83b use hook
d7984c8 Refactor iOS build, fix Simulator Metal crash, and cleanup codebase
44cde78 fix(ci): use unique names for release assets to avoid collisions
1d14395 fix(ci): resolve Ninja/Make conflict in Android and switch macOS to Ninja
de917e8 feat: implement automated binary management and cleanup repository
d7757f1 fix(ci): switch Android build to Ninja and fix naming conflict
bd6b896 ci: force build for ccache verification
66ae88e fix(ci): resolve Ninja output name conflict and remove unused build vars
1e403d0 perf(ci): enable ccache on Windows by switching to Ninja generator
8add54a fix(ci): switch iOS build to Ninja to enable ccache
aaf6858 fix(ci): match upstream manual vulkan install with version 1.4.313.2
85fbd1d fix(ci): use choco to install vulkan sdk on windows
5824fbe fix(ci): revert to humbletim/setup-vulkan-sdk for reliable installation
913fa09 fix(ci): manual vulkan sdk install on windows to ensure correct path
be85f68 fix(ci): robust vulkan detection with path sanitization and debug logging
98f5b03 fix(ci): try enabling Vulkan_ROOT and reduce noise in build script
0abc1d9 fix(ci): use recursive search for vulkan lib and glslc in windows build
4d710e1 fix(ci): remove hardcoded local path in windows build script
dde4933 fix(ci): fix windows vulkan cmake args detection
9b48045 fix(ci): disable ccache on windows due to msvc incompatibility
4e93d83 fix(ci): use optimized ios-only xcframework build script to prevent hang
17159c5 fix(ci): use correct vulkan-version input
a2ad6de fix(ci): remove redundant mkdir command failing on windows
089fb5a fix(ci): fix windows artifact path, update vulkan sdk, enable ccache
cbb8fc3 feat: Refactor build infrastructure and enable cross-platform support
- Modularized chat app into a clean layered architecture (Models, Services, Providers, Widgets, Screens).
- Extracted business logic from UI components into specialized services.
- Implemented cached token counting for performance optimization.
- Added comprehensive logging control for llama.cpp/ggml with configurable log levels.
- Silenced verbose engine logs by default while preserving critical warnings and errors.
- Implemented interactive and single-response modes using the 'args' package.
- Added automatic model downloading from Hugging Face URLs.
- Organized the codebase into models and services.
- Updated documentation and simplified the CLI interface.
- Replaced remaining 'print' calls in native service with log-level aware '_log' function.
- Set default log level to 'error' for both basic and chat examples to ensure a clean user interface.
- Verified that all internal isolate logs respect the user-defined log level.
- Updated CHANGELOG.md with comprehensive list of changes.
- Bumped package version to 0.3.1+b7883.
- Added library-level documentation to llamadart.dart.
- Updated root README.md with the new Logging Control feature.
- Synced example app versions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant