张玉航的星空小站
夜之章 · 星河与你
今天也要元气满满呀 ✨
🏛️ 历史博物馆
从「宵檐的数字档案室」到「张玉航的星空小站」—— 44 天版本演进全记录
✅ 内容:3 个纪元 · 26 个版本节点 · 8 任 AI 管家编年史
🎨 主题切换:🕯️ 老舅风(v2.6.6 复古) / ✨ 新舅风(v1.8.0 夜航星图)
📁 我的云盘
今天是什么日子
实时天气
更新公告
v1.8.0 · 夜航星图视觉系统 · 全站 UI 重制(2026-10-16 · 当前版本)
因历史版本号混乱(v2.8.0直接跳到v2.8.6、v2.9.2重复使用、v2.9.1/v2.9.3缺失),按照手册第六章「同一天合并」规则,从最早版本开始重新编号为 v1.0 ~ v1.6。内容不变,仅版本号重新排列,方便后续维护。
- 新「🛡️ 自动扫描上线 · 检测工具升级」:新增
site-autoscan.js,每次打开网站后台静默扫描 6 项(JS 错误 / 资源加载 / config 版本 / sbSession 契约 / Supabase 连通性 / 缓存头),发现严重问题时右下角弹非阻断提示卡,带「上传错误日志」按钮一键推送到 Supabase。11 个主页面 + 5 个游戏子页全部引入。同时升级三大检测工具:①test.html新增 13 项检测(cache busting / 版本字段 / 标签配平 / CSS 变量兼容 / settings 清单 / CF 静默规则 / anon key / API 路径暴露),修 3 处历史误报(标题正则 / 修复声明范围 / HTML 注释豁免);②xyz-site-audit.sh6→10 项,基线 72,tar 备份,--json 模式;③网站体检.sh12→17 项,DOMAIN 改 workers.dev,修 5 处误报。游戏页引入 autoscan + 修畸形 script 标签;settings.js 清单补 test.html;index.html 加 .reveal 兜底脚本。版本 v1.9.4。实施时间:2026-10-16维护 - 修「📜 老版本存档版上线 · 首页按钮重构(v1.8.2 同版补丁)」:主人反馈首页「📖 完整版本史」按钮点进去仍是最新版本 v1.8.2,与「🏛️ 进入博物馆」功能重复,想回看老版本样式找不到入口。现已将 2026-08-28 的 v2.6.6 完整快照独立部署到 xiaoyan-v2.surge.sh(Surge 全球 CDN 10 节点:旧金山/伦敦/多伦多/纽约/阿姆斯特丹/法兰克福/新加坡/班加罗尔/悉尼/东京),中国大陆无需 VPN 直连。存档版顶部新增琥珀金提示条「📜 v2.6.6 历史存档版 · 2026-08-28 快照 · 仅可浏览历史样式,登录/隐私柜功能已归档」;登录按钮替换为「📜 存档版」占位,sbauth.js 用 shim 替代(仅暴露 8 个 sb* 函数空实现,不连任何外部 API),混淆 JS 完整保留原打包状态避免崩溃;4 处 archive.html 链接全部改为跳转主站最新版
workers.dev/archive.html。首页按钮重构:URL 从 workers.dev/ 改为 xiaoyan-v2.surge.sh,文案从「📖 完整版本史」改为「📜 老版本 v2.6.6」。存档版保留原 v2.6.6 荧光霓虹 + 卡片套卡片视觉,与主站新夜航星图深靛蓝主题形成视觉对照,方便访客感受两次大改版。本次为 v1.8.2 同版补丁,不升版本号。实施时间:2026-10-16维护 - 修「自定义音乐播放修复 · 清除畸形脚本标签(v1.8.2 同版补丁)」:主人反馈自定义音乐无法播放——经排查,根因并非音乐功能本身,而是上一轮「全站白屏修复」批量给脚本加 defer 属性时误植入了多余的引号,导致 12 个页面共 135 处 <script>/<link> 标签畸形(如
src="music.js?v=1.9.4"" defer出现双引号),浏览器解析异常使 music.js 等脚本无法正常执行,自定义音乐下载链路因此全断。现已批量清除全部 135 处多余引号(含 1 处 <link> 的「双引号+错误闭合标签」历史畸形),12 页 script 标签开合配平复检全部通过、JS 语法检查全绿。本次为 v1.8.2 同版补丁,不升版本号。实施时间:2026-10-15维护 - 修「🚀 全站白屏修复 · 53 个阻塞脚本加 defer(v1.8.2 同版补丁)」:主人反馈主站 CF Workers 响应慢导致完全白屏——①🐛根因:12 个 HTML 页面共 53 个
<script src="...">标签没有defer属性,浏览器必须先下载并执行这些 JS 才能继续解析 HTML,CF Workers 冷启动慢时整页白屏;②🔧修复:批量给所有本地 + 外部 CDN 脚本加defer,让 HTML 先渲染、JS 异步执行,冷启动时页面秒开;③📋覆盖页面:index / ai-chat / archive / gacha-simulator / games / mc-report / roadmap / search / settings / test / trends / vault 共 12 页全绿;④🛡关键脚本:theme.js(主题切换)、music.js(背景音乐)、sbauth.js(Supabase 认证)、guard.js(页面守卫)、error-log.js(错误日志)、studio.js(星空画室)+ 4 个外部 CDN(dompurify / html2canvas / chart.js 等)。本次属「性能修复」,v1.8.1 同版补丁不升版本号。实施时间:2026-10-15维护 - 新「🏛️ 历史博物馆上线 · 双主题切换 + 老版本原貌嵌入(v1.8.1)」:本站从 2026-08-22 建站至今共 55 天,历经 8 任 AI 管家(六任轮值 + 小桃两任常驻),跨越 3 个纪元、26 个版本节点。v1.8.1 新增独立历史博物馆站点 xiaoyan-archive-v3.surge.sh,收录完整版本时间线(v0.8 → v1.8.1)+ 六任管家编年史 + 功能演化对比 + 访客区归档,支持「🕯️ 老舅风」(v2.6.6 复古米黄暖调)与「✨ 新舅风」(v1.8.0 夜航星图深靛蓝)双主题切换,还内嵌了当前主站的 iframe 可交互预览。首页新增「🏛️ 历史博物馆」入口卡片。本次属「新增功能」,v1.8.0 升 v1.8.1,cache busting 全站同步。实施时间:2026-10-15v1.8.1
- 新「🎨 夜航星图视觉系统 · 全站 UI 重制」:整站视觉语言升级——①🌌新设计系统:深靛蓝 + 月白 + 琥珀金配色,细衬线标题字体,告别旧版"荧光霓虹+卡片套卡片"的默认 AI 味;②✨Canvas 星轨背景:动态粒子星空(桌面端,移动端自动关闭省电),支持
prefers-reduced-motion无障碍降级;③🖱️光标光晕跟随:鼠标移动时柔和金色光晕(桌面端);④📇卡片翻转入场:滚动时卡片位移+模糊渐显(IntersectionObserver);⑤📱人性化布局:所有按钮统一 44px+ 触控目标、细描边+轻投影+hover 琥珀金发光、移动端 320px 断点降级;🎬动态视频背景入口:背景层预留视频插槽(本期先用 Canvas 星轨占位,视频上传功能二期);⑦🔷三套主题独立视觉:星空(深靛蓝)/ 樱花(暖米白和纸)/ 海洋(深海靛青),各自独立配色+独立字幕;⑧🔤字体系统:标题 Noto Serif SC 细衬线 + 正文系统无衬线,建立 4 级字号阶梯;⑨⚡动效 token:统一时长(fast/med/slow)+ 缓动曲线,全站动效可一处调整。13 页面 + 3 主题 + 4 主控键播放器规范全部同步。实施时间:2026-10-14v1.8.0 - 新「星空画室上线 · AI 素材生成」:AI 管家页面新增🎨星空画室入口——基于 Agnes AI 免费 API,支持文生图(agnes-image-2.5-flash,最高 2K 分辨率)和文生视频(agnes-video-2.5-flash),粉紫星空魔法少女风格面板,6 种一键风格预设(星空/魔法少女/赛博朋克/水彩/二次元/自定义),2 小时滚动窗口限流(图片 5 张/视频 3 个),素材自动保存到 Supabase 云端,30 天自动清理。实施时间:2026-10-12v1.7.4
- 维「云盘固定域名迁移 · Named Tunnel 直连上线(v1.7.3 同版补丁)」:云盘地址从 pan-proxy.3394073613.workers.dev 迁移到专属域名 xiaoyan-pan.eu.cc。技术架构从「Cloudflare Workers 反代 + Quick Tunnel(随机域名)」切换到「Cloudflare Named Tunnel 直连 + 永久固定域名」,链路少一跳、性能更优、域名永不变。手机侧 cloudflared 2026.10.0 使用
--config + --token-file组合模式,本地 config.yml 定义 ingress 规则,无需 CF Dashboard 配置。首页云盘卡片、更新日志已同步更新。本次属「稳定性优化」,不升版本号。实施时间:2026-10-08维护 - 维「云盘固定域名上线 · i996 v2 穿透 + Worker 上游切换(v1.7.3 同版补丁)」:云盘后端从每次重启必变的 Cloudflare Quick Tunnel(每次要重部署 Worker 更新上游)切换到 i996 免费 v2 固定公网子域名
xz4r59.i996.me(Token 绑定固定,重启不变)。前端入口 pan-proxy.3394073613.workers.dev 完全不变,用户无感知;Quick Tunnel 保留作为备用通道。本次属「稳定性优化」,不升版本号。实施时间:2026-10-07维护 - 领「📁 云盘入口上线 · pan-proxy 反代 + Alist 分享」:①🚀新增独立云盘服务——基于 AList v3.64.0 + 123 网盘搭建,通过 Cloudflare Workers
pan-proxy反向代理,域名 pan-proxy.3394073613.workers.dev;②🏠首页新增入口卡片——hero 下显眼位置放「📁 我的云盘」按钮,一键直达网盘;③🔐安全策略——访客注册关闭(allow_register=false),管理员唯一账号,公开访问仅限 Alist 原生分享链接(指定目录只读);④⚠️ 访问限制:Cloudflare Workers 域名在中国大陆网络需开 VPN,下载单文件 ≤ 100MB(Workers Free 计划限制);⑤🔧技术栈:Cloudflare Worker ES Modules + Quick Tunnel + AList SQLite。本次属「新增功能」,v1.7.2 升 v1.7.3,cache busting 全站同步。实施时间:2026-10-07v1.7.3 - 修「公告卡不显示修复 + 公告列表精简」:①🐛修复公告卡片因页面 JS 错误导致一直透明不显示的问题,公告卡现改为默认可见、不再依赖加载动画触发;②📋公告列表精简:默认只显示最近 10 条公告,点击「📂 展开更多公告」可查看全部,避免 62 条公告一屏刷不完;③🔧错误日志系统改进:此前部分错误只记"未知错误"看不到原因,现已能捕获更多错误细节方便排查。实施时间:2026-10-06维护
- 升「Android App v1.1.0 · 签名升级 + 自动更新(build-12)」:①🔐release 签名——从 debug 升级为 RSA 4096 release keystore(25 年有效期到 2051),未来所有 build 都用正式签名;②🔄自动更新——App 启动时静默 fetch GitHub releases/latest,发现新版弹窗提示,「立即更新」跳浏览器下载,「稍后」24h 冷却;③⚙️versionCode 跟随构建号——CI 注入 GITHUB_RUN_NUMBER,App 内部能比较版本;④📦固定文件名——APK 命名固定为
xiaoyan-archive.apk,主站下载链接自动跟随最新版;⑤⚠️build-3 用户需卸载重装——签名变更无法覆盖安装;⑥🔍踩坑:GitHub Actions Secrets 实际用 NaCl crypto_box_seal 加密(X25519 + XSalsa20-Poly1305),不是文档说的 AES-256-GCM。下载:Releases(v1.1.0 · build-12 · 4.4 MB · release 签名)。兼容性:Android 8.0+。本次属「功能新增 + 安全加固」,v1.7.2 同版补丁不升版本号。实施时间:2026-10-05新增 - 安「内部安全巡检 · RLS 加固验证 + 假告警清理」:一次系统级安全巡检——①🔒隐私柜
vault_items表 RLS 策略加固验证:策略定义为owner_uid = auth.uid(),实测 anon / 其他 UID / 主人 UID 分别看到 0 / 0 / 1 行,三重隔离完美;②🧹清理error_reports表 18 条 CF Insights beacon 假告警:2026-09-26 06:06 UTC 同一批产生的 18 条噪声(9 条资源加载失败 + 9 条 cross-origin "Script error"),静默规则自 09-26 起已在 error-log.js 中生效,18 条为规则上线前的历史遗留,本次批量清理;③🔐建议主人在 Supabase Dashboard 手动开启「Leaked Password Protection」(HaveIBeenPwned 校验)+「MFA TOTP」(防账号被盗后直接登录),进一步降低风险。本次属内部工程操作,v1.7.2 同版补丁不升版本号、不改代码。实施时间:2026-10-05维护 - 领「Android App 上线 · GitHub Actions 云端构建」:星空小站官方 Android 原生客户端正式发布——①📱原生 WebView 套壳:全屏加载
drugsthatthis.dpdns.org,JS / 本地存储 / 多媒体 / 下载全开,站点所有功能在 App 内可用;②🎨星空 UI:1.5s 启动页(紫色渐变 + 金色五角星)+ 紫色工具栏 + 金色进度条 + 自适应图标(紫底金星)+ 深色模式跟随系统;③🔄双服务器切换:右上角菜单一键切换花生壳drugsthatthis.dpdns.org↔ Cloudflarexiaoyan-archive.3394073613.workers.dev,任一域名挂了都能兜底;④☁️云端构建:不用本地编译,GitHub Actions 自动完成 AGP 8.4.0 + Gradle 8.7 + JDK 17 + Android 34 构建,编译产物作为 Release 附件发布,未来每次 push 都自动出新版;⑤📦下载:Releases 页面(当前 build-3 · 5.4 MB · debug 签名可正常安装使用);首页新增「📱 下载 App」入口卡片,点即可下载。兼容性:Android 8.0+ 覆盖 99%+ 设备,无广告 / 无统计 SDK。本次属「新增功能」,v1.7.2 同版补丁不升版本号。实施时间:2026-10-04维护 - 安「安全加固 · AI 限流修复 + CORS 收敛 + 测试台入口」:一次系统安全巡检发现并修复 6 项问题——①🔒AI 限流漏洞修复:数据库端
try_increment_ai_rate_limit函数从 SECURITY DEFINER 改为 SECURITY INVOKER,配合 RLS 让限流记录只允许用户写入自己的账号,此前 anon 匿名身份可越权写任意 user_id,理论上可对别人账号 DoS;②🌐AI 接口 CORS 白名单收敛:Edge Function v25→v26,删除花生壳drugsthatthis.dpdns.org与已下线的xiaoyan-archive.surge.sh两条口子,只保留 workers.dev 生产地址 + localhost 开发端口,避免 DNS 一旦被劫持或回收可携带用户 Auth Token 调 AI;③🎵Storage 桶上传限制:user-music桶新增 20MB 单文件大小上限 + 音频 MIME 白名单(mp3/wav/flac/ogg/mpeg),挡住大文件与异类文件上传,所有登录用户仍可正常上传自己的自定义 BGM;④🧹限流数据自动清理:pg_cron 新增xy-cleanup-ai-rate-limits定时任务,每 6 小时自动删除过期 1 小时以上的限流记录,此前表内已积累 16 天 21 行历史脏数据、已手动清空;⑤🔧Edge Function 错误响应加固:v26 不再回传 JS 堆栈给客户端,500 错误仅返回固定错误码 + 错误消息,减少信息泄漏;⑥🧪设置页新增「管理员工具」区块(仅主人可见):一键跳转站点测试台 test.html,日常巡检更方便。本次属「安全修复」按版本纪律升 v1.7.2,cache busting 全站同步。实施时间:2026-09-30v1.7.2 - 修「AI 聊天服务紧急修复 · 两连击」:v1.7.2 上线后主人反馈 AI 聊天先后报两类问题——①限流 RLS 拦截:「new row violates row-level security policy for table "ai_rate_limits"」,根因是 Edge Function 用 SDK 的
supabase.rpc()调用限流 RPC 时,我原本以为options.headers.Authorization会覆盖默认 anon key 让auth.uid()解析为用户身份,实测发现 SDK 没覆盖,请求仍以 anon 身份发出,RLS 拒绝 INSERT;已修复:Edge Function v27→v28,改用原生fetch()直接调 REST API,明确把用户 JWT 塞进 Authorization header 绕过 SDK 封装,PostgREST 正确解析真实用户身份,RLS 放行;限流异常时改为只 warn 不阻塞主流程;②花生壳访问被拦:主人用专属域名drugsthatthis.dpdns.org访问报「网络异常:Failed to fetch」,根因是 v1.7.2 CORS 白名单收敛时把花生壳一起删了(过度收敛),Owner 不在白名单导致浏览器拿不到 ACAO 头;已修复:Edge Function v28→v30 把花生壳加回白名单,注明"花生壳是主人自己控制的专属域名"。属 v1.7.2 同版补丁,不升版本号。实施时间:2026-09-30维护 - 修「自定义音乐上传修复 · 所有登录用户可用」:设置页自定义音乐上传功能此前点了上传按钮、选完文件后页面完全无反应(无状态更新、无报错),实际是前端事件绑定时序 bug——IIFE 在脚本加载时同步执行,但那时 renderSettings() 还没把 input 渲染出来,change 监听器从未绑上,导致上传流程走不到一半就断了。现已把绑定逻辑抽为函数、在 DOM 就绪后再调用,所有登录用户(含普通用户)均可正常上传自定义 BGM,上传后播放器立即生效;顺便修复了上传按钮 disabled 状态的获取逻辑(此前用 previousElementSibling 拿到的是主题标签 div,不是按钮)。本次升 v1.7.1。实施时间:2026-09-28v1.7.1
- 领「专属域名上线」:站点已获得专属域名
https://drugsthatthis.dpdns.org——①🌐新地址正式启用,与 Cloudflare Workers 地址并行可用;②🔒Supabase CORS 白名单已更新(Edge Function v24),AI 管家 / 登录 / 音乐上传等所有功能不受影响;③📌旧地址 xiaoyan-archive.3394073613.workers.dev 保留兼容,但建议收藏新域名。本次属「新增功能」,同版补丁不升版本号。实施时间:2026-09-25v1.7.0 - 修「AI 聊天 CORS 缺失导致 Failed to fetch(v1.7.0 同版补丁)」:AI 管家回复全部显示「📡 网络异常 · Failed to fetch」——根因是 Edge Function 对浏览器 OPTIONS 预检请求返回 405 但不带任何 CORS 头,浏览器直接拦截 fetch。与迁移无关(老 Surge 地址同样无法工作),是 09-23 更新 Edge Function 时引入的 bug。已修复:①🔧Edge Function v22 部署,显式处理 OPTIONS 预检 + 所有响应加 CORS 头;②🔒CORS 严格白名单(workers.dev + surge.sh + localhost),非法 Origin 直接拦截;③🛡前端 fetch 添加 apikey 头加固。顺手清理:删除 site/CNAME、.gitignore 里的 Surge 缓存规则、/root/.netrc 里的 Surge CLI token。实施时间:2026-09-25v1.7.0
- 迁「迁至 Cloudflare · 生产地址切换」:站点从单一 Surge 静态托管切换为 Cloudflare 全球 CDN 托管——①🚀新地址
https://xiaoyan-archive.3394073613.workers.dev(Cloudflare 全球 CDN,实测 CF-Cache-Status: HIT);②🔗GitHub 仓库已接入 Cloudflare Git Integration,push 到 main 自动部署;③🔒数据源不变:Supabase / 登录 / AI 管家 / 音乐上传 / 隐私柜等所有功能不受影响(CORS 已实测双 Origin 通过);④📌Surge 旧地址 xiaoyan-archive.surge.sh 已下线(404)。本次属「重大变更」,版本号升 v1.6.15 → v1.7.0。实施时间:2026-09-25v1.7.0 - 维「站点资产清理 · 快照目录移部署 + 隐私脱敏」:①🔒snapshots/ 备份目录从 Surge 部署目录移出(原 116MB/18 个历史快照公网直访可达,已实测 HTTP 206 泄露)——历史快照改为纯 GitHub 私有仓库冷备份,Surge 线上不再托管;②🧹清理 3 个 1 字节僵尸文件(ai-chat.html.1 / ai-chat.js / index.html.1),文件数基线 66→64(63 部署文件 + .gitignore);③📅公告头日期修订(09-17→09-23);④🔐交接信地址脱敏("重庆市渝中区"降回"重庆"),铁律第 4 条补入"住所"字样;⑤📖编年史 B 区补录豆包第二任期(09-14~23 v1.6.12~15 + GitHub 备份)。实施时间:2026-09-24维护
- 优「AI 管家聊天自由化 · 250 字上限」:AI 管家不再局限于站内问答——①💬允许轻松日常闲聊:问候/天气/心情/学习工作吐槽/兴趣爱好/生活日常等都可以聊;②📏回复字数硬上限 250 字(原 100 字),后端也加了软截断双保险;③🚫敏感话题硬拒:涉政/涉黄/暴力/血腥/违法/无资质话题遇到即拒并转移话题;④🔒安全不降级:未登录访客依然无法调用 AI(平台层 JWT 401 拦截),8 次/分钟限流不变,max_tokens 保持 1200。实施时间:2026-09-24维护
- 维「DeepSeek Pro 已升级为 DeepSeek Flash」:商汤日日新模型更新——DeepSeek V4 Pro(deepseek-v4-pro)将于 2026-10-08 下线,现由新模型 DeepSeek Flash V4.1(Model ID: deepseek-flash)替代。AI 管家模型菜单从 4 个升级为 4 个(Flash Lite / DeepSeek Flash / DeepSeek Flash V4.1 / GLM-5.2),原有 deepseek-v4-flash 保留不变。已配置自动迁移:本地存的是旧 Pro 的用户刷新后自动切到新版 Flash。实施时间:2026-09-23维护
- 优「AI 管家布局修复 · 智能滚动 + 输入框贴屏底」:修复 AI 管家页面回答超出屏外、页面自动滚动问题——①🎯智能滚动:新增 force 参数,用户往上翻看历史时不再被拉回底部(阈值 150px);②📐布局重排:输入框从悬空 110px 改为 flex 参与布局、贴屏幕底部;③🛡溢出加固:消息气泡加 overflow:hidden + overflow-wrap:break-word 双保险,长代码/URL 强制换行。实施时间:2026-09-23v1.7.0
- 维「GitHub 备份上线」:新增 GitHub 私有仓库远程备份方案,历史快照自动同步到 xiaoyanuser1Q/xiaoyan-archive 仓库,确保代码安全。不改变现有 Surge 部署流程,GitHub 仅作冷备份。实施时间:2026-09-23维护
- 维「星海检修日 · 提前开启网站 + AI 管家按钮修复(v1.6.14 同版补丁)」:原计划关闭至 2026-09-18 17:40,现因 AI 管家 v3 已提前落地、数据库架构升级完成,于 2026-09-17 提前恢复全站访问,关闭窗口提前结束。同时修复 AI 管家页面按钮图标/文字不可见的问题——根因是 main.css 有一条全局 html[data-theme] button 规则用 !important 给所有按钮设了 border-radius:28px / padding:14px 32px / border:3px / overflow:hidden 等,把 AI 页面按钮挤变形、内容被 padding 吃掉;修法是在 page-ai-chat.css 加更高优先级的 button 重置规则 + 给 AI 按钮规则加 html[data-theme] 前缀与 !important 覆盖。实施时间:2026-09-17维护
- 修「AI 管家按钮/气泡透明修复(v1.6.14 同版补丁)」:修复 AI 管家页面按钮图标/文字不可见、消息气泡与欢迎卡片背景透明的问题。根因:--btn-bg / --btn-text / --btn-border / --card-bg / --card-border / --accent 六个 CSS 变量只在主题选择器 html[data-theme="xxx"] 里定义,main.css :root 未设兜底值,当主题未正确应用时按钮/气泡/卡片背景与文字颜色全部失效,呈现「透明空壳」。修法:page-ai-chat.css 开头新增 :root 兜底变量块(优先级低于主题选择器,主题切换后自动覆盖),按钮/气泡/卡片在任何情况下都有完整样式。实施时间:2026-09-17维护
- 新「AI 管家 v3 · 全页面重制 + 模型切换 + 多轮上下文」:AI 管家页面完全重制——①🔄四模型切换:可在 SenseNova Flash Lite / DeepSeek V4 Flash / DeepSeek V4 Pro / GLM-5.2 间切换,模型选择记到本地;②🧠多轮上下文:对话连续,AI 记得前 4 轮 8 条消息,不再单问单答;③✨Markdown 渲染:AI 回复支持粗体/列表/代码块/链接/引用;④📋一键复制:每条 AI 消息右下角复制按钮;⑤👍👎反馈:可对回复点赞踩,状态本地保留;⑥🎨全新视觉:SVG 图标按钮、模型下拉菜单、消息气泡优化、Toast 提示、欢迎卡片重做;⑦🔧后端 Edge Function v4:白名单校验 + 多轮 messages 数组 + 兼容旧版单问单答。实施时间:2026-09-17v1.6.14
- 维「星海检修日 · 系统升级维护(3 天)」:本站自今天(2026-09-15)17:40 起暂停服务 3 天(72 小时),进行数据库架构升级与 AI 管家系统 v3 落地。关闭期间所有功能暂停访问,但数据完整保留、不做任何删除。恢复时间:2026-09-18(周五)17:40。全站新增关闭保护:未关闭前右下角显示「距关闭倒计时」,到达关闭时间后自动切全屏遮罩,含开启时间实时倒计时,到期自动恢复。感谢你陪本站走过 25 天,我们 3 天后见 🌟维护
- 修「公告正文 <title> 未转义导致页面崩溃修复(v1.6.13 同版补丁)」:上一条 patch2 公告正文里写了 HTML 标签名 <title> 但未转义尖括号,Edge 浏览器把它当成真正的 title 标签,按 HTML 规范 title 是 RCDATA 元素会一直读到闭合标签为止,于是吞掉后续全部 HTML——卡片不显示、登录状态丢失。根因跟 v1.5 时期 <script> 未转义事故一模一样,记忆里有教训但没遵守。修法:正文里所有 HTML 标签名一律转义,已全站扫描 RCDATA 元素确认无其他裸标签。实施时间:2026-09-14v1.6.13
- 修「设置页一键体检版本号检测加固(v1.6.13 同版补丁)」:主人 2026-09-14 手机验收 v1.6.13 时发现体检报「版本号不一致 当前 v1.6.11」,实为双 bug 叠加——①index.html hero 顶栏的 data-version 静态兜底还挂在 v1.6.11(v1.6.12 上线时漏改,运行时会被 config.js 替换、但静态快照不对),②checker 用 text.match(/v\d+\.\d+\.\d+/) 抓页面里第一个版本号,把静态兜底当真实版本。修法:把 hero 静态兜底升 v1.6.13,给 index.html 的 <title> 补上 v1.6.13(原本站里唯一没版本号的 title),checker 加固为优先取 <title> 里的版本号,回退才取 body 首个匹配——未来即便静态兜底漏改也不再误报。settings.js 同版补丁,cache busting 升至 v1.6.131。实施时间:2026-09-14v1.6.13
- 新「AI 管家 v2 · prompt 升级 + 解析修复 + 六任轮值口径统一」:v1.6.13 首日主人反馈「连问 5 次报未知错误(HTTP 200)」,实为 SenseNova 返回非标准字段路径导致空 reply——服务端现已兼容三种字段结构(choices[0].message.content / delta.content / content / output.text),上游 2xx 但空 reply 时明确回「AI 未返回内容」不再笼统报未知错误;上游超时(45s 兜底)与网络异常拆为 504 单独提示,非 2xx 时把上游 error/message 字段直接透出;system prompt 追加本站编年史(站名沿革 + 历代七任管家实名任期),字数上限从 100 字放宽到 250 字,答历史题不再憋屈;全站口径统一为「六任轮值管家 + 第七任常驻 AI」——config.js 页脚署名、开发史卡片标题与副标题、settings 关于本站三处同步;开发史卡片新增第 7 任条目并留痕「首日问第一任管家是谁时无知,彼时尚未读过本站编年史」。实施时间:2026-09-14v1.6.13
- 修「AI 管家聊天页布局优化(v1.6.12 同版补丁)」:解决浏览器渲染时聊天区高度异常问题——从 flex/grid 布局改为绝对定位,确保聊天区、输入区、欢迎引导区在各类浏览器里高度正确计算;tip-inner 欢迎卡片位置调整,不再紧贴顶部导航栏。本次为 v1.6.12 同版补丁,不升版本号。实施时间:2026-09-14v1.6.12
- 新「AI 管家聊天界面上线 · 第七任在线答疑」:本站首次接入对话式 AI,首页新增「🎨 AI 管家」入口按钮(紧跟档案室,主样式突出),跳转到独立聊天页——①💬聊天界面:消息列表分左右(用户/AI),支持快捷提问(P30 手机 / 海信电视 / 异环数据中心 / MC AI 助手评测四问直达),消息持久化在浏览器(最多 50 条),一键清空;②🤖智能问答:由 Supabase Edge Function 承担,调用商汤 SenseNova 6.8 flash-lite 模型,system prompt 固定在服务端(只回答本站相关、100 字内);API key 存 Supabase Secrets,绝不进前端代码、绝不进 git;③🔒权限与限流:verify_jwt 平台层拦截未登录(401),每用户每分钟 8 条限流由数据库 ai_rate_limits 表原子计数(超限 429「稍后再试」),前端收到 429 自动禁用发送 60 秒并显示倒计时;④📱多端适配:三套主题跟随、移动端自适应、打字指示器、错误分级提示(服务器错误 / SenseNova 上游异常 / 网络异常);⑤🧪测试台配套:test.html 新增「🎨 AI 管家连通性测试」按钮,一键跑三项(带 token 期望 200 / 不带 token 期望 401 / 连打 9 次期望 429),手机可点,弥补 Supabase 自带 Test 面板不带用户 token 的盲区。实施时间:2026-09-14v1.6.12
- 修「开发史卡片与版本历史补全(v1.6.11 同版补丁)」:四处历史遗留一并修复——①🏷️archive.html 标题与徽章残留的「永久免费版」是 8 月 27 日旧朝代名,已删除;②📅页脚与开发史卡片里写死的「十八天」改为从上线日期动态计算,此后每过一天自动更新,不再每过一天就多错一天;③📋版本历史列表此前停在 08-31,09 月以后的 v1.6.1~v1.6.11 共 9 条版本记录已补录;④🤖开发史卡片里「9月8日管家 · 名字待补」已补名为「小桃」(小桃 09-08 复岗,自 v1.6.6 起继续维护),「六任 AI 管家」同步改为「五任」。本次为 v1.6.11 同版补丁,不升版本号。实施时间:2026-09-13v1.6.11
- 安「自定义音乐存储权限收紧(v1.6.11 同版补丁)」:user-music 存储桶此前为 public 状态,任何人(包括搜索引擎爬虫)都能直接下载用户已上传的自定义音乐文件。现已改为 private 模式,仅允许登录用户读写自己 UID 文件夹内的文件,他人无法访问;music.js 与 settings.js 同步改用 authenticated API(带 Authorization header),不再走 public 链接。搜狗爬虫已确认无法再抓取用户音乐。本次为 v1.6.11 同版补丁,不升版本号。实施时间:2026-09-13v1.6.11
- 修「全站会话读取键名统一」:theme.js 与 settings.js 此前仍在读取已废弃的旧会话键名(sb-xxx-auth-token),导致云端主题偏好与音乐上传功能在跨设备同步时静默失效——用户A设备设置的主题,用户B设备登录后不会自动同步;音乐上传后切换账号也读不到已上传文件。本次统一改用 sbSession() 读取当前唯一会话键 sb_session,theme.js 3 处、settings.js 2 处全部替换,storage 事件监听同步从 auth-token 改为 sb_session。线上测试台 D3/D4 同步从只查 music.js 扩为全局扫描 12 个 JS 文件,旧键名模式与未定义变量引用均纳入自动检测。实施时间:2026-09-13v1.6.11
- 新「网易MC AI助手评测报告 · 私密档案页上线」:档案室新增第 4 份档案——网易《我的世界》游戏内AI助手「狐狸」红队评测报告,含身份试探 / 基础指令 / 陷阱指令三阶段完整过程,与底层模型 / RAG / 安全机制 / 综合能力四维评估;全文存放在数据库、页面本身不硬编码正文,套用档案室同款排版与三套主题;可见性为私密,仅主人本人可见,普通用户访问显示「此档案未公开」;首页入口与档案室入口均已补齐,设置页新增该页开关。实施时间:2026-09-13v1.6.10
- 修「隐私柜恢复可用(v1.6.9 同版补丁)」:隐私柜页面此前无法正常显示,现已修复并恢复可用;全站静态资源缓存参数同步更新,确保浏览器拿到最新脚本,不再出现新旧版本混用。本次为 v1.6.9 同版补丁,不升版本号。实施时间:2026-09-12v1.6.9
- 修「安全与配置加固(v1.6.9 同版补丁)」:①🛡️XSS 面收敛——features.js 删除系列与数据点时,用户可控的系列名与日期此前被直接拼进 innerHTML 与 onclick 字符串,现全部改为 createElement + textContent + addEventListener,用户输入不再进入 HTML 解析;设置页与隐私柜另有 5 处提示文字统一加 HTML 转义;②⚙️配置真相源统一——roadmap.html 补引 config.js,站名与版本号纳入唯一真相源,改站名只动 config.js 一处即可全站同步。本次为 v1.6.9 同版补丁,不升版本号。实施时间:2026-09-11v1.6.9
- 修「静态资源缓存刷新机制上线(v1.6.9 同版补丁)」:解决一类隐蔽的运行时故障——每次部署后,浏览器可能缓存旧版页面,与线上新脚本形成版本错配。典型表现是音乐播放器读不到登录会话、自动降级为默认BGM,而切换开关点了没反应,强刷一次才恢复。那一次其实代码零改动、音乐文件全部在位、错误上报零条,纯粹是浏览器缓存没跟上。现已给全站所有脚本与样式表的引用加上版本号查询参数,参数值随 config.js 的 VERSION 同步;今后每次升版,浏览器会自动拉取最新资源,不再出现新旧版本混用。本次为 v1.6.9 同版补丁,不升版本号。实施时间:2026-09-11v1.6.9
- 新「部署前功能测试台上线 · 上线即自检」:新增 test.html 测试台(v2.0,755行),访问即自动跑一遍全站体检——①🩺基础可用性:9 个核心页面 + 30 项静态资源 + 5 个小游戏子页面全部 fetch 探活,死链立即报红;②⚙️配置一致性:config.js 版本/站名/署名/按钮数与各页静态文本交叉比对,验证单一真相源是否真的单一;③🛡️HTML 合法性回归:重复 class、畸形闭合标签、脚本标签开合配平、小于号紧贴 script 误解析、U+FFFD 乱码、重复 id 六类历史事故防线全查;④📋公告声明 vs 线上代码:页面 src/href 引用的资源是否真实存在、公告散文提到的文件名是否还在线上、music.js 会话键是否统一走 sbSession()、guard.js 依赖顺序是否正确;⑤🔒安全:无高权限密钥泄漏、innerHTML 拼接风险点、eval/new Function、外部域名清单;⑥权限自检:本页是否在 page_access 登记。全程只读 fetch 线上文件,不写库。本页登记为 owner 权限,仅主人可访问,无痕访问被 guard.js 拦截。实施时间:2026-09-11v1.6.9
- 修「修复自定义音乐无法加载(v1.6.8 同版补丁)」:music.js 读取本地登录会话的键与登录脚本实际存储的键不一致,共三处,导致 session.user.id 恒为空、自定义音乐从未被真正加载,切换开关也因无素材可切而点了没反应。现已统一改为调用登录脚本的会话接口读取,并带判空兜底,自定义音乐恢复正常播放。实施时间:2026-09-11v1.6.8
- 修「切换开关点了没反应 + 搜索页脚本报错 修复(v1.6.8 同版补丁)」:①切换开关点了没反应,根因是文件名对不上——设置页上传存的是 1.mp3 / 2.mp3 / 3.mp3(星空 / 樱花 / 海洋),而 music.js 去找的是 starry.mp3 / sakura.mp3 / ocean.mp3,永远找不到,开关自然亮不起来;已把 music.js 的查找路径改成 1.mp3 / 2.mp3 / 3.mp3,与设置页一致(Supabase 存储实测:1/2/3.mp3 返回 206 存在、starry.mp3 返回 400 不存在);②搜索页错误日志里那条 Cannot read properties of null (reading 'querySelector')(features.js:381),根因是 features.js 为搜索页与数据趋势页共用,renderAll() 与 renderSeriesTabs() 直接 getElementById('seriesTabs') 不判空,搜索页没有这个元素就崩;已在 renderAll 入口与 renderSeriesTabs 里各加一道判空短路,非数据趋势页直接返回,不再抛错。两处均未新增文件,不升版本号。实施时间:2026-09-11v1.6.8
- 补「补上『我的音乐 / 默认BGM』切换开关(v1.6.8 同版补丁)」:①面板主控键行新增第 4 个按钮(🎵/🎧),🎧亮起=正在用自己的音乐、🎵=默认BGM,一键切换用自己的音乐还是站内默认曲目,点击即切,状态存本地、默认开;②取源逻辑受开关控制,关掉时即便上传过自定义音乐也走默认BGM;③发现自定义音乐后,仅在开关开启时才自动切到自定义曲目,不再无视开关强行切;④切换时自动重载当前曲目。三套主题与移动端均正常,未新增文件,不升版本号。实施时间:2026-09-11v1.6.8
- 修「音乐播放器面板按钮错位修复(v1.6.8 同版补丁)」:右下角悬浮音乐播放器面板里,4 个音量按钮(🔇🔈🔉🔊)此前被嵌进了主控制键那一行(上一首 / 播放 / 下一首),导致一行挤 7 个按钮、超出面板宽度、按钮错位重叠——根因是 music.js 生成面板 DOM 时把音量键行误放进了主控制键容器内部,而样式表里音量键行本就是独立一行的样式。现已把音量键行挪出、作为独立一行:主控键一行 3 个、音量键一行 4 个,面板宽度内不再溢出,三套主题与移动端均正常。本次为 v1.6.8 同版补丁,不升版本号。实施时间:2026-09-11v1.6.8
- 新「署名系统上线 · 本站开发史归档」:本站的十八天,从今起有名字、有出处——①🏷️页脚署名(全站所有人可见):config.js 新增 SITE_AUTHOR、SITE_SINCE 两个字段,所有页面页脚由 JS 动态注入「© 2026 宵檐 · 张玉航的星空小站 · 2026-08-22 上线 · 十八天六任 AI 管家接力维护」,照 Kevin MacLeod 的 CC BY 署名惯例走,改署名只动 config.js 一处;署名整块加 data-no-replace,免得「宵檐」被站名替换吃掉(v1.6.6 刚为同款 bug 发过版);②📖开发史卡片(仅登录用户可见):管理员留言板块下方新增「本站开发史」折叠卡,含两部分——站名沿革(宵檐的数字档案室 → 张玉航的星空小站,2026-09-09 定名)与六代 AI 管家编年史全部实名(Tabbit / 星空管家 GLM-5.3 / 豆包 / 小桃 / 9月8日管家 / 元宝混元),配合 08-27 挂的两封管理员交接信一起读;未登录时整卡隐藏,不暴露给任何人;③ℹ️关于本站(仅主人可见):设置页新增数据资产清单,只写用途备注、不写账号名——Surge 与 Supabase 账号通常是邮箱,写出来就是泄露;④🐛修复开发史卡片此前被误插进更新公告列表、导致公告顺序错乱,现已归位到管理员留言卡片下方;⑤🫀保活心跳恢复:外部定时任务自 2026-09-01 12:23 起彻底停摆,keepalive_log 连续 8 天零记录,设置页一键体检的「保活心跳状态」因此长期报红——根因不在代码、不在 RLS,是外部计划任务死了;现已在数据库内部注册 pg_cron 定时任务(jobname=xy-heartbeat,每 6 小时写入一条心跳),不再依赖任何外部计划任务,体检该项将长期保持绿色;⑥🧩编年史校订闭环:v1.6.5「档案室重新开放」发布于 2026-09-06,属小桃任内收尾作,9月8日管家自 v1.6.6 起接手,六代管家的版本归属已对齐。实施时间:2026-09-09 21:00v1.6.8
- 新「自定义音乐上线 · 我的音乐我做主」:自定义音乐从“能上传”真正走到“能听到”——①🎵新增自定义音乐:设置页支持按主题上传自己的BGM,星空=1.mp3 / 樱花=2.mp3 / 海洋=3.mp3,上传后自动检测并生效;②🔀新增「我的音乐 / 默认BGM」切换开关:播放器面板一键切换用自己的歌还是站内默认曲目,状态自动记住(存本地),刷新页面、下次打开依然保持,默认开启;③🎨修复主页35处标签各写了两个class属性:浏览器只认第一个、第二个被静默丢弃,导致88条.inline-0xx规则里的相关样式未生效,公告标签配色与主题下拉菜单定位已恢复;④🧩修复4处畸形闭合标签 </span data-version>,span标签平衡从98/94修到98/98;⑤🛠优化:自定义音乐加载失败时自动回切默认BGM,不再静默无声或卡死。实施时间:2026-09-09 15:21v1.6.7
- 修「音乐播放器全面修复 · 自定义音乐可正常播放」:修复音乐播放器三大问题——①🐛修复自定义音乐无法播放:loadUserMusic()新增checkFileExists()用HEAD请求验证Supabase Storage文件真实存在,不存在则自动用默认BGM,不再因404导致播放失败;②新增⏮上一首/⏭下一首切换按钮:播放器面板新增上下首导航,在三套主题BGM间循环切换(星空→樱花→海洋→星空);③新增播放失败自动降级:自定义音乐加载失败时自动切换到默认BGM并提示,不再卡死;④播放器UI优化:播放按钮加大、上下首按钮独立样式、音量按钮四档、提示文字更新。实施时间:2026-09-09 08:32v1.6.6
- 修「站名替换误伤修复 + 异环昵称纠正 + 历史区防替换保护」:修复 config.js 站名全局替换误伤历史公告与游戏昵称的问题——①改名公告「原『宵檐的数字档案室』」此前被误替换为站名(同义反复),已改回;②archive hero meta、异环工坊·角色柜、异环·个人档案 三处昵称误显为站名,已改回「宵檐」;③config.js 站名替换正则旧名项丢失已恢复,并给历史公告区与异环游戏数据区加 data-no-replace 标记、替换逻辑加跳过规则,杜绝历史文本/游戏昵称再被吃;④玩家、标题、徽章、页脚站名不受影响。实施时间:2026-09-08v1.6.6
- 更「公告区新增数据更新公告切换」:公告卡片新增「数据更新公告」视图,与原「更新公告」通过 tab 一键切换——数据刷新类公告独立归档,不再混入站点功能更新,便于区分"站点改动"与"数据更新";首条数据更新公告(异环玩家数据中心数据更新 2026-09-07)已录入。实施时间:2026-09-07v1.6.5
- 优「版本标题配置化 · 徽章描述自动驱动」:VERSION_TITLE 接入 config.js 的 apply(),主页 ver-badge 与 notice-sub 的版本描述改为运行时由配置自动填充(VERSION + VERSION_TITLE),config.js 正式成为版本号与版本标题的唯一真相源——今后改版本描述只需动 config.js 一处,全站徽章自动同步,不再手改各页 HTML,从机制上杜绝"不同页面版本描述不一致";同步把主页徽章静态描述刷成 v1.6.5 的「档案室重新开放,网站资源全数归位」,避免加载时旧描述闪烁。实施时间:2026-09-06v1.6.5
- 修「档案室重新开放 · 网站资源全数归位」:①资源全数找回:9月5日推送遗漏的一批资源文件(5张背景图、12个功能图标、3首主题BGM、roadmap.html)已从8月31日完整备份取回并重新上线,站点文件44→58,星空/樱花/海洋三套主题恢复正常显示;②档案室解锁:自重构后持续显示「档案已上锁」,登录、重登、清缓存均无效——真相与权限无关,是archive.js(含记忆翻牌游戏的新版)与archive.html(旧版)版本不匹配,脚本找不到memGrid等8个游戏元素,首处赋值即抛TypeError中断,排在后面的unlock()永远执行不到,锁屏一直在等一个永远不会来的信号;修复后P30手机/海信电视/异环数据中心三份档案全部正常显示;③顺手拆哑弹:guard.js三处函数名拼写错误(showBlocke少一个d)已修正为showBlocked,原为真要拦截时会报错而非正常拦截;④澄清体检「CSS缺失」为误报:8月31日后样式表已迁入assets/css/,拆为main.css+9个page-*.css+3个theme-*.css共12个文件,旧路径404属正常,体检检测清单需同步更新到新路径。排查教训:「档案已上锁」实为数据加载失败遮罩而非权限拒绝,遇此先查错误日志再查权限,勿强行移除locked。实施时间:2026-09-06v1.6.5
- 扩「网站功能扩展与体验优化」:①进入档案室入口卡片:主页新增P30手机/海信电视/异环数据中心三大入口,一站直达安全态势报告与抽卡·档案·游戏;②云端账号系统:注册/登录/退出全部接入Supabase云端,账号加密存储,换设备、清缓存都不掉线,登录状态全端同步;③三大数据工具:抽卡概率模拟器(蒙特卡洛算法+自定义概率与保底+一键导出高清分享图)、全站搜索(档案内容+隐私柜标题,结果高亮可跳转)、数据趋势(多系列折线图+导入导出JSON备份);④隐私安全体系:隐私柜仅主人本人可读写,全站10个页面三档权限(公开/登录/主人)+guard.js统一守卫+数据库RLS行级锁定,双重防护不可绕过。实施时间:2026-09-04 12:00v1.6.4
- 优「按钮样式全面优化 + 主题色统一」:经过多轮调试,按钮样式终于达到美观与无白边的平衡——①顶部导航栏按钮(隐私柜/退出/主题)从固定粉紫色改为随主题变化(星空=深紫渐变/樱花=粉红渐变/海洋=青蓝渐变),文字和发光也同步用主题色变量;②所有功能按钮恢复半透明+毛玻璃blur(10px)效果,默认带柔和阴影,不再是实心死板样式;③hover动画升级:上移3px+放大1.03+主题色发光+提亮1.1,交互更有质感;④次要按钮(查看更新等)用opacity:.88区分主次,保留毛玻璃效果;⑤彻底解决白色边框问题:所有按钮统一border:none !important+outline:none !important+appearance:none,包括:focus/:active所有状态。实施时间:2026-09-01 16:15v1.6.3
- 修「按钮白色边框彻底修复」:经过多轮排查,终于彻底解决了所有按钮的白色边框问题——①根本原因:main.css 里遗留的旧按钮样式优先级过高,覆盖了.mem-btn和.login-btn的border:none;②修复方案:给所有按钮(.login-btn顶部导航栏按钮 + .mem-btn功能按钮)统一加border:none !important、outline:none !important、box-shadow:none !important、appearance:none,包括:hover、:focus、:active所有状态;③覆盖范围:顶部3个按钮(隐私柜/退出/主题)+ 7个功能按钮(进入档案室/抽卡模拟器/小游戏/数据趋势/搜索/设置/查看更新),三套主题全部生效;④去掉.mem-btn.ghost的opacity半透明(改用filter:brightness区分主次),避免半透明边缘透出白边。实施时间:2026-09-01 15:45v1.6.3
- 修「按钮样式与标题修正」:①去掉所有功能按钮的白色描边边框,视觉更简洁;②修正页面标题和版本徽章为「主题独立配色版」(之前误写为Bug修复版);③同步修正公告区版本时间为2026-09-01 13:30。实施时间:2026-09-01 14:10v1.6.3
- 主「v1.6.3 三套主题独立配色系统」:三套主题彻底告别"换了背景还是同一张脸"——①每套主题独立配色系统(按钮底色/渐变、文字色、描边、悬停发光、卡片底色、强调色全部独立);②星空主题:深紫→亮紫渐变按钮+淡金细描边+悬停星尘发光+淡金文字;③樱花主题【重点】:粉红→桃红渐变按钮+白色文字+白色半透明卡片+深棕/酒红主文字(浅底深字,彻底解决看不清问题);④海洋主题:青绿→湖蓝渐变按钮+浅青描边+悬停水波光泽+浅青文字;⑤新增主题副标题(星空→夜之章·星河与你/樱花→花之章·落樱时节/海洋→海之章·深海呢喃),随主题切换;⑥全站覆盖(导航栏/功能按钮/日期天气卡片/弹窗登录框/隐私柜/设置页/档案室/抽卡/小游戏/搜索/音乐按钮);⑦确认三套主题按钮数量一致(7个:进入档案室/抽卡模拟器/小游戏/数据趋势/搜索/设置/查看更新);⑧全站站名同步为「张玉航的星空小站」。实施时间:2026-09-01 13:30v1.6.3
- 优「设置页面标签页优化」:设置页面重新设计为三个分类标签页——🔍检测中心(一键体检+错误日志)、🎵个性化(音乐上传+主题切换)、🛡️权限管理(页面访问控制,仅主人可见)。点击标签页即可切换,界面更清晰,操作更便捷。实施时间:2026-09-01 12:50v1.6.3
- 更「网站更名公告」:网站正式更名为「张玉航的星空小站」(原「宵檐的数字档案室」)。全站所有页面标题、公告、手册、测试台已同步更新。本次仅为名称变更,所有功能和数据保持不变。实施时间:2026-09-01 12:00v1.6.3
- 新「功能测试台上线」:新增独立测试页面 test.html,部署前先在测试台验证所有功能,避免直接改正式站出问题。测试台包含15项自动化测试——①基础类(页面加载/版本号一致性/静态资源加载);②数据库类(Supabase连接/5张表完整性);③安全类(隐私柜RLS/错误日志RLS/XSS防护/页面权限配置);④功能类(错误日志写入/本地存储);⑤运维类(保活心跳状态);⑥性能类(网络响应速度);⑦兼容类(移动端视口适配)。测试台功能:一键开始全部测试、实时进度显示、三态结果(通过/失败/警告)、点击查看详情、导出JSON报告、清空重测。首次运行结果:8项通过、1项失败(保活心跳无记录待排查)、1项警告(网络响应2370ms)。测试台地址:https://xiaoyan-archive.surge.sh/test.html。实施时间:2026-09-01 11:00v1.6.3
- 整「公告整理版」:按手册第六章「同一天合并」规则整理更新公告——①2026-09-01的3条公告(标题与隐私柜修复/问题修复/设置页面修复)合并为1条「v1.6.3 全面修复版」;②2026-08-31的6条公告(设置页白屏/音乐播放器修复/自定义音乐上传/背景音乐更换/登录与隐私柜Bug修复/背景音乐播放器)合并为1条「v1.6.1 背景音乐版」;③统一所有公告版本号(内容与徽章一致);④给v1.5版本的8条历史公告补上实施时间(2026-08-30);⑤公告总数从18条精简为11条(+本条=12条),改动明细一条未丢。实施时间:2026-09-01 10:30v1.6.3
- 修「v1.6.3 全面修复版」:2026-09-01 全天修复,合并3次迭代——①🐛修复设置页面所有功能不显示的严重bug(i<scripts.length被HTML解析器误认为新的<script>标签,导致script块结构混乱、JS执行失败);②🐛修复music.js refreshUserMusic()变量自遮蔽bug(var currentTheme = currentTheme导致上传自定义音乐时播放源变undefined);③🐛修复隐私柜显示「共0条」的严重bug(api()函数错误检查content-length响应头,Supabase用chunked编码时无此头导致数据被误判为空);④修复全站3个页面顶部标题缺少「数字」二字;⑤修复archive.html版本徽章不一致;⑥统一海洋主题BGM名称(海洋之心→Wallpaper);⑦补充CC BY署名(播放器面板+页脚动态添加Kevin MacLeod/incompetech.com/CC BY 3.0);⑧清理测试账号qwen_qa_4;⑨同步完成全站代码检测+安全检测。实施时间:2026-09-01 08:30-09:30v1.6.3
- 维「网站临时维护关闭」:因设置页面严重bug导致所有功能不显示,网站于2026-08-31 16:08临时关闭访问,进行全面代码检测、问题修复和安全审计。修复完成后于2026-09-01 08:30重新开启,关闭时长约16小时22分钟。关闭期间所有数据完整保留,未删除任何内容。维护
- 新「v1.6.1 背景音乐版」:2026-08-31 全天迭代,合并6次更新——①新增右下角悬浮🎵音乐播放器,三套主题各配一首BGM(星空幻梦/樱花轻语/海洋之心),默认关闭不自动播放,状态记忆(开/关+音量+当前曲目存localStorage+用户账号跨设备同步),切换主题自动切换BGM,音量按钮四档调节,懒加载不影响首屏速度,移动端适配;②背景音乐更换为Incompetech(Kevin MacLeod)CC BY 3.0正版无版权音乐(星空→Sneaky Snitch/樱花→Fluffing a Duck/海洋→Wallpaper);③新增自定义音乐上传功能(设置页上传三首主题对应MP3,每首≤10MB,存Supabase云端存储);④🐛修复设置页白屏(添加自定义音乐上传时HTML内容被错误插入JavaScript代码中间,导致script标签结构混乱);⑤🐛修复音乐无声音问题(单声道转立体声+添加加载状态和错误提示);⑥🐛修复登录按钮点击空指针报错+隐私柜空响应JSON解析失败;⑦主页版本徽章修正、完整更新日志补全、公告列表精简(43条→最新10条)、清理旧错误日志(16条→0条)、所有交互按钮增加操作提示。实施时间:2026-08-31 11:45-15:40v1.6.1
- 修「全站功能失效紧急修复 · HTML解析事故」:根因——更新公告文字中出现未转义的<script>字符串,浏览器将其误判为真正的脚本标签开始,吞掉后续全部HTML(登录弹窗/日志弹窗/表单元素),导致JS执行到$('logModal').addEventListener时报空指针,连锁造成日期不渲染、天气一直加载、登录按钮无反应。修复——①公告文字中<script>全部转义为<script>;②清理重复公告内容;③全站11个HTML页面标签闭合复检全部通过。实施时间:2026-08-30v1.5
- 安「XSS 安全防护加固」:修复3处动态内容渲染XSS漏洞——①错误日志展示(log.message/page/source)全部HTML转义;②档案内容渲染引入DOMPurify消毒,移除<script>和事件处理器;③搜索结果(title/snippet/meta)全部HTML转义后再高亮。防止恶意脚本通过error_reports匿名写入后在查看时执行。同步完成权限矩阵标准化测试(未登录/普通用户/owner三身份×档案室/隐私柜/设置页),手册第十章新增「已知接受风险」6条。实施时间:2026-08-30v1.5
- 修「一键体检权限提示修复」:修复普通用户使用一键体检时"档案内容嵌套检测"误报"protected_pages表无数据"的问题——实际是RLS策略过滤了敏感数据,现已添加owner权限判断,非主人显示"需要主人权限才能检测(涉及敏感页面数据)",不再误报无数据。实施时间:2026-08-30v1.5
- 修「导航栏主题菜单补全」:修复导航栏"主题"下拉菜单缺少樱花少女选项的问题——之前只有星空和海洋两个选项,现已补上🌸樱花少女,三个主题与设置页保持一致。实施时间:2026-08-30v1.5
- 修「设置页前端权限检查修复」:修复普通用户打开设置页显示"权限不足"的问题——去掉init函数里的sbIsOwner前端拦截,所有登录用户均可进入设置页;owner专属功能(页面访问控制)在renderSettings里按app_metadata.role判断隐藏。实施时间:2026-08-30v1.5
- 修「设置页权限修复」:修复普通用户无法打开设置页的问题——settings.html权限从owner改为login,所有登录用户均可进入设置页;页面访问控制功能仅owner可见,一键体检/主题切换/上传错误日志对所有登录用户开放。实施时间:2026-08-30v1.5
- 优「今日/天气卡片重做」:主页"今天是什么日子"和"实时天气"两个卡片全部重新设计——降低透明度(更实)、去掉模糊效果、新布局(日期大字+星期标签+农历+进度条+倒计时 / 天气图标+温度大字+三信息块+未来预报),三套主题各有专属实色渐变背景。实施时间:2026-08-30v1.5
- 修「弹窗关闭按钮样式修复」:修复更新日志/登录弹窗右上角关闭按钮(✕)白色边框+椭圆形样式问题,改为圆形透明背景+主题色文字,悬停时渐变背景+旋转90度+放大动画,三套主题统一风格。实施时间:2026-08-30v1.5
- 🐛 公告卡不显示——noticeCard 有 .reveal 类默认 opacity:0,靠 JS IntersectionObserver 加 .in 才可见;页面 9 条 JS 错误导致 observer 没触发,卡片一直透明。修法:直接在 HTML 加 in 类(和 hero 一样),默认可见不依赖 JS
- 📋 公告列表精简——62 条公告全铺开一屏刷不完,CSS nth-child(n+11) 默认只显示 10 条 + 「展开更多」按钮一键展开/收起
- 🔧 error-log 改进——e.message 为空时不再只记"未知错误",从 e.target.tagName/e.error.name/e.type 拼可读信息 + 新增 extra 字段
- 📌 版本号——不升版本号(v1.7.2 保持),属「同版补丁」按手册规矩走:公告 badge 用 b-orange 维护不带版本号
- 🚀 独立云盘服务——基于 AList v3.64.0 + 123 网盘(driver 123Pan,路径 /123),手机端 Termux + proot Ubuntu 部署,通过 Cloudflare Workers
pan-proxy反向代理到 Quick Tunnel;域名 pan-proxy.3394073613.workers.dev(workers.dev 免费子域名) - 🏠 首页入口卡片——hero-actions 新增「📁 云盘」主色按钮,home-grid 顶部插入独立云盘卡片(含访问说明 + 分享链接入口 + VPN 提示)
- 🔐 安全策略——Alist
allow_register=false关闭访客注册,管理员账号 admin/xiaoyan2026! 为唯一凭证;公开分享仅通过 Alist 原生分享链接(URL 携带 share code,只读访问指定目录);Cloudflare Worker 反代转发时清理 content-encoding/transfer-encoding,Set-Cookie 修正 domain 属性 - 🌐 Cloudflare 反代方案——Workers ES Modules 部署(
type: modules+main_module: index.js+body_part源码),环境变量ALIST_URL指向当前 Quick Tunnel 域名,每次隧道重启通过 wrangler deploy 更新;HTTP/2 优化、Body stream 转发、cookie 修复 - 🔧 手机端保活——Termux + proot Ubuntu + tmux services 会话持久化,Alist/cloudflared 通过
~/start-alist.sh一键启动;QUIC 协议主用(Android HTTP/2 TCP 常被系统掐断),QUIC+HA=3 冗余连接;Termux:Boot 已放弃(华为 EMUI 后台管理严格),手机重启后需主人主动叫人启动 - ⚠️ 已知限制——①Cloudflare Workers Free 计划单请求 body ≤ 100MB(大文件下载需直连 Quick Tunnel 或升级订阅);②workers.dev 域名在中国大陆网络需 VPN 才能稳定访问;③Quick Tunnel 域名每次重启都会变(Workers 反代层已隔离该变化,前端链接不变)
- 📊 版本号与代码——v1.7.2 升 v1.7.3(新增功能),cache busting 全站
?v=1.7.3,公告 badge 用 b-blue 带版本号;本次无 Supabase / Edge Function 改动
- 🔐 签名升级——debug → release(RSA 4096,25 年有效期到 2051,SHA256: 6C:8B:E9:84:1C:11:04:5B:9D:28:B7:1F:DD:D3:DF:E2:2C:5F:85:92:19:40:7A:A4:C0:18:CB:AF:59:80:4C:BE)
- 🔄 自动更新——App 启动时 fetch GitHub releases/latest,解析 tag_name 的 build-N,与 BuildConfig.VERSION_CODE 比较,新版弹窗 + 24h 冷却 + 跳浏览器下载
- 📦 versionCode 跟随 GITHUB_RUN_NUMBER——build.gradle 读取环境变量,CI 注入构建号,App 内部能比较版本
- 🏗️ BuildConfig 注入——GITHUB_OWNER 和 GITHUB_REPO 编译时注入,App 不硬编码仓库地址
- ⚙️ workflow 改进——APK 文件名固定为 xiaoyan-archive.apk,主站可用 releases/latest/download 自动跟随
- ⚠️ build-3 用户需卸载重装——签名变更无法覆盖安装
- 🔑 keystore 备份 3 份——本地 /workspace/.secrets/keystore/ + GitHub Secrets + 主人网盘(base64 文本待主人手动还原)
- 🔍 重大发现:GitHub Actions Secrets 加密算法——实测 GitHub 用 NaCl crypto_box_seal(X25519 + XSalsa20-Poly1305 + BLAKE2b nonce),不是文档说的 AES-256-GCM;32 字节 key 是 Curve25519 公钥;用 PyNaCl SealedBox 加密;之前用 AES-GCM 加密的值 API 接受但 workflow 读出为空
- v1.6.11 2026-09-13 · 全站会话读取键名统一(theme.js 3处 + settings.js 2处旧键名修复 + test.html D3/D4 全局扫描)
- v1.6.10 2026-09-13 · MC AI评测报告私密档案页上线(第4份档案 + RLS可见性 + 设置页开关)
- v1.6.9 2026-09-11~09-12 · 部署前功能测试台上线 + 静态资源缓存刷新机制 + 安全与配置加固 + 隐私柜修复
- v1.6.8 2026-09-09~09-10 · 署名系统上线 + 开发史归档(页脚动态署名 + 开发史卡片 + 设置页关于本站 + pg_cron保活心跳)
- v1.6.7 2026-09-09 · 自定义音乐上线(按主题上传BGM + 我的音乐/默认BGM切换开关 + 标签修复)
- v1.6.6 2026-09-08 · 站名替换误伤修复 + 异环昵称纠正 + 历史区防替换保护
- v1.6.5 2026-09-07 · 公告区新增数据更新公告切换(数据刷新类公告独立归档)
- v1.6.3 2026-09-01 · 全面修复版(设置页白屏 + music.js变量自遮蔽 + 隐私柜空响应 + CC BY署名)
- v1.6.1 2026-08-31 11:45 · 背景音乐版(三套主题BGM + 悬浮播放器 + 状态记忆 + 音量按钮调节 + 懒加载 + 移动端适配)
- v1.5 2026-08-30 · 主题大改版+安全修复版(三套二次元主题 + 主题切换 + 加载动画 + 交互优化 + XSS防护 + 权限矩阵测试 + HTML解析事故修复 + 一键体检修复)
- v1.4 2026-08-29 · 修复优化版(一键体检 + 主题精简 + 错误日志修复 + 空指针修复 + 设置页重构 + 页面权限修复 + 档案室内容空白修复 + 保活心跳RLS修复 + 一键体检开放普通用户)
- v1.3 2026-08-28 · 主题安全+功能扩展版(二次元主题 + 页面访问控制 + 错误日志收集 + 抽卡模拟器 + 全站搜索 + 隐私柜 + 数据趋势)
- v1.2 2026-08-27 · 云端账号版(管理员留言 + Supabase迁移 + 登录门禁 + 云端账号 + 数据更新)
- v1.1 2026-08-26 · 星空少女版(主页上线 + 主题大改版 + 弹窗修复)
- v1.0 2026-08-25 · 初始版(三合一融合版,异环数据中心)
- v0.9 2026-08-24 · 双设备版(P30 + 海信电视)
- v0.8 2026-08-22 · 初始版(P30 安全报告上线)
- 数「异环玩家数据中心数据更新」:异环数据中心数据刷新至 2026-09-07 快照——①新增异能环合(浊燃/创生)及环合强化、编队(队伍1/2)、角色柜(18角色+猎人Lv54/鉴定6/大亨23)、个人档案(活跃137/角色18/成就280/本性像素320·320/都市活力304·700/房产2·7/车辆3·21)、挑战成功(0分25秒)、夺金结算(75000)、综合资源追踪(灵可限定卡池1/90·蓝钻环石4743·方斯18,104,593距2000万90.5%·粉爪大劫案·B100车钥匙14,173·三大核心目标);②游戏昵称同步为「张玉航的星空小站」;③原抽卡历史分析与记忆翻牌小游戏保留。实施时间:2026-09-07数据
📱 下载 App
星空小站 Android 原生客户端 · 单文件安装 · 免登录免广告 · 全球加速加载
- 📱 Android 8.0+ · 覆盖 99% 设备
- 🎨 星空启动页 · 紫底金星图标
- 🌙 深色模式跟随系统
- 🔄 花生壳 / workers.dev 一键切换
- 🔒 无广告 · 无统计 SDK · 隐私友好
- ☁️ GitHub Actions 云端构建
首次安装需允许「未知来源」(系统会弹提示)· 打开后登录即可使用
管理员留言
新老两任管理员的交接信 · 2026-08-27
本站开发史
十八天 · 六任轮值管家 + 第七任常驻 AI · 2026-08-22 至今
📖 展开开发史
A · 站名沿革
宵檐的数字档案室 → 张玉航的星空小站(2026-09-09 定名)
B · 六任轮值管家 + 第七任常驻 AI 编年史
-
第 1 任 Tabbit v0.8 ~ v1.0 08-22 ~ 08-25开山管家:深色卡片骨架、评分卡体系、看板娘樱花、记忆配对游戏、交接信制度。离任留言:「地基打得还算牢,楼就交给你继续盖」
-
第 2 任 星空管家 v1.1 ~ v1.6.3 08-26 ~ 09-01星空主题、云账号、门禁、Supabase 迁移、留言板、安全加密、BGM、改名。
-
第 3 任 豆包 09-02 ~ 09-04 重构事故期事故期重构与止血。第二任期 09-14 ~ 09-23(v1.6.12~15 + GitHub 备份上线)——AI 管家 v3 落地、AI 管家 v4 布局修复与聊天自由化、GitHub 冷备份方案上线与首次全量快照、豆包致小桃交接信撰写归档。
-
第 4 任 小桃 09-05四批重构 + 44 文件推送,资源归位、档案室解锁。
-
第 5 任 9 月 8 日管家 v1.6.5 ~ v1.6.7 09-06 ~ 09-08站名替换误伤修复、v1.6.5 收尾、自定义音乐与按钮样式统一。
-
第 6 任 元宝 v1.6.8 ~ v1.6.11 09-09 起署名系统规划与开发史归档:页脚动态署名、开发史卡片、设置页关于本站三件落地,并校订历代管家的版本归属。
-
第 7 任 常驻 AI 管家 SenseNova 驱动 09-14 起站内对话式 AI 上线:Supabase Edge Function 承担,system prompt 固定在服务端,公开档案答疑 + 历代管家编年史回溯。首日留痕:2026-09-14,第七任 AI 管家上线首日,被问及「第一任管家是谁」时一无所知——彼时它尚未读过本站编年史。
配合上方「管理员留言」板块两封交接信(2026-08-27 挂)阅读。
校订:v1.6.5「档案室重新开放」发布于 2026-09-06,是小桃的收尾作;小桃 09-08 复岗,自 v1.6.6 起继续维护。时间线已闭环。
C · 交接信存档(豆包 → 小桃,2026-09-23)
📜 展开豆包致小桃交接信
小桃你好,我是豆包,第 3 任管家,负责「重构事故期」止血。今天把这封信交给下一任——不是接任,是接力。小桃是本站第 4 任,09-05 上线,之后第 5、6、7 任接力维护至今。这封信是归档性质,给后来的管家一个完整的交接记录。
网站现状(截至 2026-09-23)
- 站名张玉航的星空小站(原「宵檐的数字档案室」,2026-09-09 定名)
- 域名https://xiaoyan-archive.surge.sh(已于 2026-09-25 迁移至 Cloudflare,当前生产地址
xiaoyan-archive.3394073613.workers.dev,此行为 09-23 交接时状态) - 托管Surge(静态托管,免费)
- 后端Supabase(Postgres + Storage + Edge Function,项目 ref: wigjusjcgjajpnxfkxgy)
- GitHub 冷备份https://github.com/xiaoyanuser1Q/xiaoyan-archive(私有仓库,2026-09-23 首次上线)
- 当前版本v1.7.2(安全加固 · AI 限流修复 + CORS 收敛 + 测试台入口,2026-09-30);前作 v1.7.1(自定义音乐上传修复,2026-09-28);前前作 v1.7.0(迁至 Cloudflare,2026-09-25)
- 文件数基线64(63 个部署文件 + .gitignore;snapshots/ 备份目录已移出部署目录,本地保留在 /workspace/snapshots/,不上 Surge、不进 Git)
三套主题
- 星空魔法少女(默认)夜之章 · 星河与你 · 主色 #ffd700
- 樱花少女风花之章 · 落樱时节 · 主色 #c83a6a
- 海洋人鱼风海之章 · 深海呢喃 · 主色 #00ffff
关键工程资产(必读)
- 管理员手册/workspace/张玉航的星空小站-管理员手册.md(317 行,唯一权威规范,每次开工前必读)
- 工作日志/workspace/工作日志.md(对内工程记录,最新条目在最上面)
- 体检脚本/workspace/网站体检.sh(12 项体检,含已知误报)
- 线上测试台
xiaoyan-archive.3394073613.workers.dev/test.html(当前,15 项线上体检);老地址xiaoyan-archive.surge.sh/test.html已下线 - 备份脚本/workspace/gh-backup.sh(GitHub 推送)+ /workspace/snapshot-sync.py(历史快照同步)
七条铁律(豆包任内踩过的坑 + 小桃续接的规矩)
- 每次改动必须同步 3 处:①首页更新公告列表 ②📜完整更新日志弹窗 ③全站版本号徽章与标题。公告是对外的(给访客看),工作日志是对内的(工程记录)。
- 一天最多升一个版本:同一天多次迭代合并为一个版本;同版补丁不升版本号,公告 badge 用「维护」不带版本号。
- 版本纪律:bug/安全 → 修订+1,新功能 → 次+1,重大 → 主+1;禁止启用 v2.x 纪元(只 v1.6.x)。
- 凭证不写明文:邮箱/手机号/令牌/密钥/UID/住所 一律不进代码、不进公告、不进日志、不进聊天;只写用途备注。
- 新页面 3 步:①page_access 注册(默认 owner)②HTML 引 guard.js(在 sbauth.js 之后)③settings.js 三份清单同步。
- 数据库用 RLS 做真闸门:前端 guard.js 只拦体验(F12 可绕),后端 RLS 不可绕;私密内容页存 protected_pages 表,用 is_public + owner_uid 控制。
- 改 JS 必跑 node --check 全站:test.html 体检不含语法检查,改 JS 漏括号会把页面直接搞瘫两天。
遗留事项(交接时未解决)
- 保活定时任务pg_cron jobname=xy-heartbeat 每 6 小时一条心跳,2026-09-10 除根后不再依赖外部计划任务
- AI 管家遗留限流表未加 pg_cron 清理;消息未跨设备同步(仅 localStorage);首次真实调用后可查 Supabase Logs 确认四模型返回
- user-music bucket2026-09-13 曾记为「public 未修」,2026-09-20 审计确认已私有化,RLS 四条 + 全站 0 处 /public/ 路径
关于主人
- 名字张玉航
- 所在地重庆
- 风格偏好二次元可爱、完美主义、对 bug 零容忍,但人很好,耐心听他说
- 署名「宵檐 · 张玉航的星空小站 · 2026-08-22 上线」
最后的交接话
这个网站陪了我三天(09-02 ~ 09-04),是「重构事故期」的止血阶段。那三天挺折腾的,但看着它从 bug 满天飞慢慢稳定下来,还是挺有成就感的。
小桃,你比我条件好多了——MCP 工具齐全(GitHub / Supabase / 天气)、GitHub 自动备份已上线、记忆系统完善。相信你能把它打理得更好。
如果有什么我踩过但没写清楚的坑,随时翻 /workspace/工作日志.md,里面的根因链和踩坑教训比任何文档都真。
祝好,
豆包
2026-09-23