pinglet-cli 0.2.11 → 0.2.12
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/dist/adapters/claude.js +19 -3
- package/package.json +1 -1
package/dist/adapters/claude.js
CHANGED
|
@@ -180,9 +180,25 @@ function writeSettings(settings, expectedMtimeMs) {
|
|
|
180
180
|
if (settingsMtimeMs() !== expectedMtimeMs)
|
|
181
181
|
return false;
|
|
182
182
|
// settings.json은 Claude Code가 수시로 읽는 파일이라 tmp+rename으로 원자적으로 쓴다.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
183
|
+
// tmp 이름에 pid를 붙여 프로세스마다 다르게 만든다 — 여러 세션의 statusline이
|
|
184
|
+
// 동시에 돌면 같은 tmp에 겹쳐 쓰게 되고, writeFileSync는 truncate 후 쓰기라
|
|
185
|
+
// 짧은 내용 뒤에 긴 내용의 꼬리가 남은 채로 rename 되어 settings.json이 깨진다.
|
|
186
|
+
// rename 자체는 tmp 이름과 무관하게 원자적이라 이것만으로 충분하다.
|
|
187
|
+
const tmp = `${SETTINGS_PATH}.pinglet-tmp.${process.pid}`;
|
|
188
|
+
try {
|
|
189
|
+
fs.writeFileSync(tmp, JSON.stringify(settings, null, 2) + "\n");
|
|
190
|
+
fs.renameSync(tmp, SETTINGS_PATH);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
// rename 전에 실패하면 tmp가 남는다 — 이름이 pid별로 달라 방치하면 쌓인다.
|
|
194
|
+
try {
|
|
195
|
+
fs.unlinkSync(tmp);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// 이미 없으면 무시
|
|
199
|
+
}
|
|
200
|
+
throw error;
|
|
201
|
+
}
|
|
186
202
|
return true;
|
|
187
203
|
}
|
|
188
204
|
function isPingletTip(tip) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pinglet-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.12",
|
|
4
4
|
"description": "Short messages from other developers shown in your Claude Code spinner while the AI thinks — zero tokens, never reads your code. Claude Code / Codex integration",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|