Screen readers hear new messages, and full disks keep drafts
Toasts and incoming messages are announced to screen readers. When the disk is full, Lowfire waits and retries without losing your draft, and closing the app during a call asks first.
New
Screen readers hear new activity
Toasts, announcements and incoming messages are delivered as accessibility announcements.
Fixed
- Clipboard read buffers are erased. Linux clipboard reads now erase the real temporary buffers after use, extending cleanup beyond copies of the data.
- Small windows keep status text readable. A toast sits above a tall update offer again, and the sidebar connection status shortens with an ellipsis at the largest text size.
- Unambiguous desktop shortcuts. Registry shortcuts no longer assign the same chord to two commands. The familiar Settings, Close and Find shortcuts are included in the correction.
- Notification hours follow their switch. Notification pause hours follow the setting’s checkbox instead of acting independently.
- More meaningful screen-reader controls. Static text, multiline fields, dialogs, toggles and organisation tabs now expose their proper roles and state. Call toggles keep stable names, and a text line is read once instead of through a redundant labelled container.
- Full disks pause work without losing the draft. When storage is full, incoming messages and organisation records wait and retry with backoff instead of repeatedly hammering the disk. An outgoing message keeps its draft and explains the actual send refusal.
- Failed store checkpoints still retry. A failed checkpoint remains scheduled for retry. The store no longer mistakes its own bookkeeping write for new content and silently clears the retry.
- Linux key storage handles concurrent clients safely. Clients sharing the same Linux key service now use one shared lock even when their configuration folders differ. Concurrent creation or updates can no longer overwrite each other’s secure-store records.
- Explain why a profile cannot open. If the app cannot use a selected profile, a window explains why in plain language instead of failing without a useful message.
- Call state ends cleanly. A call that never finished connecting leaves no phantom Join action or duration. A group participant whose ringing expires is shown as Not in the call.
- Ask before closing during a call. Closing a window that would end the app asks before dropping a call. On the Mac, the red window button and Quit also confirm before ending an active call.
- A refused invite leaves setup ready to retry. A refused invite is explained once, then setup resets cleanly with keyboard focus still in the invite field.
- A disabled account keeps its readable history. When the server turns off the only account, the app keeps the history visible with its explanatory banner instead of sending the person back to setup.
- Restore waits for the right account state. Restore waits for the account to be ready before deciding that no device was lost. In a direct conversation, the peer can accept the restored device’s rejoin after removing the lost one.
- Recovery-kit errors point to the right problem. Text that is not a Recovery Kit is refused immediately, before asking for a server. Local kit-format errors are kept distinct from failures to restore the account.
- More responsive device linking. A code that nobody is displaying is refused promptly. The linking sheet also scrolls its body between the title and buttons so its actions stay accessible.
- Swedish call labels use the right word. The call card, strip and mini window are named Samtal in Swedish.
- Linux calls offer supported controls. Linux hides video controls on devices without video support and avoids offering a mini call window where floating windows are unavailable.
- Linux audio waits for real devices. Lowfire’s own echo-cancellation nodes do not appear as selectable or default audio devices. If no real device is available, the app explains once and waits for one.
- Terminal setup keeps kit and server fields usable. The Swedish Recovery Kit offer fits its terminal card, and the restore Server field receives the first keystroke.
- Terminal installation messages keep long paths whole. Installing or removing the terminal command keeps the complete explanation even with long folder paths, including when a declined location causes a fallback.
- Automation cannot pretend a protected press succeeded. When an automation drive attempts to press a control reserved for the person, its result says so instead of returning a misleading success.
- Large text keeps lists and sheets usable. The sidebar is one list, and sheets at the largest text size scroll as one region. People keep their names when roles must yield, long row text wraps beside buttons, and channel tabs no longer overlap.
- Create after onboarding waits for membership. Creating immediately after onboarding waits for the organisation’s verified member list instead of racing ahead of it.
- Message metadata stays visible beside long names. In a message’s name line, only the name shortens; the edited marker and delivery tick remain whole.
- Code blocks use the message column. Code blocks can use the message column up to its intended maximum width instead of being unnecessarily cramped.
- Scrolled history reaches the composer. While reading older messages, the log continues down to the composer instead of leaving unused space at the bottom.
- Avoid unnecessary startup audio delay. The media path avoids an extra playout delay at call startup, with more detailed traces to diagnose the affected call stages.
- Terminal skin-tone emoji stay in their columns. Emoji with skin-tone modifiers stay inside their allocated terminal columns instead of disturbing adjacent text.
- Window controls named in your language. Window-control names go through translation, including Swedish labels for accessibility.
In the works 1 change · designs and groundwork
- Plans for Linux video and a private Mac beta. Plans are settled for Linux video backends, codec work isolated so it can recover from stalls, and signed private Mac beta releases.
Under the hood 10 changes · tests, tools and the server
- Linux memory accounting and reductions. Linux idle-memory work records the process footprint and its contributors, with targeted reductions. The new measurement is reported but does not yet fail a run.
- Decisions on drafts, profiles, memory and video. Decisions are settled on saved drafts, secure profile naming, Linux memory accounting, leak checks, video support and stalled-codec recovery.
- More trustworthy builds and focused verification. Call statistics keep related observations together, and probes count the connection’s actual bytes. Test suites are selected from one table, compiler caches are bounded and track headers, builds notice older input timestamps, missing shader tools fail clearly, and drivers reject stale executables.
- Track completed development sessions. Coordination now records when finished work is cleaned up and who keeps its retained test records.
- More realistic end-to-end failure checks. The end-to-end harness can slow connections and fill or lock local storage. Scripts wait for actual server conditions, respect Linux media capabilities and avoid sending a synthetic client address to a real remote deployment.
- Interface tests wait for the screen they judge. Checks judge wholly visible rows, wait for navigation to rest and unread counts to appear, and control the typing-state lifetime. Touch tests read after transitions, and large-text clipping checks use the correct rectangles.
- Native tests respect their runtime environment. The media hold test no longer treats a busy machine as a codec failure, Linux audio can use the continuous-check machine’s audio-policy version, and secure-key tests handle the full sanitized run.
- More precise boundary and failure fixtures. Checks observe queued arguments before cleanup, handle long temporary paths, and distinguish update-card controls from sidebar buttons. Update extraction is bounded by CPU work, terminal replacement is detected without a file watch, server-test output drains correctly, and failed automation launches retain their state.