Skip to content

Linger v0.4.6

Choose a tag to compare

@github-actions github-actions released this 02 Oct 21:46
2427ddf

Linger 0.4.6: lighter

Linger now uses far less memory with photos and videos, most of all on Linux.
Photos in conversations and Media are shown from a smaller copy the server
makes, and videos and audio load nothing until you play them. Windows gets a
minimize button on every window.

Hosts: update the server to make photos lighter. This release changes the
server's database (one new column, added by itself on start), and the first
start makes smaller copies of the photos already on it, in the background.
0.4.6 apps work with a 0.4.5 server, where photos are simply shown at full
size as before, and 0.4.5 apps work with a 0.4.6 server.
For hosts has the steps.

Everyone: update the app.

The highlights

  • Photos take a fraction of the memory (#382). Conversations and Media
    show a copy the server makes, 960 pixels on its longest side; click a photo
    and it opens full size. Ten phone photos in a conversation went from about
    900 MB of extra memory to about 65 MB in WebKit, the Linux engine.
  • Videos and audio load nothing until you play them (#381). The poster
    and the length show until then. Five unplayed videos went from about
    1,060 MB to 144 MB on Linux, and from 463 MB to 216 MB in Chromium, the
    engine behind Windows' WebView2.
  • A minimize button on Windows (#386), just before the close button on
    every window.

Photos and videos

  • Photos are shown from a smaller copy (#382). When you share a photo
    bigger than 960 pixels on its longest side, the server keeps it full size
    and also saves a copy that size beside it. The conversation and Media show
    the copy, so they load quickly and use little memory. Click a photo for
    the full picture
    ; downloads and exports are full size too.
    • Smaller images, and animated GIFs, are shown as they are.
    • Photos shared before the update get their copies once the host updates
      the server. Until then they show full size, as before.
    • Someone still on 0.4.5 sees full-size photos everywhere, as before.
  • Shared videos and audio load nothing until played (#381). Each unplayed
    video used to build a whole player as soon as you scrolled past it, about
    190 MB each on Linux with NVIDIA graphics. Now the poster and the server's length stand in until
    you press play. After a failed load, Load again still loads straight
    away.

Windows

  • Minimize (#386) is just before the close button on the list, on the
    conversations beside it, on a room or DM in a window of its own, and on
    Settings, Search, Media and signing in. It sends the window to the taskbar,
    where a DM still makes its button flash. Linux has none: a tiling desktop
    can't minimize, and other desktops keep their shortcuts.

Under the hood

  • The package check's chime test plays its sounds again, once, when a busy CI
    machine loses part of one on the way to the virtual speaker (#384), and it
    now compares every chime with the sound the app made (#387). This changes
    only the checks.

Known issues

  • On Hyprland (Omarchy included), the mouse pointer jumps into a
    conversation that opens in a window of its own
    (popped out, or with
    Each in its own window). Conversations beside the list don't do this.
    It's Hyprland's behaviour when an app brings a window forward, and the
    user guide has the two lines that turn it
    off.
  • The AppImage doesn't play AV1 videos, which some NVIDIA and OBS game
    recordings and Pixel 10 phones make. Its own video decoders cover H.264 and
    H.265, which almost every phone and recorder uses (#358). Windows and the
    Arch, .deb and .rpm packages play AV1.

For hosts: updating the server

Server image: ghcr.io/itsmattguenther/linger:0.4.6 (x86-64 only), also
tagged latest.

What changes for you:

  • A small database change. One column is added by itself the first time
    0.4.6 starts. update.sh backs up the database before it updates, as
    always.
  • Photos get smaller copies (#382). New photos get theirs as they're
    shared. Photos already on the server get theirs in the background after the
    first start, newest first, a few at a time. On a server with many photos
    that uses some CPU for a while; everything keeps working, and those photos
    show full size until their copy is ready. When it's done, the log says
    made display copies for earlier images.
  • Copies are small, usually a couple of hundred KB a photo. They aren't
    counted against your storage limit, they aren't in exports, and they're
    deleted with their photo.
  • No new setting, and the image is still x86-64 only. ARM servers stay on
    0.4.4.

Run these on the server, one block at a time.

1. Go to the folder with your compose.yaml (the linger folder from
setup):

cd ~/linger

2. Update:

./update.sh

(Use sudo ./update.sh if you type sudo before docker commands. No
update.sh in the folder? The 0.4.5 notes
show how to get it.) It downloads 0.4.6 while the server keeps running, stops
it for a few seconds to save the database into backups/, starts everything
again, and prints the version before and after.

3. Check it worked:

curl -f https://linger.example.com/api/v1/health

With your own address in place of linger.example.com, it should print
{"ok":true,"version":"0.4.6"}. Later, see the copies finish:

docker compose logs linger | grep "display copies"

A server with no photos yet prints nothing, and that's fine.

If something goes wrong, update.sh prints the commands that put 0.4.5
back with the backup it just made. Going back needs that backup: 0.4.5
won't start on a database 0.4.6 has changed. Anything sent after the update
is lost when you go back, so decide soon if you're going to.

Download the app

Install the app on your own computer. Hosts run the separate server image.

Your computer Download
Windows Linger_0.4.6_x64-setup.exe
Omarchy or Arch Nothing to download: curl -fsSL https://raw.githubusercontent.com/itsMattGuenther/Linger/main/packaging/arch/setup.sh | bash once, then update with your system
Ubuntu, Debian or Mint Linger_0.4.6_amd64.deb
Fedora or openSUSE Linger-0.4.6-1.x86_64.rpm
Other Linux Linger_0.4.6_amd64.AppImage

The .msi is an alternative Windows installer. The app uses .sig files and
latest.json for updates; you do not need to download them yourself. macOS and
ARM desktop installers are not available. Windows installers are updater-signed,
not Authenticode-signed, so SmartScreen may warn: Run anyway is behind More
info
. See the
user guide
for installation and troubleshooting.

Updating the app

Choose Update… at the foot of your list, or open Settings → Account & App →
Updates, or close Linger and install the new download. You stay signed in.
Windows users should keep the same installer format (.exe or .msi). On
Omarchy or Arch, the package updates with your system.

Linux, with a .deb or .rpm you updated from inside the app: add the
video decoders once, then restart Linger.

  • Debian and Ubuntu: sudo apt install gstreamer1.0-libav
  • Fedora: sudo dnf install gstreamer1-plugin-libav

Hosts: see For hosts above.

Checks on installed clients

Record OS, package type, previous and new version, and interface size with
any failure. Use made-up messages, and keep private conversations out of
screenshots.

  1. Share a phone photo in a room: it shows quickly. Click it: the full photo
    opens, sharp. Open Media: its tile shows (#382).
  2. As a host, after updating the server: a photo shared before the update
    still shows, and docker compose logs linger | grep "display copies"
    says copies were made (#382).
  3. Scroll past a few shared videos without playing them: each shows its
    poster and length. Play one, skip around in it, and let it reach the end
    (#381).
  4. Windows: press minimize on the list, on the list with a room beside
    it, and on a room in its own window. Each goes to the taskbar, and a click
    there brings it back. With the list minimized, the tray brings it back too
    (#386).
  5. Windows: have a friend DM you while Linger is minimized: its taskbar
    button flashes (#291, #386).