Skip to content

Linger v0.4.5

Choose a tag to compare

@github-actions github-actions released this 01 Oct 14:44
cc2184c

Linger 0.4.5: one window

Your list and your conversations now live in one window. Each friend has one
row: click it, and they open beside the list, their card on top and your
conversation underneath. Long messages use the whole width of a wide window,
and shared videos play with sound on Linux.

Hosts: updating is quick, and optional this time. The server hasn't
changed apart from its version number: no database change and no new
setting. 0.4.5 apps work with a 0.4.4 server. Your app will now tell you the
server is behind, though, so get the new update script and run it. On an
ARM server, such as a Raspberry Pi, stay on 0.4.4.

For hosts has the steps.

Everyone: update the app.

The highlights

  • One window. Conversations, Media and Search open beside your list as
    tabs, and fold back to just the list (#337).
  • One row per friend. Your DM with somebody lives on their row. Click it
    and they open beside the list (#351).
  • Long messages use the whole width of a wide window (#334).
  • Shared videos play with sound on Linux (#358).
  • Hosts update with one command, and the app says when the server is
    behind (#312, #314).

Your list and conversations

  • The list is the one window (#337). Open a room or a person and the
    window grows to the right to make room for it (to the left if your screen
    ends there). The list and the conversation move, snap and minimize
    together.
    • Each conversation gets a tab. Ctrl+Tab moves between them and
      Ctrl+W closes one.
    • The fold button at the conversations' left edge folds the window back to
      just your list and keeps your tabs. The button beside the gear brings them
      back. Closing the last tab folds it too.
    • Drag the line between the list and the conversations to make the list
      wider or narrower. Double-click it to put it back.
    • A maximized or snapped window keeps its size. On a tiling desktop like
      Hyprland (Omarchy included), the window keeps its tile. If the tile is too
      narrow for both, the conversation takes the whole window and the fold
      button takes you back to the list.
    • Media and Search open as tabs too, and Ctrl+K opens Search. A
      result opens its conversation as another tab, at the message.
    • The pop-out button still puts a tab in a window of its own, and Back
      beside your list
      puts it back. If you'd rather every conversation had
      its own window, choose that in Settings → Windows.
    • The separate chat window, with its own tabs, is gone.
  • One row per friend (#351). Every friend used to be in the list twice,
    once under DMs and once under People. Now there's no DMs section: your DM
    with somebody lives on their row in People.
    • Their row lights up when they've written something you haven't read,
      even when Away or Offline is folded.
    • The people you're talking to come first in each group: whoever wrote
      to you, then whoever you talked with most recently, then everyone else.
    • Click a person and they open beside the list: their name, where they
      are, their whole status and fields, and Knock on top, your
      conversation underneath.
    • That tab is a preview, its name in italics. Clicking the next person
      replaces it, so looking around doesn't pile up tabs. Typing in it keeps
      it.
    • Hover a person to see their whole status when the row had to cut it
      short. The list marks whatever is showing beside it.
    • Group DMs sit with the rooms, after the server's own. The + on
      the Rooms heading starts one.
    • The small card button on a person's row, next to Knock, opens just
      their card, without opening a tab.
  • Long messages use the whole width (#334). A message's words used to
    stop at 80 characters, however wide the window. Now they run up to the time
    column. At a normal window size nothing changes. Search results keep the
    shorter lines.

Fixes

  • Linux: shared videos play with sound (#358). Most videos from a phone
    or a screen recorder have AAC sound and an H.264 picture. Linux's media
    system needs its libav decoders for both, and Linger never asked for them,
    so those videos played silent or not at all.
    • The Arch and Omarchy package requires them now.
    • A fresh install of the .deb or .rpm brings them.
    • The AppImage carries its own, trimmed to what shared videos need. It
      grew 1.4 MB. It doesn't play AV1, or older formats such as DivX.
    • Updating a .deb or .rpm from inside the app doesn't add them
      (#377). Add them once with the command under
      Updating the app.
  • Linux: the desktop's play key can't start a song you paused (#353).
    The play/pause key, or a mouse button the desktop treats as one, could
    start a song posted in a room even though you'd paused it. Now Play only
    resumes something the desktop itself paused. Pause and play in the middle
    of a song work as before.
  • Names in Silkscreen show in Silkscreen (#318). In installed apps, a
    name set in Silkscreen, and the small logo mark, fell back to another font.
    It never worked before this release.
  • No yellow ring after switching workspaces (#375). Coming back to Linger
    could leave a focus ring around whatever you'd last clicked. The ring now
    shows only after you've used the keyboard.
  • End on a shared audio file's timeline goes to the end (#343). On Linux
    it could turn the player into "Couldn't load this audio."

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.

For hosts: updating the server

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

What changes for you:

  • Nothing in the server itself. No database change and no new setting.
    0.4.5 apps work with a 0.4.4 server.
  • Your app says when the server is behind (#314). Settings → Hosting →
    Server
    shows the version your server runs. When a newer one is out, it
    says so, with How to update and What's new. Only the host sees it.
  • One command updates the server (#312): ./update.sh. It backs up the
    database first, and keeps the last five backups.
  • The image is for x86-64 (Intel or AMD) only from this release on
    (#310). ARM servers stay on 0.4.4.
  • If you run the voice relay, .env.example now has
    COMPOSE_PROFILES=voice. Put that line in your .env and a plain
    docker compose up -d starts the relay too. It's optional, since
    update.sh works it out either way.

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. Check what your server runs on:

uname -m

x86_64 means carry on. aarch64 or arm64 means an ARM server: stop
here.
Change the image line to ghcr.io/itsmattguenther/linger:0.4.4 with
nano compose.yaml, and leave it there. Otherwise latest points at an
image your server can't run, and every update fails with "no matching
manifest". Your server is missing nothing that 0.4.5 apps need.

3. Get the update script. Once only; servers set up from 0.4.5 on already
have it:

curl -fLO https://raw.githubusercontent.com/itsMattGuenther/Linger/main/deploy/update.sh
chmod +x update.sh

4. Update:

./update.sh

(Use sudo ./update.sh if you type sudo before docker commands.) It
downloads 0.4.5 while the server keeps running, stops it for a few seconds to
save the database into backups/, starts everything again, the relay too,
and prints the version before and after. If it stops because the image line
still says matthewguenther, change that line to
ghcr.io/itsmattguenther/linger:latest with nano compose.yaml and run it
again.

5. 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.5"}. Settings → Hosting → Server in your app
should now say it's the newest.

If something goes wrong, update.sh prints the commands that put 0.4.4
back. The database didn't change, so going back is only the image line:
change it to ghcr.io/itsmattguenther/linger:0.4.4 and run
docker compose up -d.

Download the app

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

Your computer Download
Windows Linger_0.4.5_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.5_amd64.deb
Fedora or openSUSE Linger-0.4.5-1.x86_64.rpm
Other Linux Linger_0.4.5_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. Windows 11: with the list near the right edge of the screen, open a
    room: the window grows to the left. Snap the window to half the screen and
    open a room: it keeps its size (#337).
  2. Hyprland: open a room with the window tiled, then floating. Tiled, it
    keeps its tile, and in a narrow tile the conversation takes the whole
    window. Floating, it grows beside the list (#337).
  3. Fold with the fold button, bring the tabs back with the button beside the
    gear, and close the last tab: it folds. Ctrl+K opens Search as a tab,
    and a result opens its conversation at the message.
  4. Click a friend: their card on top, your conversation below, the tab in
    italics. Click another friend: that tab is replaced. Type in it: it stays
    (#351).
  5. Have a friend DM you while their group is folded: their row and the
    group's heading light up. Read it: the light goes out (#351).
  6. Start a group with the + on Rooms: it sits after the server's
    rooms.
  7. In a window over 1600 pixels wide, send a long message: its words run to
    just short of the time (#334).
  8. Linux: play an MP4 from a phone in a room: it has sound. Try it on the
    Arch package, on an AppImage, and on a .deb or .rpm updated in-app
    after adding the decoders (#358).
  9. Debian or Ubuntu, on a computer without gstreamer1.0-libav: update
    from 0.4.4 inside the app. It finishes, Linger restarts on 0.4.5, and
    sudo apt install of anything still works afterwards (#377).
  10. Linux: leave a song paused in a room and press the play key (or a
    mouse button bound to it) a few times: it stays paused. Play a song,
    press pause, then play: it pauses and carries on (#353).
  11. Set your name in Silkscreen: it shows in Silkscreen, on Linux and on
    Windows (#318).
  12. Click a tab, switch to another workspace and back: no yellow ring. Press
    Tab: the ring shows (#375).
  13. Linux: share an audio file, click its timeline and press End: it goes
    to the end, and doesn't say it couldn't load (#343).
  14. As a host, with the server still on 0.4.4: Settings → Hosting →
    Server
    says 0.4.5 is out, and How to update opens the host guide.
    Run ./update.sh: it backs up, updates and prints 0.4.5. Settings then
    says it's the newest (#312, #314).