batipanel 0.4.35 → 0.4.37

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  <p align="center">
2
2
  <strong>batipanel</strong> — AI-Powered Terminal Workspace Manager
3
3
  <br/>
4
- <a href="https://batipanel.com">Website</a> · <a href="https://batipanel.com/download">Desktop App</a> · <a href="https://github.com/batiai/batipanel/issues">Issues</a>
4
+ <a href="https://batipanel.com">Website</a> · <a href="docs/999-roadmap.md">Roadmap</a> · <a href="https://github.com/batiai/batipanel/issues">Issues</a>
5
5
  </p>
6
6
 
7
7
  <p align="center">
@@ -18,45 +18,49 @@
18
18
 
19
19
  ---
20
20
 
21
- **One command. Full dev environment.** Install Claude Code, Git UI, system monitor, file browser and manage them all as tmux sessions with a single keystroke.
21
+ **One command. Full dev environment.** Auto-installs Claude Code, lazygit, btop, yazi + configures your terminal. Manage everything as persistent tmux sessions with just `b`.
22
22
 
23
23
  ```bash
24
24
  curl -fsSL batipanel.com/install.sh | bash
25
25
  ```
26
26
 
27
- <!-- GIF: before/after demo on a fresh Linux server -->
28
- <!-- <p align="center"><img src="docs/demo.gif" width="720" alt="batipanel demo"/></p> -->
27
+ <p align="center">
28
+ <img src="docs/images/demo.gif" width="720" alt="batipanel demo — install to workspace in 30 seconds"/>
29
+ </p>
29
30
 
30
31
  ### What happens when you run this:
31
32
 
32
33
  1. **Auto-installs everything** — tmux, Claude Code, lazygit, btop, yazi, eza (+ Nerd Font on macOS)
33
34
  2. **Configures your terminal** — themed prompt, powerline glyphs, color scheme
34
- 3. **One command to start** — `b myproject` launches a multi-panel workspace:
35
-
36
- ```
37
- ┌────────────────────────────────┬──────────────┐
38
- │ │ monitor │
39
- │ Claude Code (AI) ├──────────────┤
40
- │ │ file tree │
41
- │ ├──────────────┤
42
- │ │ remote ctrl │
43
- ├───────────┬────────────────────┴──────────────┤
44
- │ git │ terminal │ logs │
45
- └───────────┴────────────────────┴──────────────┘
46
- ```
47
-
35
+ 3. **One command to start** — `b myproject` launches a multi-panel workspace
48
36
  4. **Session persistence** — SSH drops? Terminal closed? `b myproject` brings it all back.
49
37
 
38
+ <p align="center">
39
+ <a href="docs/images/layout-7panel.png"><img src="docs/images/layout-7panel.png" width="49%" alt="7panel layout"/></a>
40
+ <a href="docs/images/themes-all.png"><img src="docs/images/themes-all.png" width="49%" alt="8 color themes"/></a>
41
+ </p>
42
+ <p align="center">
43
+ <a href="docs/images/layout-4panel.png"><img src="docs/images/layout-4panel.png" width="49%" alt="4panel layout"/></a>
44
+ <a href="docs/images/layout-dual-claude.png"><img src="docs/images/layout-dual-claude.png" width="49%" alt="dual-claude layout"/></a>
45
+ </p>
46
+ <p align="center">
47
+ <sub>click to enlarge — 7panel (default) · 8 themes · 4panel (laptop) · dual-claude (multi AI)</sub>
48
+ </p>
49
+
50
50
  ## Quick Start
51
51
 
52
52
  ```bash
53
53
  # Install (pick one)
54
- curl -fsSL https://batipanel.com/install.sh | bash # Recommended
55
- npm install -g batipanel # npm
56
- npx batipanel # npx (no install)
54
+ npx batipanel # Node.js users (quickest)
55
+ npm install -g batipanel # Node.js users (global)
56
+ curl -fsSL https://batipanel.com/install.sh | bash # Everyone else
57
57
 
58
58
  # Start your workspace
59
59
  b myproject
60
+
61
+ # Done? Detach with:
62
+ # Ctrl+b then d ← session keeps running in the background
63
+ # b myproject ← come back anytime, everything restored
60
64
  ```
