* desktop: add bounded animated image decoder
Skia's Codec is already on the desktop classpath through skiko and decodes
both GIF and animated WebP. The frames come from a file somebody else
composed, so the decoder is bounded before it allocates: the raster is
measured in bytes with the sides multiplied as Long, each side is capped
separately so an extreme aspect ratio cannot slip under the byte budget, and
the encoded size is checked before the bytes are copied into native memory.
Anything outside the bounds, or any failure, keeps the still image the chat
already renders.
Nothing calls this yet.
* desktop: animate GIFs in chat items and full screen
Both views drew the first frame only. The full screen view also decoded its
still on every recomposition, which an animation recomposes once per frame,
so that decode is remembered against the data it comes from.
The chat list preview stays a still image: it is a 36dp box that the desktop
layout keeps on screen the whole time, so animating it would hold a raster and
spend a frame of work per listed chat, without pause.
Removes the two markers left for this work.
* desktop: don't decode animation frames that cannot be seen
With media blur on, a blurred image is only revealed while the mouse is over
it, so every frame was decoded, uploaded and then blurred away again for
nobody - and the blur is a render effect re-run per frame. Frames now decode
only while the image can be seen, which also stops motion showing through a
blur that is there to hide it.
Passing the blur state to the view is why the shared signature changes; coil
drives its own animation on Android, so there is nothing to pause there.
* docs: move animated images plan to plans/
* docs: drop file path references from animated images plan
* docs: correct animated images plan against the code
* desktop: correct animated image comments
* desktop: reduce animated image comments
* desktop: correct and bound animated image decoding
* docs: correct animated images plan against measurements
* desktop: fuse the animation prior frame decision
* docs: cover desktop animated images in spec and product
* desktop: drop the unused animated image component
* desktop: return the animation frame instead of its state
* docs: correct the animated images documentation
* desktop: don't decode animations under the full screen viewer
* desktop: bound the frames an animation rebuilds
* desktop: pause animations under any full screen modal
* desktop: stop animations that alternate expensive frames
* desktop: read what playing a frame needs only once
* desktop: close the codec of an animation outside the bounds
* desktop: wait out what an animation frame cost to decode
* docs: correct animated images claims against the code
* desktop: bound the frame count where the others are bounded
* desktop: don't wait out a stall an animation frame did not spend
* desktop: say what the slow frame constants stand for
* desktop: don't decode animations behind a minimised window
* desktop: make the animation frame wait testable
* desktop: bound the file size where the others are bounded
* desktop: pin the frame wait clamp in its test
* desktop: keep the frame wait clamp private
* desktop: reduce animated image comments
---------
Co-authored-by: sh <github.shum@liber.li>
* android: add google and foss build flavors
* android: get the Google Play account country in the google flavor
* android, desktop: update whats new
* temp: comment out wefunder link
Jitpack stopped serving nanohttpd under the 10-char commit
hash efb2ebf85a (returns 404), while the 7-char short hash
efb2ebf resolves to the same commit and jars. Switch to the
short form to unbreak desktopCompileClasspath.
* types and api
* remaining api
* icons for tags (named label due to name conflict)
* icon fix
* wup
* desktop handlers to open list
* updates
* filtering
* progress
* wip dump
* icons
* preset updates
* unread
* + button in tags view
* drag n drop helpers
* chats reorder
* tag chat after list creation (when chat provided)
* updates on unread tags
* initial emoji picker
* fixes and tweaks
* reoder color
* clickable shapes
* paddings
* reachable form
* one hand for tags
* ui tweaks
* input for emojis desktop
* wrap chat tags in desktop
* handling longer texts
* fixed a couple of issues in updates of unread tags
* reset search text on active filter change
* fix multi row alignment
* fix modal paddings
* fix single emoji picker for skin colors
* dependency corrected
* icon, refactor, back action to exit edit mode
* different icon params to make it larger
* refactor
* refactor
* rename
* rename
* refactor
* refactor
* padding
* unread counter size
---------
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* multiplatform: insets
* more features and better performance
* calls and removed unused code
* changes
* removed logs
* status and nav bar colors
* chatList and newChatSheet search fields
* overhaul
* search fields, devtools, chatlist, newchatsheet, onehand on desktop, scrollbars
* android, desktop: update to Compose 1.7.0
- support image drag-and-drop from other applications right to a chat
(with and without transparent pixels - will be png or jpg)
* stable
* workaround
* changes
* ideal adapting height layout
* dropdownmenu, userpicker, onehandui, call layout, columns
* rename bars properties and strings
* faster update and better layout
* gallery in landscape with cutout
* better cutout
* 1% step on slider
* app bar moves to bottom in one hand ui
* default alpha
* changes
* userpicker colors
* changes
* blur
* fix wrong drawing area in chatview
* fix
* fixed differently
* changes
* changes
* android fix
* Revert "android fix"
This reverts commit 7d417afd9b.
* changes
* changes
* blur
* swap
* no logs
* fix build
* old Android support
* fix position of menu
* disable blur on Android 12
* call button padding
* useless code
* fix padding in group info view
* rename
* rename
* newline
* one more fix
* changes
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* desktop: in-app update functionality
* without Android
* refactor
* working windows
* tabs vs spaces
* better working mac
* changes
* repo
* undo manifest changes
* changes
* changes
* unneeded changes
* revert
* new line
* fix update notice
* different way
* changes to mac logic
* changes to mac logic
* more
* update strings
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: wallpapers
* changes
* removed unused
* changes
* backgrounds moved to themes. can be exported/imported
* changes and refactoring
* scrollable
* change
* reorder
* theme per background
* changes
* don't drop customization in same cases
* changes
* changes
* fix state update
* different defaults
* fix Android
* removed migration
* temporary
* returned theme name as uppercase back
* resilient to wrong preset name
* more
* live color change without button
* fix
* Revert "temporary"
This reverts commit 705c92ee56.
* changes
* changes
* almost candy
* old picker and ability to specify hex color
* different image
* picker
* user theme override, fixes, import/export theme with image
* revert when about to merge: useful layout for theming
* custom image displaying and deletion work correctly
* performance
* moved code up
* changes
* color changes in picker when changing themes
* reset color without closing modal
* unused
* log
* currentTheme instead of MaterialTheme
* different inheritance logic
* fix and move sent/received message colors to top
* remove background
* performance
* fix wrong base
* changes
* fix
* small
* custom image selection made normally
* better color picker
* better picker
* refactor, fixes, optimizations
* working with unknown base theme + tests
* change
* delete wallpaper dir when importing archive
* function rename
* fix bug with state update
* update colors
* fix text colors
* update images
* changes
* remote desktop and theme mode dropdown
* default theme
* additional accent 2 changes
* fix default wallpaper
* removed ChatListAlwaysVisible
* renaming
* update messages
* changes
* default theme
* unused
* member icon background color
* image quality
* fix wallpaper on empty notes screen
* update colors
* change
* update colors
* fix update on android
* fix update on both platforms
* update colors, remove serializable
* fix color
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android: more user-friendly way of granting permissions in call
* changes
* ask permissions without click at first
* changes in logic and UI
* enhancements
* show alert only when non in PiP
* change
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: support calls on desktop and moved www dir to different root
* add page title, fix links on Android, change timeouts
* using worker in desktop Chrome and Safari
* ui changes
* end call button in app bar
* fix android
* a lot of enhancements
* fix after merge master
* layout
* sound play on call
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* desktop: video and audio players
* making player working without preinstalled VLC
* mac support
* don't use vlc lib when not needed
* updated jna version
* changes in script
* video player lazy loading
* mac script changes
* updated build gradle for preserving atrributes of file while copying
* apply the same file stats on libs to make VLC checker happy
* updated script
* changes
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>