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 +25 -21
- package/VERSION +1 -1
- package/install.sh +1 -1
- package/layouts/7panel.sh +3 -3
- package/lib/session.sh +18 -10
- package/package.json +1 -1
- package/scripts/install/fonts.sh +26 -20
- package/scripts/install/shell-rc.sh +3 -2
- package/uninstall.sh +2 -0
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="
|
|
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.**
|
|
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
|
-
|
|
28
|
-
|
|
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
|
-
|
|
55
|
-
npm install -g batipanel #
|
|
56
|
-
|
|
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.
|
|
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:
|
|
28
|
-
EZA=$(_split -v -t "$BTOP" -c "$PROJECT" -p
|
|
29
|
-
REMOTE=$(_split -v -t "$EZA" -c "$PROJECT" -p
|
|
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
|
-
|
|
154
|
-
echo "
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
package/scripts/install/fonts.sh
CHANGED
|
@@ -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
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
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 (
|
|
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
|
|
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"
|