github Mizerd/lightning v0.10.5
Lightning 0.10.5

45 minutes ago

Lightning 0.10.5

A memory and fixes release, and the first with ARM64 Linux packages. Lightning
uses less memory again, screen sharing works again on KDE Plasma with the
packaged builds, calls reach a call service your own homeserver runs on your
local network, calls survive a dropped connection without leaving, screen
shares stay sharp on a lossy network, spoiler images and videos arrive
blurred, and the message box has an optional Vim mode. Thanks to emmkay440
and f-o-o-g-s for their contributions.

Memory and speed

  • Less memory again. On the same test rig and account as the 0.10.4 notes,
    a build from partway through this round starts a restored session at about
    525 MB of resident memory (0.10.4: about 615 MB), sits at about 685 MB after
    50 room switches (about 805 MB), and at about 1150 MB after a long fast scroll
    (about 1520 MB). Timeline rows now build their reply quote, reactions, read
    receipts, sender avatar, status line and similar parts only when the message
    has them, and Settings builds each section when you open it.
  • Link previews build only the state they show. On the test rig that is
    about 65-80 MB less memory after scrolling, measured after the figures above.
  • Audio and voice message cards are much lighter while not playing: about
    79 objects each, down from about 285 for an audio file and 364 for a voice
    message. The speed menu and volume popup are built when you use them.
  • Idle large rooms let go of their member lists' avatars (display names are
    kept), and Lightning holds 32 MiB of media in memory instead of 64; the rest
    is read back from the encrypted media store on disk, not downloaded again.
  • Name colours no longer poll the server. Lightning asked for the profiles
    of recently seen people every 20 seconds, about 70 requests a minute while
    idle. It now asks once per person, again when their membership changes, and
    refreshes names on screen every five minutes.
  • A message's menu and dialogs are released when its row leaves the screen.
  • Fewer repeated media downloads. A picture handed to the screen is kept
    until it has been drawn, so a busy image decoder no longer loses pictures to
    newer downloads and fetches them again, and speculative video downloads no
    longer push pictures out of memory.

