shutterboy 0.1 (13724bd)
Auto-built APK from commit 13724bd.
Install
Sideload via Obtainium (recommended — see the project README for setup) or install directly:
adb install -r shutterboy-0.1-13724bd.apk
Changes since v0.1-047cc84
- thumbs: resize OS thumbnail down to requested size before HARDWARE copy (13724bd)
- grid: static spinner at 0.75 progress — fuller ring without the animation tick (b4c538e)
- Revert "grid: static spinner — keep the ring shape, drop the animation" (5e24d37)
- grid: static spinner — keep the ring shape, drop the animation (8fdff94)
- favorites: persist across scans — drop CASCADE FK + scanner safety net (c4a7956)
- viewer: shorten shared-element open animation to 120 ms — unblock pager swipes faster (4c3fd9e)
- viewer: filmstrip + page counter at the bottom; hides when zoomed (f84dc2c)
- grid: stable cell callbacks — eliminate per-cell recompose on every scroll frame (fd34d35)
- grid: spinner only shows for cells that aren't memory-cached yet (436635f)
- revert: drop prepareToDraw and restore the loading spinner — kept Precision.INEXACT (28494d6)
- nav: stash backing-id lists in AppGraph; route carries a UUID key — fixes TransactionTooLargeException (750564a)
- viewer: keep chrome visible on video pages — Media3 swallows our taps (f1665ee)
- grid: stickyHeaderLabel falls through PhotoCell on flat timeline (52b27fc)
- grid: restore year scrubber on flat timeline + drop per-cell spinner animation (7b86e75)
- grid: revert LazyLayoutCacheWindow — pre-composing 5 viewports froze main thread (c730940)
- grid: prepareToDraw + LazyLayoutCacheWindow + Precision.INEXACT — kill main-thread stutter (34f99da)
- photos: drop date-grouping at all densities — column-cycle is just column count (b838e5a)
- scan: stream photos into Room in 500-row batches so the gallery fills while scanning (1c27d7b)
- Revert "Use yy.mm.ddhhMMss timestamp as the build version" (97bf605)
- theme: split base scheme from tint accent — copy tonearmboy's behaviour (c8c78e6)
- Use yy.mm.ddhhMMss timestamp as the build version (96abc71)
- theme: drop shutterboy-palette; tint shortcut + ColumnCount on Favorites (f39137f)
- ui: Search FAB + Favorites uses RootTopBar + workers back to 8 (4b404cf)
- ui: Favorites tab + viewer chrome polish (translucent + scrolling title + rotate/flip) (0b41b14)
- ui: spinner placeholder + column-count cycle button + 4 workers (35daabd)
- perf: HARDWARE bitmaps + Activity survives rotation (71d379d)
- graph: auto-rescan on MediaStore changes — deletes now refresh the gallery (0d7ff12)
- prefetch: tiered ring layout (tiny-wide, both-near) + drop to 8 workers (99605df)
- graph: app-scoped photosFeed — gallery survives viewer round-trip instantly (07c5c35)
- prefetch: two-tier (96 px + target) so cells never render fully-grey (3cfea61)
- viewer: skip memory cache + use thumb as placeholder (9e99955)
- perf: drop prefetch logging + memoize ImageRequest in PhotoThumbnail (7810575)
- prefetch: bypass Coil queue + use placeholderMemoryCacheKey for instant render (dc0089a)
- prefetch: warm tiles continuously, including DURING scroll (4892a54)
- scrubber: scroll to current target after 200 ms of stillness (Aves pattern) (74031b6)
- perf: remove crossfade + widen prefetch to 15 viewports each direction (5499eab)
- scrubber: pill tracks thumb during drag; stop suppressing decodes on normal scroll (a4b12ea)
- scrubber: grid scroll deferred to release — thumb input never blocked (f389c80)
- scrubber: throttle scrollToItem to 12 Hz + reverse prefetch LIFO order (c504418)
- scrubber: AndroidFastScroll cancel-and-relaunch pattern (ac92ce9)
- scrubber: dispatchRawDelta (Fossify/RecyclerView trick) + bring back fast crossfade (505e6b5)
- perf: conflate scrollToItem flow + 32 fetcher / 16 prefetch workers + 5-viewport prefetch (1c0a28b)
- coil: MediaStore loadThumbnail fetcher (Aves trick) + drop crossfade (8c15ce2)
- scrubber: serialize scrollToItem via snapshotFlow (fixes freeze on fast drag) (b2d7324)
- scrubber: Aves _boundlessThumbOffset accumulator — fix up-drag freeze (a16911e)
- grid: keep already-cached tiles visible during scroll; verify prefetch (04a67b9)
- grid: suppress-decode-while-moving (Aves pattern) (a6b8abc)
- grid: ThumbnailPrefetcher — bounded LIFO queue + 4 IO workers (9e7483a)
- loader: 8-worker fetch+decode pool; prefetch yields to scroll (155a02b)
- grid: per-id deduped Coil prefetch for the surrounding viewport (047cc84)
Verify build
| Field | Value |
|---|---|
| Commit | 13724bd1acdfc08b6a6f79f9542ccd042ec9f650 |
| APK | shutterboy-0.1-13724bd.apk |
| APK SHA-256 | 0f1e1d0cd07fc6b4304e1ae19c8d473514f16b8a82fc77261ec40569951233ce |
| Build flavour | assembleDebug |
To verify locally:
sha256sum shutterboy-0.1-13724bd.apk
# expected: 0f1e1d0cd07fc6b4304e1ae19c8d473514f16b8a82fc77261ec40569951233ce