Changelog

Lowfire detects a restored older copy of its store

Lowfire keeps a store generation in the system’s secure key storage, so it notices a restored older copy. An account’s protected recovery mode is fixed when it is created.

New

Detect an older local store

The app records a store generation in the system’s secure key storage so it can detect a restored older copy of the local store.

New

Enforce protected recovery rules

An account’s protected recovery mode is fixed when it is created. Protected imports and recovery-kit actions now follow that mode, and device removal waits for effective revocation rather than treating a pending change as complete.

New

Encrypted connections for local automation

Attaching an automation client to a running Lowfire gets a local endpoint, encrypted connections and shared session handling. Queued arguments and results are held in encrypted temporary storage.

Fixed

  • Explain failures when memory runs short. Conversation and organisation actions, attachment preparation and downloads now fail in plain words when working memory is unavailable. A download can recover if its verification record cannot be allocated.
  • One authority check for membership actions. Membership actions now use the same authority decision, reducing differences between ways of adding or removing a member.
  • Smaller working memory for linking and backups. Linking streams account-deletion metadata instead of loading it all at once. Backup records are split into bounded pieces, and restore processes them in limited working memory without rewriting already stored backup names.
  • Recover video quality after a connection narrows. The media engine recovers better after a connection suddenly has less capacity.
  • Spelling Revert restores the whole word. A spelling correction keeps both complete words, so Revert restores everything originally typed instead of a truncated word.
  • Give back memory after large automation calls. Large command results, JSON output and request parsing release their temporary memory back to the operating system instead of keeping the peak allocation.
  • More accurate Linux emoji font selection. The bundled emoji font is advertised only for characters it contains. Native test runs also release the font objects they create.
  • Terminal sheets close immediately. Escape puts away an already built terminal task sheet at once. Reopening the Recovery Kit keeps its contents behind Show again.
  • Reminder dates stay reachable in a tiny window. The custom reminder sheet puts Date and Time first, so an invalid date in a small window does not push the fields out of sight.
  • Terminal account actions fit their card. Settings keeps the account card’s actions inside its boundary, including on Linux.
In the works 3 changes · designs and groundwork
  • Sealed records for the organisation directory. The wire format and server gain sealed organisation-catalog records and sealed private-channel join requests.
  • iPhone input and lifecycle foundations. The iPhone bridge contract, touch scrolling and app lifecycle were added, including background and foreground handling. Desktop automation can exercise touch input.
  • Shared permissions and delayed security design. Two design decisions establish one permission policy for automation and account-level handling of security changes that must wait.
Under the hood 5 changes · tests, tools and the server
  • Structured mention storage. Mentions are stored as structured data instead of formatted display text, making their meaning independent of how a message is drawn.
  • Accept only the current storage format. Client and server storage now accept only their current data format, including organisation records. Older local formats are refused intact; this change does not convert existing stores.
  • Shared chat and storage operations. Chat command handlers, account and store lifecycle notifications, conversation projections and transaction helpers were consolidated. The bridge from encrypted group state into local storage now lives with the encryption module.
  • Better isolated cross-platform fixtures. Tests now reach their intended failure paths, handle Linux fonts and device wording, cleanly manage child processes and compare the correct filesystem outcomes. Core test fixtures also access state through the intended interfaces.
  • Development and verification upkeep. Server checks remove their temporary folders, repeated architecture checks do less work, and a build dependency was updated. Coordination now records friction and cleanup tasks; history framing is documented, and memory collection keeps what it observed when access is unavailable.