Skip to content

shutterboy 0.1 (13724bd)

Choose a tag to compare

@887 887 released this 19 May 23:34
· 105 commits to main since this release

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