junhost 0.1.0 → 0.1.2
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/README.md +43 -1
- package/bin/jun.js +17 -0
- package/dist/index.js +51 -51
- package/dist/mcp-server.js +12 -12
- package/package.json +1 -1
- package/ui-dist/assets/{BrowserPage-CLwJOnA1.js → BrowserPage-Bw1kBIM_.js} +1 -1
- package/ui-dist/assets/{DashboardPage-DNlY12tH.js → DashboardPage-BvNlgB4B.js} +1 -1
- package/ui-dist/assets/{FilesPage-CfFJjtlo.js → FilesPage-C1IqnxpR.js} +1 -1
- package/ui-dist/assets/{McpPage-Ckmbp2T3.js → McpPage-BgXcKazm.js} +1 -1
- package/ui-dist/assets/{MemoriesPage-BgBe2rb6.js → MemoriesPage-DYOob4W0.js} +1 -1
- package/ui-dist/assets/{RunsPage-9w7iFG8N.js → RunsPage-BpBj82Ux.js} +4 -4
- package/ui-dist/assets/{SchedulesPage-B5FVZB0F.js → SchedulesPage-mIWaXymg.js} +1 -1
- package/ui-dist/assets/{SettingsPage-lNZmrgQF.js → SettingsPage-C5vG-RLn.js} +1 -1
- package/ui-dist/assets/{SkillsPage-BXcSp6ls.js → SkillsPage-DuFQfdSR.js} +1 -1
- package/ui-dist/assets/architecture-7EHR7CIX-BMNBOS2i.js +1 -0
- package/ui-dist/assets/{architectureDiagram-3BPJPVTR-CZU-I50b.js → architectureDiagram-3BPJPVTR-CQ1UyWn-.js} +1 -1
- package/ui-dist/assets/{blockDiagram-GPEHLZMM-CyBud8P5.js → blockDiagram-GPEHLZMM-DO2WH3yT.js} +1 -1
- package/ui-dist/assets/{c4Diagram-AAUBKEIU--J4ICgL4.js → c4Diagram-AAUBKEIU-CDcDkAFN.js} +1 -1
- package/ui-dist/assets/channel-BMSobhoT.js +1 -0
- package/ui-dist/assets/{checkbox-Dl42vHZu.js → checkbox-BO9cBKlP.js} +1 -1
- package/ui-dist/assets/{chunk-2J33WTMH-BDb1cFmy.js → chunk-2J33WTMH-CxE9IMxF.js} +1 -1
- package/ui-dist/assets/{chunk-3OPIFGDE-BlluxIcQ.js → chunk-3OPIFGDE-CWe0ghtO.js} +1 -1
- package/ui-dist/assets/{chunk-5ZQYHXKU-CKTcuPiD.js → chunk-5ZQYHXKU-D9lXR7-a.js} +1 -1
- package/ui-dist/assets/{chunk-727SXJPM-MZn2xvWx.js → chunk-727SXJPM-1INZms_u.js} +1 -1
- package/ui-dist/assets/{chunk-AQP2D5EJ-BJaTZvWO.js → chunk-AQP2D5EJ-Bo5P94jR.js} +1 -1
- package/ui-dist/assets/{chunk-BO2N2NFS-BnH2G-m5.js → chunk-BO2N2NFS-Bb9QKS7r.js} +4 -4
- package/ui-dist/assets/{chunk-CSCIHK7Q-CXkHF5UK.js → chunk-CSCIHK7Q-BXW0kTPy.js} +3 -3
- package/ui-dist/assets/{chunk-KSCS5N6A-BahjoFv5.js → chunk-KSCS5N6A-su0hRnFY.js} +1 -1
- package/ui-dist/assets/{chunk-L5ZTLDWV-Bx4WHt-z.js → chunk-L5ZTLDWV-CLjULdtO.js} +1 -1
- package/ui-dist/assets/{chunk-LZXEDZCA-CkFznL5l.js → chunk-LZXEDZCA-DSupe1kd.js} +2 -2
- package/ui-dist/assets/{chunk-ND2GUHAM-B8gmrqM9.js → chunk-ND2GUHAM-DVaKW6-I.js} +1 -1
- package/ui-dist/assets/{chunk-NZK2D7GU-C18DTyig.js → chunk-NZK2D7GU-DP_luiUT.js} +1 -1
- package/ui-dist/assets/{chunk-O5CBEL6O-DhXgjXO_.js → chunk-O5CBEL6O-DJ6oobwT.js} +1 -1
- package/ui-dist/assets/{chunk-WU5MYG2G-DakMffny.js → chunk-WU5MYG2G-BJCNi6Df.js} +1 -1
- package/ui-dist/assets/classDiagram-4FO5ZUOK-C8buBHXm.js +1 -0
- package/ui-dist/assets/classDiagram-v2-Q7XG4LA2-C8buBHXm.js +1 -0
- package/ui-dist/assets/{collapsible-BdLJt-lG.js → collapsible-0tqcZUWD.js} +1 -1
- package/ui-dist/assets/{dagre-BM42HDAG-CRPnH9-w.js → dagre-BM42HDAG-CRyL8hRI.js} +1 -1
- package/ui-dist/assets/{diagram-2AECGRRQ-BHmnvDJu.js → diagram-2AECGRRQ-DyjpW-BD.js} +1 -1
- package/ui-dist/assets/{diagram-5GNKFQAL-CnuSOf5i.js → diagram-5GNKFQAL-CBTUCxgf.js} +1 -1
- package/ui-dist/assets/{diagram-KO2AKTUF-DkD3Oyzq.js → diagram-KO2AKTUF-C7inOR0g.js} +1 -1
- package/ui-dist/assets/{diagram-LMA3HP47-qngr_ayi.js → diagram-LMA3HP47-CfCMRg_H.js} +1 -1
- package/ui-dist/assets/{diagram-OG6HWLK6-BUXAAFlB.js → diagram-OG6HWLK6-DLl3GKVl.js} +1 -1
- package/ui-dist/assets/{dialog-Bl8-9u35.js → dialog-gLEpdaG1.js} +1 -1
- package/ui-dist/assets/{erDiagram-TEJ5UH35-B7fmkd3a.js → erDiagram-TEJ5UH35-D3SsdlGo.js} +1 -1
- package/ui-dist/assets/eventmodeling-FCH6USID-Dl7jZkr1.js +1 -0
- package/ui-dist/assets/{flowDiagram-I6XJVG4X-D3K28Pdy.js → flowDiagram-I6XJVG4X-BIZoa3Ff.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-6RSMTGT7-CXzmskXJ.js → ganttDiagram-6RSMTGT7-DoIzzrgl.js} +1 -1
- package/ui-dist/assets/{gitGraph-WXDBUCRP-CROsiysY.js → gitGraph-WXDBUCRP-tT7WczwY.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-PVQCEYII-BBhICl9b.js → gitGraphDiagram-PVQCEYII-CwoMoyS1.js} +1 -1
- package/ui-dist/assets/{highlighted-body-OFNGDK62-woHDdMrg.js → highlighted-body-OFNGDK62-X8dg_vaO.js} +1 -1
- package/ui-dist/assets/{index-DmmH6oax.css → index-C_NJsn6Z.css} +1 -1
- package/ui-dist/assets/{index-j386AZTn.js → index-DXYsuK0q.js} +2 -2
- package/ui-dist/assets/{info-J43DQDTF-DHht6dOt.js → info-J43DQDTF-Da0djCPL.js} +1 -1
- package/ui-dist/assets/{infoDiagram-5YYISTIA-Df4LhnuE.js → infoDiagram-5YYISTIA-D-OHDMDH.js} +1 -1
- package/ui-dist/assets/{input-D4O22yGt.js → input-BPTmfk5i.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-YF4QCWOH-B8KMc0In.js → ishikawaDiagram-YF4QCWOH-Bzg0E0Z1.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-JHISSGLW-Bpr7eOEv.js → journeyDiagram-JHISSGLW-rmeE-f4I.js} +1 -1
- package/ui-dist/assets/{kanban-definition-UN3LZRKU-R8MXwX2D.js → kanban-definition-UN3LZRKU-DSy_xosI.js} +1 -1
- package/ui-dist/assets/katex-BNbsei-7.js +1 -0
- package/ui-dist/assets/{line-EyXPCaOi.js → line-6Sq5fd7W.js} +1 -1
- package/ui-dist/assets/mermaid-GHXKKRXX-eP_ygZe4.js +1 -0
- package/ui-dist/assets/{mermaid-parser.core-Bd2TX3li.js → mermaid-parser.core-C6nlL4jI.js} +2 -2
- package/ui-dist/assets/{mindmap-definition-RKZ34NQL-CCrZYYSm.js → mindmap-definition-RKZ34NQL-CSJ0pwqG.js} +1 -1
- package/ui-dist/assets/{packet-YPE3B663-BsRm1dxS.js → packet-YPE3B663-CJYSZVBB.js} +1 -1
- package/ui-dist/assets/{pie-LRSECV5Y-2jRO4jrF.js → pie-LRSECV5Y-B7FDQxHq.js} +1 -1
- package/ui-dist/assets/{pieDiagram-4H26LBE5-O21uLYd7.js → pieDiagram-4H26LBE5-BYco3Xpn.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-W4KKPZXB-PFuRo2tu.js → quadrantDiagram-W4KKPZXB-BSzj1BbK.js} +1 -1
- package/ui-dist/assets/{radar-GUYGQ44K-DrLd9hhi.js → radar-GUYGQ44K-CIqNKREz.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-4Y6WPE33-CsP61d0X.js → requirementDiagram-4Y6WPE33-DTMmHobs.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-5OEKKPKP-OXRKlXwh.js → sankeyDiagram-5OEKKPKP-v48Pd1Sj.js} +1 -1
- package/ui-dist/assets/{select-CYgMxtlk.js → select-jBmyVjXL.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-3UESZ5HK-CGKNazDP.js → sequenceDiagram-3UESZ5HK-Cutc-QJ-.js} +1 -1
- package/ui-dist/assets/{stateDiagram-AJRCARHV-BBiaMVYA.js → stateDiagram-AJRCARHV-C9wjw5vE.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-BHNVJYJU-0qv-iPvr.js +1 -0
- package/ui-dist/assets/{tabs-DS9zR4V0.js → tabs-BUCI-mwA.js} +1 -1
- package/ui-dist/assets/{timeline-definition-PNZ67QCA-DCONMP8y.js → timeline-definition-PNZ67QCA-Be0sJR3F.js} +1 -1
- package/ui-dist/assets/{treeView-BLDUP644-DLNyeiHu.js → treeView-BLDUP644-BuO1c41a.js} +1 -1
- package/ui-dist/assets/{treemap-LRROVOQU-Cdld0366.js → treemap-LRROVOQU-DnqRpBrL.js} +1 -1
- package/ui-dist/assets/{useCompositeListItem-BQ4RLkNZ.js → useCompositeListItem-BMeUcGkY.js} +1 -1
- package/ui-dist/assets/{vennDiagram-CIIHVFJN-C21GUpuw.js → vennDiagram-CIIHVFJN-BU-tyhcP.js} +1 -1
- package/ui-dist/assets/{wardley-L42UT6IY-PuTi7B-8.js → wardley-L42UT6IY-C4lBe1D1.js} +1 -1
- package/ui-dist/assets/{wardleyDiagram-YWT4CUSO-BwV-yZO0.js → wardleyDiagram-YWT4CUSO-Ba4GgkxA.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-2RQKCTM6-D-bOqUpK.js → xychartDiagram-2RQKCTM6-BZYGoMGR.js} +1 -1
- package/ui-dist/index.html +2 -2
- package/ui-dist/assets/architecture-7EHR7CIX-D8QwdCM4.js +0 -1
- package/ui-dist/assets/channel-CXOCC3Ms.js +0 -1
- package/ui-dist/assets/classDiagram-4FO5ZUOK-DMdoabn-.js +0 -1
- package/ui-dist/assets/classDiagram-v2-Q7XG4LA2-DMdoabn-.js +0 -1
- package/ui-dist/assets/eventmodeling-FCH6USID-DUPVuqbK.js +0 -1
- package/ui-dist/assets/katex-U6Climy7.js +0 -1
- package/ui-dist/assets/mermaid-GHXKKRXX-CDSYqrX3.js +0 -1
- package/ui-dist/assets/stateDiagram-v2-BHNVJYJU-C_bLdSQ9.js +0 -1
package/README.md
CHANGED
|
@@ -31,7 +31,49 @@ jun help
|
|
|
31
31
|
|
|
32
32
|
## Where things live
|
|
33
33
|
|
|
34
|
-
All state is in `~/.jun` (override with `JUN_HOME`): projects/workspaces, run history (JSONL), schedules, config. The daemon binds `127.0.0.1`
|
|
34
|
+
All state is in `~/.jun` (override with `JUN_HOME`): projects/workspaces, run history (JSONL), schedules, config. The daemon binds `127.0.0.1` by default (override `JUN_HOST`/`JUN_PORT`) — for quick remote access, tunnel: `ssh -L 8787:127.0.0.1:8787 user@host`.
|
|
35
|
+
|
|
36
|
+
## Run on a VPS (Debian/Ubuntu)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Bun + Codex CLI
|
|
40
|
+
curl -fsSL https://bun.sh/install | bash && export PATH="$HOME/.bun/bin:$PATH"
|
|
41
|
+
npm install -g @openai/codex
|
|
42
|
+
|
|
43
|
+
# Chromium system libs — required, or the stealth browser engine can't launch
|
|
44
|
+
# and sites behind edge WAFs will block the agent. (libasound2 on Ubuntu <24.04.)
|
|
45
|
+
apt-get update && apt-get install -y \
|
|
46
|
+
libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libgbm1 libdrm2 \
|
|
47
|
+
libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 \
|
|
48
|
+
libpango-1.0-0 libcairo2 libxshmfence1 libasound2t64
|
|
49
|
+
|
|
50
|
+
bun install -g junhost && jun doctor
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Run it as a systemd service — `/etc/systemd/system/jun.service`:
|
|
54
|
+
|
|
55
|
+
```ini
|
|
56
|
+
[Unit]
|
|
57
|
+
Description=Jun
|
|
58
|
+
After=network-online.target
|
|
59
|
+
Wants=network-online.target
|
|
60
|
+
|
|
61
|
+
[Service]
|
|
62
|
+
Environment=JUN_HOME=/var/lib/jun
|
|
63
|
+
Environment=PATH=/root/.bun/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|
64
|
+
ExecStart=/root/.bun/bin/bun /root/.bun/bin/jun start
|
|
65
|
+
Restart=always
|
|
66
|
+
RestartSec=3
|
|
67
|
+
|
|
68
|
+
[Install]
|
|
69
|
+
WantedBy=multi-user.target
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
systemctl daemon-reload && systemctl enable --now jun
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
To reach the dashboard, either SSH-tunnel, or put Caddy in front for HTTPS (`reverse_proxy 127.0.0.1:8787` — WebSockets work automatically; add `basic_auth`, since Jun has no built-in login yet). Sign in to Codex from Settings — the device-code flow works headless. If the box has a datacenter IP, set a residential browser proxy in Settings → Browser proxy (or `JUN_BROWSER_PROXY=http://user:pass@host:port`; in a systemd drop-in use raw `%`-free credentials — `%` is a systemd escape). Upgrade anytime: `jun upgrade && systemctl restart jun`.
|
|
35
77
|
|
|
36
78
|
## License
|
|
37
79
|
|
package/bin/jun.js
CHANGED
|
@@ -34,6 +34,7 @@ Usage: jun <command>
|
|
|
34
34
|
Commands:
|
|
35
35
|
start Start the daemon + dashboard (default; http://127.0.0.1:8787)
|
|
36
36
|
doctor Check prerequisites (codex CLI, browser engine)
|
|
37
|
+
upgrade Update junhost to the latest published version
|
|
37
38
|
mcp-server Run the self-management MCP server (spawned by Codex, stdio)
|
|
38
39
|
version Print the version
|
|
39
40
|
|
|
@@ -89,6 +90,22 @@ switch (command) {
|
|
|
89
90
|
case "doctor":
|
|
90
91
|
await doctor();
|
|
91
92
|
break;
|
|
93
|
+
case "upgrade": {
|
|
94
|
+
console.log(`Current version: ${version()}`);
|
|
95
|
+
const proc = Bun.spawnSync([process.execPath, "install", "-g", "junhost@latest"], {
|
|
96
|
+
stdout: "inherit",
|
|
97
|
+
stderr: "inherit",
|
|
98
|
+
});
|
|
99
|
+
if (proc.exitCode !== 0) {
|
|
100
|
+
console.error(
|
|
101
|
+
"\nUpgrade failed. If you installed with npm instead of bun, run:\n" +
|
|
102
|
+
" npm install -g junhost@latest",
|
|
103
|
+
);
|
|
104
|
+
process.exit(proc.exitCode ?? 1);
|
|
105
|
+
}
|
|
106
|
+
console.log("\nUpgrade complete. Restart the daemon (jun start) to run the new version.");
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
92
109
|
case "version":
|
|
93
110
|
case "--version":
|
|
94
111
|
case "-v":
|