【最新稳定版】XIUNOX 1.1.3 版本源码开源发布!

基于 Xiuno BBS 4.0.4 原版打造的现代化重构版本 XIUNOX。 目前版本为稳定维护版本,更新频率为7/14天。(项目前期曾使用 Xiuno BBS v4.5+、Xiuno Next 作为项目名称,现已更名为 XIUNOX)

全面适配 PHP 8 + MySQL 8,采用 Bootstrap 5.3 与 HTMX 4 构建现代无刷新 UI, 安全与可扩展性大幅提升,原生支持多语言、RESTful API,让轻量论坛重获新生。

新增功能

  • API 日志页:按 resource/method/appid 过滤,仅 conf.api_log 开启时显示入口

  • API 调试台 X-App-Id 强制鉴权 + token 生成 toast 提示

  • 全局 lightbox(view/js/lightbox.js):缩放/旋转/拖拽/键盘操作,统一替代帖子页旧版

  • 发帖页特殊主题按钮组(抽奖/悬赏/投票)+ XN.prompt() 替代原生 prompt

  • 导航 active 服务端渲染(NavService::isActive())

  • 后台 Caddy v2 伪静态规则配置

  • Service 自注册架构:DiscoverService / NavService 由插件 <service>_register.php 自注册,去核心化

  • 发帖按钮 hook 锚点(floating_action_post_after / forum_post_btn_after / thread_post_btn_after)

  • 插件扫描器 force_blocked 强制阻断分类(force=1 也不可跳过)

Bug 修复

  • 发帖版块白名单多层校验(原仅下拉框过滤可被 curl 绕过),新增 forum_can_post() 共享判断

  • AdminNotifyService:user.status=1 字段不存在导致接收人列表恒为空 SQL 报 Unknown column,改用 ban_type=0

  • AdminNotifyService:cache_get 防抖在 MySQL 驱动下恒命中导致首次不发送,TTL 24h→30min

  • AdminNotifyService:邮件链接转 absolute URL(邮件客户端无法解析 admin 路径下的 ./?xxx.htm)

  • post_create 代发场景自动跳过 attach_assoc_post(避免机器人代发窃取当前访问者 session 附件,已影响 xnx_ai_reply + xnx_demo_data)

  • htmx hx-swap 从 innerHTML 改为 outerHTML(修复 #body 嵌套导致布局失效)

  • 附件 tmp_files key 用 max(array_keys)+1 替代 count()(修复并发上传覆盖)

  • URL 解析先剥离 query 再去后缀(修复 ?event=xxx 遮挡导致路由 404)

  • 积分检查/AI 代理 URL query 分隔符适配 url_rewrite_on=0

  • API 模式加载前台语言包(原 $_SERVER['lang'] 未设置导致 lang() 返回字面量)

  • plugin_clear_tmp_dir 增加 OPcache 清理(避免启用插件后旧字节码不生效 500)

  • xn_substr 兼容 null 参数(PHP 8.1+ 弃用)

  • sitemap.xml 早期拦截前预加载 EscapeService(避免 esc_attr undefined fatal)

  • bbs_cache.k 字段 char(32) → varchar(255)(支持长键,UpgradeService 自动 ALTER)

  • api_log 表补齐 appid 字段 + 索引(老版本建表漏字段导致写日志静默失败)

  • revokeToken 改用主键 id(旧代码传 refresh_token 字符串给按 id 删除的 op,永远删不掉)

  • notify.func.php:tid=0 时不再无条件清空 url(保留 audit_pending 等无 tid 通知的自定义 url)

  • 固定链接检测失败不自动回滚(保留用户选择仅返回警告)

  • 字符串 body 显式设 Content-Type(修复 jform.serialize() 提交时 $_POST 为空)

  • 自定义 tab 切换 data-target → data-pane-target(避免与 Bootstrap 5 data-bs-target 冲突)

  • scope=full 联动禁用 allowed_resources(避免 scope=full 仍被白名单拦截)

  • 资源列表补齐 15 个与 bootstrap.php 路由一致(原缺 auth/login 导致永远 403)

优化

  • 后台日志用户搜索支持 username + nickname LIKE 模糊匹配

  • 审核通知 v2.0:站内通知自动发给 gid IN (1,2) 且 ban_type=0 的管理员,邮件优先读 admin_notify_emails

  • Tabler 图标库精简字体文件(删除 ttf/woff,新增 filled.woff2)

  • 移除多处调试 xn_log / error_log

  • view/.htaccess 静态资源缓存策略

文件统计
  • 新增:7 个 删除:2 个 修改:90 个 合计:99 个文件,+7125 / -906 行

请登录后查看此内容

最新回复

请先登录后再回复 登录