Skip to content

Releases: Mizerd/lightning

Lightning 0.7.6

Choose a tag to compare

@Mizerd Mizerd released this 22 Aug 19:37

This is a read-only mirror. It is not a release authority.

The canonical Lightning 0.7.6 release lives on GitLab:
https://gitlab.smetonis.net/Mizerd/lightning/-/releases/v0.7.6

The files attached here are byte-identical copies of the artifacts published
there. They exist so downloads do not all have to come from one small server.
Nothing about this page decides anything: it does not determine what version
exists, what is installable, or what Lightning will accept.

Verify any download against the SHA256SUMS asset, which is itself a copy of
the published one.

Lightning's in-app updater fetches its update manifest only from GitLab and
verifies an Ed25519 signature made with a key that exists nowhere near 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://gitlab.smetonis.net/Mizerd/lightning

Lightning 0.7.5

Choose a tag to compare

@Mizerd Mizerd released this 22 Aug 14:39

This is a read-only mirror. It is not a release authority.

The canonical Lightning 0.7.5 release lives on GitLab:
https://gitlab.smetonis.net/Mizerd/lightning/-/releases/v0.7.5

The files attached here are byte-identical copies of the artifacts published
there. They exist so downloads do not all have to come from one small server.
Nothing about this page decides anything: it does not determine what version
exists, what is installable, or what Lightning will accept.

Verify any download against the SHA256SUMS asset, which is itself a copy of
the published one.

Lightning's in-app updater fetches its update manifest only from GitLab and
verifies an Ed25519 signature made with a key that exists nowhere near 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://gitlab.smetonis.net/Mizerd/lightning

Lightning 0.7.4

Choose a tag to compare

@Mizerd Mizerd released this 19 Aug 20:22

This is a read-only mirror. It is not a release authority.

The canonical Lightning 0.7.4 release lives on GitLab:
https://gitlab.smetonis.net/Mizerd/lightning/-/releases/v0.7.4

The files attached here are byte-identical copies of the artifacts published
there. They exist so downloads do not all have to come from one small server.
Nothing about this page decides anything: it does not determine what version
exists, what is installable, or what Lightning will accept.

Verify any download against the SHA256SUMS asset, which is itself a copy of
the published one.

Lightning's in-app updater fetches its update manifest only from GitLab and
verifies an Ed25519 signature made with a key that exists nowhere near 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://gitlab.smetonis.net/Mizerd/lightning

Lightning 0.7.3

Choose a tag to compare

@Mizerd Mizerd released this 17 Aug 21:27

This is a read-only mirror. It is not a release authority.

The canonical Lightning 0.7.3 release lives on GitLab:
https://gitlab.smetonis.net/Mizerd/lightning/-/releases/v0.7.3

The files attached here are byte-identical copies of the artifacts published
there. They exist so downloads do not all have to come from one small server.
Nothing about this page decides anything: it does not determine what version
exists, what is installable, or what Lightning will accept.

Verify any download against the SHA256SUMS asset, which is itself a copy of
the published one.

Lightning's in-app updater fetches its update manifest only from GitLab and
verifies an Ed25519 signature made with a key that exists nowhere near 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://gitlab.smetonis.net/Mizerd/lightning

Lightning 0.7.2

Choose a tag to compare

@Mizerd Mizerd released this 17 Aug 17:18

This is a read-only mirror. It is not a release authority.

The canonical Lightning 0.7.2 release lives on GitLab:
https://gitlab.smetonis.net/Mizerd/lightning/-/releases/v0.7.2

The files attached here are byte-identical copies of the artifacts published
there. They exist so downloads do not all have to come from one small server.
Nothing about this page decides anything: it does not determine what version
exists, what is installable, or what Lightning will accept.

Verify any download against the SHA256SUMS asset, which is itself a copy of
the published one.

Lightning's in-app updater fetches its update manifest only from GitLab and
verifies an Ed25519 signature made with a key that exists nowhere near 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://gitlab.smetonis.net/Mizerd/lightning

Lightning 0.7.1

Choose a tag to compare

@Mizerd Mizerd released this 16 Aug 10:52

This is a read-only mirror. It is not a release authority.

The canonical Lightning 0.7.1 release lives on GitLab:
https://gitlab.smetonis.net/Mizerd/lightning/-/releases/v0.7.1

