@jx0/jmux 0.5.4 → 0.6.0

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.
@@ -0,0 +1,44 @@
1
+ #!/bin/bash
2
+ # jmux first-run welcome screen
3
+ # Called via: display-popup -E "welcome.sh"
4
+
5
+ BOLD="\033[1m"
6
+ DIM="\033[2m"
7
+ GREEN="\033[32m"
8
+ YELLOW="\033[33m"
9
+ CYAN="\033[36m"
10
+ RESET="\033[0m"
11
+
12
+ clear
13
+ echo ""
14
+ echo -e " ${GREEN}${BOLD}Welcome to jmux${RESET}"
15
+ echo -e " ${DIM}The terminal workspace for agentic development${RESET}"
16
+ echo ""
17
+ echo -e " ${DIM}────────────────────────────────────────────${RESET}"
18
+ echo ""
19
+ echo -e " ${BOLD}Essential keybindings${RESET}"
20
+ echo ""
21
+ echo -e " ${GREEN}Ctrl-Shift-Up/Down${RESET} Switch between sessions"
22
+ echo -e " ${GREEN}Ctrl-a${RESET} then ${GREEN}n${RESET} New session"
23
+ echo -e " ${GREEN}Ctrl-a${RESET} then ${GREEN}c${RESET} New window (tab)"
24
+ echo -e " ${GREEN}Ctrl-a${RESET} then ${GREEN}|${RESET} Split pane horizontally"
25
+ echo -e " ${GREEN}Ctrl-a${RESET} then ${GREEN}-${RESET} Split pane vertically"
26
+ echo -e " ${GREEN}Shift-Arrow${RESET} Move between panes"
27
+ echo -e " ${GREEN}Ctrl-a${RESET} then ${GREEN}i${RESET} Settings"
28
+ echo ""
29
+ echo -e " ${DIM}────────────────────────────────────────────${RESET}"
30
+ echo ""
31
+ echo -e " ${BOLD}The sidebar${RESET} on the left shows all your sessions."
32
+ echo -e " ${GREEN}●${RESET} Green dot = new output ${YELLOW}!${RESET} Orange = needs review"
33
+ echo -e " Click a session to switch to it."
34
+ echo ""
35
+ echo -e " ${DIM}────────────────────────────────────────────${RESET}"
36
+ echo ""
37
+ echo -e " ${BOLD}Next steps${RESET}"
38
+ echo ""
39
+ echo -e " ${CYAN}1.${RESET} Try ${GREEN}Ctrl-a n${RESET} to create a new session"
40
+ echo -e " ${CYAN}2.${RESET} Run ${GREEN}jmux --install-agent-hooks${RESET} for Claude Code notifications"
41
+ echo -e " ${CYAN}3.${RESET} Full guide: ${DIM}github.com/jarredkenny/jmux/blob/main/docs/getting-started.md${RESET}"
42
+ echo ""
43
+ echo -e " ${DIM}Press any key to start${RESET}"
44
+ read -rsn1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jx0/jmux",
3
- "version": "0.5.4",
3
+ "version": "0.6.0",
4
4
  "description": "The terminal workspace for agentic development",
5
5
  "type": "module",
6
6
  "bin": {
package/src/main.ts CHANGED
@@ -12,7 +12,7 @@ import { homedir } from "os";
12
12
 
13
13
  // --- CLI commands (run and exit before TUI) ---
14
14
 
15
- const VERSION = "0.5.4";
15
+ const VERSION = "0.6.0";
16
16
 
17
17
  const HELP = `jmux — the terminal workspace for agentic development
18
18
 
@@ -688,6 +688,22 @@ async function start(): Promise<void> {
688
688
  await resolveClientName();
689
689
  renderFrame();
690
690
 
691
+ // First-run welcome screen
692
+ const configDir = resolve(homedir(), ".config", "jmux");
693
+ const configPath = resolve(configDir, "config.json");
694
+ if (!existsSync(configPath)) {
695
+ mkdirSync(configDir, { recursive: true });
696
+ writeFileSync(configPath, JSON.stringify({}, null, 2) + "\n");
697
+ if (!ptyClientName) await resolveClientName();
698
+ if (ptyClientName) {
699
+ const welcomeScript = resolve(jmuxDir, "config", "welcome.sh");
700
+ const args = ["tmux"];
701
+ if (socketName) args.push("-L", socketName);
702
+ args.push("display-popup", "-c", ptyClientName, "-E", "-w", "55%", "-h", "60%", "-b", "heavy", "-S", "fg=#4f565d", welcomeScript);
703
+ Bun.spawn(args, { stdout: "ignore", stderr: "ignore" });
704
+ }
705
+ }
706
+
691
707
  // Subscribe to @jmux-attention across all sessions
692
708
  await control.registerSubscription(
693
709
  "attention",