授权模型切换为个人副本签发;share 脱敏共建;自更新通道
- 公众版不再共享 1000 次授权池:移除 data/.license.json, 改置 data/.public_edition.json 标记,首次排盘本机签发个人副本 (初始 20 次、不限期);推送脱敏档案每盘 +10 次(同盘只计一次) - 新增 share/ 共建:结构化脱敏导出(share_export.py)+ 双远端推送(share_push.py)+ 隐私协议(share/README.md); 推送前必须展示脱敏包全文并获用户授权 - 新增自更新:VERSION + manifest.json(SHA256 清单)+ scripts/self_update.py(24h 缓存检查、先验后换、保留授权与档案); 排盘成功后 stderr 提示新版本 - SKILL.md 增「档案共建(share/)」「版本与自更新」两节; LICENSE.md 增第六条(档案权属与撤回) - 测试 100 项全绿
This commit is contained in:
@@ -129,6 +129,18 @@ def main() -> int:
|
||||
# L2 渲染:stdout 只出 Markdown
|
||||
print(render(chart))
|
||||
_gate.consume(Path(__file__).resolve().parents[1])
|
||||
|
||||
# 自更新提示:只读本地缓存往 stderr 打一行;缓存过期则后台线程刷新,
|
||||
# 主流程不等它(用当次缓存)。任何异常静默,绝不影响 stdout 命盘契约。
|
||||
try:
|
||||
import self_update as _su
|
||||
_root = Path(__file__).resolve().parents[1]
|
||||
_msg = _su.notify_message(_root)
|
||||
if _msg:
|
||||
print(_msg, file=sys.stderr)
|
||||
_su.refresh_cache_async(_root)
|
||||
except Exception:
|
||||
pass
|
||||
return 0
|
||||
except Exception:
|
||||
print("ERROR: 排盘内部错误。请把以下信息原样报告给用户,"
|
||||
|
||||
Reference in New Issue
Block a user