Skip to content

Conversation

@crim50n
Copy link

@crim50n crim50n commented Dec 30, 2025

Description

Key Changes:

  • Fal.AI Integration: Added full support for Fal.AI as a generation backend. Implemented support for FLUX models (Dev, Schnell, Pro, Realism) with dynamic parameter form generation based on OpenAPI specifications.
  • A1111/Forge Improvements: Added support for Forge modules, as well as ADetailer and Hires.Fix settings to the generation form.
  • Media Storage Migration: Migrated image storage from Base64 strings in the database to the local file system. This significantly improves performance and reduces database size.
  • UI/UX Improvements:
    • Improved ZoomableImage component for smoother zooming and gestures.
    • Enhanced InPaint mode: improved canvas zoom and pan controls.
    • Added support for light status bar in the app theme.
    • Implemented log export function from the Logger screen.
    • Optimized gallery navigation.
  • Fixes & Misc:
    • Fixed issue with unnecessary network requests for inactive server sources.
    • Updated localization files (RU, TR, UK, ZH).
    • Added Unit tests for Fal.AI and Forge modules, updated existing tests.

Screenshots / Video (Optional)

Screenshot1

Screenshot2

VN20251230_181416.mp4
VN20251230_181241.mp4

Checklist

  • I have ensured this PR does not contain any breaking changes for existing functionality;
  • I have added automated tests that cover the new behavior and removed obsolete tests and code;

Tested On

  • Emulator
  • Real device

- Add tests for FalAiEndpointRepositoryImpl, FalAiGenerationRepositoryImpl, ForgeModulesRepositoryImpl
- Add tests for TestFalAiApiKeyUseCaseImpl, GetForgeModulesUseCaseImpl, GetGalleryPagedIdsUseCaseImpl
- Add tests for FalAiGenerationUseCaseImpl, ConnectToFalAiUseCaseImpl
- Fix existing tests: add mediaFileManager, falAiApiKey, mediaPath/inputMediaPath mocks
- Add mock files for FalAi and ForgeModule entities
- GetStableDiffusionModelsUseCaseImpl: only fetch when A1111 is active
- FetchAndGetSwarmUiModelsUseCaseImpl: only fetch when SwarmUI is active
- FetchAndGetHuggingFaceModelsUseCaseImpl: only fetch when HuggingFace is active
- FetchAndGetStabilityAiEnginesUseCaseImpl: only fetch when StabilityAI is active

This prevents unnecessary network requests to servers that are not currently
configured as the active generation source.
Add model name field to generation results and display it in the
gallery detail view. This allows users to see which model was used
for each generated image.

Changes:
- Add modelName field to AiGenerationResult entity
- Add MODEL_NAME column to GenerationResultEntity (DB migration v9)
- Display model name in GalleryDetailScreen when available
- Update test mocks
Add new LOCAL_QUALCOMM_QNN server source that enables on-device
Stable Diffusion generation using Qualcomm QNN SDK with NPU (HTP)
acceleration. Supports Snapdragon 8 Gen 1 and newer chipsets.

Features:
- NPU-accelerated inference using Qualcomm HTP backend
- GPU fallback with OpenCL support (MNN backend)
- Built-in models from HuggingFace (xororz/sd-qnn)
- Custom model support with folder scanning
- Multiple resolution presets (512x512, 768x768, etc.)
- Configurable scheduler (DPM, Euler)
- Real-time diffusion process visualization
- Img2Img support with denoising

Technical changes:
- Add feature/qnn module with LocalDream-based implementation
- Add DeviceChipsetDetector for Snapdragon detection
- Add QNN preferences (model, runtime, scheduler, etc.)
- Add QnnForm for server setup configuration
- Add QnnRuntimeSelectionComponent for runtime switching
- Add model scanning for custom QNN models
- Update generation usecases to support QNN backend
- Add prepare_qnn_libs.sh script for library setup

Note: QNN libraries must be extracted separately using the
prepare_qnn_libs.sh script (not included in repository).
- Add fal.ai as supported backend with FLUX models
- Document local diffusion options (ONNX, MediaPipe, QNN)
- Add QNN setup instructions for Snapdragon devices
- Update feature list with ADetailer, Hires.Fix, Forge modules
- Document gallery improvements and file-based storage
Update test mocks and fixtures to support QNN repository and use cases:
- Add QnnGenerationRepository mocks to generation use case tests
- Add GetForgeModulesUseCase to generation viewmodel tests
- Add QNN preferences to configuration tests
- Fix mapper tests for model name field
- Add missing parameters to presentation viewmodel tests
@crim50n crim50n force-pushed the master branch 2 times, most recently from 358e155 to a2e5954 Compare January 1, 2026 23:34
- Rename log tag [SDAI] -> [PDAI]
- Rename log file sdaiv1.log -> pdaiv1.log
- Update custom model path SDAI -> PDAI
- Rename SdaiWorkerFactory -> PdaiWorkerFactory
- Update test stubs naming
- Add CHANGES.md with 0.7.0 release notes
- Add gradle-versions-plugin for dependency updates checking
- Add version-catalog-update-plugin for automated updates
- Update stable dependencies to latest versions:
  - compileSdk: 35 -> 36 (required by new AndroidX libs)
  - Compose BOM: 2025.03.01 -> 2025.12.01
  - AndroidX core-ktx: 1.15.0 -> 1.17.0
  - AndroidX lifecycle: 2.8.7 -> 2.10.0
  - AndroidX navigation: 2.8.9 -> 2.9.6
  - AndroidX work: 2.10.0 -> 2.11.0
  - Koin: 4.0.4 -> 4.1.1
  - Retrofit: 2.11.0 -> 3.0.0
  - ONNX: 1.21.0 -> 1.23.2
  - Material: 1.12.0 -> 1.13.0
  - And other library updates
- Pin critical versions (paging, agp, kotlin, ksp) to prevent breaking changes
- Keep minSdk=24 for Android 7.0+ compatibility
@crim50n crim50n force-pushed the master branch 3 times, most recently from ea4dd38 to 77b538b Compare January 1, 2026 23:56
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