claude-pet 2.0.0
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.
Potentially problematic release.
This version of claude-pet might be problematic. Click here for more details.
- package/.claude/commands/feed.md +28 -0
- package/.claude/commands/name.md +28 -0
- package/.claude/commands/pet.md +29 -0
- package/.claude/commands/play.md +29 -0
- package/.claude/settings.local.json +41 -0
- package/.github/workflows/AGENTS.md +60 -0
- package/.github/workflows/build.yml +87 -0
- package/AGENTS.md +66 -0
- package/LICENSE +15 -0
- package/README.md +292 -0
- package/bin/claude-pet.js +42 -0
- package/build/AGENTS.md +50 -0
- package/build/dmg-background.png +0 -0
- package/build/entitlements.mac.plist +14 -0
- package/build/icon.ico +0 -0
- package/build/icon.png +0 -0
- package/build/installerHeader.bmp +0 -0
- package/build/installerSidebar.bmp +0 -0
- package/build/tray-icon.png +0 -0
- package/dist/main/core/badge-manager.js +49 -0
- package/dist/main/core/badge-registry.js +72 -0
- package/dist/main/core/badge-triggers.js +45 -0
- package/dist/main/core/contextual-messages.js +372 -0
- package/dist/main/core/messages.js +440 -0
- package/dist/main/core/mood-engine.js +145 -0
- package/dist/main/core/pet-messages.js +612 -0
- package/dist/main/core/pet-state-engine.js +232 -0
- package/dist/main/core/quote-collection.js +60 -0
- package/dist/main/core/quote-registry.js +175 -0
- package/dist/main/core/quote-triggers.js +62 -0
- package/dist/main/core/usage-tracker.js +625 -0
- package/dist/main/main/auto-launch.js +39 -0
- package/dist/main/main/auto-updater.js +98 -0
- package/dist/main/main/event-watcher.js +174 -0
- package/dist/main/main/ipc-handlers.js +89 -0
- package/dist/main/main/main.js +422 -0
- package/dist/main/main/preload.js +93 -0
- package/dist/main/main/settings-window.js +49 -0
- package/dist/main/main/share-card.js +139 -0
- package/dist/main/main/skin-manager.js +118 -0
- package/dist/main/main/tray.js +88 -0
- package/dist/main/shared/i18n.js +392 -0
- package/dist/main/shared/types.js +25 -0
- package/dist/main/shared/utils.js +9 -0
- package/dist/renderer/assets/claude-pet.png +0 -0
- package/dist/renderer/assets/index-BMnMEuOf.js +9 -0
- package/dist/renderer/assets/index-qzlrlqpX.css +1 -0
- package/dist/renderer/index.html +30 -0
- package/dist/renderer/share-card-template/card.html +148 -0
- package/docs/AGENTS.md +42 -0
- package/docs/images/angry.png +0 -0
- package/docs/images/character.webp +0 -0
- package/docs/images/claude-mama.png +0 -0
- package/docs/images/happy.png +0 -0
- package/docs/images/proud.png +0 -0
- package/docs/images/share-card-example.png +0 -0
- package/docs/images/worried_1.png +0 -0
- package/docs/images/worried_2.png +0 -0
- package/docs/spritesheet-bugs.md +240 -0
- package/docs/superpowers/plans/2026-03-10-compact-widget.md +888 -0
- package/docs/superpowers/plans/2026-03-10-viral-features.md +1874 -0
- package/docs/superpowers/plans/2026-03-14-update-ux.md +362 -0
- package/docs/superpowers/plans/2026-03-14-v1.1-features.md +2139 -0
- package/docs/superpowers/specs/2026-03-10-compact-widget-design.md +150 -0
- package/docs/superpowers/specs/2026-03-10-viral-features-design.md +217 -0
- package/docs/superpowers/specs/2026-03-14-streak-calendar-design.md +26 -0
- package/docs/superpowers/specs/2026-03-14-update-ux-design.md +172 -0
- package/docs/superpowers/specs/2026-03-14-v1.1-features-design.md +342 -0
- package/electron-builder.yml +75 -0
- package/package.json +48 -0
- package/scripts/AGENTS.md +60 -0
- package/scripts/install.ps1 +47 -0
- package/scripts/install.sh +98 -0
- package/scripts/make-icon.js +119 -0
- package/scripts/notarize.js +18 -0
- package/src/AGENTS.md +47 -0
- package/src/core/AGENTS.md +58 -0
- package/src/core/__tests__/AGENTS.md +60 -0
- package/src/core/__tests__/badge-triggers.test.ts +83 -0
- package/src/core/__tests__/contextual-messages.test.ts +87 -0
- package/src/core/__tests__/pet-state-engine.test.ts +350 -0
- package/src/core/__tests__/quote-collection.test.ts +62 -0
- package/src/core/__tests__/quote-triggers.test.ts +110 -0
- package/src/core/badge-manager.ts +50 -0
- package/src/core/badge-registry.ts +71 -0
- package/src/core/badge-triggers.ts +41 -0
- package/src/core/contextual-messages.ts +381 -0
- package/src/core/pet-messages.ts +615 -0
- package/src/core/pet-state-engine.ts +272 -0
- package/src/core/quote-collection.ts +63 -0
- package/src/core/quote-registry.ts +181 -0
- package/src/core/quote-triggers.ts +64 -0
- package/src/core/usage-tracker.ts +680 -0
- package/src/main/AGENTS.md +70 -0
- package/src/main/auto-launch.ts +38 -0
- package/src/main/auto-updater.ts +106 -0
- package/src/main/event-watcher.ts +159 -0
- package/src/main/ipc-handlers.ts +107 -0
- package/src/main/main.ts +425 -0
- package/src/main/preload.ts +111 -0
- package/src/main/settings-window.ts +50 -0
- package/src/main/share-card.ts +153 -0
- package/src/main/skin-manager.ts +119 -0
- package/src/main/tray.ts +94 -0
- package/src/renderer/AGENTS.md +62 -0
- package/src/renderer/App.tsx +270 -0
- package/src/renderer/assets/claude-mama.png +0 -0
- package/src/renderer/assets/claude-pet.png +0 -0
- package/src/renderer/components/AGENTS.md +50 -0
- package/src/renderer/components/Character.tsx +327 -0
- package/src/renderer/components/SpeechBubble.tsx +182 -0
- package/src/renderer/components/UsageIndicator.tsx +268 -0
- package/src/renderer/electron.d.ts +34 -0
- package/src/renderer/hooks/AGENTS.md +55 -0
- package/src/renderer/hooks/usePetState.ts +59 -0
- package/src/renderer/hooks/useWidgetMode.ts +18 -0
- package/src/renderer/index.html +29 -0
- package/src/renderer/main.tsx +13 -0
- package/src/renderer/pages/AGENTS.md +53 -0
- package/src/renderer/pages/Collection.tsx +252 -0
- package/src/renderer/pages/Settings.tsx +815 -0
- package/src/renderer/share-card-template/card.html +148 -0
- package/src/renderer/styles/AGENTS.md +50 -0
- package/src/renderer/styles/styles.css +166 -0
- package/src/shared/AGENTS.md +48 -0
- package/src/shared/i18n.ts +395 -0
- package/src/shared/types.ts +163 -0
- package/src/shared/utils.ts +6 -0
- package/tsconfig.json +16 -0
- package/tsconfig.main.json +12 -0
- package/tsconfig.renderer.json +12 -0
- package/vite.config.ts +47 -0
- package/vitest.config.ts +9 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
# Update UX Flow Improvement — Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
+
|
|
5
|
+
**Goal:** Provide stage-by-stage native dialog feedback when users click "Check for Updates", replacing the current silent/confusing flow.
|
|
6
|
+
|
|
7
|
+
**Architecture:** Centralize all manual update logic in `auto-updater.ts` via a new `checkForUpdatesManual()` function. Use `autoDownload = false` during manual checks to control timing. Localize the existing `update-downloaded` handler. Remove duplicate logic from `tray.ts` and `main.ts`.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** Electron (dialog API), electron-updater, TypeScript
|
|
10
|
+
|
|
11
|
+
**Spec:** `docs/superpowers/specs/2026-03-14-update-ux-design.md`
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Chunk 1: i18n keys and auto-updater refactor
|
|
16
|
+
|
|
17
|
+
### Task 1: Add i18n translation keys
|
|
18
|
+
|
|
19
|
+
**Files:**
|
|
20
|
+
- Modify: `src/shared/i18n.ts`
|
|
21
|
+
|
|
22
|
+
- [ ] **Step 1: Add new keys to `ko` locale**
|
|
23
|
+
|
|
24
|
+
Add after `update_up_to_date` (line 75) in the `ko` block:
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
update_downloading: '업데이트 다운로드 중...',
|
|
28
|
+
update_check_failed: '업데이트 확인 실패',
|
|
29
|
+
update_ready_title: '업데이트 준비 완료',
|
|
30
|
+
update_ready_message: 'v{version} 설치 준비 완료. 지금 재시작할까요?',
|
|
31
|
+
update_btn_restart: '지금 재시작',
|
|
32
|
+
update_btn_later: '나중에',
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- [ ] **Step 2: Add new keys to `en` locale**
|
|
36
|
+
|
|
37
|
+
Add after `update_up_to_date` (line 146) in the `en` block:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
update_downloading: 'Downloading update...',
|
|
41
|
+
update_check_failed: 'Update check failed',
|
|
42
|
+
update_ready_title: 'Update Ready',
|
|
43
|
+
update_ready_message: 'v{version} is ready to install. Restart now?',
|
|
44
|
+
update_btn_restart: 'Restart Now',
|
|
45
|
+
update_btn_later: 'Later',
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
- [ ] **Step 3: Add new keys to `ja` locale**
|
|
49
|
+
|
|
50
|
+
Add after `update_up_to_date` (line 217) in the `ja` block:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
update_downloading: 'アップデートをダウンロード中...',
|
|
54
|
+
update_check_failed: 'アップデートの確認に失敗しました',
|
|
55
|
+
update_ready_title: 'アップデート準備完了',
|
|
56
|
+
update_ready_message: 'v{version}のインストール準備ができました。今すぐ再起動しますか?',
|
|
57
|
+
update_btn_restart: '今すぐ再起動',
|
|
58
|
+
update_btn_later: '後で',
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
- [ ] **Step 4: Add new keys to `zh` locale**
|
|
62
|
+
|
|
63
|
+
Add after `update_up_to_date` (line 288) in the `zh` block:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
update_downloading: '正在下载更新...',
|
|
67
|
+
update_check_failed: '检查更新失败',
|
|
68
|
+
update_ready_title: '更新已准备就绪',
|
|
69
|
+
update_ready_message: 'v{version}已准备好安装。现在重启吗?',
|
|
70
|
+
update_btn_restart: '立即重启',
|
|
71
|
+
update_btn_later: '稍后',
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
- [ ] **Step 5: Verify build**
|
|
75
|
+
|
|
76
|
+
Run: `cd /c/projects/Personal/claude-mama && npx tsc -p tsconfig.main.json --noEmit`
|
|
77
|
+
Expected: No errors (type checking passes with new keys)
|
|
78
|
+
|
|
79
|
+
- [ ] **Step 6: Commit**
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
git add src/shared/i18n.ts
|
|
83
|
+
git commit -m "feat(i18n): add update UX translation keys for all locales"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### Task 2: Refactor `auto-updater.ts` — localize existing handler + add `checkForUpdatesManual()`
|
|
89
|
+
|
|
90
|
+
**Files:**
|
|
91
|
+
- Modify: `src/main/auto-updater.ts`
|
|
92
|
+
|
|
93
|
+
- [ ] **Step 1: Add imports and concurrency guard**
|
|
94
|
+
|
|
95
|
+
Replace the current imports (line 1-2) with:
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
import { autoUpdater } from 'electron-updater';
|
|
99
|
+
import { BrowserWindow, app, dialog } from 'electron';
|
|
100
|
+
import { getStore } from './ipc-handlers';
|
|
101
|
+
import { t, DEFAULT_LOCALE } from '../shared/i18n';
|
|
102
|
+
import { Locale } from '../shared/types';
|
|
103
|
+
|
|
104
|
+
let isManualChecking = false;
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
- [ ] **Step 1b: Update `initAutoUpdater` to use imported `app` directly**
|
|
108
|
+
|
|
109
|
+
In `initAutoUpdater()`, replace line 6:
|
|
110
|
+
```typescript
|
|
111
|
+
if (!require('electron').app.isPackaged) return;
|
|
112
|
+
```
|
|
113
|
+
with:
|
|
114
|
+
```typescript
|
|
115
|
+
if (!app.isPackaged) return;
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
- [ ] **Step 2: Localize the `update-downloaded` handler**
|
|
119
|
+
|
|
120
|
+
Replace the existing `update-downloaded` handler (lines 15-31) with:
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
autoUpdater.on('update-downloaded', (info) => {
|
|
124
|
+
console.log(`[auto-updater] Update downloaded: v${info.version}`);
|
|
125
|
+
|
|
126
|
+
const locale = getStore().get('locale', DEFAULT_LOCALE) as Locale;
|
|
127
|
+
const win = BrowserWindow.getFocusedWindow();
|
|
128
|
+
dialog.showMessageBox(win ?? ({} as BrowserWindow), {
|
|
129
|
+
type: 'info',
|
|
130
|
+
title: t(locale, 'update_ready_title'),
|
|
131
|
+
message: t(locale, 'update_ready_message').replace('{version}', info.version),
|
|
132
|
+
buttons: [t(locale, 'update_btn_restart'), t(locale, 'update_btn_later')],
|
|
133
|
+
defaultId: 0,
|
|
134
|
+
}).then(({ response }) => {
|
|
135
|
+
if (response === 0) {
|
|
136
|
+
autoUpdater.quitAndInstall();
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
- [ ] **Step 3: Add `checkForUpdatesManual()` export**
|
|
143
|
+
|
|
144
|
+
Add after the `initAutoUpdater` function (after line 43):
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
export async function checkForUpdatesManual(): Promise<void> {
|
|
148
|
+
if (isManualChecking) return;
|
|
149
|
+
if (!app.isPackaged) {
|
|
150
|
+
dialog.showMessageBox({
|
|
151
|
+
type: 'info',
|
|
152
|
+
title: 'Claude Mama',
|
|
153
|
+
message: 'Auto-update is not available in dev mode.',
|
|
154
|
+
});
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
isManualChecking = true;
|
|
159
|
+
const locale = getStore().get('locale', DEFAULT_LOCALE) as Locale;
|
|
160
|
+
|
|
161
|
+
// Temporarily disable autoDownload to control timing
|
|
162
|
+
autoUpdater.autoDownload = false;
|
|
163
|
+
|
|
164
|
+
try {
|
|
165
|
+
const result = await autoUpdater.checkForUpdates();
|
|
166
|
+
|
|
167
|
+
if (!result || !result.updateInfo || result.updateInfo.version === app.getVersion()) {
|
|
168
|
+
await dialog.showMessageBox({
|
|
169
|
+
type: 'info',
|
|
170
|
+
title: 'Claude Mama',
|
|
171
|
+
message: t(locale, 'update_up_to_date'),
|
|
172
|
+
detail: `v${app.getVersion()}`,
|
|
173
|
+
});
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Update found — ask user to confirm download
|
|
178
|
+
const newVersion = result.updateInfo.version;
|
|
179
|
+
const { response } = await dialog.showMessageBox({
|
|
180
|
+
type: 'info',
|
|
181
|
+
title: 'Claude Mama',
|
|
182
|
+
message: t(locale, 'update_downloading'),
|
|
183
|
+
detail: `v${app.getVersion()} → v${newVersion}`,
|
|
184
|
+
buttons: ['OK', 'Cancel'],
|
|
185
|
+
defaultId: 0,
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
if (response === 0) {
|
|
189
|
+
await autoUpdater.downloadUpdate();
|
|
190
|
+
// update-downloaded handler will show restart prompt
|
|
191
|
+
}
|
|
192
|
+
} catch (err: any) {
|
|
193
|
+
await dialog.showMessageBox({
|
|
194
|
+
type: 'error',
|
|
195
|
+
title: 'Claude Mama',
|
|
196
|
+
message: t(locale, 'update_check_failed'),
|
|
197
|
+
detail: err.message,
|
|
198
|
+
});
|
|
199
|
+
} finally {
|
|
200
|
+
autoUpdater.autoDownload = true;
|
|
201
|
+
isManualChecking = false;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
- [ ] **Step 4: Verify build**
|
|
207
|
+
|
|
208
|
+
Run: `cd /c/projects/Personal/claude-mama && npx tsc -p tsconfig.main.json --noEmit`
|
|
209
|
+
Expected: No errors
|
|
210
|
+
|
|
211
|
+
- [ ] **Step 5: Commit**
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
git add src/main/auto-updater.ts
|
|
215
|
+
git commit -m "feat(updater): add checkForUpdatesManual with staged dialogs and localization"
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Chunk 2: Remove duplicate logic from tray.ts and main.ts
|
|
221
|
+
|
|
222
|
+
### Task 3: Simplify `tray.ts` — use `checkForUpdatesManual()`
|
|
223
|
+
|
|
224
|
+
**Files:**
|
|
225
|
+
- Modify: `src/main/tray.ts`
|
|
226
|
+
|
|
227
|
+
- [ ] **Step 1: Replace `autoUpdater` import with `checkForUpdatesManual`**
|
|
228
|
+
|
|
229
|
+
Replace line 3:
|
|
230
|
+
```typescript
|
|
231
|
+
import { autoUpdater } from 'electron-updater';
|
|
232
|
+
```
|
|
233
|
+
with:
|
|
234
|
+
```typescript
|
|
235
|
+
import { checkForUpdatesManual } from './auto-updater';
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
- [ ] **Step 2: Replace inline update logic**
|
|
239
|
+
|
|
240
|
+
Replace the entire update menu item click handler (lines 84-97):
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
click: async () => {
|
|
244
|
+
if (!app.isPackaged) {
|
|
245
|
+
dialog.showMessageBox({ type: 'info', title: 'Claude Mama', message: 'Auto-update is not available in dev mode.' });
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
try {
|
|
249
|
+
const result = await autoUpdater.checkForUpdates();
|
|
250
|
+
if (!result || !result.updateInfo || result.updateInfo.version === app.getVersion()) {
|
|
251
|
+
dialog.showMessageBox({ type: 'info', title: 'Claude Mama', message: t(locale, 'update_up_to_date') });
|
|
252
|
+
}
|
|
253
|
+
} catch (err: any) {
|
|
254
|
+
dialog.showMessageBox({ type: 'error', title: 'Claude Mama', message: `Update check failed: ${err.message}` });
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
with:
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
click: () => { void checkForUpdatesManual(); },
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
- [ ] **Step 3: Remove unused imports**
|
|
266
|
+
|
|
267
|
+
Remove `app` and `dialog` from the Electron import if they are no longer used elsewhere in this file. Check: `app` is used on lines 33, 79, 85-86 — `app` is still needed (line 33, 79). `dialog` is only used in the update handler — remove `dialog` from the import.
|
|
268
|
+
|
|
269
|
+
- [ ] **Step 4: Verify build**
|
|
270
|
+
|
|
271
|
+
Run: `cd /c/projects/Personal/claude-mama && npx tsc -p tsconfig.main.json --noEmit`
|
|
272
|
+
Expected: No errors
|
|
273
|
+
|
|
274
|
+
- [ ] **Step 5: Commit**
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
git add src/main/tray.ts
|
|
278
|
+
git commit -m "refactor(tray): use centralized checkForUpdatesManual"
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
### Task 4: Simplify `main.ts` — use `checkForUpdatesManual()`
|
|
284
|
+
|
|
285
|
+
**Files:**
|
|
286
|
+
- Modify: `src/main/main.ts`
|
|
287
|
+
|
|
288
|
+
- [ ] **Step 1: Replace inline update logic in context menu**
|
|
289
|
+
|
|
290
|
+
Replace the update menu item click handler (lines 293-306):
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
click: async () => {
|
|
294
|
+
if (!app.isPackaged) {
|
|
295
|
+
dialog.showMessageBox({ type: 'info', title: 'Claude Mama', message: 'Auto-update is not available in dev mode.' });
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
const result = await autoUpdater.checkForUpdates();
|
|
300
|
+
if (!result || !result.updateInfo || result.updateInfo.version === app.getVersion()) {
|
|
301
|
+
dialog.showMessageBox({ type: 'info', title: 'Claude Mama', message: t(locale, 'update_up_to_date') });
|
|
302
|
+
}
|
|
303
|
+
} catch (err: any) {
|
|
304
|
+
dialog.showMessageBox({ type: 'error', title: 'Claude Mama', message: `Update check failed: ${err.message}` });
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
with:
|
|
310
|
+
|
|
311
|
+
```typescript
|
|
312
|
+
click: () => { void checkForUpdatesManual(); },
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
- [ ] **Step 2: Update imports**
|
|
316
|
+
|
|
317
|
+
Add `checkForUpdatesManual` to the import from `./auto-updater`:
|
|
318
|
+
|
|
319
|
+
Replace line 14:
|
|
320
|
+
```typescript
|
|
321
|
+
import { initAutoUpdater } from './auto-updater';
|
|
322
|
+
```
|
|
323
|
+
with:
|
|
324
|
+
```typescript
|
|
325
|
+
import { initAutoUpdater, checkForUpdatesManual } from './auto-updater';
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Remove `autoUpdater` import (line 18):
|
|
329
|
+
```typescript
|
|
330
|
+
import { autoUpdater } from 'electron-updater';
|
|
331
|
+
```
|
|
332
|
+
Delete this line entirely.
|
|
333
|
+
|
|
334
|
+
- [ ] **Step 3: Verify build**
|
|
335
|
+
|
|
336
|
+
Run: `cd /c/projects/Personal/claude-mama && npx tsc -p tsconfig.main.json --noEmit`
|
|
337
|
+
Expected: No errors
|
|
338
|
+
|
|
339
|
+
- [ ] **Step 4: Commit**
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
git add src/main/main.ts
|
|
343
|
+
git commit -m "refactor(main): use centralized checkForUpdatesManual"
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
### Task 5: Final verification
|
|
349
|
+
|
|
350
|
+
- [ ] **Step 1: Full build**
|
|
351
|
+
|
|
352
|
+
Run: `cd /c/projects/Personal/claude-mama && npm run build`
|
|
353
|
+
Expected: Build succeeds with no errors
|
|
354
|
+
|
|
355
|
+
- [ ] **Step 2: Verify no remaining `autoUpdater` imports in tray/main**
|
|
356
|
+
|
|
357
|
+
Run: `grep -n "from 'electron-updater'" src/main/tray.ts src/main/main.ts`
|
|
358
|
+
Expected: No matches (only `auto-updater.ts` should import from `electron-updater`)
|
|
359
|
+
|
|
360
|
+
- [ ] **Step 3: Commit (if any cleanup needed)**
|
|
361
|
+
|
|
362
|
+
Only if fixups were required in previous steps.
|