The files attached here are byte-identical copies of the artifacts published
there. They exist so downloads do not all have to come from one small server.
Nothing about this page decides anything: it does not determine what version
exists, what is installable, or what Lightning will accept.

Verify any download against the SHA256SUMS asset, which is itself a copy of
the published one.

Lightning's in-app updater fetches its update manifest only from GitLab and
verifies an Ed25519 signature made with a key that exists nowhere near 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://gitlab.smetonis.net/Mizerd/lightning

Lightning 0.7.0

Choose a tag to compare

@Mizerd Mizerd released this 15 Aug 06:42

Lightning 0.7.0

The largest Lightning release to date: 40+ commits since v0.6.6 spanning a
new sign-in method, a complete moderation set, voice messages, thread
parity, and a long run of live-feedback fixes driven by real daily use.

OAuth 2.0 / OIDC browser sign-in — live validated

Lightning can now sign in through the system browser using OAuth 2.0 /
OIDC (Client::oauth() on matrix-sdk 0.18). PKCE, the CSRF state, the
code exchange and token refresh are SDK-owned; Lightning adds only the
loopback callback listener and the two-phase store lifecycle that keeps a
freshly issued device from ever adopting another device's store. Refresh
tokens rotate and persist; a revoked session surfaces honestly instead of
looping.

Validated live against matrix.org (Matrix Authentication Service):
end-to-end browser login, new-account registration through the Google
upstream identity provider
, token refresh, restart restoration, and
sign-out. The homeserver field now discovers the available sign-in
methods as you type (and for the prefilled server on open) instead of
waiting for Enter.

Moderation: kick, ban, unban

The member profile popover now carries the full moderation set, gated by
SDK-derived power-level permissions (never role labels) and offered only
against members strictly below your own level:

  • Remove (kick) and Ban, with an inline confirm and optional
    reason.
  • Unban — banned members are now visible in the People list (sorted
    last, with a "Banned" chip) precisely so unban is reachable. Unban
    carries its own permission flag: its required level is max(ban, kick)
    per the spec, asked of the SDK.
  • Invite back after unbanning (default on): a successful unban is
    followed by a normal invite, so restoring a member is one action.
  • Inviting a banned user is blocked up front with guidance to unban
    first, instead of an unexplained server rejection.

People list: instant and live

The Room Information People list renders instantly from the local cache
(a partial snapshot precedes the network roster under the same request)
and stays live: membership changes seen in sync refresh an open panel
without reopening it, rate-limited so busy bridged rooms cannot flood the
client.

Voice messages

MSC3245 voice messages: record with a live waveform, preview, and send —
in rooms and in threads, through the SDK's encrypting attachment path.
Sent as mono 32 kbps Opus. The thread composer gained the same mic as the
room composer, with single-owner recording semantics.

Threads

  • Thread participant facepiles on summary cards, from the thread's own
    events (root sender first), cached per thread.
  • Thread voice messages (above) — never falling back to a room send.
  • Per-room notification modes gained "Follow account default", mapped
    to the real absence of a server push rule, with retry on reconnect.

Timeline and media

  • Outgoing videos carry a real poster thumbnail, extracted locally and
    attached through the SDK (encrypted alongside the payload in encrypted
    rooms); cards take the video's real shape from the first render, and
    learned dimensions persist across sessions.
  • Software video decoding by default — VAAPI deadlocked on rotated video.
  • Read receipts: Element-style chips now ride one fixed right-edge rail;
    a user's receipt shows on their own message; reader avatars fall back
    to the avatar the timeline itself has seen, so chips stop degrading to
    letter initials.
  • Sender names are coloured per user (deterministic, hue-matched to the
    avatar palette, WCAG AA-verified inks in both light and dark themes).
  • Big-emoji rendering for 1–3 emoji-only messages; images close on any
    click; files can be dropped anywhere in chat.

