Repository navigation
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=pipewireto 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=1and 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