lookatstudy-mobile 0.16.0 → 0.18.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.
- package/install-termux.sh +109 -26
- package/package.json +1 -1
- package/server.cjs +25306 -601
- package/web/assets/abnfDiagram-N423BO3Z-CU2Rg7X-.js +1 -0
- package/web/assets/api-web-DI50TDfG.js +1 -0
- package/web/assets/{arc-Bj7Boh6s.js → arc-CVHcrwtq.js} +1 -1
- package/web/assets/architectureDiagram-T3A2C74G-CbOpSoqA.js +36 -0
- package/web/assets/{blockDiagram-VBNYF7ZC-DAzIMkNI.js → blockDiagram-VBNYF7ZC-DkENfYJJ.js} +2 -2
- package/web/assets/{c4Diagram-5PPSVZJV-NlYvtXbZ.js → c4Diagram-5PPSVZJV-D2nKbUxh.js} +2 -2
- package/web/assets/channel-AThd-Hly.js +1 -0
- package/web/assets/{chunk-2GRJ4B5K-Cy2RZsUk.js → chunk-2GRJ4B5K-B2LBmawX.js} +1 -1
- package/web/assets/{chunk-2Q5K7J3B-DtK3xo3Z.js → chunk-2Q5K7J3B-ByZtx99c.js} +1 -1
- package/web/assets/{chunk-5RXB4S5H-CmVGejcd.js → chunk-5RXB4S5H-b6PGx0ql.js} +1 -1
- package/web/assets/{chunk-5VM5RSS4-EO_k0Crh.js → chunk-5VM5RSS4-wmKKoEHl.js} +1 -1
- package/web/assets/{chunk-6Q2QTUOP-TBVy-R-c.js → chunk-6Q2QTUOP-CZ89fwLd.js} +1 -1
- package/web/assets/{chunk-GF5L2VYU-_N0jD1tE.js → chunk-GF5L2VYU-3EIIkl6Y.js} +1 -1
- package/web/assets/{chunk-JWPE2WC7-BIAuolFx.js → chunk-JWPE2WC7-CdCWYrp8.js} +1 -1
- package/web/assets/{chunk-KBJHAD2P-DqcnXfI8.js → chunk-KBJHAD2P-CmZTgHqr.js} +1 -1
- package/web/assets/{chunk-RYQCIY6F-D5RQKqlg.js → chunk-RYQCIY6F-DfyARx_z.js} +1 -1
- package/web/assets/{chunk-XXDRQBXY-1Ksx_dPa.js → chunk-XXDRQBXY-DIoEGjYu.js} +1 -1
- package/web/assets/classDiagram-JCYQIIEL-Ccd6qf2i.js +1 -0
- package/web/assets/classDiagram-v2-OCEON4UE-Ccd6qf2i.js +1 -0
- package/web/assets/cose-bilkent-JH36ORCC-BktEcSRI.js +1 -0
- package/web/assets/{cynefin-VYW2F7L2-CAYbjl57.js → cynefin-VYW2F7L2-sXHUKhTr.js} +1 -1
- package/web/assets/cynefinDiagram-MW4NZA55-CQvZqGMF.js +62 -0
- package/web/assets/{dagre-VZM6K2ZE-CKP3kBHM.js → dagre-VZM6K2ZE-BgVOc66g.js} +2 -2
- package/web/assets/{diagram-7IWD3JNH-CLfr8NaW.js → diagram-7IWD3JNH-CqXnEFCF.js} +2 -2
- package/web/assets/{diagram-B4RE2ZJO-h051w7zn.js → diagram-B4RE2ZJO-CbG6ewsb.js} +2 -2
- package/web/assets/diagram-LBJQPF4R-qCVZtiwb.js +24 -0
- package/web/assets/diagram-Q27KOJAE-fRbvC_4J.js +24 -0
- package/web/assets/diagram-UB23O5K3-DYruB-zm.js +41 -0
- package/web/assets/ebnfDiagram-BXEA7PRR-BKbJqSDg.js +1 -0
- package/web/assets/{erDiagram-JOGREHBK-Bz30kI2B.js → erDiagram-JOGREHBK-anDPN9Fg.js} +2 -2
- package/web/assets/{flowDiagram-UKHOOZJN-CsFP_-KD.js → flowDiagram-UKHOOZJN-DlMRxaQ8.js} +1 -1
- package/web/assets/ganttDiagram-PKOTCBZU-BoCCJylo.js +292 -0
- package/web/assets/gitGraphDiagram-DS77QQ5N-D37HEJEv.js +106 -0
- package/web/assets/index-CeFnA9sR.js +53 -0
- package/web/assets/index-D8iAKGNi.css +1 -0
- package/web/assets/infoDiagram-6WML65LV-Cp2uwsRp.js +2 -0
- package/web/assets/{ishikawaDiagram-WSZJBQD7-Bt6EfUkc.js → ishikawaDiagram-WSZJBQD7-IDCvF8oq.js} +2 -2
- package/web/assets/{journeyDiagram-NVQOT4AX-DmVq_JOG.js → journeyDiagram-NVQOT4AX-CqJjuMRj.js} +2 -2
- package/web/assets/{kanban-definition-27J2QSJJ-tE00W58E.js → kanban-definition-27J2QSJJ-Bzy4l8Im.js} +2 -2
- package/web/assets/{linear-CAqnKu9J.js → linear-BYt2jke2.js} +1 -1
- package/web/assets/main-BaffLdJi.js +528 -0
- package/web/assets/{mermaid.core-uJSxER2x.js → mermaid.core-ChBcV6rX.js} +11 -11
- package/web/assets/{mindmap-definition-FAOFIHXS-D5S_P9_s.js → mindmap-definition-FAOFIHXS-BiQCF2qx.js} +2 -2
- package/web/assets/pegDiagram-VL7TDLO6-JrAhM2Rh.js +1 -0
- package/web/assets/pet-CTf4hJTR.css +1 -0
- package/web/assets/pet-f5Q8AEiU.js +1 -0
- package/web/assets/{pieDiagram-7S7Q4E2Y-DYpiHnao.js → pieDiagram-7S7Q4E2Y-DNB9KI82.js} +2 -2
- package/web/assets/{quadrantDiagram-CIZ2JOQS-BqycGz7D.js → quadrantDiagram-CIZ2JOQS-D9CQH6qH.js} +4 -4
- package/web/assets/railroadDiagram-AXF67PYL-GRAK-BbS.js +1 -0
- package/web/assets/{requirementDiagram-LRYGKXZP-CH-xotLo.js → requirementDiagram-LRYGKXZP-CTFmkmvv.js} +2 -2
- package/web/assets/{sankeyDiagram-W5VNT64P-BCLFObl1.js → sankeyDiagram-W5VNT64P-ocFhBtMa.js} +2 -2
- package/web/assets/{sequenceDiagram-SI44F4Z6-CE1T-Oar.js → sequenceDiagram-SI44F4Z6-itHtrU2O.js} +2 -2
- package/web/assets/sizeCapture-X5ZJPWSS-Bj_0p16L.js +1 -0
- package/web/assets/stateDiagram-OKZ733FA-BZ3FXzdZ.js +1 -0
- package/web/assets/stateDiagram-v2-UEYNNEHI-DacbF0mj.js +1 -0
- package/web/assets/swimlanes-SLNWSIFB-nlxlUqVN.js +2 -0
- package/web/assets/swimlanesDiagram-ULZ7WXOC-Bk858mY5.js +8 -0
- package/web/assets/{timeline-definition-Z64GVDOM-CPajwTED.js → timeline-definition-Z64GVDOM-B-IqLhkR.js} +2 -2
- package/web/assets/{vennDiagram-T6HMQDX7-DKkB137-.js → vennDiagram-T6HMQDX7-Dr1sgkuO.js} +2 -2
- package/web/assets/{wardleyDiagram-T6FBY63Y-CHD6tq1V.js → wardleyDiagram-T6FBY63Y-BOOJsnbk.js} +2 -2
- package/web/assets/{xychartDiagram-ELKLHX3M-DIO9Q6BD.js → xychartDiagram-ELKLHX3M-Bb3lgEh4.js} +2 -2
- package/web/index.html +3 -2
- package/web/pet.html +19 -0
- package/web/assets/abnfDiagram-N423BO3Z-uVyZuC2D.js +0 -1
- package/web/assets/api-web-BydHmVA4.js +0 -1
- package/web/assets/architectureDiagram-T3A2C74G-CrbkXNQp.js +0 -36
- package/web/assets/channel-JNlIjRLZ.js +0 -1
- package/web/assets/classDiagram-JCYQIIEL-C-12RKGI.js +0 -1
- package/web/assets/classDiagram-v2-OCEON4UE-C-12RKGI.js +0 -1
- package/web/assets/cose-bilkent-JH36ORCC-DAUofPwo.js +0 -1
- package/web/assets/cynefinDiagram-MW4NZA55-UaEI49aN.js +0 -62
- package/web/assets/diagram-LBJQPF4R-CUOsO4df.js +0 -24
- package/web/assets/diagram-Q27KOJAE-BXbJxAlu.js +0 -24
- package/web/assets/diagram-UB23O5K3-BHV6tpU9.js +0 -41
- package/web/assets/ebnfDiagram-BXEA7PRR-CAahAB9-.js +0 -1
- package/web/assets/ganttDiagram-PKOTCBZU-Cm5qe_5U.js +0 -292
- package/web/assets/gitGraphDiagram-DS77QQ5N-DNktj2Kq.js +0 -106
- package/web/assets/index-BC_sP79K.js +0 -563
- package/web/assets/index-BSTI-ywB.css +0 -1
- package/web/assets/infoDiagram-6WML65LV-vZK5e7Xx.js +0 -2
- package/web/assets/pegDiagram-VL7TDLO6-BZkaiQ_9.js +0 -1
- package/web/assets/railroadDiagram-AXF67PYL-DEoY1V9D.js +0 -1
- package/web/assets/sizeCapture-X5ZJPWSS-uf4-mQAU.js +0 -1
- package/web/assets/stateDiagram-OKZ733FA-Dt2wQF9A.js +0 -1
- package/web/assets/stateDiagram-v2-UEYNNEHI-BbJD6fMT.js +0 -1
- package/web/assets/swimlanes-SLNWSIFB-jLXDXtjZ.js +0 -2
- package/web/assets/swimlanesDiagram-ULZ7WXOC-BTdV0I38.js +0 -8
package/install-termux.sh
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
# bash ~/lookatstudy/stop.sh # 停止
|
|
6
6
|
# bash ~/lookatstudy/status.sh # 状态 + 访问链接
|
|
7
7
|
# bash ~/lookatstudy/update.sh # 更新便携包并重启
|
|
8
|
-
# 不在本机跑 npm
|
|
8
|
+
# 不在本机跑 npm。安装与升级(update.sh)走同一条下载链:
|
|
9
|
+
# npmmirror 主源(+滞后守卫) → npm 官方源 → GitHub Release 直连 → gh 代理链。
|
|
10
|
+
# update.sh 的函数体与本文件逐字同源(verify-termux-voice T7 守链序与两份同步)。
|
|
9
11
|
set -euo pipefail
|
|
10
12
|
|
|
11
13
|
PORT="${LOOKATSTUDY_PORT:-17890}"
|
|
@@ -18,24 +20,34 @@ DL_PREFIXES=("" "https://gh-proxy.com/" "https://ghproxy.net/" "https://ghfast.t
|
|
|
18
20
|
|
|
19
21
|
# npmmirror(阿里,自动同步 npm)解析包的 latest tarball 地址;空输出=未同步/网络失败。
|
|
20
22
|
# 同步滞后守卫:刚发版的头几分钟镜像 latest 可能还指向上一个版本,静默拿到旧包
|
|
21
|
-
# —— 版本落后于 GitHub 最新 release 时按"未命中"
|
|
22
|
-
# releases/latest/download 永远指向最新版)。GitHub 版本探测失败(网络)
|
|
23
|
-
#
|
|
23
|
+
# —— 版本落后于 GitHub 最新 release 时按"未命中"处理,让位 npm 官方源/GitHub 链
|
|
24
|
+
# (GitHub 的 releases/latest/download 永远指向最新版)。GitHub 版本探测失败(网络)
|
|
25
|
+
# 则信任镜像,不因 GitHub 不可达惩罚国内直连的镜像主源。
|
|
26
|
+
# 契约:恒 exit 0,空输出=未命中 —— 调用方都是 tb=$(npm_tarball …) 裸赋值,老写法
|
|
27
|
+
# miss 返回 1 会把 set -e 的脚本整个静默杀掉(eeeada1 的滞后守卫实际从未走到回退链的根因)。
|
|
24
28
|
npm_tarball() {
|
|
25
29
|
local json ver gh
|
|
26
30
|
json=$(curl -sfL --connect-timeout 8 --max-time 20 "https://registry.npmmirror.com/$1/latest" || true)
|
|
27
|
-
[ -n "$json" ] || return
|
|
31
|
+
[ -n "$json" ] || return 0
|
|
28
32
|
ver=$(printf '%s' "$json" | sed -n 's/.*"version":"\([^"]*\)".*/\1/p')
|
|
29
33
|
if [ -n "$ver" ]; then
|
|
30
34
|
gh=$(gh_latest_version)
|
|
31
35
|
if [ -n "$gh" ] && ! ver_ge "$ver" "$gh"; then
|
|
32
|
-
info "npm 镜像同步滞后(镜像 v${ver} < GitHub v${gh})
|
|
33
|
-
return
|
|
36
|
+
info "npm 镜像同步滞后(镜像 v${ver} < GitHub v${gh}),换 npm 官方源…"
|
|
37
|
+
return 0
|
|
34
38
|
fi
|
|
35
39
|
fi
|
|
36
40
|
printf '%s' "$json" | sed -n 's/.*"tarball":"\([^"]*\)".*/\1/p'
|
|
37
41
|
}
|
|
38
42
|
|
|
43
|
+
# npm 官方源(权威、零同步滞后):镜像未命中/滞后时的第一兜底,先于 GitHub 链。
|
|
44
|
+
# 同一契约:恒 exit 0,空输出=未命中。
|
|
45
|
+
npm_tarball_official() {
|
|
46
|
+
local json
|
|
47
|
+
json=$(curl -sfL --connect-timeout 8 --max-time 20 "https://registry.npmjs.org/$1/latest" || true)
|
|
48
|
+
printf '%s' "$json" | sed -n 's/.*"tarball":"\([^"]*\)".*/\1/p'
|
|
49
|
+
}
|
|
50
|
+
|
|
39
51
|
# GitHub 最新 release 版本号(仅数字串;空=探测失败)。releases/latest/download 会 302 到
|
|
40
52
|
# 带 tag 的最终资产 URL,HEAD 一次读 url_effective 即得,不用碰 api.github.com。
|
|
41
53
|
gh_latest_version() {
|
|
@@ -115,7 +127,15 @@ download_bundle() {
|
|
|
115
127
|
ok "便携包就位(npm 镜像): $APP_DIR"
|
|
116
128
|
return 0
|
|
117
129
|
fi
|
|
118
|
-
|
|
130
|
+
# 次选:npm 官方源(权威零滞后,接住镜像同步窗口)
|
|
131
|
+
tb=$(npm_tarball_official lookatstudy-mobile)
|
|
132
|
+
if [ -n "$tb" ] && curl -fL --connect-timeout 10 --retry 2 -o mobile.tgz "$tb"; then
|
|
133
|
+
tar -xzf mobile.tgz --strip-components=1
|
|
134
|
+
rm -f mobile.tgz
|
|
135
|
+
ok "便携包就位(npm 官方源): $APP_DIR"
|
|
136
|
+
return 0
|
|
137
|
+
fi
|
|
138
|
+
info "npm 源未命中,回退 GitHub 直连+代理链..."
|
|
119
139
|
local dl_ok=0 p=""
|
|
120
140
|
for p in "${DL_PREFIXES[@]}"; do
|
|
121
141
|
if curl -fL --connect-timeout 10 --retry 2 -o ls.zip "${p}${GH_ASSET}"; then
|
|
@@ -147,7 +167,15 @@ install_voice() {
|
|
|
147
167
|
info "装完模型重启服务生效: bash ~/lookatstudy/start.sh"
|
|
148
168
|
return 0
|
|
149
169
|
fi
|
|
150
|
-
|
|
170
|
+
# 次选:npm 官方源(权威零滞后,接住镜像同步窗口)
|
|
171
|
+
tb=$(npm_tarball_official lookatstudy-termux-voice)
|
|
172
|
+
if [ -n "$tb" ] && curl -fL --connect-timeout 10 --retry 2 -o voice.tgz "$tb"; then
|
|
173
|
+
tar -xzf voice.tgz --strip-components=1 -C "$APP_DIR/node_modules"
|
|
174
|
+
rm -f voice.tgz
|
|
175
|
+
ok "语音引擎就位(npm 官方源): $APP_DIR/node_modules/sherpa-onnx-node"
|
|
176
|
+
return 0
|
|
177
|
+
fi
|
|
178
|
+
info "npm 源未命中,回退 GitHub 直连+代理链..."
|
|
151
179
|
local dl_ok=0 p=""
|
|
152
180
|
for p in "${DL_PREFIXES[@]}"; do
|
|
153
181
|
if curl -fL --connect-timeout 10 --retry 2 -o voice.tar.gz "${p}${GH_VOICE}"; then
|
|
@@ -253,27 +281,82 @@ fi
|
|
|
253
281
|
exit 0
|
|
254
282
|
EOS
|
|
255
283
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
#
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
284
|
+
# update.sh 与安装器同一条下载链(npmmirror+滞后守卫 → npm 官方 → GitHub 直连 → gh 代理):
|
|
285
|
+
# 头部三行配置用 printf %q 烤入;函数体放引号 heredoc —— 零转义、与上面定义逐字同源,
|
|
286
|
+
# 改链时两处一起改(verify-termux-voice T7 守链序与两份同步)。
|
|
287
|
+
{
|
|
288
|
+
printf '#!/data/data/com.termux/files/usr/bin/bash\n'
|
|
289
|
+
printf 'set -euo pipefail\n'
|
|
290
|
+
printf 'APP_DIR=%q PORT=%q GH_ASSET=%q\n\n' "$APP_DIR" "$PORT" "$GH_ASSET"
|
|
291
|
+
cat <<'UPDATE_EOF'
|
|
292
|
+
# 更新便携包并重启(下载链与 install-termux.sh 同源:npmmirror+滞后守卫 → npm 官方 → GitHub 直连 → gh 代理)
|
|
293
|
+
info() { printf '\033[1m[*]\033[0m %s\n' "$*"; }
|
|
294
|
+
|
|
295
|
+
# ↓↓ 与 install-termux.sh 逐字同源的四个函数(契约:恒 exit 0,空输出=未命中)↓↓
|
|
296
|
+
npm_tarball() {
|
|
297
|
+
local json ver gh
|
|
298
|
+
json=$(curl -sfL --connect-timeout 8 --max-time 20 "https://registry.npmmirror.com/$1/latest" || true)
|
|
299
|
+
[ -n "$json" ] || return 0
|
|
300
|
+
ver=$(printf '%s' "$json" | sed -n 's/.*"version":"\([^"]*\)".*/\1/p')
|
|
301
|
+
if [ -n "$ver" ]; then
|
|
302
|
+
gh=$(gh_latest_version)
|
|
303
|
+
if [ -n "$gh" ] && ! ver_ge "$ver" "$gh"; then
|
|
304
|
+
info "npm 镜像同步滞后(镜像 v${ver} < GitHub v${gh}),换 npm 官方源…"
|
|
305
|
+
return 0
|
|
306
|
+
fi
|
|
307
|
+
fi
|
|
308
|
+
printf '%s' "$json" | sed -n 's/.*"tarball":"\([^"]*\)".*/\1/p'
|
|
309
|
+
}
|
|
310
|
+
npm_tarball_official() {
|
|
311
|
+
local json
|
|
312
|
+
json=$(curl -sfL --connect-timeout 8 --max-time 20 "https://registry.npmjs.org/$1/latest" || true)
|
|
313
|
+
printf '%s' "$json" | sed -n 's/.*"tarball":"\([^"]*\)".*/\1/p'
|
|
314
|
+
}
|
|
315
|
+
gh_latest_version() {
|
|
316
|
+
local final
|
|
317
|
+
final=$(curl -sIL --connect-timeout 8 --max-time 20 -o /dev/null -w '%{url_effective}' \
|
|
318
|
+
"https://github.com/Kaiji-Z/LookatStudy/releases/latest/download/probe" 2>/dev/null || true)
|
|
319
|
+
printf '%s' "$final" | sed -n 's#.*/download/v\([0-9][0-9.]*\)/.*#\1#p'
|
|
320
|
+
}
|
|
321
|
+
ver_ge() {
|
|
322
|
+
local a b
|
|
323
|
+
a=$(printf '%s' "$1" | tr -d 'v' | awk -F. '{printf "%02d%02d%02d", $1, $2, $3}')
|
|
324
|
+
b=$(printf '%s' "$2" | tr -d 'v' | awk -F. '{printf "%02d%02d%02d", $1, $2, $3}')
|
|
325
|
+
[ -n "$a" ] && [ -n "$b" ] && [ "$a" -ge "$b" ] 2>/dev/null
|
|
326
|
+
}
|
|
327
|
+
# ↑↑ 同源函数区结束 ↑↑
|
|
328
|
+
|
|
329
|
+
cd "$APP_DIR"
|
|
263
330
|
echo "==> 停止旧服务..."
|
|
264
|
-
pkill -f "server.cjs --port $
|
|
331
|
+
pkill -f "server.cjs --port $PORT" 2>/dev/null || true
|
|
265
332
|
sleep 1
|
|
266
333
|
echo "==> 下载最新便携包..."
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
334
|
+
src=""
|
|
335
|
+
tb=$(npm_tarball lookatstudy-mobile)
|
|
336
|
+
if [ -n "$tb" ] && curl -fL --connect-timeout 10 --retry 2 -o mobile.tgz "$tb"; then
|
|
337
|
+
src="npm 镜像"
|
|
338
|
+
else
|
|
339
|
+
tb=$(npm_tarball_official lookatstudy-mobile)
|
|
340
|
+
if [ -n "$tb" ] && curl -fL --connect-timeout 10 --retry 2 -o mobile.tgz "$tb"; then
|
|
341
|
+
src="npm 官方源"
|
|
342
|
+
fi
|
|
343
|
+
fi
|
|
344
|
+
if [ -n "$src" ]; then
|
|
345
|
+
tar -xzf mobile.tgz --strip-components=1 && rm -f mobile.tgz
|
|
346
|
+
echo "[✓] 已更新($src)"
|
|
347
|
+
else
|
|
348
|
+
dl_ok=0
|
|
349
|
+
for p in "" "https://gh-proxy.com/" "https://ghproxy.net/" "https://ghfast.top/"; do
|
|
350
|
+
if curl -fL --connect-timeout 10 --retry 2 -o ls.zip "${p}${GH_ASSET}"; then dl_ok=1; break; fi
|
|
351
|
+
echo " ${p:-GitHub 直连}失败,换下一个源..."
|
|
352
|
+
done
|
|
353
|
+
[ "$dl_ok" = 1 ] || { echo "下载失败,保持原版本。"; exit 1; }
|
|
354
|
+
unzip -o ls.zip && rm -f ls.zip
|
|
355
|
+
fi
|
|
274
356
|
echo "==> 重启..."
|
|
275
|
-
exec bash "
|
|
276
|
-
|
|
357
|
+
exec bash "$APP_DIR/start.sh"
|
|
358
|
+
UPDATE_EOF
|
|
359
|
+
} > "$APP_DIR/update.sh"
|
|
277
360
|
|
|
278
361
|
chmod 755 "$APP_DIR"/{start,stop,status,update}.sh
|
|
279
362
|
ok "常用脚本就位: ~/lookatstudy/{start,stop,status,update}.sh"
|