Interface

  • Space Home: double-click a Space in the rail (or click the
    workspace title) to open the Space's front page with its room list —
    the surface existed but was unreachable.
  • Room list filters: All / People / Rooms / Unreads chips, persisted
    per account — rooms no longer sink under a hundred DMs.
  • Interface zoom: 75–150% whole-UI scale (Settings → Appearance, or
    Ctrl+= / Ctrl+- / Ctrl+0 anywhere). Applies on the next launch — Qt
    reads its scale factor once at startup.
  • One identity-colour policy everywhere: a direct-message partner gets
    the same fallback colour in the room list, quick switcher, headers,
    member list, receipts and message rows.
  • The typing indicator no longer nudges the timeline; long drafts and
    edits scroll inside the composer with the caret kept visible; editing
    starts at the end of the message.
  • The circular Lightning logo ships as SVG where vectors are supported;
    upload-limit preflight uses only the server's advertised limit.

Fixed

  • Composer text past ~6 lines was invisible (no scrolling existed).
  • The same user could show three different fallback-avatar colours
    across surfaces.
  • Send failures now surface in the room they happened in, not whichever
    room is open.
  • A stale room could keep refetching mention suggestions indefinitely.

Known issues and limits

  • Two timeline QML suites still assert the pre-0.6.6 virtualized
    contract (timeline-pane-qml 37 passed / 26 failed,
    timeline-hydration-qml 5 / 2) — carried, disclosed, and the
    highest-value open test work. All other suites pass on both build
    configurations (93/95 registered suites green).
  • macOS: built and validated as an unsigned arm64 test bundle on real
    Apple hardware in the release pipeline, but not published — macOS
    packages wait on code signing. Linux (deb, rpm, Flatpak, AppImage,
    snap) and Windows (x86-64 portable + installer) packages are published
    and validated on clean systems.
  • Interface zoom requires an app restart to take effect (Qt platform
    limit).
  • Unban is unreachable in rooms at or over the 500-row roster snapshot
    cap.
  • Element interoperability of provider GIF sends, sent video posters,
    QR verification and voice messages has not been re-validated for this
    release beyond automated coverage.

Lightning 0.6.6

Choose a tag to compare

@Mizerd Mizerd released this 12 Aug 07:22

Lightning 0.6.6

A features and timeline release. Read receipts, QR device verification, and
server-side per-room notification rules are new; GIF saving was reworked so a
star means one thing everywhere; the GIF and emoji pickers became resizable and
now sit on the composer; and the room timeline was rebuilt from the ground up
without height virtualization. Platform coverage is unchanged from 0.6.5: Linux
and Windows x86_64, and every shipped build uses only the Rust Matrix backend.

Highlights

  • Read receipts on the timeline. Element-style avatar chips show who has
    read each message, with a "+N" overflow pill and a summary line for the
    tooltip and screen readers.
  • QR device verification. When the other device can scan (Element X,
    Element Web), Lightning displays an SDK-generated QR code; SAS emoji remain
    available as the fallback throughout. This closes a 0.6.5 known limitation.
  • Per-room notification modes are now real server push rules. All messages
    / Mentions & keywords / Mute are stored in your account's push rules by the
    Matrix SDK instead of only on this device. This closes a 0.6.5 known
    limitation.
  • Saved GIFs — one star, one meaning, one place. Star a GIF anywhere, from
    a provider tile or from a GIF in a chat, and it lands in the picker's
    Saved tab. Every tile is tagged with where it came from.
  • Resizable pickers. The GIF and emoji pickers sit on the composer, scale
    with the window, and can be resized by dragging the corner; both share one
    remembered size that persists between sessions.
  • The room timeline was rebuilt without height virtualization. Every loaded
    row is a real, measured item, so loading older history no longer needs the
    view to be corrected at all.
  • Find-in-timeline highlights matches. Ctrl+F now marks every occurrence in
    the message body and fills the one you are sitting on.
  • Same packages as 0.6.5: Linux .deb/.rpm/Flatpak/AppImage/Snap and Windows
    x86_64 portable ZIP, MSI, and setup EXE. Windows packages remain unsigned.

