Release v0.6.57: multi-PC input, shared clipboard and resilient Settings Save
This commit is contained in:
1 parent
82292c8a7e
commit
5de010ee44
39 files changed
+1707
-312
No files matched your search
@@ -114,6 +114,54 @@ int main(int argc,char **argv)
|
||||
check(request(restored,{{"action","status"}})["peers"].empty(),"forget removes offline pair");
|
||||
check(!request(restored,{{"action","status"}}).at("shareInput").get<bool>(),"forgetting the input peer revokes persisted input permission");
|
||||
}
|
||||
if(argc>1&&std::string(argv[1])=="--network")
|
||||
{
|
||||
auto saved=Json::parse(unprotect(readFile(root/L"lan-pairing.bin",256*1024)));
|
||||
saved["trusted"][b]={{"name","Restart peer"},{"key",left.derived}};
|
||||
saved["enabled"]=true;saved["shareInput"]=true;saved["inputPeer"]=b;saved["inputEdge"]=3;
|
||||
auto text=saved.dump();atomicWrite(root/L"lan-pairing.bin",protect(Bytes(text.begin(),text.end())));
|
||||
for(int restart=0;restart<2;++restart)
|
||||
{
|
||||
LanService restored(root);Sleep(100);
|
||||
auto state=request(restored,{{"action","status"}});
|
||||
check(restored.inputEnabled()&&state.at("enabled")==true&&state.at("inputPeer")==b&&state.at("inputEdge")==3,
|
||||
"restart restores discovery, pairing, input permission and screen edge without opening settings");
|
||||
}
|
||||
}
|
||||
{
|
||||
auto folder=root/L"layout";std::filesystem::create_directories(folder);
|
||||
auto saved=Json::parse(unprotect(readFile(root/L"lan-pairing.bin",256*1024)));
|
||||
saved["enabled"]=false;saved["shareInput"]=false;saved["inputPeer"]=b;saved["inputEdge"]=1;saved.erase("positions");
|
||||
saved["trusted"]={{b,{{"name","Right PC"},{"key",left.derived}}},{c,{{"name","Third PC"},{"key",left.derived}}}};
|
||||
auto text=saved.dump();atomicWrite(folder/L"lan-pairing.bin",protect(Bytes(text.begin(),text.end())));
|
||||
{
|
||||
LanService layout(folder);auto state=request(layout,{{"action","status"}});
|
||||
check(state["positions"][b]==Json::array({1,0}),"legacy side migrates to monitor grid");
|
||||
check(state["positions"].size()==2&&state["positions"][c]!=state["positions"][b],"three-PC layout has unique cells");
|
||||
request(layout,{{"action","position"},{"peer",c},{"x",-1},{"y",0}});
|
||||
request(layout,{{"action","position"},{"peer",b},{"x",0},{"y",-1}});
|
||||
rejects([&]{request(layout,{{"action","position"},{"peer",c},{"x",0},{"y",-1}});},"occupied cell rejected");
|
||||
rejects([&]{request(layout,{{"action","position"},{"peer",c},{"x",0},{"y",0}});},"local monitor cell protected");
|
||||
rejects([&]{request(layout,{{"action","position"},{"peer",c},{"x",9},{"y",0}});},"out-of-grid position rejected");
|
||||
check(request(layout,{{"action","status"}})["positions"][c]==Json::array({-1,0}),"failed drops preserve previous position");
|
||||
}
|
||||
{
|
||||
LanService layout(folder);auto state=request(layout,{{"action","status"}});
|
||||
check(state["positions"][b]==Json::array({0,-1})&&state["positions"][c]==Json::array({-1,0}),"all monitor positions survive restart");
|
||||
check(state["inputEdge"]==2,"active peer direction follows monitor position");
|
||||
if(argc>1&&std::string(argv[1])=="--network"){
|
||||
request(layout,{{"action","enable"},{"enabled",true}});
|
||||
request(layout,{{"action","input"},{"enabled",true}});
|
||||
request(layout,{{"action","position"},{"peer",c},{"x",0},{"y",-2}});
|
||||
auto multi=request(layout,{{"action","status"}});
|
||||
check(multi["shareInput"]==true&&multi["positions"][c]==Json::array({0,-2}),"multi-PC sharing remains enabled for a chained nonadjacent destination");
|
||||
request(layout,{{"action","forget"},{"peer",b}});
|
||||
check(request(layout,{{"action","status"}})["shareInput"]==true,"forgetting legacy selected pair keeps remaining pairs enabled");
|
||||
}
|
||||
request(layout,{{"action","forget"},{"peer",c}});
|
||||
check(!request(layout,{{"action","status"}})["positions"].contains(c),"forgetting pair removes its monitor");
|
||||
}
|
||||
}
|
||||
std::cout<<"Passed "<<passed<<" LAN discovery/pairing checks\n";
|
||||
}
|
||||
catch(const std::exception &e){std::cerr<<"FAIL: "<<e.what()<<'\n';return 1;}
|
||||
|
||||
Reference in new issue
Block a user