@huynle/hub 0.8.5 → 0.8.6

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.8.6
4
+
5
+ A Windows fix release: OpenCode with the hub plugin no longer flashes a console window every few seconds on Windows,
6
+ and the installer ends with what is left to do. Machines pick up the fixed plugin when OpenCode restarts. No migration
7
+ is needed.
8
+
9
+ ### Fixes
10
+ - **Windows: no more flashing console window while OpenCode runs.** The hub plugin polls Herdr (`herdr agent list`)
11
+ every few seconds; on Windows each poll opened a console window for a moment. It and the plugin's local hub now
12
+ start hidden (`windowsHide`).
13
+ - **The installer's last line says what is left** when the machine is set up but not ready yet: usually start
14
+ OpenCode and keep it open so the machine shows online (it read like a failure before).
15
+
3
16
  ## 0.8.5
4
17
 
5
18
  Set up Hub on a machine in one line. The console's new **Set up Hub on a machine** (avatar menu, Settings → Machines
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "description": "Hub: a harness-agnostic central hub your AI agent harnesses connect to (OpenCode first). Follow, steer and stop sessions from your phone or browser, with notifications, optional hands-free Voice and a self-hostable server.",
5
5
  "license": "MIT",
6
6
  "author": "Huy Le",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-claude-code",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "The Claude Code hooks spoke: per-user daemon, hook bridge, plugin dir, `hub claude` wrapper and daemon-backed MCP server (internal; shipped inside @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -7,7 +7,7 @@ import { createInterface } from "readline";
7
7
  // packages/cli/package.json
8
8
  var package_default = {
9
9
  name: "@huynle/hub-cli",
10
- version: "0.8.5",
10
+ version: "0.8.6",
11
11
  private: true,
12
12
  description: "The hub CLI (`hub` / `hubctl`) for agents and scripts (internal; bundled into @huynle/hub, not published on its own).",
13
13
  license: "MIT",
@@ -8945,7 +8945,7 @@ import { arch as osArch, platform as osPlatform } from "node:os";
8945
8945
  // packages/node/package.json
8946
8946
  var package_default2 = {
8947
8947
  name: "@huynle/hub-node",
8948
- version: "0.8.5",
8948
+ version: "0.8.6",
8949
8949
  private: true,
8950
8950
  description: "`hub node`: the per-machine daemon that prepares, collects and cleans up launch workspaces (internal; shipped inside @huynle/hub, not published on its own).",
8951
8951
  license: "MIT",
@@ -10037,7 +10037,7 @@ import path14 from "node:path";
10037
10037
  // packages/runtime-openshell/package.json
10038
10038
  var package_default3 = {
10039
10039
  name: "@huynle/hub-runtime-openshell",
10040
- version: "0.8.5",
10040
+ version: "0.8.6",
10041
10041
  private: true,
10042
10042
  description: "The `openshell` runtime of `hub node`: launches in NVIDIA OpenShell sandboxes, driven through the openshell CLI (internal; shipped inside @huynle/hub, not published on its own).",
10043
10043
  license: "MIT",
@@ -13721,7 +13721,7 @@ import path23 from "node:path";
13721
13721
  // packages/claude-code/package.json
13722
13722
  var package_default4 = {
13723
13723
  name: "@huynle/hub-claude-code",
13724
- version: "0.8.5",
13724
+ version: "0.8.6",
13725
13725
  private: true,
13726
13726
  description: "The Claude Code hooks spoke: per-user daemon, hook bridge, plugin dir, `hub claude` wrapper and daemon-backed MCP server (internal; shipped inside @huynle/hub, not published on its own).",
13727
13727
  license: "MIT",
@@ -14010,7 +14010,7 @@ import path26 from "node:path";
14010
14010
  // packages/preset/package.json
14011
14011
  var package_default5 = {
14012
14012
  name: "@huynle/hub-preset",
14013
- version: "0.8.5",
14013
+ version: "0.8.6",
14014
14014
  private: true,
14015
14015
  description: "The preset spoke: drives a harness without a spoke of its own through a terminal pane (tmux), described by a data-only preset; official presets in presets/ (internal; shipped inside @huynle/hub, not published on its own).",
14016
14016
  license: "MIT",
@@ -14535,7 +14535,7 @@ import { openSync as openSync6, closeSync as closeSync6, readFileSync as readFil
14535
14535
  // packages/codex/package.json
14536
14536
  var package_default6 = {
14537
14537
  name: "@huynle/hub-codex",
14538
- version: "0.8.5",
14538
+ version: "0.8.6",
14539
14539
  private: true,
14540
14540
  description: "The Codex app-server spoke: attaches to Codex's app-server (its own over stdio, and the shared daemon's socket when present), and the `hub codex` wrapper (internal; shipped inside @huynle/hub, not published on its own).",
14541
14541
  license: "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-cli",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "The hub CLI (`hub` / `hubctl`) for agents and scripts (internal; bundled into @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-codex",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "The Codex app-server spoke: attaches to Codex's app-server (its own over stdio, and the shared daemon's socket when present), and the `hub codex` wrapper (internal; shipped inside @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-node",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "`hub node`: the per-machine daemon that prepares, collects and cleans up launch workspaces (internal; shipped inside @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-preset",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "The preset spoke: drives a harness without a spoke of its own through a terminal pane (tmux), described by a data-only preset; official presets in presets/ (internal; shipped inside @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-protocol",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "Hub ↔ spoke wire protocol (internal; shipped inside @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-runtime-openshell",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "The `openshell` runtime of `hub node`: launches in NVIDIA OpenShell sandboxes, driven through the openshell CLI (internal; shipped inside @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-runtime-sdk",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "The Runtime interface `hub node` runtimes implement (internal; shipped inside @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-sdk",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "Typed client for the hub's /api/agent (internal; shipped inside @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huynle/hub-spoke-sdk",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "private": true,
5
5
  "description": "Harness-neutral spoke building blocks: hub connection, enrollment, tokens, idempotent deliver, prompt references, HarnessSpoke (internal; shipped inside @huynle/hub, not published on its own).",
6
6
  "license": "MIT",
@@ -335,7 +335,7 @@ function Invoke-HubSetup {
335
335
  $rc = Invoke-HubTool @('setup', 'verify', '--profile', $SetupProfile)
336
336
  switch ($rc) {
337
337
  0 { Write-HubSay "done: this machine is set up for $HubUrl" 'Green' }
338
- 15 { Write-HubSay 'installed, not ready yet: finish the next steps above, then check with: hubctl setup verify' 'Yellow' }
338
+ 15 { Write-HubSay "set up for $HubUrl; to finish, do the next steps above (usually: start OpenCode with 'opencode' and keep it open, so this machine shows online), then check with: hubctl setup verify" 'Cyan' }
339
339
  default { throw "setup verify failed (hubctl exit $rc)" }
340
340
  }
341
341
  } catch {
@@ -257,7 +257,7 @@ main() {
257
257
  fi
258
258
  case "$hub_rc" in
259
259
  0) hub_say "done: this machine is set up for $HUB_URL" ;;
260
- 15) hub_say "installed, not ready yet: finish the next steps above, then check with: hubctl setup verify" ;;
260
+ 15) hub_say "set up for $HUB_URL; to finish, do the next steps above (usually: start OpenCode with \`opencode\` and keep it open, so this machine shows online), then check with: hubctl setup verify" ;;
261
261
  *) hub_die "$hub_rc" "setup verify failed (hubctl exit $hub_rc)" ;;
262
262
  esac
263
263
  return 0
@@ -17,9 +17,10 @@ export const AGENT_START_TIMEOUT_MS = 20_000
17
17
 
18
18
  const STDERR_MAX = 300
19
19
 
20
- export function herdrRunner(bin = "herdr"): HerdrRunner {
20
+ export function herdrRunner(bin = "herdr", spawn: typeof Bun.spawn = Bun.spawn): HerdrRunner {
21
21
  return async (args, timeoutMs) => {
22
- const proc = Bun.spawn([bin, ...args], { stdin: "ignore", stdout: "pipe", stderr: "pipe" })
22
+ // windowsHide: on Windows each poll would otherwise flash a console window (no-op elsewhere).
23
+ const proc = spawn([bin, ...args], { stdin: "ignore", stdout: "pipe", stderr: "pipe", windowsHide: true })
23
24
  const what = `herdr ${args.slice(0, 2).join(" ")}`
24
25
  const stdout = collect(proc.stdout)
25
26
  const stderr = collect(proc.stderr)
@@ -213,6 +213,7 @@ export async function ensureLocalHub(server: string, options: LocalHubOptions =
213
213
  child = (options.spawn ?? (nodeSpawn as unknown as SpawnLike))(runtime.command, [hubScript(root)], {
214
214
  cwd: root,
215
215
  detached: true,
216
+ windowsHide: true,
216
217
  stdio: ["ignore", log, log],
217
218
  env: childEnv,
218
219
  })