Read receipts

  • Who has read a message. Up to four 16px avatar chips in a facepile,
    plus a "+N" overflow pill, on the newest message each person has read. One
    summary line ("Read by Alice, Bob and 3 others") drives both the tooltip and
    the accessible name.
  • The strip is invisible and takes no space when nobody else has read the row,
    and it trails the message content rather than a fixed column edge, so
    chips sit beside short messages instead of floating in empty space.
  • Receipts are tracked by the Matrix SDK on live room timelines. Thread
    timelines deliberately do not show them: SDK receipts are not thread-aware,
    and enabling them there would attach unthreaded receipts to thread rows.
  • The "New messages" divider gained an explicit policy alongside this: it stays
    collapsed while you are pinned to the bottom of a room and renders only for a
    reader who is genuinely catching up.
  • Your own receipt and the sender's implicit receipt are excluded, so a message
    never reports that its own author read it.

Device verification: QR

  • Show a QR code. When the other device can scan, the verification card
    displays a QR code generated by the Matrix SDK. Scanning runs the SDK's
    reciprocate handshake, you confirm the other device's success explicitly, and
    nothing is auto-confirmed.
  • Lightning never scans — there is no camera path — and never advertises
    itself as a scanner. SAS emoji verification remains available throughout as
    the fallback, and an unscanned code times out and falls through to it.
  • All trust-affecting steps remain SDK calls. Only the QR module grid crosses
    the FFI boundary; the payload bytes never leave the SDK and are never logged
    or persisted. Signing out cancels a displayed code on the wire.

Notifications

  • Per-room modes are your account's push rules. On the Rust backend, All
    messages / Mentions & keywords / Mute are managed entirely by the Matrix SDK
    as server push rules, so a room you muted stays muted on your other clients
    and devices. Lightning never builds or inspects rule JSON itself.
  • Every surface that sets a mode — the room-menu flyout, Room Information, and
    Settings — states which behaviour you are getting: saved to your account,
    kept on this device after a server failure, or device-local on backends that
    do not support push rules.
  • Changes apply instantly and offline through a local cache, then write to the
    server. A failed write is disclosed rather than swallowed, and a
    server-resolved account default is never written over a mode you chose.
  • Modes are now stored per account, so two accounts no longer share one room's
    setting. Existing settings continue to work.

Saved GIFs

  • One star, one meaning. Previously the same star did different things in
    different places — bookmarking a provider GIF in one, copying a chat GIF to
    disk in another, with a third meaning on a separate tab. A star now means
    "save this GIF", with one destination: the picker's Saved tab.
  • The picker's navigation collapsed into one row of peers: the sources (GIPHY,
    KLIPY) and, past a divider, the two lists that were always cross-provider
    (Saved, Recent). Picking a provider and then Favorites can no longer show
    another provider's list.
  • Star a GIF from a chat. A star button appears when you hover a GIF in the
    timeline, in the bottom-right corner, and fills when saved.
  • Every tile is tagged with where it came from — GIPHY, KLIPY, or Local — which
    also keeps provider credit attached to the tiles it belongs to.
  • What is stored, and where. A provider GIF is saved as a link. A GIF saved
    out of a chat is copied to your device, because that is the only way to keep
    one from an encrypted room. Those bytes live in an account-scoped store on
    this machine only — never in server-side account data — bounded at 200 items
    and 64 MiB, content-addressed and deduplicated.
  • The store records only the content hash, size, dimensions, and when you saved
    it. The room, event, sender, and media key are deliberately not kept.
  • It is deleted when you sign out of that account and when the account is
    removed; switching accounts never touches the outgoing account's files.
    Settings → Privacy & security shows the current count and size and offers a
    confirmed Clear All.
  • The cap is honest: reaching it refuses the save and says so, rather than
    silently evicting something you chose to keep.

Pickers

  • Pinned to the composer. The GIF and emoji pickers are positioned relative
    to the composer card itself, so they cannot lag, drift, or snap back when the
    window is resized. They sit just above the text box and never extend past its
    right edge.
  • Resizable. Drag the corner — marked with a quarter-arc in the accent
    colour — to resize either picker.
  • Sized as a share of the window, never a fixed pixel count, so a picker
    scales continuously as the window changes and a size chosen on one display
    stays sensible on another.
  • Both pickers share one remembered size, and it persists between sessions.
    A size stored out of range is forgotten rather than clamped, so a corrupted
    setting can never hand back a size you did not choose.
  • Saving a GIF no longer shows a banner that pushed the timeline up and let it
    drop back; the star filling in place is the feedback. Failures still say so.

