shellbase 0.7.0 → 0.7.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.
package/README.md CHANGED
@@ -121,8 +121,9 @@ shellbase start --no-restore # 복구하지 않고 이 폴더 세션 하나
121
121
  `~/.shellbase/images/`** 에 파일로 저장되고 그 **파일 경로가 터미널에 자동으로 입력**됩니다.
122
122
  이어서 "이 화면 좀 봐줘" 처럼 쓰고 엔터를 누르면 Claude Code 가 그 사진을 읽어요.
123
123
 
124
- - 폰에서는 「사진 찍기 / 사진 보관함」이 함께 떠요 — 방금 찍은 **스크린샷은 보관함**에 있습니다
125
- - 스크린샷을 **복사해서 붙여넣기**(Ctrl+V) 해도 첨부돼요
124
+ - 폰에서는 📎 버튼을 누르면 「사진 찍기 / 사진 보관함」이 함께 떠요 — 방금 찍은 **스크린샷은 보관함**에 있습니다
125
+ - **PC 스크린샷 파일을 터미널 위로 끌어다 놓으면(드래그&드롭)** 바로 첨부돼요 (📎 버튼은 폰 전용)
126
+ - 스크린샷을 **복사해서 붙여넣기**(Ctrl+V) 해도 첨부돼요 (PC·폰 공통)
126
127
  - 사진은 보내기 전에 폰에서 **긴 변 1568px 로 줄여서** 올라가요(전송이 빠르고 인식 정확도는 그대로)
127
128
  - 저장된 사진은 **7일이 지나면 자동으로 지워져요**, 파일 권한은 본인만 읽기(600)
128
129
  - 사진도 터미널 화면과 똑같이 **세션 키로 암호화**해서 전송돼요
package/dist/agent.js CHANGED
@@ -139,9 +139,7 @@ export async function runAgent(options) {
139
139
  .then(async () => {
140
140
  if (session.closing)
141
141
  return;
142
- const approved = !requireApproval
143
- ? true
144
- : await promptApproval(`\n📱 "${session.name}" 세션에 모바일 접속 요청이 왔어요. 입력을 허용할까요? (y/N, 30초 내 미응답 시 자동 거부): `, APPROVAL_TIMEOUT_MS);
142
+ const approved = await promptApproval(`\n📱 "${session.name}" 세션에 모바일 접속 요청이 왔어요. 입력을 허용할까요? (y/N, 30초 내 미응답 시 자동 거부): `, APPROVAL_TIMEOUT_MS);
145
143
  session.inputApproved = approved;
146
144
  session.approvalInFlight = false;
147
145
  await send({
@@ -313,6 +311,14 @@ export async function runAgent(options) {
313
311
  data: encryptFrame(session.scrollback, session.frameKey),
314
312
  });
315
313
  }
314
+ // 승인을 묻지 않는 기본 설정에서는 요청이 올 때마다 곧바로 답한다.
315
+ // (예전엔 "승인 진행 중"이면 건너뛰었는데, 그 사이 온 요청은 영영 답을 못 받아서
316
+ // 폰이 "승인 대기 중" 화면에 갇히는 일이 생겼음 — 자동 승인은 기다릴 게 없으므로 항상 응답)
317
+ if (!requireApproval) {
318
+ session.inputApproved = true;
319
+ void send({ kind: 'connect_approved', to: session.deviceId });
320
+ return;
321
+ }
316
322
  if (session.approvalInFlight)
317
323
  return;
318
324
  askApproval(session);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shellbase",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "내 컴퓨터 터미널(특히 Claude Code 세션)을 폰 브라우저로 실시간 접속하게 해주는 데스크톱 에이전트",
5
5
  "type": "module",
6
6
  "bin": {