gallery/README.md
Greg Pomerantz e1982eade4 M1: metadata scan + sqlite DB + placeholder list
- scan.rs: recursive walk of Pictures/DCIM (GALLERY_SCAN_DIRS override),
  image-ext detection, mtime/size capture, no symlink-dir following
- db.rs: rusqlite(bundled) store; incremental apply (insert/update/delete)
  keyed on path with mtime/size change detection; derived columns reset on
  change; Android DB path in Android/data/<pkg>/files (EXTERNAL_DATA_DIR is
  unset in this NativeActivity setup)
- lib.rs: start_scan() background thread -> invoke_from_event_loop ->
  VecModel + status line; called from desktop and Android entry points
- main.slint: ListView of paths (M1), status line with scan stats
- main.rs: fix desktop bin for 1.18.1 (no slint::Result; ComponentHandle)
- build.sh: export NDK clang CC_/CXX_/AR_ per target (bundled sqlite)
- tests: 5k-file scan < 2s, incremental apply, roundtrip

Verified on emulator: 5002 files in 153-226 ms; relaunch 0+ 0~ 0-;
touch -> 1~, delete -> 1-.
2026-10-27 13:28:33 -04:00

27 lines
933 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# gallery
A high-performance image gallery for Android (primary), Linux and macOS —
Rust + [Slint](https://slint.dev) 1.18.
**Status: M1 (metadata scan + DB) done.** See **[HANDOFF.md](HANDOFF.md)** —
the development hand-off with the full plan: architecture, thumbnail
pipeline, milestones M1–M7, Slint gotchas, permission flow, and performance
targets. Next: M2 (thumbnail engine).
## Build
```bash
./scripts/build.sh debug # debug x86_64 APK + install on emulator
./scripts/build.sh # release x86_64 (emulator)
./scripts/build.sh aarch64 # release aarch64 (device)
cargo run # desktop (Linux needs libfontconfig1 + pkg-config)
```
Requires: Rust (rustup), `cargo-apk2`, Android SDK + NDK 27 (see HANDOFF.md §3
for exact paths/env).
## License
GPL-3.0 (see [LICENSE](LICENSE)). Built on Slint, used under the Slint
royalty-free license for proprietary apps (see HANDOFF.md §10.4).