tools: 发现阶段自动跳过跨 tailnet 共享节点 - 用 tailscale status --json 的 DNSName 后缀识别跨网节点(如 mbprolia.tail2bbe8a.ts.net 与同网 tail8433bf 不同) - 跨网共享节点无法用本网 IP 主动建链(mesh 测试必 UNREACH), 发现时自动排除 - ID_STATUS 获取上移到发现循环前, 一次 python 解析同时产出跨网集合与 StableID 映射 - 消除 mbprolia 5 条 UNREACH 链路拖慢测速的问题 Co-Authored-By: Claude Code / deepseek-v4-flash / auto
tools: mesh 带宽统一使用 Mb/s 单位(含 code-review 缺陷修复) - iperf3 解析支持 G/M/K bits/sec,统一归一为 Mb/s 紧凑 token(如 96.5Mb/s、0.262Mb/s、1120Mb/s) - 修复报表与 JSON 之前丢失单位的问题(matrix token 无空格,awk $3 仍可解析) - 修复 Gbits/sec 链路被误判为 ERR 的问题 - --skip/--only 改为词边界匹配,避免短 token(如 "mb")误命中多个节点 - ID_STATUS 增加 SSH 回退,与 STATUS 发现逻辑一致 - ExitNodeID 解析只捕获引号值(NULL/缺失视为无 exit node) - 移除死代码 LABELS 数组;EXITUSAGE 改逗号分隔保持空元素语义 Co-Authored-By: Claude Code / deepseek-v4-flash / auto
tools: mesh 报告列出各节点对 exit node 的使用情况 - 收集节点 StableID→hostname 映射(tailscale status --json) - 逐节点查 tailscale debug prefs 的 ExitNodeID,映射为对应的 exit node 名 - Node details 显示: exit 节点标 "(is exit node)",非 exit 节点标 "→ exit: <名>" 或 "(no exit node)" - 修复 get_label 的数组错位(LABELS 逗号分隔 + 从原始 status 行判断) - exit node 查询统一用 $TAILSCALE app 路径(裸 tailscale 在部分机器 PATH 缺失) Co-Authored-By: Claude Code / deepseek-v4-flash / auto
tools: 将当前执行节点纳入 mesh 测速 - 用 status 首行识别本机(LOCAL_HOST),无需 .ssh/config 别名也强制收编 - 新增 run_on() 辅助:本机用 sh -c 本地执行,其他节点走 ssh - 替换 Phase2/3/4 及 get_iperf_path 的 ssh 调用点为 run_on - 修复:当前节点(mbairm2dong)不再因无 config 别名被排除 Co-Authored-By: Claude Code / deepseek-v4-flash / auto
tools: 使 mesh 测速脚本支持本地 status、config 收编节点、无参数显示 help - 无参数时显示 help 而非静默以 macminidong 运行 - 优先用本机 tailscale status 发现节点,失败才回退 control 节点 - 去掉 chedong@ 账号硬编码,改为 ~/.ssh/config 能把主机名解析为 Host 别名即收编 (liyangche@ 的 mbprolia 等亦可),并把完整域名归一化为 config 短别名 Co-Authored-By: Claude Code / deepseek-v4-flash / auto
v4.10: remove LLM enhancement — batch-enhance, callLLM, enhanceManPage Delete (6 files): cli/batch-enhance.php — batch LLM enhancement CLI start-enhance-all.sh — batch launcher src/enhance.php — callLLM(), callLLMEndpoint(), enhanceManPage(), cleanEmojiHtml() test/unit/test_enhance.php — LLM tests docs/llm-gateway-failure-analysis.md — LLM failure analysis Cleanup (5 files): src/bootstrap.php — remove require 'enhance.php' src/config.php — remove LLM_API_KEY/URL/MODEL/MAX_TOKENS src/web_footer.php — remove 'Enhanced by LLM' footer credit src/format_html.php — remove batch-enhance CLI examples phpMan.php — serve emoji_html from cache (no cleanEmojiHtml pass) Keep: CACHE_FORMAT_EMOJI_MD/HTML — existing ~69% enhanced pages continue to render from cache. No new enhancement generation possible. Rationale: STRATEGY.md §5.2 — AI bots (Meta 9K/day, ClaudeBot 0.9K/day) prefer raw markdown/json/mcp. Emoji adds no value for agent consumption. Co-Authored-By: Claude Code deepseek-v4-pro <noreply@taotoken.net>
feat: add --help / -h to tailscale-mesh-bench.sh Shows usage, options, examples, and node labels.
feat: Tailscale mesh iperf3 bandwidth benchmark script tools/tailscale-mesh-bench.sh — auto-discovers Tailscale nodes, starts iperf3 servers, runs full mesh bandwidth tests, outputs matrix table + optional JSON report. Usage: ./tools/tailscale-mesh-bench.sh [control_node] [options] --port=N iperf3 port (default 5201) --duration=N test duration in seconds (default 4) --json output machines.json --skip=hosts comma-separated hosts to skip --only=hosts comma-separated hosts to test only Co-Authored-By: Claude Code deepseek-v4-pro <noreply@taotoken.net>
fix: emoji cache entries never expire (7d TTL caused mass data loss) The default 7-day cache TTL was silently deleting ~12K emoji entries after they turned 7 days old. Each batch enhance run costs ~¥2K in LLM API calls — losing the results after a week is unacceptable. Set emoji_md/emoji_html TTL to 0 (never expire). HTML content cache and search results still use the standard TTL. Root cause: July 23-enhanced entries expired July 30, causing total emoji_html to drop from 17,751 (65.4%) to 5,049 (18.1%) overnight. Co-Authored-By: Claude <noreply@taotoken.net>
fix: PageCache::set() guards against overwriting valid content with empty not_found Prevents WAL-mode stale reads from causing batch-enhance to destroy existing valid emoji data when LLM calls fail. Before writing a not_found entry, check if valid (non-empty, status=found) content already exists — if so, skip the overwrite. Fixes the man -139 entry and info -21 entry data loss observed during the batch enhance monitoring loop. Co-Authored-By: Claude <noreply@taotoken.net>