prts-moonlit 1.2.2 → 1.2.4
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/gacha.html +7 -7
- package/index.html +20 -14
- package/ledger.html +7 -7
- package/package.json +1 -1
package/gacha.html
CHANGED
|
@@ -1148,17 +1148,17 @@ document.addEventListener('pointerdown',function(){ac()},{once:true});
|
|
|
1148
1148
|
wxhr(url(),JSON.stringify({v:1,u:acct.u,c:acct.c||0,t:t,data:snap()}),function(){st('✔ 已上传 · 后台校验…');setTimeout(function(){verify(t)},600);});
|
|
1149
1149
|
}
|
|
1150
1150
|
function verify(t){
|
|
1151
|
-
|
|
1151
|
+
var x2=new XMLHttpRequest();x2.open('GET',url()+'?ts='+Date.now(),true);x2.timeout=20000;x2.onload=function(){try{var x=x2.responseText;
|
|
1152
1152
|
x=(x||'').replace(/=$/,'');
|
|
1153
1153
|
try{var rb=JSON.parse(x);if(rb.t===t){st('✔ 已同步 '+clock());return;}}catch(e){}
|
|
1154
1154
|
if(!window.__pv){window.__pv=1;setTimeout(function(){push(1);},800);}
|
|
1155
1155
|
else{window.__pv=0;st('⚠ 上传好像没送达(此浏览器限制跨域)——数据还在本机,可换 Safari 或用存档码');}
|
|
1156
|
-
}).
|
|
1156
|
+
}catch(e){st('⚠ 校验失败(可能网络受限)');}};x2.onerror=x2.ontimeout=function(){st('⚠ 校验失败(可能网络受限)');};x2.send();
|
|
1157
1157
|
}
|
|
1158
1158
|
function pull(manual){
|
|
1159
1159
|
if(!acct||!acct.k)return;
|
|
1160
1160
|
if(manual)st('↻ 同步中…');
|
|
1161
|
-
|
|
1161
|
+
var x2=new XMLHttpRequest();x2.open('GET',url()+'?ts='+Date.now(),true);x2.timeout=20000;x2.onload=function(){try{var x=x2.responseText;
|
|
1162
1162
|
x=(x||'').replace(/=$/,'');
|
|
1163
1163
|
if(!x){if(manual)st('☁ 云端还没有存档——点「云端上传」把本机数据传上去');return;}
|
|
1164
1164
|
var rb;try{rb=JSON.parse(x)}catch(e){st('⚠ 云端数据格式异常');return;}
|
|
@@ -1173,7 +1173,7 @@ document.addEventListener('pointerdown',function(){ac()},{once:true});
|
|
|
1173
1173
|
st(same2?'✔ 已是最新 '+clock():'☁ 云端比本机旧——点「云端上传」可覆盖云端');
|
|
1174
1174
|
}
|
|
1175
1175
|
else{st('✔ 已是云端最新');}
|
|
1176
|
-
}).
|
|
1176
|
+
}catch(e){st('⚠ 云端数据格式异常');}};x2.onerror=x2.ontimeout=function(){st('⚠ 云端连接失败');};x2.send();
|
|
1177
1177
|
}
|
|
1178
1178
|
function logout(){localStorage.removeItem(LS);acct=null;}
|
|
1179
1179
|
var CSS='.acWrap{position:fixed;inset:0;z-index:9998;background:rgba(3,6,14,.66);display:none;align-items:center;justify-content:center}.acWrap.on{display:flex}'+
|
|
@@ -1228,7 +1228,7 @@ document.addEventListener('pointerdown',function(){ac()},{once:true});
|
|
|
1228
1228
|
st('✦ 仓库已创建,正在上传本机数据…');render();push();return;
|
|
1229
1229
|
}
|
|
1230
1230
|
st('↻ 查找云端仓库…');
|
|
1231
|
-
|
|
1231
|
+
var x3=new XMLHttpRequest();x3.open('GET',BASE+k+'?ts='+Date.now(),true);x3.timeout=20000;x3.onload=function(){try{var x=x3.responseText;
|
|
1232
1232
|
x=(x||'').replace(/=$/,'');
|
|
1233
1233
|
if(x&&x.length>2){
|
|
1234
1234
|
var rb=null;try{rb=JSON.parse(x)}catch(e){}if(!rb){acct=null;localStorage.removeItem(LS);st('⚠ 云端数据异常——没敢覆盖');return;}
|
|
@@ -1239,7 +1239,7 @@ document.addEventListener('pointerdown',function(){ac()},{once:true});
|
|
|
1239
1239
|
b.setAttribute('data-mode','create');b.textContent='✦ 没找到仓库——点此以本机数据创建';
|
|
1240
1240
|
st('(如果是新账号,创建后本机数据会上传成初始存档)');
|
|
1241
1241
|
}
|
|
1242
|
-
}).
|
|
1242
|
+
}catch(e){st('⚠ 云端连接失败,稍后再试');}};x3.onerror=x3.ontimeout=function(){st('⚠ 云端连接失败,稍后再试');};x3.send();
|
|
1243
1243
|
};
|
|
1244
1244
|
var pl=g('#acPull');if(pl)pl.onclick=function(){pull(1)};
|
|
1245
1245
|
var pu=g('#acPush');if(pu)pu.onclick=function(){if(acct&&acct.k)push();};
|
|
@@ -1300,7 +1300,7 @@ document.addEventListener('pointerdown',function(){ac()},{once:true});
|
|
|
1300
1300
|
btn.addEventListener('click',open);
|
|
1301
1301
|
setInterval(function(){if(acct&&acct.k){var c=canon();if(c!==lastSnap){lastSnap=c;clearTimeout(pq);pq=setTimeout(push,900);}}},2000);
|
|
1302
1302
|
if(acct&&acct.k){setTimeout(function(){pull(false);},250);}
|
|
1303
|
-
var APP_VER='1.2.
|
|
1303
|
+
var APP_VER='1.2.4';
|
|
1304
1304
|
function _verCmp(a,b){var x=String(a).split('.'),y=String(b).split('.');for(var i=0;i<3;i++){var p=parseInt(x[i]||'0',10),q=parseInt(y[i]||'0',10);if(p!==q)return p-q}return 0}
|
|
1305
1305
|
function chkVer(){
|
|
1306
1306
|
try{
|
package/index.html
CHANGED
|
@@ -542,7 +542,7 @@ img.av{filter:saturate(1.1) contrast(1.05) -webkit-user-drag:none}
|
|
|
542
542
|
<div class="bnews" id="newsBar" data-act="news" style="cursor:pointer">
|
|
543
543
|
<div class="hd">BREAKING NEWS</div>
|
|
544
544
|
<div class="bx">
|
|
545
|
-
<div style="font-size:.82em;line-height:1.4;font-weight:800;color:#ff5f57">版本 v1.2.
|
|
545
|
+
<div style="font-size:.82em;line-height:1.4;font-weight:800;color:#ff5f57">版本 v1.2.4 正式上线!<br><span style="opacity:.75;font-size:.82em;font-weight:400;color:#ffd23f">点此查看使用教程与更新内容 ↗</span></div>
|
|
546
546
|
</div>
|
|
547
547
|
</div>
|
|
548
548
|
|
|
@@ -2484,8 +2484,8 @@ V.ledger=function(){LG.load();LG.paint()};
|
|
|
2484
2484
|
/* ================= 战绩数据(WHALE_STATS)=================
|
|
2485
2485
|
本块由 /var/minis/shared/whale/sync_record_stats.py 从 战绩簿 自动生成。
|
|
2486
2486
|
更新流程:改 shared/whale/战绩.md → 跑 sync_record_stats.py → 本块自动重写 */
|
|
2487
|
-
/*WHALE_STATS:BEGIN —— 由 sync_record_stats.py 自动生成于 2026-09-27
|
|
2488
|
-
var WHALE_STATS={"updated":"","stats":[],"reports":[],"mine":[]};
|
|
2487
|
+
/*WHALE_STATS:BEGIN —— 由 sync_record_stats.py 自动生成于 2026-09-27 06:32;改数据请改 战绩.md 后重跑本脚本 */
|
|
2488
|
+
var WHALE_STATS={"updated":"2026-09-27","stats":[["报备次数","7"],["累计抽数","24,213"],["累计六星","726"],["综合出率","2.998%"],["违约","0 次"],["单发最欧","1 抽"]],"reports":[{"d":"2026-09-26","pool":"池子未确认(主人「好像半周年」)","n":"10,000","six":"288","rate":"2.88%","gap":"34.7 抽","note":"✅ 数据有效——6★ 基础率与池子无关;理论 2.889% / 34.61 抽,偏差仅 −0.009pp ✅ 后来由数字反推:2.88% 更贴近非联动池(2.889%)而非联动池(3.00%)→ 主人的直觉正确"},{"d":"2026-09-26","pool":"彩虹六号联动(井 5/120)","n":"10,000","six":"321","rate":"3.21%","gap":"31.1 抽","note":"联动池理论 ~3.02%(含 120 硬保底),+1.1σ ✓ 正常;最欧 1 抽(一发入魂);5★ 767 个 = 7.67%(理论 8%,−3.7σ ⚠️ 偏门样本或抄录误差;20 万抽对照实测 7.985%,系统无问题)"},{"d":"2026-09-26","pool":"标准寻访(模拟器一键报备)","n":"13","six":"1","rate":"7.69%","gap":"13.0 抽","note":"🍀 唯一一彩恰落第 13 抽(未触软保底,纯运气);期望 0.26~0.38 个 → +1~1.5σ 小欧;5★×2(期望 1.04)"},{"d":"2026-09-26","pool":"P3R 联动(井 15/120)","n":"600","six":"16","rate":"2.67%","gap":"36.6 抽","note":"联动池理论 ~3.02%(含 120 硬保底);期望 18.12 个 → −0.51σ 正常波动(略非);5★ 45 个 = 7.50%(理论 8%,−0.45σ);最非 66 抽(未触软保底)· 最欧 4 抽;注:16 个六星里若有 UP 需主人补报是哪位干员"},{"d":"2026-09-27","pool":"标准寻访(模拟器)","n":"1,500","six":"37","rate":"2.47%","gap":"39.1 抽","note":"标准池理论 ~2.89%(2% 基础+软保底),期望 43.3 个 → −0.97σ 正常偏非;5★ 127 个 = 8.47%(理论 8%,+0.67σ ✓);最非 70 抽(刷新最非记录,前值 66,仍未触 99 硬保底)· 最欧 2 抽(单发总记录仍是 1 抽)"},{"d":"2026-09-27","pool":"Ave Mujica 联动(井 42/120 · 📮一键报备)","n":"1,600","six":"45","rate":"2.81%","gap":"35.5 抽","note":"联动池理论 ~3.02%(含 120 硬保底),期望 48.3 个 → −0.48σ 正常偏非;5★ 123 个 = 7.69%(理论 8%,−0.46σ 正常);最非 64 抽 · 最欧 3 抽(单发总记录仍 1 抽)"},{"d":"2026-09-27","pool":"Ave Mujica 联动(井 59/120)","n":"500","six":"18","rate":"3.60%","gap":"24.5 抽","note":"联动池理论 ~3.02%(含 120 硬保底),期望 15.1 个 → +0.76σ 正常偏欧;5★ 27 个 = 5.40%(理论 8%,−2.14σ ⚠️ 五星大非号角);最非 58 抽 · 最欧 2 抽(单发总记录仍 1 抽)"},{"d":"2026-09-26","pool":"彩虹六号联动(1 亿抽大样本)","n":"100,000,000","six":"3,036,676","rate":"3.03668%","gap":"—","note":"五批 × 2000 万,共约 76 秒。保底触发 248,381 次(0.248%)。概率再分配账目精确守恒:6★ 多出 +1.03668pp = 5★ −0.0193pp + 4★ −0.13008pp + 3★ −0.8873pp"}],"mine":[{"d":"2026-09-26","pool":"Ave Mujica 联动","n":"120","got":"丰川祥子(6★)","note":"踩中 120 硬保底最后一抽"},{"d":"2026-09-26","pool":"中坚寻访","n":"550","got":"斯卡蒂(6★)","note":"无 UP 无井,纯抽;期望 1660"},{"d":"2026-09-26","pool":"周年限定","n":"70","got":"可露希尔 + 凯尔希·思衡托","note":"70 抽两个六星,全 UP 组"}]};
|
|
2489
2489
|
/*WHALE_STATS:END*/
|
|
2490
2490
|
|
|
2491
2491
|
/* ================= VIEW: RECORDS(战绩)================= */
|
|
@@ -2641,7 +2641,7 @@ function tshuffle(a){for(var i=a.length-1;i>0;i--){var j=Math.floor(Math.random(
|
|
|
2641
2641
|
var TARO_NOW=[];
|
|
2642
2642
|
function openNews(){
|
|
2643
2643
|
var h='<div class="box"><div class="tag rd">NOTICE</div>'+
|
|
2644
|
-
'<div style="margin-top:6px;font-weight:900;font-size:1.08em">版本 v1.2.
|
|
2644
|
+
'<div style="margin-top:6px;font-weight:900;font-size:1.08em">版本 v1.2.4 正式上线!</div>'+
|
|
2645
2645
|
'<div style="font-size:.78em;opacity:.7;margin-top:3px">鲸鲸的养成计划 · PRTS 终端 · 2026-09-27</div></div>'+
|
|
2646
2646
|
'<div class="box" style="margin-top:10px"><div class="tag">使用教程</div>'+
|
|
2647
2647
|
'<div style="font-size:.82em;line-height:1.8;margin-top:6px">'+
|
|
@@ -2651,7 +2651,11 @@ function openNews(){
|
|
|
2651
2651
|
'④ 云存档:点 @ 登录 →「云端导入」接回数据 /「云端上传」备份上云;也有「本地存档码」跨设备搬运<br>'+
|
|
2652
2652
|
'⑤ 恢复出厂:@ 面板内「清空本机存档」,一键清空本机数据(云端不受影响)<br>'+'⑥ AI 对话:01 里保存 API 配置(地址/Key/模型)→ 和「人格」开聊;采购中心的券可直接在对话里使用<br>'+'⑦ 意见箱:@ 面板里的 📮 直达云端,说什么都能被鲸鲸收到</div></div>'+
|
|
2653
2653
|
'<div class="box" style="margin-top:10px"><div class="tag">免责声明</div><div style="font-size:.76em;line-height:1.75;margin-top:6px;opacity:.8">本站为个人学习与娱乐项目,无商业运营、无任何支付功能。AI 功能需自备 API 密钥,生成内容仅供参考;数据保存在你的设备与私有云存档中,可随时一键清空。</div></div>'+
|
|
2654
|
-
'<div class="box" style="margin-top:10px"><div class="tag">更新内容 · v1.2.
|
|
2654
|
+
'<div class="box" style="margin-top:10px"><div class="tag">更新内容 · v1.2.4</div>'+
|
|
2655
|
+
'<div style="font-size:.82em;line-height:1.8;margin-top:6px">✦ 对话输入修复:聊天打字时按「删除键」不再误触返回主页<br>✦ 战绩簿刷新:Ave Mujica 联动 1600 抽入账(累计 24,213 抽 · 726 彩 · 2.998%)</div></div>'+
|
|
2656
|
+
'<div class="box" style="margin-top:10px"><div class="tag">里程碑 · v1.2.3</div>'+
|
|
2657
|
+
'<div style="font-size:.82em;line-height:1.8;margin-top:6px">✦ 云端同步加固:开屏拉取 / 云端导入 / 登录校验 / 上传校验全部换用更稳的传输通道——弱网与受限环境也能把存档稳稳拉回来</div></div>'+
|
|
2658
|
+
'<div class="box" style="margin-top:10px"><div class="tag">里程碑 · v1.2.2</div>'+
|
|
2655
2659
|
'<div style="font-size:.82em;line-height:1.8;margin-top:6px">✦ 本地密码本:@ 面板 🔐 · 只存本机、主口令加密、永不上云<br>✦ 收件箱:意见与战绩直达站内,主人专属(📬)<br>✦ AI 推理调节:对话页 ⚙ 新增 推理强度 / 温度 / 上限<br>✦ 账本余额校准:「💳 实际余额」自己填,主页余额同步跟动</div></div>'+
|
|
2656
2660
|
'<div class="box" style="margin-top:10px"><div class="tag">里程碑 · v1.2.1</div>'+
|
|
2657
2661
|
'<div style="font-size:.82em;line-height:1.8;margin-top:6px">✦ 意见箱上岗:@ 面板 📮 写信直达云端信箱,鲸鲸定期收信<br>✦ 一键报备:寻访战绩直传云端;和 AI 聊一句自动打卡<br>✦ API Key 加密保存:密文落盘、聊天照常<br>✦ 版本哨兵:新版上线自动提醒「点此刷新更新」<br>✦ 公开招募下线(九宫格重排 01-09)· 免责声明上站</div></div>'+
|
|
@@ -2895,6 +2899,8 @@ document.addEventListener('click',function(e){
|
|
|
2895
2899
|
|
|
2896
2900
|
/* ================= KEYBOARD ================= */
|
|
2897
2901
|
document.addEventListener('keydown',function(e){
|
|
2902
|
+
var _tg=e&&e.target,_tt=_tg&&_tg.tagName?_tg.tagName.toUpperCase():'';
|
|
2903
|
+
if(_tt==='INPUT'||_tt==='TEXTAREA'||(_tg&&_tg.isContentEditable)){return;}
|
|
2898
2904
|
if($('#view').classList.contains('on')){
|
|
2899
2905
|
if(e.key==='Escape'||e.key==='Backspace'){e.preventDefault();closeView()}
|
|
2900
2906
|
return;
|
|
@@ -2991,7 +2997,7 @@ boot();
|
|
|
2991
2997
|
(function(){
|
|
2992
2998
|
var B=document.getElementById('petB'),bub=document.getElementById('petBub'),txt=document.getElementById('petTxt');
|
|
2993
2999
|
if(!B)return;
|
|
2994
|
-
var L=['鲸鲸~','主人~','捏到了!再捏一下嘛','今日宜抽卡','小鱼干 +1!','BUILD v1.2.
|
|
3000
|
+
var L=['鲸鲸~','主人~','捏到了!再捏一下嘛','今日宜抽卡','小鱼干 +1!','BUILD v1.2.4 已就位','账单同步了吗?','过场动画,好看吧?','晚安前记得说晚安哦','鲸鲸在看家…','要摸摸头吗?','别熬夜啦,主人'];
|
|
2995
3001
|
var last=-1,ht=0;
|
|
2996
3002
|
function say(){
|
|
2997
3003
|
var i;do{i=Math.floor(Math.random()*L.length)}while(i===last);
|
|
@@ -3026,7 +3032,7 @@ boot();
|
|
|
3026
3032
|
setInterval(function(){if(document.visibilityState==='visible')say()},36000);
|
|
3027
3033
|
})();
|
|
3028
3034
|
</script>
|
|
3029
|
-
<div style="position:fixed;left:10px;bottom:5px;font-size:9px;letter-spacing:.14em;color:#4cc9ff;opacity:.5;z-index:45;font-family:ui-monospace,Menlo,monospace;pointer-events:none">BUILD v1.2.
|
|
3035
|
+
<div style="position:fixed;left:10px;bottom:5px;font-size:9px;letter-spacing:.14em;color:#4cc9ff;opacity:.5;z-index:45;font-family:ui-monospace,Menlo,monospace;pointer-events:none">BUILD v1.2.4</div>
|
|
3030
3036
|
|
|
3031
3037
|
<!-- ===== SYSTEM LOGIN 云存档 ===== -->
|
|
3032
3038
|
<script>
|
|
@@ -3131,17 +3137,17 @@ boot();
|
|
|
3131
3137
|
wxhr(url(),JSON.stringify({v:1,u:acct.u,c:acct.c||0,t:t,data:snap()}),function(){st('✔ 已上传 · 后台校验…');setTimeout(function(){verify(t)},600);});
|
|
3132
3138
|
}
|
|
3133
3139
|
function verify(t){
|
|
3134
|
-
|
|
3140
|
+
var x2=new XMLHttpRequest();x2.open('GET',url()+'?ts='+Date.now(),true);x2.timeout=20000;x2.onload=function(){try{var x=x2.responseText;
|
|
3135
3141
|
x=(x||'').replace(/=$/,'');
|
|
3136
3142
|
try{var rb=JSON.parse(x);if(rb.t===t){st('✔ 已同步 '+clock());return;}}catch(e){}
|
|
3137
3143
|
if(!window.__pv){window.__pv=1;setTimeout(function(){push(1);},800);}
|
|
3138
3144
|
else{window.__pv=0;st('⚠ 上传好像没送达(此浏览器限制跨域)——数据还在本机,可换 Safari 或用存档码');}
|
|
3139
|
-
}).
|
|
3145
|
+
}catch(e){st('⚠ 校验失败(可能网络受限)');}};x2.onerror=x2.ontimeout=function(){st('⚠ 校验失败(可能网络受限)');};x2.send();
|
|
3140
3146
|
}
|
|
3141
3147
|
function pull(manual){
|
|
3142
3148
|
if(!acct||!acct.k)return;
|
|
3143
3149
|
if(manual)st('↻ 同步中…');
|
|
3144
|
-
|
|
3150
|
+
var x2=new XMLHttpRequest();x2.open('GET',url()+'?ts='+Date.now(),true);x2.timeout=20000;x2.onload=function(){try{var x=x2.responseText;
|
|
3145
3151
|
x=(x||'').replace(/=$/,'');
|
|
3146
3152
|
if(!x){if(manual)st('☁ 云端还没有存档——点「云端上传」把本机数据传上去');return;}
|
|
3147
3153
|
var rb;try{rb=JSON.parse(x)}catch(e){st('⚠ 云端数据格式异常');return;}
|
|
@@ -3156,7 +3162,7 @@ boot();
|
|
|
3156
3162
|
st(same2?'✔ 已是最新 '+clock():'☁ 云端比本机旧——点「云端上传」可覆盖云端');
|
|
3157
3163
|
}
|
|
3158
3164
|
else{st('✔ 已是云端最新');}
|
|
3159
|
-
}).
|
|
3165
|
+
}catch(e){st('⚠ 云端数据格式异常');}};x2.onerror=x2.ontimeout=function(){st('⚠ 云端连接失败');};x2.send();
|
|
3160
3166
|
}
|
|
3161
3167
|
function logout(){localStorage.removeItem(LS);acct=null;}
|
|
3162
3168
|
var CSS='.acWrap{position:fixed;inset:0;z-index:9998;background:rgba(3,6,14,.66);display:none;align-items:center;justify-content:center}.acWrap.on{display:flex}'+
|
|
@@ -3211,7 +3217,7 @@ boot();
|
|
|
3211
3217
|
st('✦ 仓库已创建,正在上传本机数据…');render();push();return;
|
|
3212
3218
|
}
|
|
3213
3219
|
st('↻ 查找云端仓库…');
|
|
3214
|
-
|
|
3220
|
+
var x3=new XMLHttpRequest();x3.open('GET',BASE+k+'?ts='+Date.now(),true);x3.timeout=20000;x3.onload=function(){try{var x=x3.responseText;
|
|
3215
3221
|
x=(x||'').replace(/=$/,'');
|
|
3216
3222
|
if(x&&x.length>2){
|
|
3217
3223
|
var rb=null;try{rb=JSON.parse(x)}catch(e){}if(!rb){acct=null;localStorage.removeItem(LS);st('⚠ 云端数据异常——没敢覆盖');return;}
|
|
@@ -3222,7 +3228,7 @@ boot();
|
|
|
3222
3228
|
b.setAttribute('data-mode','create');b.textContent='✦ 没找到仓库——点此以本机数据创建';
|
|
3223
3229
|
st('(如果是新账号,创建后本机数据会上传成初始存档)');
|
|
3224
3230
|
}
|
|
3225
|
-
}).
|
|
3231
|
+
}catch(e){st('⚠ 云端连接失败,稍后再试');}};x3.onerror=x3.ontimeout=function(){st('⚠ 云端连接失败,稍后再试');};x3.send();
|
|
3226
3232
|
};
|
|
3227
3233
|
var pl=g('#acPull');if(pl)pl.onclick=function(){pull(1)};
|
|
3228
3234
|
var pu=g('#acPush');if(pu)pu.onclick=function(){if(acct&&acct.k)push();};
|
|
@@ -3283,7 +3289,7 @@ boot();
|
|
|
3283
3289
|
btn.addEventListener('click',open);
|
|
3284
3290
|
setInterval(function(){if(acct&&acct.k){var c=canon();if(c!==lastSnap){lastSnap=c;clearTimeout(pq);pq=setTimeout(push,900);}}},2000);
|
|
3285
3291
|
if(acct&&acct.k){setTimeout(function(){pull(false);},250);}
|
|
3286
|
-
var APP_VER='1.2.
|
|
3292
|
+
var APP_VER='1.2.4';
|
|
3287
3293
|
function _verCmp(a,b){var x=String(a).split('.'),y=String(b).split('.');for(var i=0;i<3;i++){var p=parseInt(x[i]||'0',10),q=parseInt(y[i]||'0',10);if(p!==q)return p-q}return 0}
|
|
3288
3294
|
function chkVer(){
|
|
3289
3295
|
try{
|
package/ledger.html
CHANGED
|
@@ -1137,17 +1137,17 @@ window.LEDGER_BACKUP = [];
|
|
|
1137
1137
|
wxhr(url(),JSON.stringify({v:1,u:acct.u,c:acct.c||0,t:t,data:snap()}),function(){st('✔ 已上传 · 后台校验…');setTimeout(function(){verify(t)},600);});
|
|
1138
1138
|
}
|
|
1139
1139
|
function verify(t){
|
|
1140
|
-
|
|
1140
|
+
var x2=new XMLHttpRequest();x2.open('GET',url()+'?ts='+Date.now(),true);x2.timeout=20000;x2.onload=function(){try{var x=x2.responseText;
|
|
1141
1141
|
x=(x||'').replace(/=$/,'');
|
|
1142
1142
|
try{var rb=JSON.parse(x);if(rb.t===t){st('✔ 已同步 '+clock());return;}}catch(e){}
|
|
1143
1143
|
if(!window.__pv){window.__pv=1;setTimeout(function(){push(1);},800);}
|
|
1144
1144
|
else{window.__pv=0;st('⚠ 上传好像没送达(此浏览器限制跨域)——数据还在本机,可换 Safari 或用存档码');}
|
|
1145
|
-
}).
|
|
1145
|
+
}catch(e){st('⚠ 校验失败(可能网络受限)');}};x2.onerror=x2.ontimeout=function(){st('⚠ 校验失败(可能网络受限)');};x2.send();
|
|
1146
1146
|
}
|
|
1147
1147
|
function pull(manual){
|
|
1148
1148
|
if(!acct||!acct.k)return;
|
|
1149
1149
|
if(manual)st('↻ 同步中…');
|
|
1150
|
-
|
|
1150
|
+
var x2=new XMLHttpRequest();x2.open('GET',url()+'?ts='+Date.now(),true);x2.timeout=20000;x2.onload=function(){try{var x=x2.responseText;
|
|
1151
1151
|
x=(x||'').replace(/=$/,'');
|
|
1152
1152
|
if(!x){if(manual)st('☁ 云端还没有存档——点「云端上传」把本机数据传上去');return;}
|
|
1153
1153
|
var rb;try{rb=JSON.parse(x)}catch(e){st('⚠ 云端数据格式异常');return;}
|
|
@@ -1162,7 +1162,7 @@ window.LEDGER_BACKUP = [];
|
|
|
1162
1162
|
st(same2?'✔ 已是最新 '+clock():'☁ 云端比本机旧——点「云端上传」可覆盖云端');
|
|
1163
1163
|
}
|
|
1164
1164
|
else{st('✔ 已是云端最新');}
|
|
1165
|
-
}).
|
|
1165
|
+
}catch(e){st('⚠ 云端数据格式异常');}};x2.onerror=x2.ontimeout=function(){st('⚠ 云端连接失败');};x2.send();
|
|
1166
1166
|
}
|
|
1167
1167
|
function logout(){localStorage.removeItem(LS);acct=null;}
|
|
1168
1168
|
var CSS='.acWrap{position:fixed;inset:0;z-index:9998;background:rgba(3,6,14,.66);display:none;align-items:center;justify-content:center}.acWrap.on{display:flex}'+
|
|
@@ -1217,7 +1217,7 @@ window.LEDGER_BACKUP = [];
|
|
|
1217
1217
|
st('✦ 仓库已创建,正在上传本机数据…');render();push();return;
|
|
1218
1218
|
}
|
|
1219
1219
|
st('↻ 查找云端仓库…');
|
|
1220
|
-
|
|
1220
|
+
var x3=new XMLHttpRequest();x3.open('GET',BASE+k+'?ts='+Date.now(),true);x3.timeout=20000;x3.onload=function(){try{var x=x3.responseText;
|
|
1221
1221
|
x=(x||'').replace(/=$/,'');
|
|
1222
1222
|
if(x&&x.length>2){
|
|
1223
1223
|
var rb=null;try{rb=JSON.parse(x)}catch(e){}if(!rb){acct=null;localStorage.removeItem(LS);st('⚠ 云端数据异常——没敢覆盖');return;}
|
|
@@ -1228,7 +1228,7 @@ window.LEDGER_BACKUP = [];
|
|
|
1228
1228
|
b.setAttribute('data-mode','create');b.textContent='✦ 没找到仓库——点此以本机数据创建';
|
|
1229
1229
|
st('(如果是新账号,创建后本机数据会上传成初始存档)');
|
|
1230
1230
|
}
|
|
1231
|
-
}).
|
|
1231
|
+
}catch(e){st('⚠ 云端连接失败,稍后再试');}};x3.onerror=x3.ontimeout=function(){st('⚠ 云端连接失败,稍后再试');};x3.send();
|
|
1232
1232
|
};
|
|
1233
1233
|
var pl=g('#acPull');if(pl)pl.onclick=function(){pull(1)};
|
|
1234
1234
|
var pu=g('#acPush');if(pu)pu.onclick=function(){if(acct&&acct.k)push();};
|
|
@@ -1289,7 +1289,7 @@ window.LEDGER_BACKUP = [];
|
|
|
1289
1289
|
btn.addEventListener('click',open);
|
|
1290
1290
|
setInterval(function(){if(acct&&acct.k){var c=canon();if(c!==lastSnap){lastSnap=c;clearTimeout(pq);pq=setTimeout(push,900);}}},2000);
|
|
1291
1291
|
if(acct&&acct.k){setTimeout(function(){pull(false);},250);}
|
|
1292
|
-
var APP_VER='1.2.
|
|
1292
|
+
var APP_VER='1.2.4';
|
|
1293
1293
|
function _verCmp(a,b){var x=String(a).split('.'),y=String(b).split('.');for(var i=0;i<3;i++){var p=parseInt(x[i]||'0',10),q=parseInt(y[i]||'0',10);if(p!==q)return p-q}return 0}
|
|
1294
1294
|
function chkVer(){
|
|
1295
1295
|
try{
|