Timeline and scrolling

  • Rebuilt without height virtualization. Every loaded row is now a real
    instantiated item with a measured height, in one column inside a rotated
    flickable. Older history is appended at the tail, so nothing already on
    screen can move and loading history needs no scroll correction at all.
  • This replaces a mechanism where the application computed positions from
    estimated heights while the reader saw real ones — the source of a long tail
    of scroll defects — and where a single insert anywhere in the model released
    and rebound every visible row.
  • Backward pagination arrives as one page. The SDK emits a page as many
    individual diffs; the bridge now assembles them and delivers one atomic
    range, so the view, the pagination gate, and grouping each see a page as a
    page. Overlapping and misattributed requests are gone.
  • Scrolling no longer degrades as you read back. Grouping is refreshed only
    around the change instead of across the whole model, which previously
    re-measured hundreds of unrelated rows on every page.
  • A single wheel frame is capped below one viewport, so a long frame — the
    kind a landing page of history causes — can no longer discard the row you
    were reading and guess a replacement.
  • Rows are paced as they are built so that a large page cannot freeze the
    application in one event-loop turn; live messages are exempt.
  • A 20px gutter now separates the room-list divider from the message
    avatars.

Other improvements

  • Find-in-timeline highlighting. Ctrl+F marks every occurrence in the
    message body and fills the current match in the accent colour, so stepping
    through with the arrows shows which one the view landed on. Message bodies
    are rich text, and the highlighting only ever substitutes inside text runs —
    markup and HTML entities are never split.
  • Read-receipt avatars load correctly rather than falling back to initials
    permanently.
  • Reply and search navigation can address any loaded row, including rows still
    being paced onto the screen.
  • Screenshot-demo mode (development only) can now photograph the GIF picker
    from bundled fixtures, defaults to the Storm theme, and has fuller fictional
    conversations. The README screenshots were recaptured from it.

Downloads

Linux

  • Debian/Ubuntu package (.deb)
  • Fedora/RHEL package (.rpm)
  • Flatpak bundle (.flatpak)
  • AppImage (.AppImage)
  • Snap package (.snap)

Windows x86_64

  • Portable package (.zip) — extract and run ...
Read more

Lightning 0.6.5

Choose a tag to compare

@Mizerd Mizerd released this 12 Aug 07:22

Lightning 0.6.5

A design, scrolling, and correctness release. The new Storm design language
restyles every menu, picker, and dialog in the client and arrives as a
selectable application theme; reading-position handling while scrolling through
history was overhauled end to end; and device verification and account-store
handling received significant correctness fixes. Platform coverage is unchanged
from 0.6.4: Linux and Windows x86_64, and every shipped build uses only the
Rust Matrix backend.

Highlights

  • The Storm design language across the entire menu system: redesigned
    menus, popovers, pickers, and dialogs with keycap accelerators, section
    labels, and the bundled Space Grotesk brand face.
  • Storm as a full application theme — deep navy panels with a bolt-yellow
    accent, first in the theme picker. Existing theme choices are untouched, and
    a new ink-on-accent token fixes contrast defects app-wide.
  • Redesigned message and room context menus: a keyboard-operable
    quick-reaction strip, keycap accelerators, a per-room notifications flyout,
    Copy room link, and a confirmed Leave room action.
  • A major scrolling and reading-position overhaul: loading history no
    longer teleports the view, image pop-in no longer throws the reader, wheel
    glides survive pagination, and the storm of redundant history requests near
    the top of a room is stopped.
  • Display names resolve everywhere: mentions, reply headers, and thread
    summary cards now show real names instead of raw Matrix IDs.
  • Device verification fixes: Lightning now initiates verification (it sends
    m.key.verification.start) instead of waiting in Ready — the cause of
    verification with Element X stalling — and the SAS (emoji) flow now handles
    either side initiating.
  • Each account is now bound to the SDK store it actually uses, ending a
    class of permanent sign-in failures — and cleanup can no longer delete the
    wrong account's crypto store.
  • Same packages as 0.6.4: Linux .deb/.rpm/Flatpak/AppImage/Snap and
    Windows x86_64 portable ZIP, MSI, and setup EXE. Windows packages remain
    unsigned.

