Skip to content

Fulgur v0.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Jun 07:37

This new releases introduces two new features: CSV mode that shows CSV files in a table format, and LOG mode to display log files with real time updates. Otherwise, big focus on making Fulgur faster and more reliable.

New features & functional improvements

  • CSV files can now be opened and edited in a dedicated table view. Cells are editable in place, and changes are written back to the underlying file, so Fulgur doubles as a lightweight spreadsheet for delimited data without leaving the editor.
  • Log files now have first-class support with a tailored log view supporting auto follow/real time updates, making it easier to read and follow .log output inside Fulgur.
  • A new "Copy path" entry has been added to the tab context menu, copying the full path of the file in that tab to the clipboard.
  • Connections in the servers list can now be activated and deactivated directly from the list, without editing the profile.
  • The servers table now displays the Fulgurant version reported by each connected server.
  • Fulgur now warns about version mismatches with Fulgurant: it tells you when your Fulgurant is older than this version of Fulgur prefers, and when Fulgurant requires a newer Fulgur than you are running.
  • Double-clicking an empty area of the tab bar opens a new tab.
  • Opening a file now reuses a trailing empty tab instead of always creating a new one, keeping the tab bar tidy.
  • Incoming share failures are now surfaced as notifications and de-duplicated, so a repeated reception problem no longer floods you with identical messages.
  • The sync engine gained the v2 read/ack share flow for Fulgurant 0.8.0+, acknowledging shares after they are successfully read so the server can release them.
  • Fulgur now warns before saving a profile that uses an unencrypted http:// URL.

Performance & technical improvements

  • Incoming shares are now decrypted off the UI thread, keeping the interface responsive while large shared files are processed.
  • File reads and decoding now happen off the UI thread, so opening large files no longer blocks the editor.
  • Non-critical application state saves now run off the UI thread.
  • The v2 "begin share" fetch is now bounded by a fixed worker pool, capping concurrent downloads instead of spawning unbounded work.
  • SSE channels are now owned in shared state so any open window can drain them, improving reliability across multiple windows.

Security

  • Shared file names are now sanitized at the fetch chokepoint, preventing malicious or malformed names from escaping their intended directory.
  • Device and share response bodies are now size-limited, and per-id share fetches are capped to the server's maximum file size, guarding against oversized or hostile responses.
  • SSH passwords are now wrapped in Zeroizing at the point of read so they are scrubbed from memory after use.
  • Unresolved known_hosts home paths are now handled more conservatively to avoid weakening host-key verification.
  • The keychain mutex now uses parking_lot to avoid poisoning on panic.
  • Email addresses in settings are validated more strictly, rejecting malformed input.
  • Saving now re-encodes content in the file's original encoding and guards against silently corrupting binary or lossily-decoded files.
  • Bumped memmap2 to address RUSTSEC-2026-0186.

Bug fixes

  • Files are now opened, saved, and resolved by stable tab id, fixing several cases where Save As, conflict dialogs, and "close tabs to the left" could act on the wrong tab after the tab order changed.
  • Saving now preserves file permissions and symlinks, and canonicalizes paths at the open and Save As boundaries.
  • On Windows, atomic writes now resolve the target per platform to avoid a rename race.
  • The file watcher no longer marks an open file as modified when it is deleted externally, re-watches inode-based backends after an atomic save, and times out pending rename events to avoid stale mis-pairing.
  • Search no longer corrupts text: case-insensitive match offsets are mapped back to the original text, and match offsets are recomputed before a replace.
  • The CSV table view no longer drops or wipes buffer data.
  • Cross-window tab activation now goes through a single activation path, and window focus is tracked by the OS active state rather than render order.
  • Editor entities are re-subscribed after a content rebuild, fixing stale event wiring.
  • The SSE reader now caps its line buffer and decodes UTF-8 safely, and reconnect backoff sleeps are now interruptible on shutdown.
  • Opening a file that is already open now prompts before reloading a modified tab.
  • Share-related fixes: failed shares are requeued on transient decrypt/keychain errors, share-worker panics report their real payload, the share sheet notifies instead of failing silently on early return, and the redundant cancel-share button was removed.
  • Cancelling a profile edit now rolls back the test-connection device key.
  • The jump-to-line dialog cleanup no longer closes unrelated dialogs.

Full Changelog: v0.8.0...v0.9.0