基于 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 行








