github Mizerd/lightning v0.10.3
Lightning 0.10.3

latest release: v0.10.4
one day ago

Lightning 0.10.3

A big round on calls, the timeline and settings. Calls got video on direct
(one-to-one) calls, a choice of how a call is placed, calls with more than one
media server, a hardware H.264 option for screen sharing, and an opt-in Stream
Info overlay. The rest is a Nheko-style compact layout, inline threads, custom
emoji and image packs, a Threads and Saved messages area in Activity, bulk
actions in the room list and for moderators, an image editor for attachments,
blocking invitations on the server, per-account proxies, and a long list of
keyboard, scrolling, small-window and sign-in fixes.

Calls and screen sharing

  • Direct (legacy) calls carry video and the in-call negotiation messages
    other clients send, and a call room's signalling is no longer lost when a
    burst of call events arrives at once.
  • You choose how a call is placed: Automatic, Direct or MatrixRTC, from the
    call button's menu. The call shows which format it is running. Automatic falls
    back to a direct call only when the room's member count is known.
  • Calls through more than one media server (several MatrixRTC foci) now
    work: Lightning publishes on its own server and subscribes to each remote one,
    and keeps one participant per connection.
  • Hardware H.264 for screen sharing is available on Linux, off by
    default
    , and is switched on with the environment variable
    LIGHTNING_SHARE_ENCODER=hardware. A VP8 backup is published beside it. See
    the known limits below.
  • Stream Info is an opt-in overlay in a call (Ctrl+F9) that shows the
    encoder and codec in use, the frame rate and the bitrate. Its figures are
    sampled once a tick, so they no longer read 500 FPS or 0 kbps by mistake.
  • A new frame rate, resolution or bitrate for a running share applies at
    once
    , without restarting the share.
  • A call reaction can be any emoji from the picker, not only the presets.
  • When a direct call's media pipeline fails, the call now says so instead of
    hanging up silently. Other call failures name their reason too, and a call
    from an account that uses a proxy says why it cannot start.
  • A call button in a new direct message appears right away, not only after
    you leave the room and come back.
  • A direct message you create now lets the other person join its calls.
    Rooms Lightning creates for a direct message carry the call permission
    override that other rooms already had. See the known limits.
  • The call stage fits a narrow window: the controls no longer push the pane
    wider than the window, tiles are clipped, and the call menu is reachable from
    the overflow when the call button folds. The microphone starts without echo
    cancellation until a playback probe exists.
  • The screen-share capture works with DMA-BUF on GStreamer 1.28, and on niri.
  • The camera is closed before the direct-device fallback, and a busy device is
    retried. Fixes from outside contributors (thanks, ilker2445): macOS system
    audio capture for screen sharing, call membership expiry, macOS audio-device
    crashes, and multi-server negotiation with Element.
  • A call membership's delayed leave is reused across refreshes, and a call
    retraction that was owed is still sent.

