Compare commits

..
2 Commits
Author SHA1 Message Date
dijunkun 2422071c8b [release] consolidate v1.5.1 release notes 2026-09-17 03:03:58 +08:00
dijunkun 1bfb08211f [release] simplify v1.5.1 release notes 2026-09-17 02:59:57 +08:00
2 changed files with 20 additions and 23 deletions
@@ -192,7 +192,7 @@ class Windows {
GetPrivacyWindowBand get_band_ = nullptr;
};
DWORD Run() {
DWORD WINAPI Run(void*) {
wchar_t bootstrap[256]{};
if (!GetEnvironmentVariableW(kPrivacyBandBootstrap, bootstrap, 256))
return ERROR_INVALID_PARAMETER;
@@ -239,8 +239,8 @@ DWORD Run() {
auto last_check = GetTickCount64();
HANDLE watched[] = {parent, stop};
// Once enabled, retain surviving covers on a validation/layout fault.
// The parent releases privacy after reading the latched error. Only an
// explicit stop or parent death tears the remaining windows down.
// The parent pauses the session after reading the latched error. Only
// an explicit stop or parent death tears the remaining windows down.
while (initialized) {
const DWORD wait = MsgWaitForMultipleObjectsEx(
2, watched, 100, QS_ALLINPUT, MWMO_INPUTAVAILABLE);
@@ -273,26 +273,21 @@ DWORD Run() {
}
UnmapViewOfFile(shared);
for (HANDLE handle : handles) CloseHandle(handle);
// This module runs only in the dedicated process created for this session.
// Exit outside DllMain/loader lock, after HWND destruction on their UI
// thread.
ExitProcess(exit_code);
return exit_code;
}
void CALLBACK RunBeforeBrokerEntryPoint(ULONG_PTR) {
// The LoadLibraryW startup APC has returned, so the loader lock is no longer
// held. Own the primary thread until privacy stops, including startup errors.
// Never return into RuntimeBroker's COM server startup: an elevated launch
// can fail there with CO_E_WRONG_SERVER_IDENTITY and kill healthy covers.
ExitProcess(Run());
}
} // namespace
BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID) {
if (reason == DLL_PROCESS_ATTACH) {
module = instance;
// Loaded by the startup APC on our dedicated, suspended broker's primary
// thread. Queue the window loop after that APC instead of starting a worker
// alongside RuntimeBroker's own entry point. Do not run it under loader lock.
if (!QueueUserAPC(RunBeforeBrokerEntryPoint, GetCurrentThread(), 0))
return FALSE;
// Keep thread notifications enabled: this module uses the static CRT.
HANDLE thread = CreateThread(nullptr, 0, Run, nullptr, 0, nullptr);
if (!thread) return FALSE;
CloseHandle(thread);
}
return TRUE;
}
+9 -7
View File
@@ -1,10 +1,12 @@
# **更新内容**
1. 新增Windows、macOS与Linux X11隐私屏,支持遮蔽被控端本地画面、屏蔽本地键鼠输入,并在断开连接或异常时自动恢复;远程会话保持正常操作。
2. 增强桌面端与iOS端P2P穿透能力,优化UDP打洞、ICE连接建立与带宽恢复,支持使用服务器下发的连接配置,并改善加密传输与旧版客户端的兼容性。
3. 新增Windows屏幕采集方式设置,支持DXGI、WGC与GDI;修复锁屏、隐私屏及未连接物理鼠标时远程光标不可见、位置异常和拖动窗口时出现重复光标的问题。
4. 优化画面缩小时的显示清晰度、帧率与分辨率恢复,修复Windows、macOS与Linux系统音频采集可能卡住的问题,提升远程画面与音频的稳定性。
5. 修复Linux X11远程键盘输入与macOS窗口缩放光标识别,改进鼠标操作和光标状态传输的可靠性;优化控制栏提示、网络状态布局与加密状态显示,并修复部分平台的Dock及任务栏图标显示问题。
6. 完善iOS/iPadOS连接失败提示,保留密码错误、设备不可用和网络中断等具体原因,简化服务器配置并优化原生客户端构建流程。
1. 新增隐私屏,可隐藏被控电脑的本地画面并屏蔽键鼠,断开连接后自动恢复。
2. 提升远程直连成功率,改善网络波动时的连接稳定性。
3. Windows新增屏幕采集方式选择,方便适配不同设备。
4. 修复Windows锁屏、隐私模式等场景下光标消失、错位或重复的问题。
5. 提升远程画面缩小时的清晰度,改善画面流畅度。
6. 修复开启或关闭远程声音时可能卡住的问题。
7. 改进远程键鼠操作,修复Linux X11键盘输入异常和macOS窗口缩放光标显示问题。
8. 优化控制栏提示、网络状态和程序图标显示,新增连接加密状态。
PC客户端版本为v1.5.1,iOS/iPadOS客户端暂未上架App Store,目前仅支持作为控制端连接远端电脑。隐私屏需控制端与被控端均支持,暂不支持Web及旧版客户端;macOS要求14.0及以上版本,Linux仅支持X11会话。
PC客户端版本为v1.5.1。隐私屏支持Windows、macOS 14及以上版本和Linux X11,需连接双方均支持,暂不支持Web及旧版客户端。