Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 28 Aug 13:21

NodeLoc App 更新日志

v0.2.0 → v0.3.0

这一版核心是把权限判断的责任彻底交还给服务端:楼层能不能编辑、能不能点赞、举报菜单里有哪些选项、侧边栏该显示什么,过去大半是前端按"是不是本人帖子"这类猜测写的规则,这次逐项翻了 Discourse 官网真实前端源码和后端 guardian 定义,换成跟随服务端逐帖子/逐用户下发的字段。顺带修了一个能让主页直接崩溃的序列化死循环 bug。

发布日期:2026-08-28
更新规模:28 commits | 49 files changed | +4,077 / -624 lines


新功能

楼层操作菜单完全跟随服务端权限

新增"更多操作"弹层承载收藏、举报、编辑、删除、恢复。这些操作是否展示不再靠前端猜(比如原来"非本人帖子就能举报"),而是读服务端逐楼层下发的 yours/can_edit/can_delete/can_recover/bookmarked 字段。举报原因列表也做成动态的:联查该楼层 actions_summarycan_act=true 的操作类型,再去站点 post_action_types 取名称和是否需要补充说明——同一篇帖子在不同人视角下能举报的原因可能不一样。点赞按钮同理接上了 actions_summary,修正了"本人帖子能点赞自己"这个疏漏。

管理员/版主专属操作

逐一核对了 Discourse 后端 guardian 源码后加上:锁定/解锁编辑(仅 staff)、Wiki 化(不是站务独占,信任等级4或站点开放用户组也能对自己帖子操作,单独走 canWiki 字段)、重新渲染 HTML(staff 或信任等级4)、取消隐藏(仅 staff)、变更帖子所有者(服务端在会话接口里直接算好下发,不是前端猜角色)、永久删除(先查权限字段决定按钮是否展示,点击后再二次确认才真正执行)。

侧边栏改为服务端驱动

节点、标签区块跟随当前用户的 sidebar_category_ids/sidebar_tags 配置,新增"小程序"区块(recent_apps),不再是前端硬编码的固定分组。

阅读进度上报

对齐官网 screen-track 服务的触发规则(60秒累计、新楼层立即上报、失败重试),之前完全没有这块。

创建话题的节点选择器改为可搜索

从下拉列表换成带搜索框的底部弹层,节点多了以后不用再一直往下滑找。

支持编辑自己发过的帖子

复用现有 Markdown 编辑器,走 PUT /posts/{id}

显示帖子翻译提示条

内容本地化场景下(cooked 是自动翻译结果)展示提示,点击可查看原文。


修复

主页加载崩溃(TagDto 序列化循环初始化)

@Serializable(with = TagDtoSerializer::class) 标在类声明上导致 TagDto.serializer() 和序列化器互相依赖,JVM 类初始化死循环直接抛异常。这是本次修复里唯一一个能让 App 完全打不开的问题。

节点标签图片占位

话题列表和详情页的节点标签改用官网真实上传的图标图片,之前是纯色圆点占位。

抽屉用户区信任等级文案

改用青铜/白银/黄金/钻石/王者中文称号,不再显示 TL0~TL4


Chore

删除了早期设计探索目录 design/;.gitignore 补上 Playwright MCP 调研留下的本地快照/日志目录,避免误入库。


已知问题(本版遗留,下一轮修复)

  • 部分操作按钮误用了 emoji 字符(如 //•≡)顶替矢量图标
  • 主页偶发 read timeout
  • 详情页继续加载评论时报错:Fields [topic, op_post] are required for type with serial name 'app.nodeloc.data.model.NestedTopicDto', but they were missing at path: $