@horizon_works/banto 0.8.8 → 0.8.9
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/license/client.js +28 -8
- package/package.json +1 -1
package/license/client.js
CHANGED
|
@@ -193,6 +193,9 @@ async function check(version) {
|
|
|
193
193
|
status: r.status || 'unknown',
|
|
194
194
|
daysLeft: typeof r.days_left === 'number' ? r.days_left : null,
|
|
195
195
|
plan: r.plan || null, expiresAt: r.expires_at || null,
|
|
196
|
+
// ★台帳の「統計を送ってよい」印を控える(★isSharing の③が読む)
|
|
197
|
+
// ★これは**入れる側**だけに効く。★止めるのは常に手元の share.json
|
|
198
|
+
stats_opt_in: r.stats_opt_in === true,
|
|
196
199
|
lastOkAt: r.status === 'active' ? now : (cache && cache.lastOkAt) || null,
|
|
197
200
|
};
|
|
198
201
|
writeCache(next);
|
|
@@ -244,17 +247,34 @@ const HOME = process.env.BANTO_HOME || path.join(require('os').homedir(), '.bant
|
|
|
244
247
|
const STATS_CACHE = path.join(HOME, '.stats.json');
|
|
245
248
|
|
|
246
249
|
/**
|
|
247
|
-
*
|
|
250
|
+
* 送ることに同意しているか
|
|
248
251
|
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
*
|
|
252
|
+
* ★強さの順(2026-08-29)
|
|
253
|
+
* ① 手元で「止めて」と言われていたら → ★**必ず止まる**(本人の意思がいちばん強い)
|
|
254
|
+
* ② 手元で「送る」と言われていたら → 送る
|
|
255
|
+
* ③ 手元に何も無ければ → ★**台帳の `stats_opt_in`** を見る
|
|
256
|
+
* ④ どれも無ければ → ★送らない(既定オフ。★書面のとおり)
|
|
257
|
+
*
|
|
258
|
+
* 🚨★③を足した理由(2026-08-29)
|
|
259
|
+
* ★`stats_opt_in` の列は 2026-08-21 から在ったのに、**誰も読んでいなかった**
|
|
260
|
+
* (→ tooling-check.md「列を作った日に、読む側を書く」)。
|
|
261
|
+
* ★身内へお渡しした鍵など、**こちらで入れたい**場面がある。
|
|
262
|
+
* ★★ただし**切る力は台帳に持たせない**。★止めるのは常に本人。
|
|
263
|
+
* ★誰がいつ入れたかは `stats_opt_in_at` に残る(★あとから説明できる)。
|
|
254
264
|
*/
|
|
255
265
|
function isSharing() {
|
|
256
|
-
|
|
257
|
-
|
|
266
|
+
// ① ② 手元に書いてあれば、それが最優先
|
|
267
|
+
try {
|
|
268
|
+
const j = JSON.parse(fs.readFileSync(path.join(HOME, 'share.json'), 'utf8'));
|
|
269
|
+
if (typeof j.stats === 'boolean') return j.stats;
|
|
270
|
+
} catch (_) {}
|
|
271
|
+
// ③ 台帳の印(★最後に確かめたときの結果を控えから読む。通信しない)
|
|
272
|
+
try {
|
|
273
|
+
const c = readCache();
|
|
274
|
+
if (c && c.stats_opt_in === true) return true;
|
|
275
|
+
} catch (_) {}
|
|
276
|
+
// ④ 既定は送らない
|
|
277
|
+
return false;
|
|
258
278
|
}
|
|
259
279
|
|
|
260
280
|
/** 同意を切り替える(★人が明示的に呼んだときだけ) */
|