61
65
 
62
66
  ---
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.35
1
+ 0.4.37
package/install.sh CHANGED
@@ -145,7 +145,7 @@ fi
145
145
 
146
146
  # === activate prompt theme ===
147
147
  # don't exec $SHELL — it breaks /dev/tty when run from curl|bash or subshells
148
- if [ -z "${npm_lifecycle_event:-}" ]; then
148
+ if [ -z "${npm_lifecycle_event:-}" ] && [ -z "${BATIPANEL_WEB_INSTALL:-}" ]; then
149
149
  echo ""
150
150
  echo -e " \033[2m───────────────────────────────────\033[0m"
151
151
  echo -e " \033[1mNext step\033[0m \033[2m— activate your shell:\033[0m"
package/layouts/7panel.sh CHANGED
@@ -24,9 +24,9 @@ LAZYGIT=$(_split -v -t "$CLAUDE" -c "$PROJECT" -p 30 -PF '#{pane_id}')
24
24
  # Top: left(60%) | right(40%)
25
25
  BTOP=$(_split -h -t "$CLAUDE" -c "$PROJECT" -p 40 -PF '#{pane_id}')
26
26
 
27
- # Right column: 3 rows
28
- EZA=$(_split -v -t "$BTOP" -c "$PROJECT" -p 67 -PF '#{pane_id}')
29
- REMOTE=$(_split -v -t "$EZA" -c "$PROJECT" -p 50 -PF '#{pane_id}')
27
+ # Right column: btop(55%) | eza(28%) | remote(17%)
28
+ EZA=$(_split -v -t "$BTOP" -c "$PROJECT" -p 45 -PF '#{pane_id}')
29
+ REMOTE=$(_split -v -t "$EZA" -c "$PROJECT" -p 38 -PF '#{pane_id}')
30
30
 
31
31
  # Bottom: 3 columns
32
32
  ZSH=$(_split -h -t "$LAZYGIT" -c "$PROJECT" -p 67 -PF '#{pane_id}')