The Storm design language

  • One language for every menu surface. The shared menu system was
    redesigned from the ground up — menus and menu items, keycap accelerators,
    section labels, and new shared primitives — and applied across the message
    menu, room menu, account switcher, quick switcher, emoji and GIF pickers,
    mention popup, member profile, the new-conversation, invite, and poll
    dialogs, and the Settings shell.
  • Storm as a selectable theme. The eleventh full-application theme: deep
    navy panels and a bolt-yellow accent, first in the theme picker. The System
    theme resolves dark to Storm and light to Moss Light. Persisted theme
    choices are never rerouted — nobody's stored selection changes — and the
    legacy themes keep their own semantic menu tones rather than inheriting
    Storm's literals.
  • Readable ink on accent fills. A new boltInk token governs text drawn
    on bolt/accent fills app-wide; some previously broken pairs went from
    roughly 1.0:1 contrast to between 8.7:1 and 13.7:1.
  • Redesigned context menus. The message menu gained a six-cell,
    keyboard-operable quick-reaction strip and keycap accelerators (R, T, E,
    Ctrl+C). The room menu gained a notifications flyout with real per-room
    mode radio rows, a canonical-alias-aware Copy room link, and a confirmed
    danger action for Leave room.
  • Redesigned pickers and popups. The emoji picker has an 8-column grid,
    a compact category rail, and recents; the GIF picker shares the same search
    treatment with section chips and keyboard Space activation; the mention
    popup is now a menu surface.
  • Identity and trust surfaces. The account switcher shows vertical
    identity cards with live space counts; a Trust card bound to real
    crypto-health state appears in the switcher and embedded in Settings →
    Sessions; the member profile popover was redesigned and gained Copy ID.
  • Quick switcher and dialogs. The quick switcher was rebuilt with
    navigate and command modes and scope chips; the new-conversation omnibox
    and the invite-people and create-poll dialogs use the shared dialog
    language; the Settings shell is searchable, with featured theme cards.
  • Brand marks and type. The Lightning wordmark and bolt mark appear in
    the room-list header and boot screen; the room-list search and the in-room
    find bar were rebuilt as composer-family cards, with the room-list search
    carrying a Ctrl+K keycap hint; the Space Grotesk brand font (OFL) is
    bundled.

Scrolling and reading position

  • Your place survives history loading. One scroll anchor is kept alive
    across a near-top multi-batch loading run, and the view no longer jumps to
    the anchor row on every backfilled batch — fixing a cascade that could
    teleport the reader to the top of history.
  • Wheel glides survive pagination. Restoring the anchor after a page of
    older messages no longer discards concurrent scrolling or freezes an
    in-flight wheel glide, and a new upward gesture keeps history loading.
  • Image pop-in no longer throws the view. Content growth above the reader
    is compensated while a self-driven scroll is in flight.
  • The near-top loading storm is stopped. History loading now uses real
    distance-from-top proximity, gates on progress at dispatch, and accounts
    for model growth per page — stopping the storm of redundant, overlapping
    history requests it previously fired while scrolling up near the top of a
    room.
  • One preservation mechanism. Reading-position preservation was unified
    into a single mechanism, and a displaced anchor's shift is computed directly
    instead of rebuilding the row to measure it.
  • Constant-time thread roles. Per-row thread-role queries are answered
    from an index instead of scanning the timeline, so scrolling no longer
    degrades as loaded history accumulates.
  • The thread panel holds its place too. Thread pagination gained its own
    scroll anchor, so loading older thread replies no longer teleports the
    panel.

Messaging and display improvements

  • Display names resolve everywhere the member roster knows them: mentions,
    reply headers, and thread summary cards use the member cache, which was
    previously left unpopulated on the Rust backend. The roster hydrates on
    room open, so mention chips resolve without first opening the member panel.
  • Reply-quote and thread previews normalize Lightning-sent mentions to
    display-name labels instead of raw matrix.to markdown.
  • Reply cards are content-width with an accent bar; mention highlighting is
    quieter — a tint with a left edge bar, bolt-colored for personal mentions
    and neutral for @room; your own reactions get a ring; the selected room
    shows a bolt edge.
  • The GIF picker sends exactly the GIF you picked: never a re-resolved row
    after a model refresh, a debounced search can no longer send the previous
    query's result, and a double-click sends one GIF instead of two.
  • Overflow and containment defects across the redesigned surfaces were fixed,
    the Settings navigation rhythm was tightened, and account and session cards
    adopted the trust-card language.