New

  • Spoiler media (#69, MSC4193). Images and videos marked as spoilers
    arrive blurred with a "Spoiler" label and are revealed with a click, Enter or
    Space; the image viewer and the room's media browser never show one you have
    not revealed. Mark an attachment as a spoiler before sending, in the room or
    in a thread; forwarding keeps the cover. Cinny and Sable use the same marker.
  • Vim-style editing in the message box, off by default (Settings › Chat).
    Esc enters Normal mode with the usual motions, operators and counts; Enter in
    Normal mode sends. Works in the thread panel too.
  • Activity search and favourites. Ctrl+F or typing searches the Activity
    dialog, Escape clears first, and a star limits it to favourite rooms. The
    "All" chip and tab explain how rooms and activity are ordered.
  • Collapse a thread's first message to one line in the thread panel; the
    choice is remembered.
  • Stream info for screen shares: codec, resolution, frame rate, packets
    lost and resent, and keyframes, for your own share and a received one.
  • Rendered stable polls: polls sent with the stable m.poll.start type now
    show and count votes like the older format.
  • A "Jump to the latest message and focus the message box" shortcut action
    (unbound by default), and Ctrl+Shift+digit shortcuts that follow the physical
    key on every keyboard layout.
  • Choose what the timeline shows. Settings has Show, On hover and Hide for
    sender avatars, reactions and read receipts, and a switch for large
    emoji-only messages. It applies to rooms, threads and jump-to-message views;
    "On hover" also shows them on the message selected with the keyboard, and
    hidden parts are not built at all. Hiding read receipts does not stop sending
    your own; that stays under Privacy.
  • The room list's unread marker reads as a button again. The thin bar
    0.10.4 introduced now carries an arrow, and opens into the labelled
    "Unread above" / "Mention below" pill under the pointer or keyboard focus.
  • Sending from up in history. A reply keeps your place, so several
    messages can be answered in a row. Whether a plain send takes you to the
    newest message is now a setting, "Go to the newest message when I send"
    under Chat · Timeline, on by default.
  • Choose where the unread dot shows. Settings → Notifications → "Unread
    dot": all rooms, only rooms with notifications on (the new default), or
    never. Muted rooms never show it; mention badges stay in every mode.
  • Mark all rooms read automatically, every 15, 30 or 60 minutes or a time
    you choose (off by default). It skips the room you have open and follows
    your read-receipt privacy setting.
  • Searchable fonts. The font pickers in Settings have a search field that
    filters the list as you type. Contributed by emmkay440 (#66).
  • Sticker search and pack chips. The sticker picker opens on a search field
    that matches shortcodes and descriptions across every visible pack, and lists
    packs as chips with their picture and name. The emoji picker uses the same
    chips to narrow custom emoji to one pack. The picker's busy indicator no
    longer covers its add button.
  • Single-key shortcuts. A global action can be bound to one key with no
    modifier: a letter, digit, symbol, F-key or numpad key. Numpad keys are
    distinct from the main keyboard (shown as "Num ."), so for example numpad
    dot can mute. A character key on its own never fires while you are typing
    in a text field. Navigation and editing keys on their own are still refused.
  • Album art is a Compact, Card or Large choice. Large fills the card's
    width, the cover is cut to the tile's rounded corners, and a file with no
    known cover no longer shows an empty square.
  • Smoother avatars. Avatars are decoded at the size they are drawn, so
    their edges no longer look stair-stepped. Contributed by f-o-o-g-s.

Calls and screen sharing

  • A dropped connection no longer kicks you out of a call (#70). Lightning
    resumes the same call session instead of rejoining, so the others no longer
    see you leave and come back.
  • Screen shares stay sharp on a lossy network (#68). Lost video packets are
    now resent, and a gap freezes the picture until a fresh frame arrives instead
    of decoding coloured blocks.
  • Screen sharing works again on KDE Plasma with the AppImage and Flatpak
    (#63). The GStreamer PipeWire plugin those packages bundle could not follow
    KWin's GPU (DMA-BUF) capture format, and the share ended with "unhandled
    format". Those packages now start a share in system memory, and a share that
    cannot negotiate its capture is retried once in the other memory type, so a
    compositor that only offers GPU capture (niri) still works.
  • A call service on your own network works (#64). When your own homeserver
    advertises a call service that resolves to a private, Tailscale or IPv6 ULA
    address (split-horizon DNS, for example), Lightning now connects to it. A
    call service named only by other room members is still held to public
    addresses. IPv6-only networks with NAT64 (64:ff9b::/96) reach public call
    services, and a refused call service now says why (private name, unresolved,
    timed out, unroutable) instead of "invalid transport".
  • The call button shows in the room restored at startup (#67), without
    switching rooms first.
  • When a call participant's media key cannot be decrypted, the log names the
    likely cause.
  • The call banner shrinks in a narrow window so Try again stays visible.

Messages and the timeline

  • Messages are sent in the order you typed them. Rapid sends in one room or
    thread could reach the server, and show locally, out of order. Each room and
    thread now has one ordered send queue.
  • Jumping to an older message opens a view that scrolls like the timeline,
    loads more in the direction you scroll, and has a bar you can close.
  • The audio and subtitle track you pick in a video's menu now sticks.
  • Repeated PageUp and PageDown extend the scroll already under way.
  • The timeline keeps your place when an older page arrives while you are
    scrolling at the top.
  • A failed /join command says so in the composer and the thread composer.
  • Switching a draft from rich text back to Markdown no longer adds blank lines
    at its end.
  • The voice message preview clock no longer shifts as its digits change.

Rooms, Spaces and invitations

  • Accepting an invitation from the room list opens the room. The Classic
    layout's invitation menu offers Accept and Reject whoever sent it.
  • The "Part of" Space banner explains itself, and dismissing it is remembered
    per account and Space.
  • A lost room membership is noticed within about 5 seconds instead of 30.
  • A room creator's profile pill reads Creator.
  • A back press that closes a menu no longer also goes back to the previous
    room.

Settings, accessibility and languages

  • Right-to-left languages mirror the main window's panes, the search field's
    padding and the room list's filter chips.
  • The recovery key card has a heading, so the Settings outline and search can
    find it.
  • When the keyring stops returning a saved sign-in, Lightning says it may be
    locked.
  • A long account ID in the account row is no longer cut off beside a large
    unread badge.
  • Translations were resynced; new strings are in English until translated.

Fixes

  • The hover toolbar no longer covers an audio, voice or video card's own
    buttons; on media it sits above the message.

  • A video's audio and subtitle choice now shows in its menu and survives a
    replay, and subtitles sit above the control bar.

  • A single-key numpad shortcut works on Linux, and never fires through an open
    menu or dialog.

  • Opening Activity with its plain shortcut or button always starts on "All".

  • The call header never shows a raw room ID.

  • A room whose history the server had not fetched yet could stop at
    "Beginning of conversation" well after the start; Lightning now asks the
    server once more before believing it.

  • An open thread refills after its room's history is reloaded.

  • Channels offers "Mark as read" for quiet rooms that still count unread.

  • A room could keep its unread dot with nothing new to read when the last
    thing in it was a poll's end; the read receipt now covers it.

  • History older than your join loads again. After joining a room over
    federation, Lightning could take the server's first empty answer as the
    start of the room and show "Beginning of conversation" at your own join for
    good. It now asks the server once more before believing that start.

  • A tray icon click no longer raises the window for another application's
    notification action (#61).

  • An .mp4 or ASF (.wmv, .wma) attachment is sent with its real media
    type.

Updates

  • When GitHub and Lightning's own server do not answer, the updater falls back
    to a copy on gitlab.com. Every file is still checked against the signed
    manifest's SHA-256 and size, and a manifest whose signature does not verify
    now stops the update from every source instead of moving on to the next.

Packaging

  • First ARM64 Linux packages. This release adds aarch64 builds as .deb
    for Debian and for Ubuntu, .rpm, AppImage and snap. They are optional
    download assets: the in-app updater does not offer them, and a release can be
    published without one if it fails to build. Install and update them by hand.
  • The Linux and Windows packages are now built and validated on gitlab.com's
    hosted runners, with the same scripts and pinned build images as before.
    Signing, publishing and the macOS build stay where they were.

Correction to the 0.10.4 notes

The 0.10.4 notes said scrolling through images used 13-20% more CPU than
0.10.3. That figure came from one three-run comparison. A run of the same two
builds earlier that day showed image scrolling using about 15% less CPU, and
the comparison harness was later found to start the two builds in a fixed
order on fixed slots. There is no reliable measurement that 0.10.4 uses more
CPU than 0.10.3 when scrolling images, and a build from this round measured the
same as 0.10.4 on the test rig.

Known limits and not yet tested

  • ARM64 packages are NOT TESTED on real ARM hardware. They are built and
    pass the same automated package checks as the x86 packages, on ARM runners.
  • The screen-share fix (#63) and the local call service fix (#64) are NOT
    TESTED live
    on the reporters' setups. NAT64 is NOT TESTED live.
  • The updater's gitlab.com fallback has not been exercised by a real outage.
  • "Media from someone here cannot be decrypted" in a call still has no
    automatic recovery.
    Leaving and rejoining the call may help.
  • Hardware encoding stays opt-in (LIGHTNING_SHARE_ENCODER=hardware). Only
    use it when everyone watching runs 0.10.3 or newer.
  • macOS calls are NOT TESTED.
  • Editing a message with mentions, custom emoji, lists or spoilers opens it as
    plain text; changing the text loses that formatting. An unchanged save is safe.
  • Memory after much scrolling stays well above idle: every loaded message is a
    live row. Memory was measured on a software-rendered test rig; a real GPU, a
    real large account and the packaged builds are NOT TESTED.
  • This release was checked by automated tests and by scripted interface runs of
    every new feature on NixOS, the Flatpak and Windows 11, with calls on a real
    homeserver. A call that resumes after a dropped connection was tested on
    Linux only; Element, Element Call and Sable as the other side of a resumed
    call or of the new screen-share recovery are NOT TESTED.
  • Windows packages are unsigned.

Lightning 0.10.5 is published here on GitHub. The release assets are
built and validated on clean systems by the project's packaging pipeline and
uploaded unchanged.

Verify any download against the SHA256SUMS asset.

Lightning's in-app updater reads a signed update manifest (published as the
update-latest release on this repository) and verifies an Ed25519 signature
made with a key that is not stored on GitHub. Every downloaded file is checked
against the SHA-256 recorded in that signed manifest before it is installed, so
replacing a file here cannot cause Lightning to install it.

Issues, source, and history: https://github.com/Mizerd/lightning

Don't miss a new lightning release

NewReleases is sending notifications on new releases.