Skip to content

Linger v0.5.4

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Nov 01:49
c3355f9

Linger 0.5.4: Linger updates itself, and phones share straight to it

From this release on, Linger keeps itself up to date: a day after a
release comes out, the app downloads it and installs it when it won't get in
anybody's way. And phones can share pictures and files straight to
Linger
: pick Linger in the phone's share sheet. On an iPhone, Linger's own
window rises inside the sheet, and Send posts to the room or person you pick
without leaving the app you shared from. Around those, a busy week of fixes:
everybody in voice knows when a screen share starts, the voice strip fits
everybody it can, a long message you send stays on screen whole, and a short
drop in a busy call no longer leaves you out of voice.

Everyone: update the app. This update is installed the old way, since
the app that installs updates by itself is this one: in 0.5.3, Update… at
the foot of the list, or Settings → Account & App → Install and restart.
From 0.5.4 on, Linger does it for you.

Hosts: update the server with ./update.sh, as usual. This one has a
small database change, which update.sh backs up first. The server writes
the line saying somebody shared their screen, gives the iPhone's share window
its sign-in, keeps the last two minutes for somebody whose connection dropped,
and tells apps the oldest version it works with. Nothing in compose.yaml
changes. See For hosts.

The highlights

  • Linger updates itself (#772), and an app too old for a server says so
    on that server's row (#793).
  • Share to Linger from your phone (#785, #820): Android opens Linger on
    your conversations; an iPhone sends from inside the share sheet.
  • Everybody in voice knows a share started (#746): a sound, Watch in the
    voice bar, and a line in the chat saying who.
  • A drop of a minute or two in a busy call no longer leaves you out of
    voice with a silent seat behind you (#678).
  • The voice strip shows as many people as fit (#745), and a name on it
    opens that person's volume (#747).
  • A long message you send stays on screen whole (#750, #760).
  • Bigger words on the phone, with a Text size of its own (#690).

Linger updates itself

  • On Windows (the setup.exe) and with the AppImage, a day after a
    release is published, Linger downloads it and installs it at the next
    start, or after half an hour with nobody using it. Never while you're in
    voice or sharing your screen (#772).
  • With the .deb, .rpm and .msi, which need a password to install, it
    downloads the update and asks, with Update at the foot of the list.
  • On Omarchy or Arch, Linger still updates with your system.
  • After an update, the foot of the list says You're on Linger 0.5.x once,
    with one line about what's new.
  • A host whose server is behind sees it at the foot of the list, with
    How to update. The disk and backup lines there now say Server
    settings
    rather than Hosting….
  • A server says the oldest app it works with (#793). An app older than
    that says so on that server's row and offers Update now, and its other
    servers keep working. Today that's 0.4.1, so nobody is turned away.

Share to Linger from your phone

Linger is in the phone's share sheet, for pictures, videos and files (#785,
#792).

  • On Android, sharing to Linger opens it on your conversations. Pick one,
    and what you shared waits in its message box, unsent, for you to add words
    and send.
  • On an iPhone, Linger's own window rises inside the share sheet (#820).
    You see what you're sharing, can add a message, and pick a room, a group or
    a person. Your most recent ones are on top, and a search finds the rest.
    Send posts it there and then, and you're still in Photos (or wherever
    you shared from). With more than one server, each row says which server
    it's on.
  • The iPhone's share needs the server updated: the window signs in to
    each server with a sign-in of its own, which only a 0.5.4 server gives. On
    an older server, its rooms show greyed out with "needs updating to share
    from here".
  • A photo the iPhone keeps as HEIC arrives as a JPEG, at most 4,096
    pixels on its longest side (#817). The share window has too little memory
    to read a recent iPhone's photo whole, and doesn't need to.
  • Several pictures to a busy server: one that has to wait its turn now
    goes up after all, or offers Try again, rather than leaving a red line
    you could only take out (#801).

Screen sharing and voice

  • Everybody in voice knows a share started (#746). They hear it start
    and stop, Watch stays lit while it goes on, the voice bar offers it,
    and a quiet line in the chat says who's sharing. That line needs the server
    updated.
  • The voice strip shows as many people as fit its line, not a fixed four
    (#745).
  • A click on somebody on the conversation's voice line opens their
    volume, as in the voice bar. On a phone it rises from the bottom, and the
    people there are easier to tap (#747).
  • An iPhone has no per-person volume any more (#816). iOS doesn't let
    Linger set one voice's volume, so the slider moved and did nothing. There,
    a person's name in a call opens only the host's Take out. Android keeps
    its slider.
  • A short drop in a busy call (#678). The server now keeps the last two
    minutes of what somebody missed while their connection was down, not only
    the last 500 things, so somebody back from a minute or two away is still
    in the call. When even that isn't enough, they start afresh at once and the
    call sees them leave then, rather than a silent seat staying for up to two
    more minutes.

Conversations

  • A long message you send is on screen whole, not left below the bottom
    with only your name showing, and "you left off here" no longer sits above
    it (#750).
  • A reaction or an edit on the newest message keeps the conversation at
    its very end, not a few pixels short, and messages arriving in a burst no
    longer leave the newest below the bottom (#760).
  • A room's topic or a friend's status cut short with "…" in the header
    opens whole with a click or a tap: in a card, or a sheet on a phone (#778).
  • On Linux with NVIDIA, a video in a conversation shows its picture again,
    not solid green. That was a regression in 0.5.3 (#756).

Phones and Settings

  • Bigger words on the phone: Settings → Appearance has a Text size
    of its own, on top of the phone's. The iPhone app now follows the iPhone's
    Text Size, as the Android app follows its Font size (#690).
  • When storage won't keep an Appearance choice (full, or switched off in
    a browser), Settings says "Couldn't save that here." and the setting stays
    as it was (#782). In the installed app it hardly ever happens.
  • Settings → Account & App has Privacy, which opens the privacy page,
    and Report a problem, which opens GitHub's forms for a new issue
    (#779).
  • On an iPhone, Linger says why it wants the local network when your
    server is on your home network (#779). It stays out of iCloud backups, and
    its sign-in stays on that phone (#790). Nobody is signed out by the update.
  • The iPhone app needs iOS 15 or later (#743). Every iPhone that ran it
    before has it.

Known issues

  • The iPhone's share window is new. A TestFlight tester ran every check
    on a real iPhone, and it was tested on a simulated one against a real
    server. Tell us what it does with what you share most.
  • The Android share has no window of its own: it opens Linger, as above.
  • Linger updates itself only from this release on. 0.5.3 and older ask,
    as before.
  • A computer with NVIDIA's legacy driver can't watch a screen (#729).

Older apps and servers

Nothing stops working with an older app or server (PROTOCOL §9).

  • A 0.5.4 app on a 0.5.3 server works as before, with every fix in the
    app. There's no line in the chat when somebody shares their screen, the
    iPhone's share window says that server needs updating, and a drop in a
    busy call is handled the old way.
  • A 0.5.3 app on a 0.5.4 server works as before. It shows the share line
    as that person saying "shared their screen".

For hosts: updating the server

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

What changes for you

  • One small database change (migration 0026): a column on messages for
    the share line, and an index for it. It takes a moment, even on a big
    server. update.sh saves the database into backups/ first.
  • The iPhone's share window signs in with POST /auth/share-sign-in,
    ten times an hour per person at most. Each is a sign-in like any other:
    changing a password, a reset or removing somebody ends it.
  • Somebody whose connection drops is kept up to two minutes' worth of
    what they missed, in memory, so the server uses a little more memory in a
    busy call. Nothing to set.
  • No new setting, and nothing in compose.yaml changes.

The steps

On the server, in your linger folder:

cd ~/linger
./update.sh

(Use sudo ./update.sh if you type sudo before docker commands.) It
downloads 0.5.4 while the server keeps running, stops it for a few seconds to
save the database into backups/, then starts everything again and prints the
version before and after. If 0.5.4 doesn't start, it prints the commands that
put 0.5.3 back.

Check it worked, with your own address in place of linger.example.com:

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

It prints {"ok":true,"version":"0.5.4","oldest_client":"0.4.1"}.

Going back to 0.5.3 means restoring the copy update.sh saved into
backups/ just before 0.5.4 started, and anything posted since is lost. The
host guide's Restoring says how.

Install or update

This once, update the old way: Update… at the foot of the list, or
Settings → Account & App → Install and restart. Windows users should keep the
same installer format (.exe or .msi) when upgrading. Linux packages are
.AppImage, .deb and .rpm; on Omarchy or Arch, Linger updates with your
system (Update in the Omarchy menu, or sudo pacman -Syu). Windows installers
are updater-signed, not Authenticode-signed; SmartScreen may still warn about
an unfamiliar app.

On Android, download Linger_0.5.4_android-arm64.apk from this release on
the phone and install it over the old one, or update from Google Play if
you're testing there. You stay signed in. On an iPhone, TestFlight offers
0.5.4 once it's through Apple's processing.

New to Linger? Which file do I want?

Your computer Download the file ending in
Windows -setup.exe
Debian, Ubuntu or Mint .deb
Fedora, RHEL or openSUSE .rpm
Any other Linux .AppImage — make it executable and run it
macOS Not built yet — see decisions.md
Android phone _android-arm64.apk — download it on the phone
iPhone TestFlight, for its testers for now

The .msi is for companies rolling it out to many machines at once.
If you are not sure, you want the .exe.

The .sig files and latest.json are how an installed copy checks
that an update is genuine. You do not need to download them.

Windows will warn you. You get "Windows protected your PC", and
Run anyway is behind the small More info link. That is Windows
saying the installer has not been through a paid signing process. It
has not — that is a
known decision,
not a broken download.

Android will ask before installing. The phone says it won't
install apps from your browser until you allow it: tap Settings,
turn on Allow from this source, and go back. That is Android's
rule for any app that isn't from the Play Store. The phone app
doesn't update itself: install each new one from its release page,
right over the old one, and you stay signed in.

Checks on installed clients

Record OS, package type, previous and new version, and what you shared, with
any failure. Use made-up pictures and messages.

  1. Update from 0.5.3 the old way, on Windows (setup.exe), Linux
    (AppImage) and one package that asks (.deb, .rpm or .msi): it
    installs, you stay signed in, and the foot of the list says You're on
    Linger 0.5.4
    once (#772).
  2. iPhone, through TestFlight: share a photo from Photos to a room on a
    0.5.4 server, a minute after leaving Linger; it arrives, and you stay in
    Photos (#820, #825). Three photos at once arrive as one message. A room on
    an older server shows greyed out.
  3. Android: share a picture to Linger; it waits in the conversation you
    pick (#785).
  4. A screen share in a call of three: the others hear it start and stop,
    Watch stays lit, and a line in the chat says who's sharing (#746).
  5. Drop a phone's Wi-Fi for a minute in a busy call, then bring it back:
    it's still in the call, with no silent seat left behind (#678).
  6. A long message you send in a busy room stays on screen whole (#750).
  7. On Linux with NVIDIA, a video in a conversation shows its picture
    (#756).
  8. The phone's Text size in Settings → Appearance makes the words bigger,
    and the iPhone follows its own Text Size (#690).

Thanks

  • @Gleasonmt, for getting the iPhone app ready for Apple's iOS 15 rule
    (#743), bigger text on the phone and the iPhone following its Text Size
    (#690), Settings saying when an Appearance choice couldn't be saved (#782),
    and the Privacy and Report a problem buttons and getting the iPhone app
    ready for the App Store (#779).
  • @eGGnogSC, for sharing to Linger from the phone's share sheet (#792),
    pictures that wait out a busy server rather than fail (#801), and testing
    the iPhone's share window on a real phone. And, from September, before the
    notes thanked contributors: messages that show the moment they're sent
    (#133), and the sidebar that no longer scrolls sideways (#84).