公告
公告功能让管理员向同一台 Luker 实例上的所有本地账号广播一条 Markdown 消息。典型场景:
- 告知其他账号「升级后某个 UI 按钮换位置/改名了」。
- 通知用户计划内的停机或维护。
- 事件后说明(「我刚从备份恢复了 staging CardApp,你们的书签可能失效」)。
如果你独自使用 Luker、没有其他本地账号,这个功能对你没意义。
前提
公告依赖多用户账户系统。在 config.yaml 里启用:
enableUserAccounts: true没开多用户模式就不存在「其他账号」可以广播。
发布入口受管理员权限保护——只有 admin 角色账号可以创建、编辑、删除公告。所有已登录账号都能看到接收端 UI(弹窗 / 横幅 / 收件箱)。
发布公告
打开管理面板,切到公告标签页,点击新建公告。
表单有四个字段:
- 级别:
信息、警告、严重三选一。级别决定公告以多激进的方式触达用户(见下文 级别)。 - 标题:短标题(最多 200 字符)。会显示在弹窗标题、横幅、收件箱列表里。
- 正文(Markdown):完整正文(最多 10 000 字符),支持加粗、斜体、列表、链接、代码块、标题等 Markdown 语法。
- 预览:正文的实时渲染——用户看到的就是这个样子。
点击创建发布。公告立即对所有账号可见。
级别
不同级别对应不同的接收端路由:
| 级别 | 用户有未读时 |
|---|---|
| 严重 | 登录时弹出遮罩弹窗,必须点全部标为已读才能继续。多条未读严重公告合并到同一个弹窗,只打扰用户一次。 |
| 警告 | 聊天区上方出现横幅。用户点 × 关闭后,下一条未读警告自动顶上来。 |
| 信息 | 没有主动弹出。只能通过收件箱看到。 |
所有级别——包括 信息——都计入公告按钮上的未读角标。
诚实选级别。日常通知大多用 信息 或 警告;只在用户继续使用前必须看到时(安全、数据丢失、破坏性变更)才用 严重。
用户看到什么
收件箱
欢迎页快捷按钮一栏(文档 / GitHub / Discord / 临时聊天 旁)有个公告按钮,带红色角标显示未读数(超过 9 显示 9+)。点击打开收件箱,按最新在前列出所有仍在生效的公告。点击一行就地展开 Markdown 正文,并把这条标为已读。
按钮只出现在欢迎页,不在打开的聊天里。要查看收件箱,关闭当前聊天回到欢迎页(聊天上方的 X)。
登录时的严重弹窗
用户打开 Luker 时若有未读 严重 公告,会弹出一个弹窗列出所有未读的严重公告。点全部标为已读关闭弹窗并一次性把所有列出的公告标为已读。除非再发布新的 严重 公告,用户下次加载时不会再被打扰。
警告横幅
未读 警告 公告在聊天区上方以横幅显示。点 × 关闭当前警告(标为已读),下一条未读警告立即顶上来。
编辑与删除
在管理面板的公告标签页:
- 每行的铅笔按钮打开编辑表单(自动填入现有内容)。提交保存新内容。编辑不会重置用户的已读状态——改个错别字不会让所有看过原版的用户再被弹一次窗。
- 垃圾桶按钮硬删除公告。没有撤销、没有归档——一旦删除立即从所有账号的收件箱消失。会有确认对话框防误点。
已读状态
每个账号自己记录读过哪些公告;管理员看不到「谁读过哪条」这种报表。已读状态在登出和服务器重启后仍然保留。
如果一个账号从不打开收件箱、信息 级别公告生效期间也从不登录,这条公告会一直保持未读(静静躺在收件箱)。这是设计如此——信息 是被动查看的。
字段限制
- 标题:1–200 字符(校验前会去掉首尾空白)。
- 正文:1–10 000 字符(校验前会去掉首尾空白;Markdown 源码字符全部计入限制)。
- 标题和正文以单一语言存储——接收端不翻译公告内容。UI 框架文字(按钮名、弹窗标题)跟随每个账号自己选的界面语言。