Changelog

VoiceOver and text editing on iPhone

On iPhone, VoiceOver can read Lowfire, and text fields use Lowfire’s own editor for selection, caret and keyboard. Linux text draws at the right weight, and emoji draw correctly on real iPhones.

New

iPhone screen-reader support

The iPhone bridge exposes the shared accessibility information to VoiceOver. Floating interface regions appear in their reading position, so a compact screen’s Back control is encountered in the right place.

New

iPhone text selection and keyboard input

The iPhone’s text input connects to Lowfire’s own editor, including selection, caret placement and keyboard handling. Hardware-keyboard input and app shortcuts work even when no text field is focused.

Fixed

  • Automatic removal retries after publication recovers. A removal turn is entered again when publication becomes possible, instead of remaining stalled after an earlier failure.
  • Keyboard focus is visible on more controls. Sidebar controls and every button style draw their keyboard focus ring, so keyboard navigation is easier to follow.
  • Drop files into the conversation you can see. A file drop stays with the visible conversation during navigation, rather than accidentally following a destination that has not yet appeared.
  • Jump results keep the matching word visible. Search snippets in Jump to… retain the matched word instead of trimming away the part that explains the result.
  • Calls recover better from stalls. Calls preserve packet arrival times through receiver stalls, undo quality cuts caused by a local stall and avoid unnecessary key-frame conflicts between group streams. The call measurements keep the timing and quality-change records used to investigate these cases.
  • Emoji on a real iPhone. The iPhone implementation fixes emoji rendering on physical devices.
  • Pinned details grow with large text. At the largest text size, pinned rows in Details become tall enough for their text instead of cutting it off.
  • Linux text uses the correct weight. Medium, semibold and bold Linux text is drawn from the font family’s matching face instead of being rendered at the wrong weight.
  • Invite sheets fit short Linux windows. The invite sheet scrolls its form above the footer so the controls remain available in a short window. The touch-test profile also stops showing Linux desktop window buttons over the phone layout.
  • Recognise Ubuntu graphics drivers. The Vulkan loader recognises Ubuntu’s driver names and shares that selection logic with the video bridge.
In the works 2 changes · designs and groundwork
  • A design for private blocking and reporting. A proposal sets out private account blocking and voluntary reports containing only material a person chooses to share.
  • Signed account deletion. Account deletion gains an account-signed closing record, server cleanup and checks by readers of account records.
Under the hood 8 changes · tests, tools and the server
  • More focused media and architecture checks. Repeated architecture setup is reduced, media checks can run one named case and record simulated-call traces, and call measurements can compare another build. Linux-specific slow-connection checks were repaired.
  • Clearer development-tool failures. Development status works with the installed command-line tools, unsupported Python and mismatched Rust tools are diagnosed early, and cold-build measurements are attributed to the machine that ran them. A returned change cannot be silently marked ready.
  • Keep checked source trees and issue records. Guidance now keeps checked source trees, archives the records kept in issue comments, and uses commands that work with older hosting tools.
  • More complete terminal and iPhone qualification. Terminal fixtures apply their settings before launching, the iPhone compile check resolves symbols across bridge files, and real-client checks cover denied account creation.
  • Keep media timing measurements. Audio re-key and camera measurements retain their parsed observations before cleanup. UDP timestamp checks wait until the kernel has actually supplied timestamps.
  • Stable native and history fixtures. Tests wait for the key-provider opening they intend to observe, preserve complete terminal styles, keep socket paths independent of checkout depth and report each client’s history state on timeout.
  • Bounded automation-fixture cleanup. Automation controls finish rather than hanging during held disposal, remove endpoint and temporary folders, and make retained-argument corruption checks deterministic.
  • Keep failed checks and compare with main. A later verification run preserves the earlier failed suite logs. Interface failures can be compared with a named baseline from the main branch.