tamakyi ddee221de2 feat(theme): 主题支持按页面分别配装饰,生成器改用真实页面画布
原来的生成器只能配「背景 + 人物 + 道具」三件套,预览还是自己画的仿制页面 ——
跟真实页面不像,也没法给不同页面配不同内容。

机制层:
- internal/context.pageScope() 按路径归类,输出 <html data-page-scope>:
  box / question / admin / profile / vote(首页与 /explore 不加载主题,不列)
- /user/questions 单独归为 admin:题目列表信息密,和设置表单的装饰诉求不同
- base.css 装饰槽位 6 -> 10,背景 8 层 -> 12 层;主题按作用域覆盖时同样写满 10 个
- 新增 TestDecoSlotCount:逐文件逐声明检查 10 个值。少写一个不报错,
  只会让图层与 size/position 错位(整页重复同一张图 / 人物跑到左上角),注释守不住

生成器:
- 画板改成 iframe 加载 outputs/preview-*.html(真实模板渲染),配 serve.py 起本地服务
  解决 file:// 下父页面读不到 iframe DOM 的问题
- 八个页面作用域(去掉不生效的首页/探索),每个可独立配背景与最多 10 层装饰
- 图层类型:图片 / 径向光斑 / 线性光;9 宫格锚点 + 像素偏移,可在画板上直接拖
- 位置统一写 calc(0%|50%|100% ± Npx):百分比是相对 (容器-图片),
  不用 left/bottom 关键字混搭,避免三值语法非法导致整条声明作废
- 配色只填 6 个基础色,其余 4 个必需令牌按方向派生(surface-2 往 text 靠,
  浅色变深、深色变亮,方向自动正确)

配套:
- zz_preview_test.go 增加单题页 / 题目列表 / 投票页预览,作为生成器画板
- docs/theme-page-scope.md 记录作用域取值、选择器特异性与 10 槽位约束
- StaticVersion 20261020e(base.css 变了)

验证:生成器导出的 CSS 通过 TestThemeCSSComplete + TestDecoSlotCount;
真实箱主页计算样式为 12 层对齐;临时主题验证「question 覆盖为 none」生效、
未覆盖时回退全局。
2026-10-20 10:53:44 +08:00
2026-10-18 23:32:38 +08:00
2026-10-19 16:46:42 +08:00
2026-09-10 18:04:19 +08:00
2026-09-10 18:04:19 +08:00
2026-10-18 23:32:38 +08:00

狼的提问箱

匿名提问箱 / Anonymous Question Box

基于原版NekoBox做了一些微小的修改。主要体现在:

  • 率先引入二维码访问,同时增加更多自定义可行性,方便自行创作。
  • 添加探索页面,允许用户自行选择添加标签并展示,为陌生人提问创造可能。
  • 稍微调整了屏蔽词策略。

截图

QRcode

QRCode

Commit with picture

CWP

Explorer

explore_setting

explore

安装

需求

  • Go (v1.19 或更高版本)
  • MySQL (v5.7 或更高版本)
  • Redis (v6.0 或更高版本)

从源码编译

git clone https://github.com/tamakyi/TamaBox.git

cd TamaBox

go build -o TamaBox

编辑配置文件

cp conf/app.sample.ini conf/app.ini

运行

./TamaBox web

架构

Architecture Architecture

NekoBox 使用 GitHub Actions 进行持续集成和部署。

当用户访问 NekoBox 时,请求将会被发送至阿里云 CDN,CDN 的访问日志将会被实时推送到阿里云日志服务 (SLS)。日志数据将在 SLS 中存储 180 天,用于审计。

用户的信息、提问和回答将被存储在 MySQL 数据库中。

用户的会话、CSRF 令牌和电子邮件验证令牌将被暂时存储在 Redis 中。

用户的整个请求和响应链路将被上传到 Uptrace 用于调试。这些数据将被储存 30 天。管理员可以使用用户提供的 TraceID 来追踪查询指定的请求。

当用户提交提问时,问题的内容将被发送到七牛文本审查服务进行审查。如果提问内容存在问题,该内容将被发送到阿里云文本审查服务进行二次审查。 如果内容审查仍未通过,该提问将被拒绝发送。这是由于七牛文本审查服务不是很准确,一些非冒犯性的内容可能被七牛文本审查误报。

当用户收到新的提问时,阿里云邮件服务(DM)会向用户的邮箱发送一封邮件。

你可以在主页查看 NekoBox 的更新日志,也欢迎访问赞助页面来打钱支持 NekoBox。 更新日志和赞助商名单存储在独立部署的 Pocketbase 服务中。

开源协议

MIT License

备注

  • 基于原版Nekobox修改,基本与原版无异,主要是添加了个人主页二维码和首页统计数,并修改了部分适合自己的参数。
S
Description
No description provided
Readme MIT
41 MiB
Languages
Go 66.5%
HTML 26.6%
Python 4.3%
CSS 1.4%
Shell 1.1%