witbitz-code 1.6.2__tar.gz → 1.6.3__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.
- {witbitz_code-1.6.2/src/witbitz_code.egg-info → witbitz_code-1.6.3}/PKG-INFO +1 -1
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/pyproject.toml +1 -1
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/__init__.py +1 -1
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/ui.py +6 -2
- {witbitz_code-1.6.2 → witbitz_code-1.6.3/src/witbitz_code.egg-info}/PKG-INFO +1 -1
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_ui.py +13 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/LICENSE +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/README.md +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/setup.cfg +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/__main__.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/_js.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/account.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/asks.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/attachments.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/auto.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/auto_runner.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/cli.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/codekeys.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/codetools.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/compress.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/computers.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/confidential.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/confidential_models.json +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/connector.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/devicelink.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/dirs.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/folders.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/gateway.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/icons/witbitz-code-wsl.ico +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/icons/witbitz-code.ico +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/keys.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/link.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/mkdir.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/models.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/net.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/offered_models.json +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/opencode_plugins/notes-init.md +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/opencode_plugins/witbitz-media-server.mjs +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/opencode_plugins/witbitz-notes.js +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/opencode_plugins/witbitz-progress.js +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/outputs.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/pair.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/pairings.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/payers.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/plugins.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/policy.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/ports.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/qr.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/receipt.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/relay.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/seen.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/tinfoil_read.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/tools_catalog.json +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/tools_probe.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/toolsetup.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/ui_static/app.css +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/ui_static/app.js +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/ui_static/index.html +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/uitools.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/uninstall.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/winagent.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/winbg.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/winconsole.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/wizard.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/wslstart.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code.egg-info/SOURCES.txt +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code.egg-info/dependency_links.txt +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code.egg-info/entry_points.txt +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code.egg-info/requires.txt +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code.egg-info/top_level.txt +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_asks.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_attachments.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_auto.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_cli.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_codekeys.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_codetools.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_confidential.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_connector_e2e.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_devicelink.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_dirs.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_files_and_compress.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_folders.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_outputs.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_pair_flows.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_plugins.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_policy.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_ports.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_ports_win.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_registry.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_relay_codec.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_setup.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_tools_probe.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_toolsetup.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_uitools.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_uninstall.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_winagent.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_winbg.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_winconsole.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_windows_files.py +0 -0
- {witbitz_code-1.6.2 → witbitz_code-1.6.3}/tests/test_wslstart.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "witbitz-code"
|
|
7
|
-
version = "1.6.
|
|
7
|
+
version = "1.6.3"
|
|
8
8
|
description = "Reach OpenCode on this computer from the Witbitz Spaces Code section, through an end-to-end sealed relay."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -63,11 +63,15 @@ def computer_label() -> dict:
|
|
|
63
63
|
def open_browser(url: str) -> bool:
|
|
64
64
|
"""WSL has no browser of its own: ask Windows (wslview, then cmd's start, then explorer)."""
|
|
65
65
|
if ports.on_wsl():
|
|
66
|
+
# WAIT for the hand-off (~0.4 s measured): a second copy started from the Start menu finds the first, opens its page
|
|
67
|
+
# and exits — and an opener still running then was cut off with it (the owner, 2026-10-09: "the wsl does not open
|
|
68
|
+
# anything"). From a Windows folder, or cmd says "UNC paths are not supported".
|
|
69
|
+
cwd = "/mnt/c" if os.path.isdir("/mnt/c") else None
|
|
66
70
|
for argv in (["wslview", url], ["cmd.exe", "/c", "start", "", url], ["explorer.exe", url]):
|
|
67
71
|
try:
|
|
68
|
-
subprocess.
|
|
72
|
+
subprocess.run(argv, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, cwd=cwd, timeout=15, check=False) # noqa: S603 — fixed argv, our own URL
|
|
69
73
|
return True
|
|
70
|
-
except OSError:
|
|
74
|
+
except (OSError, subprocess.SubprocessError):
|
|
71
75
|
continue
|
|
72
76
|
return False
|
|
73
77
|
try:
|
|
@@ -263,3 +263,16 @@ def test_quit_stops_serving_and_ends_the_manager():
|
|
|
263
263
|
await m.shutdown()
|
|
264
264
|
await srv.close()
|
|
265
265
|
run(go())
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def test_in_wsl_the_page_opener_is_waited_for(monkeypatch):
|
|
269
|
+
"""A second copy (the Start-menu entry) opens the first one's page and exits: an opener still running was cut off with
|
|
270
|
+
it (the owner, 2026-10-09: "the wsl does not open anything")."""
|
|
271
|
+
import subprocess as sp
|
|
272
|
+
calls = []
|
|
273
|
+
monkeypatch.setattr(ui.ports, "on_wsl", lambda: True)
|
|
274
|
+
monkeypatch.setattr(ui.subprocess, "run", lambda argv, **kw: calls.append((argv, kw)) or sp.CompletedProcess(argv, 0))
|
|
275
|
+
monkeypatch.setattr(ui.subprocess, "Popen", lambda *a, **k: (_ for _ in ()).throw(AssertionError("never fire-and-forget")))
|
|
276
|
+
assert ui.open_browser("http://127.0.0.1:4291/?t=x") is True
|
|
277
|
+
argv, kw = calls[0]
|
|
278
|
+
assert argv == ["wslview", "http://127.0.0.1:4291/?t=x"] and kw["timeout"] == 15
|
|
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
|
{witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/opencode_plugins/witbitz-media-server.mjs
RENAMED
|
File without changes
|
{witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/opencode_plugins/witbitz-notes.js
RENAMED
|
File without changes
|
{witbitz_code-1.6.2 → witbitz_code-1.6.3}/src/witbitz_code/opencode_plugins/witbitz-progress.js
RENAMED
|
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
|
|
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
|