CHANGELOG (Noctiluca Navigator macOS, iOS)

This document describes the update history for Noctiluca Navigator for macOS / iOS.

Noctiluca Navigator 0.9.10

This update is centered around stability improvements. NoctilucaClient / SiriusKit has been migrated to Swift 6, eliminating numerous data races at their root. At the same time, new features such as the VP8 codec, display layout configuration, and detached secondary displays on iPad have been added.

Important Notice

주의

Starting with this version, the tiling image codecs (MJPG / ZRLE / WebP) have been removed.

Their bandwidth efficiency was poor, and we have determined that the newly added VP8 codec is a sufficient replacement.

If these codecs were registered as preferred options in your previous settings, they will be cleaned up automatically.

New Features

1. VP8 Codec Support

  • A libvpx-based VP8 decoder has been added. If the host is running 0.9.10 or later, VP8 streams can now be received and decoded.

  • When the host's macOS is running in a virtual machine (e.g., UTM) environment, where hardware encoders are unavailable, you can still get stable picture quality.

2. Display Layout / Resolution Configuration UI

  • You can now change the host's display layout (arrangement) / resolution / primary display directly from the client.

  • In the display switcher sheet, you can edit the display arrangement using a graphical interface.

3. Virtual Display Creation / Removal UI

  • A UI for creating virtual displays on the host has been added.

  • Virtual displays are automatically cleaned up when the remote session ends.

4. iPad: Detached Secondary Display Window (Experimental)

  • In iPadOS multitasking environments, the host's secondary display can now be detached into a separate window (UIWindowScene).

5. macOS: Redirect Known Shortcuts to the Remote Host

  • Some system shortcuts (e.g., Cmd+Tab) can now be toggled from the menu to be forwarded to the remote host.

Stability / Swift 6 Migration

1. Swift 6 Migration Complete

  • The client has been migrated to Swift 6 strict concurrency mode. The compiler can now statically detect data races, eliminating crashes that previously occurred sporadically.

  • The client's state model has been transitioned to Swift Observation. UI updates are now more accurate and efficient.

  • Memory ordering on atomic operations has been strengthened to a level that guarantees happens-before semantics.

2. Automatic Recovery on Display Disconnection

  • When the host's display connection is lost during projection, the client now automatically attempts to recover.

  • If recovery fails, the client falls back to the primary display automatically.

3. Display Switching Stability

  • Fixed an issue where the macOS client could silent exit when switching displays.

  • Fixed an issue where the previous projection session could leak under certain conditions when switching displays.

  • Blocked a race where concurrent subscribe requests for the same displayID would create duplicate sessions.

Improvements

1. macOS: Mouse Acceleration Profile in Exclusive Mode

  • Improved the previously poor mouse feel in exclusive mode.

2. macOS: Unified Exclusive Mode Toggle Shortcut

  • The exclusive mode toggle shortcut has been unified into a bidirectional toggle. The same shortcut now both enters and exits the mode.

  • Fixed issues where the trigger key was incorrectly forwarded to the host during the mode switch, and where keyUp events were spuriously emitted right after switching modes.

3. Improved Mouse Behavior with Multiple Displays

  • The absolute coordinate clamp on the mouse has been removed to allow dragging across displays. With multiple displays spawned as separate windows, you can now drag between them naturally.

4. Improved Termination Reason Display

  • When the server terminates a session due to a fatal error, the client now receives the termination reason (ServerNotice) and displays it to the user.

  • When the client itself detects a protocol violation such as exceeding the frame size limit (16 MiB), it also triggers an explicit termination sequence.

Bug Fixes

1. iOS: Fixed Crash When Disconnecting from a Multi-Display Session

  • Fixed a crash caused by an IUO unwrap of the keyboard host object when ending a multi-display session on iOS.

2. Strengthened Clipboard / File Transfer Security

  • A number of vulnerabilities related to clipboard / file transfer have been fixed.

Removed

1. Tiling Image Codec Decoders (MJPG / ZRLE / WebP) Removed

  • The decoders for the above codecs, along with the related tile composition infrastructure, have all been removed.

  • Please use VP8 as the replacement codec.

Noctiluca Navigator 0.9.9

Improvements

1. Improved File Transfer Stability

  • Fixed a crash that occurred when a file transfer failed.

  • Special files (such as block devices) are now rejected from transfer.

2. Improved Third-Party Server Compatibility

Although the Sirius protocol specifies support for both AVCC and Annex-B bitstream formats, Noctiluca Navigator was not handling them correctly. This has been fixed.

3. Fixed Audio Projection Being Unconditionally Enabled

The user's audio projection preference is now properly respected.

4. Improved Behavior for Blocked Certificates

A warning dialog is now shown when connecting to a server that uses a certificate (leaf / intermediate) configured as untrusted in macOS's trust store.

Noctiluca Navigator 0.9.8

New Features

1. Clipboard Sharing Support

Starting with this version, clipboard sharing is now supported.

You can configure clipboard sharing settings in the 'Transfer' tab of each computer's connection settings screen.

