ryan
a8fcf6087a
chore(message-gateway): swagger and format
2026-08-16 12:27:03 +08:00
ryan
30acdb91e8
feat(message-gateway): add profile bot pairing card
2026-08-16 12:23:44 +08:00
ryan
124ce9bebb
feat(message-gateway): add admin channel cards and per-type forms
2026-08-16 12:22:28 +08:00
ryan
635c1760ad
feat(message-gateway): add user bind and unbind APIs
2026-08-16 12:19:32 +08:00
ryan
69d39d906f
feat(message-gateway): add admin channel CRUD APIs
2026-08-16 12:17:05 +08:00
ryan
09ec9d0af3
feat(message-gateway): run adapters on worker and handle pairing inbound
2026-08-16 12:14:17 +08:00
ryan
7ca6dbe272
feat(message-gateway): add QQ official C2C botgo adapter
...
Pin github.com/tencent-connect/botgo v0.2.1. Connect uses C2C intent
only via the official WebSocket session manager.
2026-08-16 12:10:15 +08:00
ryan
ef97ca5c7e
feat(message-gateway): add Telegram private-chat telebot adapter
2026-08-16 12:06:03 +08:00
ryan
cc86370e50
feat(message-gateway): emit message_gateway.inbound domain events
2026-08-16 12:04:55 +08:00
ryan
60afdf7c7b
feat(message-gateway): add channel, binding, and pairing repositories
2026-08-16 12:04:14 +08:00
ryan
9b1ef1cf7f
feat(message-gateway): add w_message_* models and goose migrations
2026-08-16 12:03:23 +08:00
ryan
8ea4c7e13e
feat(message-gateway): add channel types, registry, and pairing codes
2026-08-16 12:01:52 +08:00
ryan
a4db79e9bd
chore: ignore local git worktrees directory
2026-08-16 12:00:42 +08:00
ryan
8b1eb9ca0d
docs(message-gateway): add Wavelet message gateway implementation plan
2026-08-16 11:59:59 +08:00
ryan
e36db8a56c
docs(message-gateway): add Wavelet inbound channel gateway design spec
2026-08-16 11:55:57 +08:00
ryan
37d5a87c9b
chore: docs
2026-08-16 11:32:46 +08:00
ryan
e52592b16d
feat(log): 解耦用户访问日志存储,支持切换日志主库
...
用户访问日志可在 ClickHouse、PostgreSQL、SQLite 之间切换。
关闭 ClickHouse 时由主库承接写入与查询;切换任务会冻结写入、复制数据后翻转主库。
启动时校验日志主库与运行配置一致,定期清理按各库保留天数删除过期记录。
2026-08-16 11:17:55 +08:00
ryan
6a53619dd2
feat(framework): 回灌 OpenFlare 分层、安全与运行时改进
...
将平台域持久化收敛为 repository 唯一入口,model 去掉 IO。
邮件头写入前清除 CR/LF,防止 header 注入。
httppool 支持可配置 Transport;batchwriter 增加 MinBatchSize/Stats,flush 失败交回批次;任务 PermanentError 作为 SkipRetry 终态。
设置与推送页的确认改为 AlertDialog;axios 去尾斜杠并按 Gin 数组序列化查询参数。
升级共享 Go 依赖(Gin、Asynq、OTel、GORM、Redis 等)。
2026-08-16 11:07:20 +08:00
ryan
b9b42e3174
ci: make canary
2026-08-16 10:13:39 +08:00
ryan
20830d31bd
chore: guideline
2026-08-16 10:01:56 +08:00
ryan
284eec54f7
chore: guideline
2026-08-12 12:40:06 +08:00
ryan
a3ad0d2c97
chore: rename .agent to .agents and update skill path references
2026-08-12 12:39:15 +08:00
ryan
92322c7a22
feat(push): log upstream webhook response in task history
...
Pusher.Send now returns the upstream response body alongside the error,
so the push task handler can print what the webhook actually replied
(custom channel e.g. {"errcode":0,"errmsg":"ok"} or a rejection
like {"errcode":93000,...}) into the task log on both success and
failure. Other pushers (lark/telegram/email) return an empty string,
keeping their behavior unchanged.
fix(push): surface webhook business errors in custom channel audit
CustomPusher.Send only checked the HTTP status code. WeChat Work /
DingTalk webhooks return HTTP 200 with a non-zero errcode in the body
even when the message is rejected (e.g. template_card requires
card_action.url when type=1), so rejected pushes were recorded as
'success' in the notification history. Parse the response body and
return an error when errcode is non-zero, matching the Lark pusher.
2026-08-12 12:32:23 +08:00
ryan
f499645cdc
chore: guideline
2026-08-12 12:02:14 +08:00
ryan
776c6b397c
ci: canary
2026-08-03 21:54:08 +08:00
ryan
db17965b1a
chore: docker-compose
2026-08-03 21:48:34 +08:00
ryan
ae35b4e733
ci: docker hub
2026-08-03 21:45:50 +08:00
ryan
c6d22549ce
ci: canary
2026-08-03 21:32:42 +08:00
ryan
9f15f42b47
fix(frontend): keep browser API on same-origin rewrites in dev
...
Document that NEXT_PUBLIC_WAVELET_BACKEND_URL must stay unset for local
next dev so axios hits /api/* and Next rewrites proxy to the backend.
2026-08-03 21:25:22 +08:00
ryan
a4588b05e0
fix(frontend): suppress body hydration warning from extensions
...
Browser extensions can inject classes like vc-init onto body before
React hydrates; ignore attribute mismatches on body.
2026-07-24 16:30:49 +08:00
ryan
1625cfb2fb
feat(frontend): add next-intl bilingual i18n for core paths
...
Wire next-intl without locale routes, add zh-CN/en catalogs, language
switcher, and migrate layout/auth/settings UI copy. Document i18n rules
in AGENTS.md and keep static export builds working.
2026-07-24 16:25:41 +08:00
ryan
9c1369186f
docs(i18n): add frontend bilingual i18n design spec
...
Capture the approved next-intl non-routing approach for zh-CN/en,
locale resolution, static-export constraints, and phase-1 core-path scope.
2026-07-24 16:08:45 +08:00
ryan
fbbb75095f
refactor(structure): group platform, infra, and shared packages
...
Move process wiring, technical adapters, and cross-cutting contracts out of flat internal/ packages so new code has a clear home without changing business layout.
2026-07-24 15:28:39 +08:00
ryan
290427d5fa
chore: remove
2026-07-24 14:29:07 +08:00
ryan
72dbfac3fc
chore: update pg version
2026-07-24 11:18:01 +08:00
ryan
018f237384
perf: AGENTS.md
2026-07-22 23:05:23 +08:00
ryan
ef28cdc3ad
perf: makefile
2026-07-22 22:52:31 +08:00
ryan
b1f2241d0a
perf: skill
2026-07-22 22:31:18 +08:00
ryan
fae83ab0fa
perf: biome
2026-07-22 22:26:02 +08:00
ryan
b498117f32
perf(skill): clean
2026-07-22 22:19:24 +08:00
ryan
ef4e9c9edc
feat(frontend): biome
2026-07-22 22:19:07 +08:00
ryan
5fd056f99f
chore(release): bump version to v1.4.1
...
### 🛠 修复
- 修复了 Redis 维护通知(maintenance notifications)在启动阶段默认开启协商可能影响启动流程的问题,新增 `maint_notifications` 启动开关并将其默认值调整为禁用,同时统一应用到平台 Redis 与 Asynq 任务客户端。
- 修复了 PostgreSQL SQL 日志级别配置未按预期生效的问题,将常规 SQL 语句输出统一收敛至 debug 级别,避免在生产日志中产生冗余输出。
- 修复了 CI 镜像构建流水线中缺少 IMAGE 环境变量、导致后续步骤无法正确引用镜像地址的问题。
- 修复了前端 prettier 配置缺失的问题。
### ⚡ ️ 优化与改进
- 在 API、Worker、Scheduler 等进程启动并完成监听器绑定后,统一打印服务 Banner 信息,便于快速识别各进程的运行状态、监听端口与数据库迁移进度。
- 管理员设置页面在浏览器刷新后自动保持当前选中的标签页,通过 URL query 参数持久化并校验非法取值,提升后台操作的连续性。
### 💄 其他/体验
- 新增前端 prettier 配置文件与忽略规则,统一代码格式化规范。
v1.4.1
2026-07-13 16:05:55 +08:00
ryan
08fac67f2a
feat(startup): print service banner after listener ready
2026-07-13 15:59:29 +08:00
ryan
9cac25696a
fix(redis): add maintenance notification startup switch
...
Default Redis maintenance notification negotiation to disabled and apply the startup-only setting to both platform and Asynq clients.
2026-07-13 15:48:31 +08:00
ryan
a938a5e67f
fix(db): log SQL statements at debug level
2026-07-13 15:41:04 +08:00
ryan
e0eb4e5975
prettier
2026-07-13 15:17:45 +08:00
ryan
08e61ce833
fix(frontend): prettier config
2026-07-13 15:14:47 +08:00
ryan
c293a255d0
feat(frontend): persist selected tab on admin settings page refresh
...
Store the selected tab of the admin settings page in the URL query string under the tab parameter. Defend against invalid values by validating it against the list of known tabs.
2026-06-30 20:52:24 +08:00
ryan
1855b48028
fix ci
2026-06-28 17:31:57 +08:00
ryan
2310e1d12a
chore(release): bump version to v1.4.0
...
### 🛠 修复
- 修复了前端人机验证(Captcha)中请求和响应信封格式不匹配的问题。
- 修复了由于自定义 CSS 变量命名冲突导致用户删除确认按钮在特定主题模式下变黑的问题。
- 修复了由于注册 `reset-passwd` 命令行后触发 Cobra 严格子命令校验、导致原有以参数形式启动的 `all`、`api`、`worker`、`scheduler` 等模式命令失效的 Bug。
### ⚡ ️ 优化与改进
- 重构了 OAuth 缓存,将其替换为系统标准 RAM 内存缓存并引入了多节点之间的 Pub/Sub 订阅发布缓存同步机制,增强高频鉴权的稳定性。
- 后端新增 `reset-passwd` 命令行工具,支持管理员在后台快速重置指定用户的密码并使该用户的 Token 缓存立即失效。
- 后台用户管理支持在详情中直接编辑个人资料和重置密码,并在列表页新增“邮箱”字段与支持邮箱前缀 LIKE 模糊条件搜索。
- 前端引入本地自托管的 Inter 字体,搭配系统原生“苹方”(PingFang SC)与微软雅黑,极大提升了西文、数字及中文字符在不同操作系统下的显示与排版效果。
- 优化了 OpenTelemetry 链路追踪配置,使用 Schemaless 规范避免 semconv 产生 Schema 版本冲突。
### 💄 其他/体验
- 清理了系统设置及个人中心等页面中所有硬编码的靛蓝(indigo)样式色彩,统一改用标准的 Primary 主题配色,使其完美支持多主题与亮暗色模式切换。
- 移除了用户编辑弹窗和徽章(Badge)上不合规的硬编码前背景色,确保所有基础组件的配色由主题系统统一驱动。
- 优化了前端 UI,微调了侧边栏激活项的字体颜色,并修复了危险动作(Destructive)按钮在特定模式下的色彩对比度。
- 优化了 CI 流程,提高构建流水线的执行效率。
2026-06-28 11:40:59 +08:00