choavis-agent 1.5.18 → 1.5.19

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "choavis-agent",
3
- "version": "1.5.18",
3
+ "version": "1.5.19",
4
4
  "description": "Slack ↔ Claude Code bridge agent",
5
5
  "type": "module",
6
6
  "main": "dist-electron/main.js",
@@ -87,7 +87,28 @@
87
87
  }
88
88
  ],
89
89
  "category": "public.app-category.developer-tools"
90
- }
90
+ },
91
+ "dmg": {
92
+ "icon": "build/install.icns",
93
+ "iconSize": 80,
94
+ "window": {
95
+ "width": 300,
96
+ "height": 260
97
+ },
98
+ "contents": [
99
+ {
100
+ "x": 900,
101
+ "y": 900
102
+ },
103
+ {
104
+ "x": 150,
105
+ "y": 120,
106
+ "type": "file",
107
+ "path": "Install.command"
108
+ }
109
+ ]
110
+ },
111
+ "afterPack": "scripts/afterPack.cjs"
91
112
  },
92
113
  "engines": {
93
114
  "node": ">=20"
@@ -0,0 +1,37 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const { execSync } = require('child_process');
4
+
5
+ // afterPack: appOutDir에 Install.command를 복사하고 커스텀 아이콘 적용
6
+ exports.default = async function afterPack(context) {
7
+ const src = path.join(__dirname, 'install.command');
8
+ const dest = path.join(context.appOutDir, 'Install.command');
9
+ const iconPng = path.join(__dirname, '..', 'build', 'install-icon-512.png');
10
+
11
+ if (fs.existsSync(src)) {
12
+ fs.copyFileSync(src, dest);
13
+ fs.chmodSync(dest, 0o755);
14
+ console.log('[afterPack] install.command →', dest);
15
+
16
+ // macOS 커스텀 아이콘 설정 (sips + DeRez + Rez + SetFile)
17
+ if (process.platform === 'darwin' && fs.existsSync(iconPng)) {
18
+ try {
19
+ const tmpIcon = path.join(context.appOutDir, '_tmp_icon.png');
20
+ const tmpRsrc = path.join(context.appOutDir, '_tmp_icon.rsrc');
21
+
22
+ fs.copyFileSync(iconPng, tmpIcon);
23
+ execSync(`sips -i "${tmpIcon}"`, { stdio: 'pipe' });
24
+ execSync(`DeRez -only icns "${tmpIcon}" > "${tmpRsrc}"`, { stdio: 'pipe', shell: true });
25
+ execSync(`Rez -append "${tmpRsrc}" -o "${dest}"`, { stdio: 'pipe' });
26
+ execSync(`SetFile -a C "${dest}"`, { stdio: 'pipe' });
27
+
28
+ // 정리
29
+ fs.unlinkSync(tmpIcon);
30
+ fs.unlinkSync(tmpRsrc);
31
+ console.log('[afterPack] Custom icon applied to Install.command');
32
+ } catch (err) {
33
+ console.warn('[afterPack] Icon set failed (non-critical):', err.message);
34
+ }
35
+ }
36
+ }
37
+ };
@@ -0,0 +1,65 @@
1
+ #!/bin/bash
2
+ # Choavis Agent Dashboard 설치 스크립트
3
+ # 더블클릭으로 실행하세요.
4
+
5
+ APP_NAME="Choavis Agent Dashboard"
6
+ APP_FILE="$APP_NAME.app"
7
+ DEST="/Applications"
8
+
9
+ # 스크립트가 위치한 디렉토리 (DMG 마운트 포인트)
10
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
11
+
12
+ clear
13
+ echo ""
14
+ echo " ╔══════════════════════════════════════╗"
15
+ echo " ║ Choavis Agent Dashboard 설치기 ║"
16
+ echo " ╚══════════════════════════════════════╝"
17
+ echo ""
18
+
19
+ # 앱 파일 찾기
20
+ APP_PATH="$SCRIPT_DIR/$APP_FILE"
21
+ if [ ! -d "$APP_PATH" ]; then
22
+ echo " ❌ '$APP_FILE'을 찾을 수 없습니다."
23
+ echo " DMG 내의 설치 스크립트를 실행해주세요."
24
+ echo ""
25
+ read -n 1 -s -r -p " 아무 키나 누르면 종료합니다..."
26
+ exit 1
27
+ fi
28
+
29
+ # 기존 앱 종료
30
+ if pgrep -f "$APP_NAME" > /dev/null 2>&1; then
31
+ echo " ⏳ 실행 중인 $APP_NAME 종료 중..."
32
+ pkill -f "$APP_NAME" 2>/dev/null
33
+ sleep 2
34
+ fi
35
+
36
+ # 기존 앱 제거
37
+ if [ -d "$DEST/$APP_FILE" ]; then
38
+ echo " 🗑 기존 버전 제거 중..."
39
+ rm -rf "$DEST/$APP_FILE"
40
+ fi
41
+
42
+ # 앱 복사
43
+ echo " 📦 앱 설치 중..."
44
+ cp -R "$APP_PATH" "$DEST/"
45
+
46
+ # quarantine 속성 제거 (Gatekeeper 우회)
47
+ echo " 🔓 보안 설정 중..."
48
+ xattr -cr "$DEST/$APP_FILE"
49
+
50
+ echo ""
51
+ echo " ✅ 설치 완료!"
52
+ echo ""
53
+
54
+ # 앱 실행 여부 확인
55
+ read -n 1 -s -r -p " 앱을 지금 실행할까요? (Y/n) " answer
56
+ echo ""
57
+ if [[ "$answer" != "n" && "$answer" != "N" ]]; then
58
+ echo " 🚀 앱을 실행합니다..."
59
+ open "$DEST/$APP_FILE"
60
+ fi
61
+
62
+ echo ""
63
+ echo " 이 창을 닫아도 됩니다."
64
+ echo ""
65
+ exit 0