remotedesktop 0.11.0__tar.gz → 0.12.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/PKG-INFO +1 -1
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/__init__.py +1 -1
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/client.py +4 -1
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/performance.py +13 -3
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/server.py +4 -1
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_performance.py +16 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/.github/workflows/ci.yml +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/.gitignore +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/CLAUDE.md +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/LICENSE +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/pyproject.toml +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/readme.md +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/run_claude.bat +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/run_client.bat +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/run_server.bat +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/scripts/make_coverage_badge.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/scripts/make_venv.bat +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/autostart.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/clipboard.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/config.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/db.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/discovery.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/frames.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/icon.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/input_injection.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/inventory.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/logs.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/modal_loop.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/preferences.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/protocol.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/sharing.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/tls.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/viewer.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/src/remotedesktop/window_state.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/conftest.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_autostart.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_client_window.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_clipboard.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_config.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_discovery.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_frames.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_icon.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_input.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_input_injection.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_inventory.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_logs.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_modal_loop.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_preferences.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_protocol.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_server_window.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_sharing.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_smoke.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_tls.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/tests/test_window_state.py +0 -0
- {remotedesktop-0.11.0 → remotedesktop-0.12.0}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: remotedesktop
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.0
|
|
4
4
|
Summary: Remote desktop client/server for Windows computers on the same LAN, with autodiscovery. Provides screen, keyboard, mouse, and clipboard sharing without RDP or Microsoft authentication.
|
|
5
5
|
Author-email: James Abel <j@abel.co>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -110,7 +110,10 @@ class ClientWindow(QMainWindow):
|
|
|
110
110
|
InventoryTab(self.inventory, "Forget server", self._forget_server),
|
|
111
111
|
"Servers on LAN",
|
|
112
112
|
)
|
|
113
|
-
tabs.addTab(
|
|
113
|
+
tabs.addTab(
|
|
114
|
+
PerformanceTab(self.performance, local="client", remote="server"),
|
|
115
|
+
"Performance",
|
|
116
|
+
)
|
|
114
117
|
self.setCentralWidget(tabs)
|
|
115
118
|
|
|
116
119
|
self.discovery_panel = DiscoveryPanel(self)
|
|
@@ -418,7 +418,14 @@ class PerformanceTab(QWidget):
|
|
|
418
418
|
monitor regardless, but a background tab schedules zero paint work.
|
|
419
419
|
"""
|
|
420
420
|
|
|
421
|
-
def __init__(
|
|
421
|
+
def __init__(
|
|
422
|
+
self,
|
|
423
|
+
monitor: PerformanceMonitor,
|
|
424
|
+
*,
|
|
425
|
+
local: str = "client",
|
|
426
|
+
remote: str = "server",
|
|
427
|
+
parent: QWidget | None = None,
|
|
428
|
+
) -> None:
|
|
422
429
|
super().__init__(parent)
|
|
423
430
|
self._monitor = monitor
|
|
424
431
|
self.bandwidth_graph = GraphWidget(
|
|
@@ -431,11 +438,14 @@ class PerformanceTab(QWidget):
|
|
|
431
438
|
format_rate,
|
|
432
439
|
tick_unit=rate_unit,
|
|
433
440
|
)
|
|
441
|
+
# Each line is named for the side that sent the ping, so the same
|
|
442
|
+
# line has the same name in both apps ("client → server" is the
|
|
443
|
+
# client-measured round trip on either end).
|
|
434
444
|
self.ping_graph = GraphWidget(
|
|
435
445
|
"Round-trip time",
|
|
436
446
|
[
|
|
437
|
-
("
|
|
438
|
-
("
|
|
447
|
+
(f"{local} → {remote}", QColor("#ff9800"), monitor.rtt_ms),
|
|
448
|
+
(f"{remote} → {local}", QColor("#9c27b0"), monitor.peer_rtt_ms),
|
|
439
449
|
],
|
|
440
450
|
monitor,
|
|
441
451
|
format_ms,
|
|
@@ -108,7 +108,10 @@ class ServerWindow(QMainWindow):
|
|
|
108
108
|
InventoryTab(self.inventory, "Revoke access", self._revoke_client),
|
|
109
109
|
"Clients on LAN",
|
|
110
110
|
)
|
|
111
|
-
tabs.addTab(
|
|
111
|
+
tabs.addTab(
|
|
112
|
+
PerformanceTab(self.performance, local="server", remote="client"),
|
|
113
|
+
"Performance",
|
|
114
|
+
)
|
|
112
115
|
tabs.addTab(log_tab, "Connection log")
|
|
113
116
|
tabs.addTab(PreferencesTab(self._settings, self.performance), "Preferences")
|
|
114
117
|
self.setCentralWidget(tabs)
|
|
@@ -351,6 +351,22 @@ def test_rate_unit_matches_format_rate_unit():
|
|
|
351
351
|
assert unit * nice_ceiling(70000.0 / unit) == 100.0 * 1024.0
|
|
352
352
|
|
|
353
353
|
|
|
354
|
+
def test_rtt_lines_are_named_for_the_side_that_pings(qapp):
|
|
355
|
+
monitor = PerformanceMonitor()
|
|
356
|
+
client_tab = PerformanceTab(monitor, local="client", remote="server")
|
|
357
|
+
server_tab = PerformanceTab(monitor, local="server", remote="client")
|
|
358
|
+
# This side's own measurement (rtt_ms) is listed first; the same physical
|
|
359
|
+
# measurement carries the same name in both apps.
|
|
360
|
+
assert [label for label, _c, series in client_tab.ping_graph._series] == [
|
|
361
|
+
"client → server",
|
|
362
|
+
"server → client",
|
|
363
|
+
]
|
|
364
|
+
assert [label for label, _c, series in server_tab.ping_graph._series] == [
|
|
365
|
+
"server → client",
|
|
366
|
+
"client → server",
|
|
367
|
+
]
|
|
368
|
+
|
|
369
|
+
|
|
354
370
|
def test_graph_widgets_render_headless(qapp):
|
|
355
371
|
seeded = PerformanceMonitor()
|
|
356
372
|
seeded.send_bps.add(100.0)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|