| 摘要 | JTech 论坛 的所有功能都构建在 Discourse 之上,并整合在一个插件中:版主工具、定向私信(Whispers)、REQ-PM、Dumbcourse、Telegram 桥接、销售帖列表、智能搜索、弹窗以及我们的整个主题。每个功能都有独立的开关。 | |
| 仓库 | GitHub - TripleU613/JtechTools: The plugin behind JTech Forums: moderator tools and whispers, REQ-PM, Dumbcourse for flip phones, a Telegram bridge, sale-thread listings, smart search, pop-ups and the JTech theme. Every module has its own switch. · GitHub | |
| 安装指南 | 如何在 Discourse 中安装插件 |
大家好,
其中部分内容此前已零散地出现在 Meta 论坛上。Dumbcourse 早在二月就有了自己的主题,@ars18 在四月发布了 Mini-mod,而在八月,我在 Dumbcourse 帖子中发布了一个长回复,列出了我们塞进同一个插件里的其他所有内容。那个回复埋在第 38 楼并不合适,所以这里是正式版本。这次有很多图片。
JTech 是一个技术论坛,主要涉及手机、翻盖机、滤镜和 ROM,我们的许多成员故意使用按键手机。这里的每一个工具都是因为我们自己的论坛需要它而存在的。
“为什么这是一个插件?”
merefield 在 Dumbcourse 帖子中问了这个问题,这是一个合理的问题,所以这里直接给出答案。
- 每个模块都有独立的开/关开关。 有些开箱即用(Dumbcourse、REQ-PM、版主工具),有些等待你启用(Mini-mod、智能搜索、Disteleplus、Another SMTP),还有一些“开启”的模块在你将它们指向特定分类或主题之前不会做任何事。安装后请浏览各个选项卡,关闭你不想要的功能。
jtech_enabled可以一次性停止所有功能,包括权限更改和后台任务。@satonotdead,你在 Mini-mod 主题中 问为什么关闭捆绑包后 Mini-mod 仍在运行。你说得对,它确实还在运行:注入核心的代码和计划任务只检查它们自己的开关。这个问题自 9 月 24 日起已修复。现在每个模块都会检查主开关。- 关闭功能绝不会泄露任何信息。 例如,关闭私信功能不会使现有的私信公开。
- 每个模块在内部都是独立维护的: 它在
sub_plugins/中有自己的文件,有自己的设置选项卡,有自己的文档页面。如果你只想要其中一个功能,可以 fork 它并将其分离出来,尽管去做。旧的独立 Mini-mod 仓库已归档,现在在这里维护。
内部包含什么
每个部分都是折叠的,所以打开任何看起来有趣的部分。除非另有说明,每张图片都是我们论坛的真实屏幕截图。私人内容(员工聊天、联系方式、版主笔记)已模糊处理。
Dumbcourse:翻盖手机上的整个论坛
整个论坛位于 /dumb,专为翻盖手机、KaiOS 以及无法运行正常网站的旧版 Android 浏览器设计。它像手机自带应用一样由方向键和数字键盘驱动,同时也支持触摸和鼠标操作。
- 阅读: 最新、新帖、未读、热门、热议、分类和标签。↑↓ 阅读(长帖子会先滚动,然后焦点才移动),←→ 切换选项卡,未读主题会打开到你第一个未读帖子,Back 键会带你回到确切的位置。
- 操作: 在帖子上按 OK 可以打开点赞、反应、回复、引用、书签、编辑、标记、复制链接、帖子中的每个链接、剧透及其图片。有一个全屏编辑器,支持提及、表情符号、上传、预览和可选的拼写检查(LanguageTool)。
- 按键:
*菜单,#搜索,0帮助,3回复,5点赞,2/8翻页。那些将软键命名得很奇怪的手机可以在偏好设置中教会它们。 - 无需在键盘上输入密码即可登录: 从你已登录的设备批准该手机,或使用电子邮件链接或代码。社交登录和双因素认证也可用。
- 旧浏览器会自动找到它。 无法运行完整论坛的浏览器会被重定向到对应的 Dumbcourse 页面,包括来自电子邮件链接的情况。搜索引擎不会被重定向。
- 它是纯 ES5,CI 检查确保它在 Chrome 30、Firefox 30 和 Android 4.4 上继续工作。
既然上次提到了名字:路径是一个设置(dumbcourse_base_path),所以 /simple 或 /lite 只需一次更改即可实现。
我们还有一个 Android 应用,为按键手机封装了 Dumbcourse,并带有推送通知。它为我们论坛配置,但如果你想为自己的论坛构建一个,代码就在那里。我们的成员一直在应用主题(450+ 回复)和最近的一次大更新中大力测试它。
版主工具:定向私信、私人笔记、员工警报
中间一行的私信和笔记来自我们的文档,使用了虚构的用户。其余是真实 UI。
向特定人员发送私信(Whispers)。 人们在 Meta 上要求这个功能已经好几年了(让帖子作者看到对私信帖子的回复,针对除员工以外群体的私信)。在主题内仅回复给少数用户、一个群体或持有特定徽章的所有人。只有员工、作者和这些人可以看到它。它不会出现在其他地方:不在搜索、活动、电子邮件、通知、链接预览、RSS、Dumbcourse 或 Telegram 桥接中。对私信的回复会自动保持对相同人员的私密性,且私信永远不会为其他人提升主题。员工可以将现有帖子转换为私信或恢复,并且每次更改都会记录在员工日志中。
私人笔记。 主题上的仅限员工查看的笔记,带有回复线程和“已查看”行。新笔记会显示在铃铛图标和用户菜单的盾牌选项卡中,但仅对实际可以看到该主题的员工可见。
员工警报。 当另一名员工删除帖子、批准或拒绝排队帖子,或向用户或标记添加笔记时,你会收到通知。每种类型都有独立的开关。
检查清单和主题工具。 新成员在首次发帖前勾选的检查清单(带有谁接受了哪个版本的日志)、针对特定用户或附加到一个主题的检查清单、主题下方的页脚消息、复制到底部的置顶帖子、单个主题的回复审批、每个分类的“发帖前”注意事项,以及用于向拥有特定徽章的所有人发送私信的徽章选择器。
所有功能的规则:版主不会看到所有内容。工具永远不会向版主显示核心不会向他们显示的私信或受限分类,且警报仅发送给可以打开其所指向内容的员工。
REQ-PM:联系方式代替私信
我们的论坛故意没有私信。那么两名成员如何联系?他们互相请求联系方式。(如果你想看看成员对此的反应,请查看[我们的启动主题](After all PM issues and complaints, we solve it today - Forum Information - JTech Forums)。)
- 在某个用户的卡片上按 REQ-PM,勾选你想要的(电话、WhatsApp、电子邮件、Telegram、Signal…),然后发送。没有文本框,所以它不会变成消息的后门。
- 对方勾选确切提供哪些信息给你。任何一方都可以随时静默收回他们分享的信息。拒绝也是静默的:请求者只会看到“等待”,然后是“过期”。
/reqpm保存你的请求、你的联系人(带有 Call / Text / Chat 按钮)、你自己的卡片以及你与谁分享了信息。- 隐私: 值在静态时加密(AES-256-GCM),仅返回给其所有者和所有者选择的人员。没有管理界面用于查看它们,且端点拒绝 API 密钥和冒充。
列表格式:保持整洁的销售帖
来自我们手机和电脑销售帖的真实列表。
我们有一个大的“手机和电脑出售”主题,过去它是“还有货吗?”和“私信我”的混乱集合。现在,在你选择的主题中,每个帖子都必须是该主题格式的列表,否则在保存前会被拒绝(并附带原因)。
- 成员获得一个 Create listing(创建列表)按钮,而不是回复。它打开一个表单,每个部分都有一个框(物品、数量、状况、规格、自提或邮寄),状况的选择项,以及用于图片和备注的常规编辑器。
- 列表显示为如上所述的卡片。卖家(或员工)可以将其标记为已售出,然后它会变淡并被划掉。
- 没有指向其他网站的链接。电话号码和电子邮件是可以的,买家使用卖家的 REQ-PM 按钮而不是回复。
- 员工豁免,旧帖子保持不变。
Disteleplus:与 Telegram 双向桥接的员工聊天
这个功能发展成了一个完整的东西。并非所有员工都有(或想要)WhatsApp,也不是每个人都有 Telegram。所以:Discourse 内部的一个单房间聊天,与 Telegram 群组双向镜像。
- 在 Discourse 中: 一个抽屉或全页,带有回复、编辑、反应、语音笔记、投票、文件、提及、搜索、链接预览和正在输入指示器。消息文本在数据库中加密。它不需要官方 Chat 插件。
- 在 Telegram 中: 你链接的人以他们的论坛账号发布,其他人显示他们的 Telegram 名称。可选地,你可以将新论坛帖子公告到群组,并将审核队列镜像到带有 Approve / Deny(批准/拒绝)按钮的 Reports 主题中,这些按钮在 Telegram 中直接对员工有效。
- 设置大约需要五分钟:用
@BotFather创建一个机器人,将其作为管理员添加到群组,粘贴令牌,按 Register webhook。
如果你想要的是将 Discourse Chat 频道桥接到 Telegram,请查看 Discourse-Telegram chat bridge 或 Discourse Chat Bridge (Telegram)。我们的是没有 Chat 的一个员工房间。
JTech 主题(随插件附带)
我们论坛自己的主题现在随插件附带。重建会安装它并保持更新,但它永远不会成为默认。你需要在 自定义 → 主题 下自行开启它。
它是黑白的,带有细边框、圆角和 Geist 字体。亮色和暗色是精确的相反,还有一个更柔和的 JTech Dim,供觉得 OLED 黑色太刺眼的人使用。
- 用主题卡片代替表格行,第一张图片在标题旁边,并有 Quick look(快速查看)功能,无需离开列表即可阅读主题。
- 一个在 ⌘K / Ctrl+K 上的命令菜单,跳转到页面、分类、主题和人员,每个命令旁边列出键盘快捷键。
- 首页横幅上有一个由点组成的行星,它会旋转,跟随你的鼠标,并为请求减少动态效果的设备保持静止。加上重新设计的页眉、侧边栏、个人资料、用户卡片、登录页面和关于页面。
- 它替换了大约十几个主题组件,我们过去运行这些组件,现在每个都是一个设置:阅读模式、指南的目录、打印/PDF 按钮、分享中的二维码、来自编辑器的语音消息、帖子徽章、Copy-as-Markdown 按钮、回复过滤器、从选中文本搜索、关闭主题的回复警告等。我们的论坛现在运行零主题组件。
- 我们在无障碍性上花了大量时间:所有三种调色板中灰色文本的 WCAG AA 对比度、每个控件上实际可见的焦点环、手机上更大的点击目标、Windows 高对比度模式、从右到左的语言,以及 320px 宽的手机。
较小的功能:Mini-mod、Dislike、智能搜索、弹窗、Another SMTP、翻译器
桌面弹窗(来自我们的文档,虚构用户)。
- Mini-mod。 为通过群组版主一个分类的人员提供的一些额外权限:创建和编辑分类、移入主题、标签。每个权限都有独立的开关,且它们都不会超出该人员已经可以看到的内容。它也可以移除权限,例如重新打开关闭的主题。@ars18 的原始主题有更多,这里是有此类请求。
- Dislike。 在你选择的分类中,点赞停止计数:没有通知,没有“收到的点赞”历史,且不在排行榜上计数。你也可以在那里完全隐藏按钮,或只允许某些群体点赞。
- 智能搜索。 当搜索几乎找不到任何东西时,它会悄悄使用同义词重试,所以 “k8s” 能找到 “kubernetes”,“js” 能找到 “javascript”。它使用 WordNet 加上一个小型技术术语列表,在进程内运行,无需 API 密钥,保留所有过滤器和权限,如果出错则回退到常规搜索。
- 桌面弹窗。 当通知进来时,角落里的一个小卡片。每个成员选择加入,它在勿扰模式下保持安静,并且支持键盘和屏幕阅读器。
- Another SMTP。 通过不同于
app.yml中设置的邮件服务器发送论坛电子邮件,从管理界面设置。 - 翻译器调整。 对于仍在使用旧版 discourse-translator 插件且使用 Google 的网站:将其请求指向你自己的代理。
安装
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/TripleU613/JtechTools.git jtech-tools
保持文件夹名称为 jtech-tools,小写。Discourse 从中构建样式表 URL。
然后重建并前往 Admin → Plugins → Jtech Tools。每个模块有一个选项卡,每个模块的文档页面说明首先设置什么。
我们在 Discourse 2026.8 及更高版本上跟踪 main,.discourse-compatibility 固定旧版本。CHANGELOG 说明了更改内容以及更新后值得检查的任何事项。
诚实地说
我们是一个论坛的管理团队,不是 Discourse 商店。相当一部分内容是在 AI 帮助下构建的。让我放心分享它的是护栏:仓库中的规则要求每个更改都必须遵循(权限优先,永远不超出核心允许的范围,不做核心已经做的事情),大约 1,700 个测试分布在 119 个 spec 文件中,在每个 PR 上运行,以及大部分内容每天在我们自己的论坛上运行。仍然会有 bug 和奇怪的边缘情况。发现时请告诉我们。
非常欢迎在 GitHub 上提交 Issues 和 PRs。安全问题请通过 SECURITY.md 私下提交。
感谢 @ars18 和 Shalom Karr,他们与我一起构建了其中很大一部分,感谢 JTech 上报告 bug 并尝试半成品的人,以及 Dumbcourse 和 Mini-mod 主题中提出使产品更好的问题的人。
享受吧 ![]()









