Skip to content

Lightning 0.10.2

Latest

Choose a tag to compare

@Mizerd Mizerd released this 21 Oct 21:35
· 43 commits to main since this release

Lightning 0.10.2

A big release. You can now take your conversations and settings out of the app
(export a room as a web page, export your room keys, move your settings to
another device) and find an attachment by its file name. Screen sharing with
sound, notifications, files and downloads, and sign-in got a long round of
fixes, many of them from your reports. There is also a rebuilt theme editor,
read receipts as faces, a notification troubleshooter, call keys that work from
any window on Wayland, a German translation, and updates that now come from
GitHub first. Much more of the app now works from the keyboard, with a visible
focus ring and F6 to move between the main areas.

Calls and screen sharing

  • Sharing the entire system's sound no longer plays the other people in the
    call back to them.
    Lightning's own playback is never captured; if the sound
    cannot be shared, the call now says why (#26).
  • The sound choice for a screen share is remembered between restarts, and an
    empty per-application selection never silently widens to everything (#43).
  • The call's room stays at the top of your room list while the call lasts
    and does not move as other rooms get activity (#44).
  • The camera works in more places: the PipeWire camera is preferred on
    Linux, a busy camera falls back to another way of opening it, and the camera
    modes Lightning picks are safer.
  • Call sounds come back after the sound server restarts, and a stalled sound
    server can no longer freeze the window. The Flatpak plays sound through
    PulseAudio so a sound-server restart cannot spin the window.
  • Media keys are 16 bytes, as Element and Sable use, and keys are re-sent so
    they reach every device in the call. Screen-share sound follows the mute
    button.
  • Call keys work from any window on Wayland (#47): mute, deafen and leave
    the call while another app has the focus. Turn it on in Settings; your
    desktop asks before allowing it, and the keys are changed in its own settings.
    Linux only.
  • Call audio survives repeated sound-server restarts. The fifth PipeWire
    restart in a call used to leave the other people silent for the rest of it.
  • On Linux with Qt 6.10 or newer, Lightning plays sound through PulseAudio
    (pipewire-pulse) when it answers, as the Flatpak already did; set
    QT_AUDIO_BACKEND=pipewire to keep Qt's PipeWire output. Voice messages,
    videos and recordings wait for the sound server to come back instead of
    crashing the app (at most 8 seconds, then a clear message). NOT TESTED live.
  • An incoming call names the caller as the timeline does, also when the room's
    members were not loaded yet, and a narrow call header no longer cuts off its
    controls. The volume slider on a participant's tile takes the keyboard and
    the mouse wheel as soon as it opens.
  • The AppImage carries the sound mixer that per-application share audio needs
    (#37) and PipeWire's audio converter, which fixes stuttering received voices
    and a missing camera on some Arch and PipeWire systems.

Notifications

  • A sweep of every bell, toast, ring and unread count so they agree with each
    other. One unread rule is used everywhere.
  • Your account's notification rules are in Settings: keywords (with a
    confirmation before removing one), per-room defaults, and a troubleshooter
    that checks why a notification did not arrive.
  • Keyword and display-name highlights reach the bell, and its badge counts only
    what it shows.
  • The incoming call ring follows the call's own end, so it stops when the call
    is answered elsewhere or cancelled.
  • On Windows only one tray notification is shown at a time, so a click opens
    what you see. Edits from other clients now refresh a notification on Windows
    and Linux, and update reliably instead of leaving the old text.
  • A room no longer stays unread because of reactions after its newest
    message (#46).
  • On KDE Plasma 6.3 and older, clicking a notification in the history opens
    its room
    again; it did nothing once the popup had timed out. NOT TESTED
    live.

Messages and the timeline

  • Edits made in other clients update reliably and no longer leave a stale
    copy of the old text in the cache. Only the original sender's edit can change
    a message.
  • Export a room as one web page with its photos, videos and files embedded,
    or as text or JSON. Choose the latest messages, the whole history or a date
    range, and a size limit for attachments. The page makes no network requests
    and runs no script. In an encrypted room, nothing private is written unless
    you tick the box that says so. The export reports its result and counts
    messages only.
  • Read receipts are faces under the message, with a "+N" pill and a "Seen
    by" list that grows as people read. A pointer on a face's lower edge no longer
    makes it flicker.
  • The media browser has GIF and Sticker tabs and a date range, and shows an
    edited message once.
  • Search finds an attachment by its file name, also in encrypted rooms.
    Global search says where it searches, and its filters ignore accents.
  • Keyboard: PgUp/PgDn, Ctrl+Up/Down and Ctrl+G / Ctrl+Shift+G move around
    the timeline and the find results, and can be rebound (#38). Escape and
    focus no longer get stuck in the emoji picker or menus.
  • A voice message that finishes starts the next one on its own (#36), now
    also after you have left the room.
  • Messages missing in the middle of a room (#30, #48): on a homeserver
    without sliding sync, messages received before you first opened a room could
    leave a permanent gap. That no longer happens, and existing gaps are repaired
    once (rooms with unread mentions or messages are kept until you have read
    them). If a message is still missing, start Lightning with
    LIGHTNING_TIMELINE_TRACE=1 and a log file: the trace lists what is missing
    and why, with no message text. NOT TESTED live.
  • The mouse's Back and Forward buttons, and Alt+Left / Alt+Right, step
    through the rooms you visited. They never act while a menu or popup is open.
  • A code block scrolls with the wheel only after the pointer has rested on
    it
    , so scrolling past a wide or tall block no longer gets stuck in it.
  • Middle-click autoscroll keeps going over the header, the composer and the
    rest of the window, speeds up like in a browser, and keeps loading history at
    the top. A new message arriving while you read old messages no longer moves
    the view (Linux tested; Windows NOT TESTED).
  • The thread and search panels follow the "Side panel width" setting
    (default 320 px, was 340 for threads and 360 for search), sit beside the room
    from a narrower window, and share one resize handle. The Space lobby's People
    card scrolls into view when you open it.
  • Room previews, state rows ("Anna joined the room") and dates follow the app
    language
    , including after a switch, and English counts read "1 member"
    rather than "1 member(s)". Dates no longer take month names from your
    system's time format when the app language differs.
  • Message text uses the full width of the row in the Modern and Compact
    layouts instead of stopping at a fixed column in a wide window. Bubbles keep
    their readable maximum width, and cards (media, polls, previews, files, code)
    keep theirs.
  • Find, jump-to-latest and the first-unread pill land where they say. When the
    first unread message cannot be found, the pill says so.
  • Polls show plain text, long message tables stay inside the message, and the
    thread panel loads every reply.
  • Composer: commands keep their text, attachments are sent in order, and very
    large pastes stay responsive.
  • Invite people… is on a room's right-click menu. A room that is unread only
    because of a thread says so.
  • Mark as read marks the newest message, and a stuck send queue recovers
    without a restart.
  • Direct messages: you are warned before messaging someone who may not exist,
    a DM is created once and leaves no empty room behind, and DMs are named
    properly. Invite rows name the room and who invited you.
  • Rooms: long names and topics stay inside Room info and the leave dialog, room
    aliases are checked, and leaving a room from another session removes it from
    the list. Leaving warns you if you are the only member. Pin actions appear when
    you are allowed to use them.
  • Member lists and profiles update live. Forwarding a location keeps it as a
    location.

Keyboard and accessibility

  • F6 and Shift+F6 move between the Spaces rail, the room list and the chat
    (its composer when you can write). A room, invite or message row that has
    the keyboard focus shows a ring; Up, Down, Home, End, PgUp and PgDn move
    between messages; Return opens a room; images, videos and files open from
    the keyboard; and closing Settings with Escape puts the focus back where it
    was.
  • One Return is one click. Some buttons acted twice on Return: a message
    could be scheduled twice with Send later, a kick, ban or unban confirmation
    was sent twice, a shortcut could not be captured, and a voice message
    started and paused at once. A button that removes or ends something answers
    Return only while its focus ring is visible.
  • Keyboard reach, focus and screen-reader names were fixed across Settings, the
    theme editor, the composer and its pickers, Room info and the admin dialogs,
    the media viewers and media browser, search results, the call stage,
    sign-in and QR sign-in, and the verification dialogs.
  • A room row that has the keyboard focus now takes Space to open the room, so
    Space no longer plays or pauses audio while the room list has the focus.
  • The quick switcher's command search matches every word you type, in any
    order, ignoring case and accents, and its example line uses the real names
    of actions in your language.

Security

  • Tooltips show names as plain text. A room name, display name, file name
    or reaction key written to look like markup could make a tooltip load an
    image from an address someone else chose, revealing your IP address to it.
    Every tooltip now shows such text as plain text.

Audio and video

  • The audio player docks under the room header as a slim "now playing"
    strip that never covers messages. Pop it out to get a card you can move and
    resize anywhere in the window; it remembers where you left it. It works in
    Settings too, can seek, change speed and volume, and pauses for a call and
    resumes after it. "Focus the audio player" is Ctrl+Shift+J (rebindable).
  • Media keys and your desktop's "now playing" control voice messages and
    audio files (MPRIS on Linux). What it shows follows your notification preview
    privacy. Packaged Flatpak and Snap: NOT TESTED.
  • An audio file shows its title, artist and cover art from the start, so the
    row no longer jumps.
  • The video player keeps one speed everywhere (1.75x added), opens its
    speed menu upwards, remembers where you stopped each video (Resume on the
    cover), stays on the last frame with Replay in the expanded view, has a
    header with Download, works from the keyboard (Space, arrows, M, F) and fits
    narrow and portrait videos.

Files and downloads

  • Saving a file asks where to save it: your system's own Save dialog on
    Windows and macOS, and your desktop's file dialog on Linux (through the
    portal), with the original file name and type filled in.
  • A download shows its progress beside the file card, and the notice scrolls
    with the message like a browser's download bubble. When something else is in
    that space, or the message is scrolled away, it rests in the corner of the
    chat instead.
  • Lightning has its own file chooser where Linux has no portal, with
    multi-select that works like a desktop dialog. A save name keeps its own
    extension.
  • A picked MKV or WMV file is sent as a video, and MKA/WMA as audio (#41).
  • Dropping files works from the Flatpak and from file managers that send
    unusual file addresses (#42).
  • Hidden direction-changing characters are stripped from file names, and file
    sorting no longer depends on your locale.

Accounts and sign-in

  • A bare username now signs in on a server whose address differs from its
    name.
    Password sign-in stays available when a server also offers browser
    sign-in, and a sign-in can be cancelled.
  • Login errors are readable, a failed sign-in leaves no stray data, and
    Lightning exits in an orderly way when asked to quit.
  • Appearance is remembered per account.
  • A sign-in that was cancelled or killed before the server answered no longer
    makes the next start say your settings could not be read, and that notice now
    says what it actually found. An error that is not the repair card's own is
    shown beside the card.
  • Lightning no longer asks you to "fix this account" because of a refresh token
    it failed to read or save.
  • Settings and the account menu are reachable when the Space rail is hidden:
    they appear in the room list header (#45).
  • Your own cross-signing status refreshes, a cancelled verification is handled,
    and the Sessions page only shows "Verified" for devices that are really
    trusted.
  • Export your room keys to a file Element can import, behind a passphrase;
    the strength meter no longer rates a repeated or common password as strong.
    A message that cannot be decrypted fetches its key from your backup or your
    own verified devices without a restart.
  • Photos lose their location when you send them, in threads too. Signing out
    warns you when your keys are not backed up.

Appearance and settings

  • A rebuilt theme editor with Simple, Groups and Elements levels, a theme
    menu in the top bar, importing themes with a preview, a readability report
    with fixes, and named undo steps.
  • Chat backgrounds can be animated GIF or WebP, and very fast flashing is
    kept still.
  • The Spaces rail can be ordered A–Z or by recent activity, and nested Spaces
    can be created.
  • A Text rendering choice, Smooth or Native.
  • Export and import a settings file, and optionally sync settings between
    your devices.
  • Settings are grouped with an outline, search and copyable links. The interface
    follows a language change everywhere, and dates and numbers follow the
    language you chose.
  • About has Copy version, your homeserver's details, Reset local cache
    (which gives the disk space back), and an exportable log bundle with no
    message text, tokens or paths. The diagnostic log stays off until you turn it
    on.
  • Text scale is applied consistently, and long names stay inside Home.
  • Labs: show the game you are playing in your status, like Discord. It is
    experimental and off by default. A status you set yourself is always shown
    instead while you have one, and "Playing …" is written in your app language.
    Flatpak and Snap cannot see other apps, so there it finds nothing.
  • Labs: "Listening to" Spotify. While Spotify plays on this computer your
    status can read "Listening to by " (Linux, and Windows from the
    Spotify window title). Off by default; a game or your own status takes
    precedence; the line is withdrawn when you quit, sign out or switch account.
    Spotify's Private Session is not detected. NOT TESTED live.
  • Labs: run several accounts at once. Accounts you mark "Always signed in"
    keep receiving messages and notifications while you use another one, and
    switching to them is quick. Off by default; with it off nothing changes.
    With it on, the app no longer crashes when a background account signs in to
    a server over TLS (checked live against a real server); the rest of the
    feature is NOT TESTED live.
  • Animated images has its own setting (Appearance › Motion and time: Play
    automatically, Play on hover, Don't play), and every animation follows it,
    including avatars, banners, stickers, the GIF picker and link previews;
    animations pause while Lightning is not the active window. Media preloading
    is the separate "Preload videos and audio" switch (Privacy & security ›
    Media); it now also covers audio and voice messages, so if you had
    preloading off, those are no longer downloaded in advance either. If you had
    GIF autoplay set to Never, preloading is switched off once on upgrade. A
    Never set on a device still on an older version syncs as Don't play only;
    preloading stays per device.
  • Unread and mention badges are readable on every theme: counts and "@"
    meet WCAG contrast, and dots get a ring that stands out on every panel.
  • Spell check works in every Linux package (AppImage, Snap, Flatpak, deb,
    rpm and Nix), in several languages at once ("Also check"), with an optional
    autocorrect (off by default except on macOS; Backspace right after undoes
    it). "Add to dictionary" now writes Lightning's own personal dictionary
    (Settings › Appearance › Message box › Personal dictionary, removable word by
    word) instead of the operating system's dictionary; words the system
    dictionary already knows are still accepted.

Packaging, updates and platforms

  • Updates are read from GitHub first, with GitLab as the fallback. The
    manifest is still signed and checked in the same way.
  • Windows: upgrading with the MSI keeps every file. Earlier MSI upgrades
    could leave Lightning without its program files; if that happened, install
    0.10.2 and it will be complete again. Setup refuses to touch a running
    Lightning. The title bar follows a dark theme (#43 follow-up, see below).
  • macOS: restoring from the menu bar no longer crashes, closing the window
    hides it, and Cmd+W closes it as in other apps (#34).
  • Linux: the AppImage mixer and audio converter above; Lightning also has
    its own chooser where no portal exists.
  • Throwaway caches live in a separate cache/ folder beside your account data
    and are moved there on first start.
  • A tap with a finger no longer opens right-click menus (thanks, Tom).

Translations

  • Lightning is now available in German.
  • All new text is translated into every language.

Known issues and not yet tested

  • macOS is NOT TESTED live in this release.
  • Screen sharing from the Flatpak to Windows is NOT TESTED: the test
    machine's X11 setup could not run that pairing.
  • In this round's live call checks, whether the call audio was actually
    audible was not listened for; that is NOT TESTED.
  • The new keyboard navigation is covered by automated tests; day-to-day use
    with a real keyboard and a screen reader is NOT TESTED live.
  • Windows: the dark title bar needs live confirmation. The Save dialog stays
    light unless Windows itself is set to dark. Windows packages are unsigned.
  • The changes in this release have been checked by automated tests; real
    Matrix calls, Windows and the new camera paths are NOT TESTED live.
  • Notifications: Lightning's own ringer still rings while your desktop's Do
    Not Disturb is on. "Do not send read receipts" currently behaves like
    Private. The Activity Center does not remember which items you have seen
    across restarts.
  • Direct messages to another homeserver can still leave an empty room behind
    when that server is slow to answer.
  • If you unplug the active sound device during a call on Qt's PipeWire output,
    Qt itself can still make the window stutter; this needs a fix in Qt. Linux
    builds with Qt 6.10 or newer now avoid that output when PulseAudio answers.
  • openSUSE Leap 16.0 cannot install the release .rpm (its Qt is older than
    the one the package needs); Tumbleweed works.
  • In the media browser, searching by caption was reported missing once and could
    not be reproduced; please report it if you see it.
  • An exported web page embeds media as data: URLs; some browsers will not play a
    very large embedded video.

Lightning 0.10.2 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