Verification and account-store fixes

  • Lightning now initiates verification. It sends
    m.key.verification.start instead of waiting in Ready for the other side —
    the cause of verification with Element X stalling. A leaked single-flow
    slot can no longer brick outbound verification for the session, QR is no
    longer advertised when Lightning cannot answer it (SAS only), and failures
    are surfaced instead of invisible.
  • SAS completes in both directions. Emoji verification now completes
    whether Lightning or the other device initiates, and flows tear down
    cleanly on logout and cancellation.
  • Each account is bound to the SDK store it actually uses. The store
    location is recorded when the store is opened, never re-derived — so a
    mismatch between the name typed at login and the server-canonical user id
    can no longer make sign-in fail forever, and cleanup can no longer delete
    the wrong account's crypto store. Suspect stores are quarantined, never
    deleted on a guess, and a locked keyring is treated as a transient
    credential failure rather than evidence that an account does not exist.
  • Sanitized support diagnostics. A support-diagnostics export — offered
    from the sign-in screen's repair panel when a session-store failure is
    detected — carries hashed account identifiers with a fresh per-report salt,
    no filesystem paths, and no tokens.
  • Verification trust semantics are unchanged: trust labels still come from
    SDK state, and nothing in this release promotes local UI confirmation to
    SDK trust.

Downloads

Linux

  • Debian/Ubuntu package (.deb)
  • Fedora/RHEL package (.rpm)
  • Flatpak bundle (.flatpak)
  • AppImage (.AppImage)
  • Snap package (.snap)

Windows x86_64

  • Portable package (.zip) — extract and run Lightning.exe; no installation.
  • MSI installer (.msi) — per-user install.
  • Setup EXE installer (-setup.exe) — per-user install.

macOS is not supported.

Rust-only backend

Release builds compile only the official Matrix Rust SDK backend. The HTTP and
mock development backends are excluded from the shipped binary, --backend=http
and --mock are rejected, and there is no silent fallback. matrix-client --build-info reports the backend and build invariants for verification.

Windows signing notice

The Windows packages are currently unsigned.

  • Windows may show an "Unknown publisher" prompt, and Microsoft Defender
    SmartScreen may warn before running the installer or executable.
  • The warning does not by itself mean the file is unsafe. Download Lightning
    only from the official GitLab release, and verify the SHA-256 checksum below.
  • Do not disable SmartScreen, antivirus, or Wind...
Read more

Lightning 0.6.4

Choose a tag to compare

@Mizerd Mizerd released this 12 Aug 07:22

Lightning 0.6.4

A scrolling, performance, and visual-polish release. Timeline scrolling on a
touchpad is steadier, near-top history loading no longer loops, and the client
does less redundant work while you scroll. Shared timeline components — message
width, media, polls, and code blocks — are refined. Platform coverage is
unchanged from 0.6.3: Linux and Windows x86_64, and every shipped build uses
only the Rust Matrix backend.

Highlights

  • Touchpad timeline scrolling is steadier: the view no longer fights the
    touchpad or gets pulled around while avatars, media, and history load.
  • Backward pagination near the top of a room no longer loops on
    zero-progress history requests, and its loading indicator no longer nudges
    the viewport.
  • Less redundant work while scrolling: cached avatars are not re-resolved on
    every continuation row, and the high-frequency media-cache logging that ran
    on the UI thread during scrolling is gone by default.
  • Visual refinements to the timeline: a readable maximum message width on wide
    windows, rounded in-process media, clearer poll result bars, and subtly
    styled inline and fenced code.
  • A refreshed README with a screenshot gallery, and new development-only
    screenshot tooling (excluded from release binaries — see Developer tooling).
  • Same packages as 0.6.3: Linux .deb/.rpm/Flatpak/AppImage/Snap and
    Windows x86_64 portable ZIP, MSI, and setup EXE. Windows packages remain
    unsigned.

