DrSmoothl 30bcd97a3f feat(notifications): P2 manager — debounce state machine + render/POST + history
Global singleton observing every account's online/offline edge:
- Pure per-UIN debounce state machine (debounce.ts): an offline surviving
  debounceSeconds fires "offline"; recovery fires the paired "online"; a
  self-heal within the window fires nothing; a cold online fires nothing.
- NotificationManager (manager.ts): renders each opted-in + enabled channel's
  body template and POSTs it (single attempt + timeout, JSON), recording the
  outcome in a bounded in-memory history (lost on restart). Side effects
  (config/channelIds/post/clock) are injected for testability.
- BridgeManager: single-callback setters → additive listeners so OneBotManager
  and NotificationManager observe independently; close edge now carries the
  bridge (read nickname before dispose); fire-all with per-listener try/catch.
- Wired into the composition root, bound after OneBotManager.

Tests: debounce machine (pure, all misfire sequences) + manager (selectChannels,
dispatch, history cap, fake-timer self-heal/pairing). 23 green, typecheck clean.
Adversarial review: 0 blockers / 0 should-fix (2 NITs applied).
2026-06-16 19:20:55 +08:00
2026-05-03 14:02:29 +08:00
2026-06-15 13:57:38 +08:00
2026-05-30 16:06:29 +08:00

SnowLuma

Next Remote Protocol Framework.

Release Build NPM Stars

Releases · Issues · QQ 群 · Telegram


SnowLuma 是一个基于 TypeScript 的协议转换框架,旨在为 QQ 客户端提供 OneBot v11 标准接口,支持 WebSocket/HTTP 适配、多账号并行及 WebUI 管理。

特性

  • OneBot v11 兼容:支持文本、音视频、Markdown、JSON 等消息格式。
  • 高性能架构:TypeScript 全栈,基于 pnpm monorepo 管理,核心逻辑分离。
  • 现代化管理:内置 WebUI 面板,支持实时日志、密码热更、多账号管理。
  • 多适配器支持:WebSocket (Server/Client)、HTTP (Server/Post)。
  • 数据持久化:使用 SQLite 存储好友、群组等关系数据。

快速开始

  1. 从 Releases 下载最新发布包并解压。
  2. 运行 ./launcher.bat (Windows) 或 ./launcher.sh (Linux)。
  3. 访问 http://localhost:5099 (初始账号 admin,密码见控制台输出)。

鸣谢

参考了 LagrangeV2 的协议定义与 NapCatQQ 的实现思路。


S
Description
No description provided
Readme
64 MiB
Languages
TypeScript 98.9%
CSS 0.5%
JavaScript 0.5%