package/lib/session.sh CHANGED
@@ -37,7 +37,7 @@ tmux_start() {
37
37
  # run project script (creates tmux session + panes)
38
38
  local script_err
39
39
  set +e
40
- script_err=$(bash "$SCRIPT" "$SESSION" 2>&1)
40
+ script_err=$(LAYOUT="${LAYOUT:-}" bash "$SCRIPT" "$SESSION" 2>&1)
41
41
  set -e
42
42
 
43
43
  # verify session was actually created
@@ -143,21 +143,29 @@ tmux_reset() {
143
143
  echo " Removed $cleaned stale socket(s)"
144
144
  fi
145
145
 
146
- # 3. remove registered projects
146
+ # 3. remove registered projects (with confirmation)
147
147
  local proj_count=0
148
148
  for f in "$BATIPANEL_HOME"/projects/*.sh; do
149
149
  [ -f "$f" ] || continue
150
150
  proj_count=$((proj_count + 1))
151
151
  done
152
152
  if (( proj_count > 0 )); then
153
- rm -f "$BATIPANEL_HOME"/projects/*.sh
154
- echo " Removed $proj_count registered project(s)"
155
- fi
156
-
157
- # 4. remove config (wizard will re-run)
158
- if [ -f "$BATIPANEL_HOME/config.sh" ]; then
159
- rm -f "$BATIPANEL_HOME/config.sh"
160
- echo " Removed config.sh (wizard will re-run)"
153
+ echo ""
154
+ echo -e " ${YELLOW}This will delete $proj_count registered project(s) and config.${NC}"
155
+ printf " Continue? [y/N]: "
156
+ local _reset_answer=""
157
+ read -r _reset_answer
158
+ if [[ "${_reset_answer:-N}" == [yY] ]]; then
159
+ rm -f "$BATIPANEL_HOME"/projects/*.sh
160
+ echo " Removed $proj_count registered project(s)"
161
+ # 4. remove config (wizard will re-run)
162
+ if [ -f "$BATIPANEL_HOME/config.sh" ]; then
163
+ rm -f "$BATIPANEL_HOME/config.sh"
164
+ echo " Removed config.sh (wizard will re-run)"
165
+ fi
166
+ else
167
+ echo " Skipped project/config cleanup"
168
+ fi
161
169
  fi
162
170
 
163
171
  # 5. test tmux
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "batipanel",
3
- "version": "0.4.35",
3
+ "version": "0.4.37",
4
4
  "description": "AI-powered terminal workspace manager — multi-panel tmux layouts with Claude Code, git, monitoring, and more",
5
5
  "bin": {
6
6
  "batipanel": "./bin/cli.sh"
@@ -140,28 +140,34 @@ APPLESCRIPT
140
140
  # already using batipanel profile — update it silently
141
141
  _setup_bp_profile
142
142
  else
143
- # first install or different profile — ask user
144
- echo ""
145
- echo " Apple Terminal detected (current profile: ${_current_profile})"
146
- echo " batipanel can create a dedicated '${_bp_profile}' profile with:"
147
- echo " - Nerd Font (MesloLGS) for powerline glyphs"
148
- echo " - Dark theme colors"
149
- echo ""
150
- printf " Apply batipanel Terminal profile? [Y/n] "
151
- _bp_answer=""
152
- if [ -t 0 ]; then
153
- read -r _bp_answer
143
+ # first install or different profile
144
+ if [ -n "${npm_lifecycle_event:-}" ]; then
145
+ # npm/npx: non-interactive, auto-apply
146
+ _setup_bp_profile
154
147
  else
155
- read -r _bp_answer < /dev/tty 2>/dev/null || _bp_answer="y"
148
+ # interactive: ask user
149
+ echo ""
150
+ echo " Apple Terminal detected (current profile: ${_current_profile})"
151
+ echo " batipanel can create a dedicated '${_bp_profile}' profile with:"
152
+ echo " - Nerd Font (MesloLGS) for powerline glyphs"
153
+ echo " - Dark theme colors"
154
+ echo ""
155
+ printf " Apply batipanel Terminal profile? [Y/n] "
156
+ _bp_answer=""
157
+ if [ -t 0 ]; then
158
+ read -r _bp_answer
159
+ else
160
+ read -r _bp_answer < /dev/tty 2>/dev/null || _bp_answer="y"
161
+ fi
162
+ case "$_bp_answer" in
163
+ [nN]*)
164
+ echo " Skipped. You can set your font to a Nerd Font manually."
165
+ ;;
166
+ *)
167
+ _setup_bp_profile
168
+ ;;
169
+ esac
156
170
  fi
157
- case "$_bp_answer" in
158
- [nN]*)
159
- echo " Skipped. You can set your font to a Nerd Font manually."
160
- ;;
161
- *)
162
- _setup_bp_profile
163
- ;;
164
- esac
165
171
  fi
166
172
  fi
167
173
  fi
@@ -155,8 +155,9 @@ fi
155
155
  STAR_EOF
156
156
  fi
157
157
 
158
- # === register npm download (silent, non-blocking) ===
158
+ # === register npm download (ping only, no actual install) ===
159
+ # just fetch the package metadata to count as a download on npmjs.com
159
160
  if command -v npm &>/dev/null; then
160
- npm install -g batipanel@latest --no-fund --no-audit &>/dev/null &
161
+ npm view batipanel version &>/dev/null &
161
162
  fi
162
163
  }
package/uninstall.sh CHANGED
@@ -62,6 +62,8 @@ for rc in "$HOME/.zshrc" "$HOME/.bashrc" "$HOME/.bash_profile" "$HOME/.profile";
62
62
  _sed_i '/zsh-prompt\.zsh/d' "$rc"
63
63
  _sed_i '/# batipanel shell theme/d' "$rc"
64
64
  _sed_i '/# batipanel prompt theme/d' "$rc"
65
+ # welcome/star block (heredoc inserted by installer)
66
+ _sed_i '/# batipanel welcome/,/^fi$/d' "$rc"
65
67
  # completion lines
66
68
  _sed_i '/completions\/batipanel/d' "$rc"
67
69
  _sed_i '/_batipanel/d' "$rc"