CHANGELOG (Noctiluca Server)
This document describes the update history for Noctiluca Server.
Noctiluca Server 0.9.8
New Features
1. Clipboard Sharing Support
Starting from this version, clipboard sharing is now supported.
You can configure clipboard sharing settings in the 'Data Transfer' tab of the Settings screen.
Improvements
1. Fixed Remote Connection Failure When the Display Is Off
Remote connections are now possible even when the computer screen is locked or turned off.
Noctiluca Server 0.9.4
Improvements
1. Fixed Screen Freezing on Projection Session Reset
When a projection session was reset due to display resolution changes, the encoder parameters were also reset, but the encoder did not restart, causing the screen to freeze.
Now, when a session is reset, the encoder properly restarts and the screen continues to update.
2. Fixed Projection Not Working After Server Restart
Fixed an issue where the projection feature stopped working after restarting the server from the tray menu. Projection now works correctly even after a server restart.
3. Fixed Confusion Between DCI-P3 and Display P3
Fixed an issue where the Display P3 color space was incorrectly labeled as DCI-P3 in the code.
- Note: If you are using a Noctiluca Navigator build for Windows / Linux from before March 19, 2026, colors may be displayed inaccurately.
4. Added Tray Menu Icon
A lighthouse-shaped icon has been added to replace the previous 'NoctilucaServer' text tray icon. Noctiluca Server now takes up less space in the tray area.
Noctiluca Server 0.9.2
This update includes expanded quality settings, HiDPI support, improved certificate management, and numerous stability enhancements.
Important Notice
참고
Starting from this version, the certificate used for code signing has been changed.
Therefore, after updating to this version, you must manually remove and re-register the 'NoctilucaServer' app from each permission entry in System Settings -> Privacy & Security. (Simply toggling permissions off and on will not be sufficient.)
주의
In this version, the minimum required macOS version has been temporarily raised to 15 (Sequoia).
We plan to lower the requirement back to macOS 14 (Sonoma) once UI-related issues and the testing environment are sorted out.
Improvements
1. Expanded Quality Settings
- 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), Fixed Quality, or Lossless.
- Bitrate or quality factor can now be adjusted directly depending on the quality policy.
- The Opus audio codec bitrate (32–256kbps) can now be adjusted. (Bitrate negotiation is not yet supported.)
- Codec negotiation now better reflects the client's preferred options.
2. HiDPI Display Support
- Retina (HiDPI) displays can now be transmitted at their native resolution. Changing the display density setting to "Quality Priority" enables native resolution (2x) transmission.
- When a client has set a maximum resolution limit, the server scales the screen down to match while preserving the original aspect ratio.
- Display resolution calculation has been improved. Fixed an issue where resolution was incorrectly determined on some Retina displays.
3. Improved Certificate Management
- When a certificate issue occurs at server startup, an error message with recovery options is now shown in a dialog appropriate to the cause. You can instantly recover with the "Auto-configure Self-signed Certificate" button.
- When multiple server certificates with the same name exist in the Keychain, this is now detected with clear guidance provided, and all duplicate certificates are cleaned up when regenerating a self-signed certificate.
- Fixed an issue where personal authentication / digital signature certificates issued by the South Korean government were listed as candidates when selecting a certificate from the Keychain.
- Fixed a bug where unrelated items could occasionally be removed when attempting to reissue a self-signed certificate.
4. Input (HIDIO) Improvements
- macOS virtual desktop (Spaces) switching is now possible with Ctrl+Arrow keys.
- Function key-based system shortcuts such as Alt+F2 (e.g., Spotlight search) now work correctly.
- The Han/Eng key (KEY_HANGEUL) can now be used to switch the input source on the macOS host.
5. Improved Projection Stability
- Even if an error occurs during a projection session, the server no longer crashes and now informs the client of the failure reason.
- Projection session termination/failure reasons are now structured, allowing clients to display more accurate causes.
- Color gamut can now be determined even on monitors using custom color profiles, such as Apple's built-in displays. This is necessary for accurate color display when connecting remotely from non-macOS clients.
6. Security Enhancement
- Sensitive information such as passwords used during authentication is now immediately cleared from memory after transmission.
- The maximum number of concurrent connections can now be configured in settings, and excess connections are actually blocked.
7. UI Improvements
- The settings window has been redesigned with a sidebar navigation layout similar to macOS System Settings. Each item now displays an icon.
- An "About Noctiluca Server" entry has been added to the tray menu. You can check the app version, open-source licenses, license agreement, and more.
- Standard editing shortcuts such as Cmd+C, Cmd+V, Cmd+A now work in text input fields.
- A sheet has been added for viewing plugin bundle details (name, developer, license, provided features list, code signing status).
- Fixed an issue where the "Next" button state was displayed incorrectly after going back during onboarding.
- CJK input methods now automatically switch to the English keyboard when a password input field is focused.
9. User-Oriented Logging
- The logging system has been redesigned to perform 'user-oriented' event logging rather than 'developer-oriented' code behavior logging. From the code behavior-focused logs like below,
[2026-02-26T18:35:21.194+0900][app.noctiluca.server][ClientSession:INFO][SiriusKit/ClientSession.swift:64][clientTransportDidOpenRemoteStream(_:stream:)] ClientSession E5132EB1-65DB-48F4-821D-20C5909D1D9A received remote stream open.
[2026-02-26T18:35:21.194+0900][app.noctiluca.server][RemoteChannelOpenTask:INFO][SiriusKitCore/ChannelOpenTask.swift:95][perform(_:)] performing remote channel open task - waiting for channel start request
[2026-02-26T18:35:21.201+0900][app.noctiluca.server][ClientSession:INFO][SiriusKit/ClientSession.swift:64][clientTransportDidOpenRemoteStream(_:stream:)] ClientSession E5132EB1-65DB-48F4-821D-20C5909D1D9A received remote stream open.
[2026-02-26T18:35:21.201+0900][app.noctiluca.server][RemoteChannelOpenTask:INFO][SiriusKitCore/ChannelOpenTask.swift:95][perform(_:)] performing remote channel open task - waiting for channel start request
[2026-02-26T18:35:21.641+0900][app.noctiluca.server][ProjectionChannel:INFO][NoctilucaServer/ProjectionChannel.swift:443][handleAudioProjectionRequest(_:)] Negotiated audio codec: OPUS for session E6D2832A-99A2-4CEE-83FF-28D26C6DF050
[2026-02-26T18:35:21.642+0900][app.noctiluca.server][LocalChannelOpenTask:INFO][SiriusKitCore/ChannelOpenTask.swift:148][perform()] performing local channel open task - feature CDE57E7B-9528-47F7-8FEC-14389301A990, channel E6D2832A-99A2-4CEE-83FF-28D26C6DF050
-
It has been improved so you can see 'what actions the client performed and what requests it made upon connecting.'
Key events such as client connections, authentication attempts, disconnections, and channel opens/closes are now recorded in a structured format.
[2026-03-13 13:28:00] 223.39.85.136:55660 - - SiriusKit::ServerRoleMsQuicClientTransport CONNECTION_ACCEPTED - -
[2026-03-13 13:28:00] 223.39.85.136:55660 - - NoctilucaServer::ClientSession PHASE_SHIFT "phase=awaitingAuthentication" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:28:00] 223.39.85.136:55660 - - NoctilucaServer::ClientSession CLIENT_HELLO "protocol_version=1.0.0 agent_name=Noctiluca Navigator/0.9.1 (iPadOS) accepted=true" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:28:01] 223.39.85.136:55660 501 - NoctilucaServer::ClientSession AUTHENTICATE "method=app.noctiluca.server.auth.simple-password result=SUCCEED" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:28:01] 223.39.85.136:55660 501 - NoctilucaServer::ClientSession PHASE_SHIFT "phase=ready" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:28:01] 223.39.85.136:55660 501 - SiriusKit::ChannelManager CHANNEL_OPEN "direction=REMOTE channel_id=6ED785BE-FF96-49DD-9DEF-0CCBAD968BCD feature_id=405E6E75-8B64-4E8F-91FF-E9E5A2C6BC77 success=true" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:28:01] 223.39.85.136:55660 501 - SiriusKit::ChannelManager CHANNEL_OPEN "direction=REMOTE channel_id=94CC6659-4E4A-4CE1-9580-77BC52B1E449 feature_id=362A7AF0-2AC0-48DE-8F6B-5DB5D01E99DC success=true" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:28:01] 223.39.85.136:55660 501 - SiriusKit::ChannelManager CHANNEL_OPEN "direction=LOCAL channel_id=1E3DCC8B-C7CF-49F3-8E20-14192724DA57 feature_id=CDE57E7B-9528-47F7-8FEC-14389301A990 success=true" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:28:02] 223.39.85.136:55660 501 - SiriusKit::ChannelManager CHANNEL_OPEN "direction=LOCAL channel_id=F1F2310C-153C-45E1-9C69-812264728C73 feature_id=CDE57E7B-9528-47F7-8FEC-14389301A990 success=true" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:30:51] 223.39.85.136:55660 501 - SiriusKit::ServerRoleMsQuicClientTransport PEER_ADDRESS_CHANGED "from=223.39.85.136:55660 to=223.39.85.136:59683" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:31:55] 223.39.85.136:55660 501 - NoctilucaServer::ClientSession GOODBYE "code=0" "Noctiluca Navigator/0.9.1 (iPadOS)"
[2026-03-13 13:31:55] 223.39.85.136:55660 501 - SiriusKit::ServerRoleMsQuicClientTransport CONNECTION_SHUTDOWN - "Noctiluca Navigator/0.9.1 (iPadOS)"
- The event log format is as follows. (Heavily inspired by nginx's default logging format.)
[$TIMESTAMP] $REMOTE_ADDR $UID "$AUTH_ENTRY_IDENTIFIER" $CATEGORY $EVENT_NAME "[@ARGS]" "$AGENT"
10. Improved Connection Stability
- SiriusKit: Fixed a race condition that intermittently caused client connection failures in fast network environments.
- Error causes are now more granular when stream errors occur, making issue tracking easier.