Timeline, threads and messages

  • Threads can be shown inline (Nheko style), interleaved with the room, and
    every thread opens as its own session in the main view or the side panel.
    Following a thread keeps you on its newest reply; replies that arrive while
    you read are counted; Mark this thread read is an action.
  • Select a message with the keyboard and act on it: T thread, E edit,
    A react, P pin, V view source, plus forward, delete and copy (#51). A setting
    chooses what happens when you return to a conversation (#55).
  • Edit an image before sending it: crop, rotate and flip; the original's
    metadata is stripped and only the edited copy is sent.
  • Activity lists unread direct messages, has a Threads area, a Saved
    messages hub, a search over the loaded rows, and an adjustable cutoff for old
    read rows (default 60 days). Old read mentions from the server backlog no
    longer open it. The Reactions tab is hidden when reactions are Off.
  • Read receipts can be shown as a compact footer with faces, and a
    @room mention is highlighted as a pill when it can notify the room.
  • Custom emoji and image packs (standard Matrix packs as well as the older
    records): use them in the composer and in threads, create room packs from
    Settings, add several images at once, share a pack as a room link, hide packs
    locally, and move the older personal pack into a private room on request.
  • Bulk actions: select several rooms and mark read, favourite, set
    notifications or leave them together; moderators can delete many messages at
    once and edit a room's permissions.
  • Videos show why they are waiting (downloading, preparing, buffering),
    offer audio and subtitle menus when the file has a choice, show the time under
    the pointer on the seek bar, and tell a failed fetch from a format that cannot
    play. Long media reads as h:mm:ss, including the voice-message seek tip.
  • An audio file can show the cover another client attached to it, a Large album
    art option exists, and Markdown is the composer default.
  • Scrolling: a clearer return to the live timeline, a steadier thread view, and
    video playback that does not start from a row that is off screen. A reply's
    quote is taken from the loaded message when the server did not send the
    details.
  • A Matrix ID's double-click copy works, and an invitation can no longer spin
    for ever.
  • Unread rooms scrolled out of the list get a pill pointing to them.

Rooms, Spaces and the room list

  • The room list can shrink to a column of avatars, as in Element; a click
    or double-click on its divider works. Low-priority rooms sort and are marked
    in Channels, and the current, calling and unread rooms stay reachable in a
    collapsed Channels group.
  • A shared default room order for a Space can be saved for everyone, and
    the Space lobby's toolbar wraps in a narrow window.
  • A Favourites shortcut, bridge badges, and an explanation of how the list is
    grouped and sorted.
  • Offer to join the Space a room belongs to, and suggested people in the
    invite dialog.
  • Invitations: block incoming invitations on the server where the
    homeserver supports it, and invitation pictures are withheld, also in the room
    header, unless you allow them.

Settings and appearance

  • A Nheko compact layout preset with a Small avatars message layout and a
    denser rail; Appearance is split into Appearance, Layout and Chat with
    one-line rows. Several Settings branches can stay open, and Settings has
    configurable keyboard navigation. Dragged pane widths are remembered per
    layout preset.
  • Theme editor: select elements, link them into named colour groups and edit
    one element on its own.
  • A steady text cursor option and a setting that stops the caret blinking once
    you are idle.
  • Menus, pickers and dialogs fit a window as small as 640x360.
  • Per-account network proxies: each account keeps its own, calls through a proxy
    are refused with a reason, and a proxied account is no longer told its IP is
    at stake.
  • Translations were resynced for every new string. The call-failure notices are
    not translated yet.

Fixes

  • Switching accounts keeps the new account's picture and remembers where you
    were in each room; the newest account chosen during a switch runs.
  • A voice-message and video seek tip past an hour reads correctly.
  • On servers without thread subscriptions, the Follow button is no longer shown.
  • Settings searches land on the right row; the account row and sign-out no
    longer log errors from a torn-down pane.
  • On Wayland, message notifications no longer raise the window, and a click
    activates it (#49).
  • Lightning writes less to disk: settings are flushed once a second, the search
    index's log is bounded, and scratch media is written without waiting for the
    disk.

Known limits and not yet tested

  • The audio and subtitle track you pick in a video's menu does not stick.
    The menu lists tracks in a fixed order now, but the player returns to the
    default. The cause is not found.
  • Hardware encoding is opt-in and off by default
    (LIGHTNING_SHARE_ENCODER=hardware). If the encoder cannot run, the share
    falls back to software.
  • Old Lightning clients cannot see an H.264 share, and one can lose the call's
    media.
    A hardware share also publishes a VP8 backup, but a Lightning build
    from before this release answers every codec, so the server sends it the
    H.264 stream, its VP8-only receive chain cannot decode it, and audio and
    camera from everyone else in that call stopped in our measurement. Only turn
    hardware sharing on when everyone watching runs 0.10.3 or newer (Element Call
    and Sable decoded it).
  • macOS calls are NOT TESTED. The macOS audio-capture changes came from a
    contributor and are NOT TESTED live here.
  • Direct messages created before this release keep their old power levels,
    so the other person may still be refused when joining a MatrixRTC call in
    them. New direct messages are not affected; an existing room's levels are not
    changed.
  • Direct screen sharing in a legacy call is not available.
  • This round was checked by automated tests and scripted runs on a local
    homeserver and on a real one; real-window calls with the new hardware path,
    desktop notification popups, audible playback and Windows are NOT TESTED
    live
    . A room list that briefly showed joined rooms under Invites after a
    restart was seen once and could not be reproduced.
  • Windows packages are unsigned.

Lightning 0.10.3 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.