Scrolling and timeline performance

  • Steadier touchpad scrolling. Deferred scroll-anchor corrections no longer
    write the scroll position in the middle of an active touchpad gesture, so the
    view stays where you put it instead of competing with the touchpad — the
    effect was worst near the top of history and over media. The Flickable is
    pinned to its bounds so a gesture cannot overshoot.
  • Bounded near-top pagination. Loading older messages near the top of a room
    is now edge-triggered with hysteresis and a bounded, controller-owned
    continuation, so a page that adds no visible rows (for example when threaded
    events are filtered out) no longer spins in a tight loop against the
    homeserver.
  • Stable loading indicator. The "loading older messages" / failure indicator
    moved out of the scrolling content into a top overlay, so toggling it no
    longer changes the content height and shoves the reader's position.
  • Fewer relayouts while paginating. The timeline's grouping refresh is
    coalesced during a backward page, so a page of older messages triggers one
    grouping update instead of one per inserted row.
  • Less repeated resolution work. A sender's continuation rows reuse an
    already-cached avatar instead of re-running avatar resolution on every cache
    completion, and the per-row media/avatar cache-hit logging is now off by
    default.

Visual improvements

  • Message, media, and mention rows are capped at a readable maximum width on
    wide windows instead of stretching edge to edge.
  • In-process media (images and video posters) is rounded, with the corner
    radius baked into the decoded bitmap.
  • Poll result bars are taller, fully rounded pills with clearer emphasis on the
    selected option and a clean empty track for options with no votes.
  • Inline and fenced code has a subtle themed background.

Developer tooling

Lightning gained a development-only screenshot-demo mode for producing
deterministic UI screenshots from fictional *.example accounts and locally
generated media, with no network and no real credentials. It is compiled in
only with the LIGHTNING_ENABLE_SCREENSHOT_DEMO CMake option (off by default),
which is mutually exclusive with the release build configuration.

This mode is not part of any release binary and is not an end-user feature.
Release builds report screenshot_demo_compiled: false in
matrix-client --build-info, and --screenshot-demo and every --demo-*
option are rejected. See docs/screenshot-demo.md.

The README was also rewritten as a project landing page with a screenshot
gallery captured from this demo mode.

Downloads

Linux

  • Debian/Ubuntu package (.deb)
  • Fedora/RHEL package (.rpm)
  • Flatpak bundle (.flatpak)
  • AppImage (.AppImage)
  • Snap package (.snap)

Windows x86_64

  • Portable package (.zip) — extract and run Lightning.exe; no installation.
  • MSI installer (.msi) — per-user install.
  • Setup EXE installer (-setup.exe) — per-user install.

macOS is not supported.

Rust-only backend

Release builds compile only the official Matrix Rust SDK backend. The HTTP and
mock development backends are excluded from the shipped binary, --backend=http
and --mock are rejected, and there is no silent fallback. matrix-client --build-info reports the backend and build invariants for verification.

Windows signing notice

The Windows packages are currently unsigned.

  • Windows may show an "Unknown publisher" prompt, and Microsoft Defender
    SmartScreen may warn before running the installer or executable.
  • The warning does not by itself mean the file is unsafe. Download Lightning
    only from the official GitLab release, and verify the SHA-256 checksum below.
  • Do not disable SmartScreen, antivirus, or Windows security to run Lightning.
  • Code signing is not yet configured; these packages are provided unsigned.

Verification

  • Every asset is listed in SHA256SUMS. Verify a download with
    sha256sum -c SHA256SUMS on Linux, or CertUtil -hashfile <file> SHA256 on
    Windows, and compare against the published value.
  • All assets are built from the exact v0.6.4 application commit; the full
    source commit is recorded in each binary's --build-info output.
  • No GIF provider key setup is required — configuration is embedded at build
    time and never printed by --build-info or --gif-status.
  • The bundled Windows FFmpeg is an LGPL build (native decoders, no GPL or
    nonfree components).

Known limitations

  • The Windows packages are unsigned (see above).
  • The scrolling and touchpad improvements are validated in automated tests at
    the wiring and guard level; on-screen scroll feel should be confirmed on real
    hardware.
  • Per-room notification modes remain device-local, not synchronized server push
    rules.
  • End-to-end encryption cannot recover historical messages whose keys were
    never backed up or shared.

Mirrored from the canonical release: https://gitlab.smetonis.net/Mizerd/lightning/-/releases/v0.6.4 — installation packages are hosted on GitLab: