Reproducible build image + keep video/GIF bytes across scroll #10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "build-image-and-media-cache"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Add docker/Dockerfile, docker/build.sh, docker/README.md: an Ubuntu
24.04 image with Flutter SDK, Rust, Android SDK + NDK, JDK 17, and
every Linux desktop system library Mochi needs (gtk, webkit2gtk,
mpv, secret, sqlcipher, GStreamer, PipeWire). One entrypoint
dispatches linux / linux-arm64 / apk / appbundle / web / shell.
Image is ~12 GB but it's a one-shot to set up a consistent build
environment for any contributor:
The visibility detector on _FirstFrameThumbnail still tore down the
VideoPlayerController whenever the bubble dipped below 1% visibility.
Drop the teardown branch entirely: the controller now lives for as
long as Flutter keeps the widget mounted (cacheExtent = 6000 px
covers ~15 screen heights), and is disposed in dispose() like normal.
This stops the rapid load/unload loop near the viewport edge.
MxcImage in the chat image bubble and in the video thumbnail had no
cacheKey, so the static byte cache didn't retain anything across
mount/unmount. Pass the event id (and a 'video-thumb-' prefix for
the thumbnail variant) so GIFs and image bytes survive remount.
Add docker/Dockerfile, docker/build.sh, docker/README.md: an Ubuntu 24.04 image with Flutter SDK, Rust, Android SDK + NDK, JDK 17, and every Linux desktop system library Mochi needs (gtk, webkit2gtk, mpv, secret, sqlcipher, GStreamer, PipeWire). One entrypoint dispatches linux / linux-arm64 / apk / appbundle / web / shell. Image is ~12 GB but it's a one-shot to set up a consistent build environment for any contributor: docker build -f docker/Dockerfile -t mochi-build . docker run --rm -v "$PWD:/work" mochi-build linux The visibility detector on _FirstFrameThumbnail still tore down the VideoPlayerController whenever the bubble dipped below 1% visibility. Drop the teardown branch entirely: the controller now lives for as long as Flutter keeps the widget mounted (cacheExtent = 6000 px covers ~15 screen heights), and is disposed in dispose() like normal. This stops the rapid load/unload loop near the viewport edge. MxcImage in the chat image bubble and in the video thumbnail had no cacheKey, so the static byte cache didn't retain anything across mount/unmount. Pass the event id (and a 'video-thumb-' prefix for the thumbnail variant) so GIFs and image bytes survive remount.