Prepare Wormhole 0.1.2 with registered settings and Ctrl shortcut

This commit is contained in:
Storm Dragon committed 2026-10-13 21:52:41 -04:00
1 parent 48f7d5262c
commit 9823d77b55
4 files changed
+23 -12

No files matched your search

+3 -3
View File
@@ -10,9 +10,9 @@ Repository material and both Tentacles are licensed under GPL-3.0-or-later; see
Tentacles, each in a direct top-level folder with its own `tentacle.toml`.
The catalog lists native packages for Linux amd64 and arm64. Hello World 0.1.0 is
available from the [release page](https://git.stormux.org/storm/cthulhu-tentacles/releases/tag/hello-world-v0.1.0).
Wormhole 0.1.1 requires the matching reader with interactive Tentacle support.
Its release archives are prepared for upload to the Wormhole release page;
installation becomes available once both archives have been uploaded.
Wormhole 0.1.2 requires the matching reader with interactive Tentacle settings support.
Native packages are available from the
[Wormhole release page](https://git.stormux.org/storm/cthulhu-tentacles/releases/tag/wormhole-v0.1.2).
Local build artifacts live in the ignored `dist/` directory.
The discovery source URL is
`https://git.stormux.org/storm/cthulhu-tentacles`.
+16 -4
View File
@@ -36,7 +36,7 @@ def check_metadata(repoRoot):
require(item["manifest"] == f"{name}/tentacle.toml", "Manifest path must match ID")
manifest = read_toml(repoRoot / item["manifest"])
require(manifest["format-version"] == 1 and manifest["id"] == name
and manifest["name"] and manifest["version"] == ("0.1.1" if name == "wormhole" else "0.1.0"), "Invalid Tentacle metadata")
and manifest["name"] and manifest["version"] == ("0.1.2" if name == "wormhole" else "0.1.0"), "Invalid Tentacle metadata")
expectedGrants = ["presentation"] + (["interaction"] if name == "wormhole" else [])
expectedProgram = "wormhole-tentacle" if name == "wormhole" else name
require(manifest["entry-point"] == [f"bin/{expectedProgram}"]
@@ -81,11 +81,14 @@ def check_registration(programPath, name):
require(registration["id"] == "1" and registration["result"]["session"] == "check",
"Invalid registration response")
commands = registration["result"]["commands"]
require(len(commands) == (7 if name == "wormhole" else 1) and commands[0]["id"] == name
require(len(commands) == (9 if name == "wormhole" else 1) and commands[0]["id"] == name
and commands[0]["presentation"] is True, "Unexpected commands or grant")
require(commands[0]["bindings"] == [
{"layout": layout, "scope": "global", "key": ("Cthulhu+Alt+Shift+W" if name == "wormhole" else "Cthulhu+Alt+Shift+H")}
{"layout": layout, "scope": "global", "key": ("Cthulhu+Ctrl+Shift+W" if name == "wormhole" else "Cthulhu+Alt+Shift+H")}
for layout in ("desktop", "laptop")], "Wrong suggested shortcut")
if name == "wormhole":
require([command["id"] for command in commands if command.get("settings")]
== ["settings"], "Wrong registered settings entry point")
process.stdin.close()
require(process.wait(timeout=5) == 0, "Tentacle did not stop cleanly on EOF")
finally:
@@ -109,6 +112,15 @@ def check_host(repoRoot, programPath, name):
or value == {"speech": "Magic wormhole is not installed",
"braille": "Magic wormhole is not installed", "uninterruptible": True},
"Host returned an unexpected Wormhole menu")
result = subprocess.run([
"go", "run", "./cmd/tentacle-host", "-presentation", "-interaction",
"-command", "settings", str(programPath),
], cwd=readerRoot, env=environment, capture_output=True, text=True,
timeout=60, check=True)
value = json.loads(result.stdout)
require(value.get("form", {}).get("title") == "Wormhole preferences"
and value.get("next") == "save-settings",
"Host returned an unexpected Wormhole settings form")
return
require(json.loads(result.stdout) == {
"speech": "Hello world!", "braille": "Hello world!", "uninterruptible": True,
@@ -123,7 +135,7 @@ def main():
programPath = repoRoot / name / "bin" / binary
check_registration(programPath, name)
check_host(repoRoot, programPath, name)
print("Repository metadata, shortcut registration and actual-host greeting/menu checks passed.")
print("Repository metadata, shortcut/settings registration and actual-host greeting/menu/settings checks passed.")
if __name__ == "__main__":
+3 -4
View File
@@ -8,7 +8,7 @@ With a reader supporting Tentacle settings registration, global Preferences →
Tentacles → select Wormhole → Settings opens **Wormhole preferences** directly.
Save persists the two checkboxes and returns to reader preferences; Escape
discards the form's edits. This entry point works without the Wormhole CLI.
Rebuild both the reader and Tentacle to obtain settings registration and the
Use Wormhole 0.1.2 and rebuild the reader to obtain settings registration and the
Ctrl+Shift shortcut; the published 0.1.1 binary uses Alt+Shift and has no
registered settings entry point.
@@ -110,9 +110,8 @@ interaction = true
The normal installation path is global Preferences → Tentacles → Add repository
with `https://git.stormux.org/storm/cthulhu-tentacles`, followed by selecting
Wormhole and Install and enable. Version 0.1.1 downloads use the normal
`wormhole-v0.1.1` release attachments. Installation becomes available after the
prepared archives are uploaded. The manifest
Wormhole and Install and enable. Version 0.1.2 downloads use the normal
[`wormhole-v0.1.2` release attachments](https://git.stormux.org/storm/cthulhu-tentacles/releases/tag/wormhole-v0.1.2). The manifest
requests presentation and interaction permissions. Local metadata above is an
optional development path.
Prepare amd64/arm64 archives with
+1 -1
View File
@@ -2,7 +2,7 @@ format-version = 1
id = "wormhole"
name = "Wormhole"
description = "Send a focused line or clipboard item and receive files, folders, and text with Magic Wormhole."
version = "0.1.1"
version = "0.1.2"
authors = ["Storm Dragon"]
license = "GPL-3.0-or-later"
source = "https://git.stormux.org/storm/cthulhu-tentacles"