Skip to content

Backspace 1.8.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 12:48
· 115 commits to main since this release

Backspace 1.8.0

Instances now catch up with each other regularly, so a direct message, friend or profile change that got lost between two instances arrives later instead of staying missing. Channels open at your first unread message, and the message list keeps your place while messages load and while the message box grows. People from different instances are no longer mixed up, and mentions and notifications on another instance's channels now recognise you. Roles can be dragged by their row again, and role changes no longer reset the open chat. Instance admins can see why a peer was rejected or needs attention.

Federation

  • Your instance now pulls the changes of every connected instance again every 15 minutes, for direct messages, friends and profiles. A change that was lost on the way, for example during an outage longer than the queue keeps it, now arrives later instead of staying missing for good (#255).
  • An older change that arrives late no longer undoes a newer one. A member removed from a group stays removed, a member added again stays in, and a withdrawn friend request does not come back (#255).
  • A change that arrives twice is applied once. Messages that arrive through this catch-up make no sound and raise no notification, and a 1-on-1 conversation that first arrives this way shows in the list right away (#255).
  • When two instances catch up, changes made in the same millisecond are no longer skipped, and changes to a group's name or icon are included (#333).
  • People from another instance now show the name and profile their home instance holds. A profile that was out of date, for example one first seen through a third instance or while the home was unreachable, is corrected when your instance next connects to their home. Names like kai@host no longer show as a display name (#366).
  • An avatar or bio that someone removed on their home instance no longer comes back from an older copy (#366).
  • When another instance connects, the status of its users shows right away instead of after a round of profile lookups (#366).

Connected instances (for admins)

  • The admin panel shows why a peer was rejected or needs attention, with details and what you can do when you open the row. Rejected peers are no longer struck through, and they can be re-initiated or deleted (#324).
  • When the other instance has revoked the peering or needs a reset, your instance stops instead of retrying for 30 days. When the other admin only reset their side, a check every 15 minutes completes the peering again, and their Re-peer is accepted (#309).
  • Retries for an unreachable or pending peer wait 30 seconds, 1 minute, 5 minutes and then 15 minutes, starting with the 30 second step (#322).
  • A handshake, check or failed delivery that finishes after a peer's state has changed no longer overwrites the newer state. A peer you revoked no longer comes back as active (#323).
  • With automatic peering turned off, an instance you are already connected to no longer shows up as a new approval request when it connects again.
  • A new peering becomes active once the other instance confirms the shared key. If no answer comes, it stays pending and the next attempt completes it.
  • A peer that is marked unreachable is answered like an active peer when it starts a new handshake, and keeps its earlier key.
  • Two instances that start peering with each other at the same moment no longer end up with different keys.
  • When an instance that had refused yours peers again, the connection goes through without your admin having to act. A peer your admin denied stays denied.
  • Every way a peer can be turned off now tells the affected users. The notice that a peer refused your instance is translated.

Messages and channels

  • A channel opens at your first unread message, with a divider above it. When that message starts a new day, the date sits inside the divider. When everything unread fits on screen, the channel follows new messages and is marked read (#375).
  • The newest messages no longer end up under the message box when you type several lines, start a reply or add files, or when you leave the window and come back (#361).
  • On mobile, the newest messages stay visible when the keyboard opens (#377, thanks @st7105).
  • The message list keeps your place while older messages load, while images and embeds change size, and when the message box or the mobile keyboard changes height.
  • After a jump to an older message, scrolling down loads the newer messages until you reach the newest one. Messages that arrive in the meantime show once you get there. Before, the list ended at the loaded section and the channel was not marked read.
  • Your read position in a channel only moves forward. Reading older messages after a jump no longer moves it back.
  • When a channel's messages fail to load, the list says so and offers Try again. Before, it stayed blank. A channel no longer shows as loading because another channel is loading.
  • Screen readers read each message with its author and time.

Direct messages

  • System messages in direct messages, such as someone joining, leaving or renaming a group, are shown in your language. They name the person who acted even when that person is no longer in the group, and a kind the app does not know shows a general label instead of its raw content (#351).
  • System messages in direct messages can no longer be edited (#351).
  • When two copies of a conversation are merged, for example after an account is attached again, your read position keeps the newer of the two, and a conversation you had closed does not reopen (#366).
  • Renaming a group, changing its icon, removing a member and transferring ownership now work when the group is shown from another instance's copy. When the owner's instance is not connected, a message says so (#366).
  • In a call between instances, each member now gets the call access that was made for them (#366).
  • When someone from another instance ends their session on yours, their status goes back to what their home instance reports, or to offline when that is not known (#325).

People on other instances

  • People from two instances who have the same user number are no longer mixed up. Names, avatars, profile changes and account deletions now apply only to the person they are about (#353).
  • In spaces and conversations on other instances, Backspace now recognises you and other people correctly in messages, reactions, mentions, member lists, voice channels, the mobile chat header, the call screen, the ownership transfer list and the add member dialog. For example, the transfer list no longer offers yourself, and your own row in a voice channel no longer shows moderation options (#353).
  • On another instance's channel, a message you have not sent yet is shown as yours: you can edit it, and Up opens it.
  • Mentions and notifications on another instance's channels now recognise you. Clicking a notification for a direct message opens that conversation, and the first message of a new conversation raises a notification (#332).
  • Incoming and outgoing friend requests are told apart correctly, also for requests that another instance lists. The badge on mobile no longer lights up for a request you sent.
  • A status kept from your home instance stops applying after a day, also while the page stays open, so an old Do Not Disturb no longer keeps alerts silent. A live report from your home replaces it (#325).
  • When you attach your account to another instance again, it gets exactly your handle instead of a name like kai_1, so automatic sign-in keeps working. If another account holds the handle, attaching stops with a message. Names with such a suffix from earlier versions are corrected once the home instance answers (#366).
  • Signing in to another instance with a federated account updates the password stored there only when your home instance confirms the sign-in is for that same account (#366).

Roles and permissions

  • Roles can be dragged by their whole row again in the role list (#373).
  • Moving a role puts it next to the role it was dropped beside, also when the list was out of date or two moves were made quickly. Before, a role could end up at a rank you did not pick.
  • Changing roles or a member's roles no longer reloads the open channel for everyone in the space, which moved their scroll position. This also holds for spaces on instances that still send the old full refresh.
  • A member who can see a voice channel after a role change now sees who is in it.
  • A late answer from the server no longer puts back old roles or permissions, and a space that finishes loading after you switched to another one no longer pulls the view back.
  • The Private switch and Make public change only whether @everyone can see the channel, and keep the other @everyone permissions. The Overview tab follows changes made on the Permissions tab without reopening the dialog (#327).
  • When the role order stops you from muting, moving or disconnecting someone in voice, a message now says so.

Interface

  • The Save and Discard bar in permission settings and the buttons at the bottom of dialogs now blur the rows that scroll under them, as they do outside dialogs.

Upgrading

This release has two database migrations, 0022 and 0023, which run on first start. As before every migration, a database backup is taken first, unless backups are turned off with BACKUP_DISABLED=true.

Migration 0022 adds what the regular catch-up between instances needs. Each peer's catch-up starts where its last sync ended, so the upgrade does not replay old history, and friend changes from before the upgrade are never pulled.

Migration 0023 renames the stored peer reason to status_reason, clears reasons left on peers that no longer need attention, and marks a peer that needs attention without a reason as failing signed deliveries. A peer your admin denied stays denied.

Servers that answer /epoch with 404 (builds from before 2026-07-01) now stay pending instead of becoming active.

On first start, a pass rewrites stored permission values on roles and overrides to one standard form with the same meaning. It takes a database snapshot first, only when it has something to rewrite, and logs any value it cannot read with its row before replacing it. The server now refuses permission values that are not a plain non-negative number, and adding the same role to a member twice answers 400 instead of 500.

Moving a role through the API (PATCH /api/spaces/:id/roles/:rid) now accepts above or below a role id. A plain position still works, so older clients keep working. Message history (GET /channels/:id/messages and GET /dm/:id/messages) also accepts an after cursor.

Instances on 1.7.x keep federating with this version. They keep catching up with yours as before, and profiles of users whose home runs 1.7.0 are looked up once per server start.

Downloads

Platform Download
Windows x64 Backspace-1.8.0-win-x64.exe
Windows arm64 Backspace-1.8.0-win-arm64.exe
Linux AppImage x86_64 Backspace-1.8.0-linux-x86_64.AppImage
Linux AppImage arm64 Backspace-1.8.0-linux-arm64.AppImage
Linux deb amd64 Backspace-1.8.0-linux-amd64.deb
Linux deb arm64 Backspace-1.8.0-linux-arm64.deb
macOS Apple Silicon Backspace-1.8.0-mac-arm64.dmg
macOS Intel Backspace-1.8.0-mac-x64.dmg

The .blockmap and latest*.yml files are read by the auto-updater and are not meant to be downloaded by hand.