shellbase 0.14.0 → 0.14.1

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.
Files changed (2) hide show
  1. package/dist/agent.js +15 -8
  2. package/package.json +1 -1
package/dist/agent.js CHANGED
@@ -186,14 +186,21 @@ function resolveShell() {
186
186
  return process.env.COMSPEC ?? 'powershell.exe';
187
187
  return process.env.SHELL ?? '/bin/bash';
188
188
  }
189
- // 폰에서 여는 터미널은 셸의 '시작 파일'(bash 의 ~/.bashrc, zsh 의 ~/.zshrc 같은 것)을 읽지 않는다.
190
- // 시작 파일은 컴퓨터의 사람이 앉아서 쓰려고 꾸며둔 것이라, 컴퓨터에만 있는 명령을 가리키는
191
- // 별칭이 흔하다. 그게 그대로 딸려오면 엉뚱한 곳에서 명령이 깨진다 (`gnuls: command not found`
192
- // 사건 PLAN.md §8.12). 그래서 껍데기 셸만 띄우고, 실행에 필요한 경로·환경변수는 시작 파일이
193
- // 아니라 **에이전트를 때의 환경**을 그대로 물려주는 쪽으로 통일한다 (sessionEnv 참고).
194
- // 예전처럼 시작 파일을 읽게 하려면 SHELLBASE_SHELL_RC=1 주고 에이전트를 다시 시작하면 된다.
189
+ // 폰에서 여는 터미널도 셸의 '시작 파일'(bash 의 ~/.bashrc, zsh 의 ~/.zshrc 같은 것)을 그대로 읽는다.
190
+ // ssh·tmux·VS Code 터미널이 전부 읽는 것이 정상이고, 폰이라고 다를 이유가 없다.
191
+ //
192
+ // 0.14.0 에서 잠깐 반대로(읽지 않게) 했었다. 개인 별칭이 컨테이너에 딸려가 깨지는 사건
193
+ // (`gnuls: command not found` PLAN.md §8.12) 때문이었는데, 그건 이미 §8.21 에서 그 컴퓨터의
194
+ // ~/.bashrc "있으면 쓰고 없으면 그냥 넘어가게" 고쳐 **근본 해결한 뒤**였다. 이미 막힌 구멍에
195
+ // 안전망을 한 겹 더 친 셈이었고, 대가가 컸다 (§8.57):
196
+ // 시작 파일은 프롬프트만 꾸미는 곳이 아니라 **PATH 를 늘리는 사실상 유일한 통로**다.
197
+ // 에이전트가 systemd 서비스로 뜨는 컴퓨터에서는 물려받을 환경 자체가 최소 PATH 라,
198
+ // gh·go 처럼 ~/bin · /usr/local/go/bin 에 있는 명령이 폰에서 **영영 안 보이게** 된다.
199
+ // 그래서 기본값을 되돌린다. 일부러 개인 설정을 떼고 맨몸 셸을 띄우고 싶은 환경(공용 컨테이너 등)
200
+ // 에서만 SHELLBASE_NO_SHELL_RC=1 을 주고 에이전트를 다시 시작하면 된다.
201
+ // (0.14.0 때 안내했던 SHELLBASE_SHELL_RC=1 은 이제 기본 동작이라 붙어 있어도 해가 없다.)
195
202
  function shellArgs(shell) {
196
- if (process.env.SHELLBASE_SHELL_RC)
203
+ if (!process.env.SHELLBASE_NO_SHELL_RC)
197
204
  return [];
198
205
  const name = path.basename(shell).toLowerCase();
199
206
  // 로그인용 파일(~/.profile 등)은 애초에 로그인 셸일 때만 읽히지만, 혹시 몰라 같이 막아둔다
@@ -213,7 +220,7 @@ function shellArgs(shell) {
213
220
  // 알림이 왔을 때 어느 세션인지 바로 알 수 있다 (notify.ts).
214
221
  function sessionEnv(deviceId) {
215
222
  const env = { ...process.env, [SESSION_ENV]: deviceId };
216
- if (!process.env.SHELLBASE_SHELL_RC) {
223
+ if (process.env.SHELLBASE_NO_SHELL_RC) {
217
224
  // sh·dash·ksh 계열은 옵션 대신 이 변수에 적힌 파일을 시작하면서 읽는다 — 같이 비운다
218
225
  delete env.ENV;
219
226
  delete env.BASH_ENV;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shellbase",
3
- "version": "0.14.0",
3
+ "version": "0.14.1",
4
4
  "description": "내 컴퓨터 터미널(특히 Claude Code 세션)을 폰 브라우저로 실시간 접속하게 해주는 데스크톱 에이전트",
5
5
  "type": "module",
6
6
  "bin": {