Noctiluca Navigator 0.9.7

Improvements

1. Fixed Intermittent Deadlock When Disconnecting from a Session

Fixed an issue where the app could become unresponsive due to an intermittent deadlock when disconnecting from a remote session.

Fixed an issue where a circular reference involving CADisplayLink caused related objects to remain in memory after disconnecting from a session.

Noctiluca Navigator 0.9.6

This update focuses on improving the stability of the projection feature.

New Features

1. Metal Renderer Implementation and Sharpening Filter (CAS)

  • An experimental Metal renderer implementation has been added. You can now select the renderer implementation from the 'Projection Settings' tab.

  • A Contrast Adaptive Sharpening (CAS) filter has been added. Screen quality can be significantly improved in non-Retina / non-HiDPI remote desktop sessions.

    The CAS filter is available when using the Metal renderer.

Improvements

1. Fixed Screen Going Black When Switching Displays

Fixed an issue where the screen would frequently go black and freeze when switching displays.

2. macOS: Improved Mouse Scope Handling When Spawning Multiple Displays as Separate Windows

Fixed an issue where mouse scope was not handled correctly when spawning multiple displays as separate windows, causing mouse input to be sent to an entirely different display. Mouse input is now correctly delivered to each display window.

3. Fixed Potential Crash Due to Data Race in Mouse Cursor Handling

Fixed an issue where a data race in mouse cursor handling could cause the app to crash unexpectedly.

4. Fixed Projection Channel Rapidly Opening and Closing Repeatedly

Fixed an issue where the projection channel could rapidly open and close repeatedly under certain conditions. This resolves excessive CPU usage and battery drain that could result from this behavior.

Noctiluca Navigator 0.9.4

This update focuses on improving the stability of the projection feature.

Improvements

1. Fixed Screen Freezing on Projection Session Reset

When a projection session was reset due to changes in the host's display resolution, the decoder was also reset, but it did not restart, causing the screen to freeze.

Now, when a session is reset, the decoder properly restarts and the screen continues to update.

Noctiluca Navigator 0.9.2

This update includes projection performance improvements, expanded quality settings, HiDPI support, and numerous stability enhancements.

Improvements

1. Expanded Quality Settings / HiDPI (Retina) Resolution Support

  • The codec settings sheet has been split into 'Basic' and 'Advanced' tabs.
  • You can now choose a quality policy: Auto, VBR (Variable Bitrate), CBR (Constant Bitrate), or Lossless.
  • Bitrate can now be adjusted directly. Depending on the quality policy, you can set a maximum bitrate or target bitrate.
  • Maximum resolution can now be capped (480p–4K or unlimited).
  • You can now receive the server's Retina (HiDPI) display at its native resolution.
  • Fixed an issue where the remote cursor appeared too small during HiDPI projection.

2. Improved Projection Performance for Tiling Codecs

  • When using tile codecs (WebP, ZRLE, MJPG), rendering has been switched to direct Metal-based rendering. This eliminates unnecessary pixel buffer copies compared to the previous AVSampleBufferDisplayLayer path, resulting in faster rendering.
  • Tile decoding is now processed in parallel, improving decoding speed in multi-core environments.

3. Cursor Size Scale Setting

  • A setting has been added to adjust the display size of the remote cursor within a range of 0.5x–1.5x.

4. Automatic Projection Session Recovery

  • When a projection session terminates unexpectedly due to system errors, the client now automatically re-requests projection (up to 3 times).
  • This feature is especially helpful on hosts affected by the issue where ScreenCaptureKit throws an error and stops when it determines disk space is insufficient (FB13303206).

5. Input Settings Fixes

  • Fixed an issue where mouse button inversion, scroll inversion, and scroll scale settings were not applied immediately after changes.
  • Fixed an issue where the mouse cursor was not hidden when entering Exclusive mode.

6. Connection Stability Improvement

  • The connection is now considered disconnected after 3 consecutive server response failures. This reduces unnecessary disconnections caused by momentary delays.

7. UI Improvements

  • Fixed jittering when dragging the performance overlay.
  • macOS: Rounded corners are now applied to sheet backgrounds (dimming window).
  • macOS: A minimum window size is now enforced for the main window. The window can no longer be resized excessively small.
  • iOS: Fixed an issue where the projection screen background appeared blue.
  • iOS: Fixed an issue where the projection screen would disappear during iPad multitasking (Slide Over, etc.).
  • iOS: Fixed an issue where section buttons in the settings screen appeared blue.

8. Security Enhancement

  • Sensitive information such as passwords entered during authentication is now immediately cleared from memory after transmission.

9. Expanded Localization

  • Many hardcoded Korean strings have been converted to localization keys.
  • Translation corrections have been made, including certificate warning text and Japanese particle errors.
  • CJK input methods now automatically switch to the ABC keyboard when a password input field is focused.

Newly Discovered Bugs

  • An issue where the user is silently navigated back to the main screen upon connection failure, which can be confusing.

  • An issue where no indication is shown when an invalid SSH key is registered as an authentication method, which can be confusing.