qing
|
53c742c26e
|
refactor: smtp.py.remote 更名为 smtp_v2.py,恢复 .py 后缀以便工具链识别
_run.sh 同步指向新文件名;start() 新增启动时凭证明文打印(仅 stdout 不落日志库),用于排查 .env 加载问题,调试完成后需移除。
|
2026-07-29 18:36:21 +08:00 |
|
qing
|
11993e178b
|
smtp dev
|
2026-07-29 18:22:38 +08:00 |
|
qing
|
3bc4f9720f
|
fix(dnfs): 移动请求期间禁用按钮防止重复提交
后端 update_note 走 AI 审核耗时较长,confirmMove 期间禁用移动条
与表单按钮,finally 统一恢复
|
2026-07-29 14:37:27 +08:00 |
|
qing
|
751866d9c1
|
refix
|
2026-07-29 11:52:46 +08:00 |
|
qing
|
3f9bffb9ea
|
feat(dnfs): 节点移动功能
- dnfs.js: 卡片新增移动按钮,startMove 暂存节点,底部悬浮移动条
提供移动到当前层/取消;confirmMove 经 update_note 改 pid 完成迁移;
拦截移动到自身与已在当前层的情况
- dnfs.html: 新增 #movebar 容器
- theme.css: act-move 描边按钮与 movebar 底部悬浮条样式
|
2026-07-29 11:40:35 +08:00 |
|
qing
|
ace98caff6
|
feat: 卡片编辑/删除按钮 + dnfs 管理员豁免
- dnfs.js: 卡片底部新增编辑/删除按钮,复用下方表单支持编辑模式
(startEdit/cancelEdit/updateNode/deleteChild),stopPropagation 防误触
- theme.css: 新增 card-actions/act-btn 按钮样式,编辑橙色/删除红色软底
- dnfs.py: ADMIN_USERS 统一管理豁免名单(admin, admin@qsont.me),
update_note 新增管理员豁免,delete_note 同步改用名单
- dnfs/README.md: 同步更新所有权豁免说明
|
2026-07-29 11:22:30 +08:00 |
|
qing
|
a0f6a14b5d
|
style(dnfs): 笔记卡片尺寸随内容自适应
- recommend-list 改为 flex 纵向布局,gap 统一间距,隐藏 JS 遗留 <br> 分隔符
- 卡片宽度 fit-content 包裹内容,min-width 240px 保底、max-width 100% 封顶
- 内容图片限宽防撑破自适应布局
|
2026-07-29 11:05:20 +08:00 |
|
qing
|
2fc12e7b00
|
feat(dnfs): 卡片增加观看/点赞/分享互动统计图标
- dnfs.js: 新增眼睛/爱心/转发 SVG 图标常量与 makeStatItem 构造函数,
统计行挂载在 owner 胶囊下方,计数缺省显示 0(后端暂无该字段)
- theme.css: 新增 card-stats/stat-item/stat-num 样式
|
2026-07-29 10:59:40 +08:00 |
|
qing
|
dae81ba4a1
|
style(dnfs): 美化卡片发帖用户显示为头像+昵称胶囊
- dnfs.js: owner 纯文本改为首字符圆形头像 + 昵称,空值兜底匿名
- theme.css: 新增 Owner Chip 样式段,复用主题变量自动适配深色模式
|
2026-07-29 10:53:29 +08:00 |
|
qing
|
a905dac00d
|
display note ownerx
|
2026-07-29 10:47:20 +08:00 |
|
qing
|
b8ec752a12
|
docs(pymsg): 添加中文 README 文档,涵盖协议、API 参考和实际用例
|
2026-07-29 09:39:49 +08:00 |
|
qing
|
b86b089634
|
fix(BotOps): 修正 aibox 协议语义错配导致的输出丢失
- 服务端 chunk 为增量片段(chunk_buffer 发送后即清零),原 _delta
按累计全文假设计算,相邻 chunk 前缀撞字时静默丢字符;改为直接拼接
- complete 携带完整全文,finish_ai 改为全文对齐(不一致时整体替换,
可自愈丢帧/乱序),修复结尾全文重复 append
- 新增 line/reasoning/task_added/dialogue_reset/pong 消息路由:
line(🔧 工具调用提示、工具输出)不再落入兜底污染聊天区,改投任务侧栏
- 发送失败时移除预建的空 AI 消息框并提示,避免空等回复
- 断线提示补充重连窗口期服务端输出丢失说明
- 同步修正 ws_client/README 中的协议描述
|
2026-07-29 09:32:30 +08:00 |
|
qing
|
f9cf408c82
|
static: 切换 fsys.py 到 Waitress WSGI 服务器
- HTTP 场景使用 waitress.serve(threads=8) 替代 Flask 开发服务器
- SSL 场景回退 Flask 内置服务器(Waitress 不支持 TLS)
- requirements.txt 新增 waitress 依赖
|
2026-07-29 09:10:09 +08:00 |
|
qing
|
f0cdaacd85
|
feat(gateway): 运行日志接入 db 集中式日志(新增 C++ 版 LogC,pymsg 推送 Logs 表)
- 新增 gateway/inc/LogC.hpp:异步批量日志客户端(内存队列+后台线程,50条/2秒 flush),
对齐 Python 版 log_client.py,fail-safe 设计(db 不可用静默丢弃)
- main.cpp 全部日志输出迁移:wrapperHttp 双异常分支(>=500 ERROR / 其余 WARNING)、
启动/关闭、登录成功、注册成功、验证码邮件发送成功、代理白名单拒绝
- Makefile 增加 -pthread(LogC 使用 std::thread)
|
2026-07-29 08:34:14 +08:00 |
|
qing
|
6a0551ab34
|
fix(gateway): 限流错误码统一429、登录用户不存在改401并拉平时序、pymsg超时常量化(v0.5.2)
- 三处限流错误码统一为 429(login 400→429 并修 attampts 拼写;register/send_code 403→429)
- 登录用户不存在不再兜底 500:空结果统一走 401,dummy PBKDF2 校验拉平时序防用户枚举
- db 查询失败消息误名修正:Login (Update Step) Failed → (Query Step)
- 超时常量化:DbC::DEFAULT_TIMEOUT=5.0;_TIMEOUT_CAPTCHA/_SMTP_VERIFY=5.0、_SMTP_SEND=20.0
- 文档:gateway/README 数据库节 email→username 重写、建表归 db/create_sqlite3.sql;根 README 版本号与自动建表描述同步
|
2026-07-29 00:21:13 +08:00 |
|
qing
|
c2e9cce6a7
|
fix(BotOps): _inst.sh 补 --include-package=websockets/textual,修复打包后找不到 websockets.asyncio
|
2026-07-28 23:38:16 +08:00 |
|
qing
|
b07dbf2da5
|
feat(gateway): 登录成功后更新 Users.last_login(v0.5.1)
启用 handleLogin 中被注释的 last_login 更新:经 DbC::call_msg 以
"$now" 哨兵(db 日期适配层转为服务端 UTC 时间)写入,失败按惯例
THROW_EX_CUSTOM 抛 500 由 wrapper 统一处理。README 版本节同步
(原仍停留在 0.3.0-security)。
|
2026-07-28 23:31:20 +08:00 |
|
qing
|
19d5b65625
|
fix(db): 新增日期列类型适配层,修复无法经 db 处理 DATETIME 列的问题
JSON 无日期类型,而 SQLite DATETIME 只接受 Python datetime 对象,
导致各服务对日期列的写入与 where 比较全部失败。_coerce_value 按反射
列类型把 ISO 8601 字符串转为 datetime/date/time(带时区偏移统一转
UTC),并支持 "$now" 哨兵取服务端当前时间;响应中日期时间改为一律
序列化为 ISO 8601(T 分隔)。黑盒测试补 3 个日期列场景。
|
2026-07-28 23:16:17 +08:00 |
|
qing
|
12e736d264
|
chore: BotOps .gitignore 忽略 nuitka 编译产物
|
2026-07-28 22:54:06 +08:00 |
|
qing
|
8be62683dc
|
chore: BotOps 添加 _inst.sh 单文件编译脚本(nuitka --onefile)
|
2026-07-28 22:53:35 +08:00 |
|
qing
|
c93023bd5d
|
fix(BotOps): 聊天区改用 anchor 锚定吸底,修复流式时滚动条不跟随
|
2026-07-28 22:48:45 +08:00 |
|
qing
|
422ca798da
|
chore: BotOps 添加 _set.sh/_run.sh 启动脚本(与 aibox 同款)
|
2026-07-28 22:44:24 +08:00 |
|
qing
|
c064caa3ec
|
chore: BotOps 添加 .gitignore 并移除误提交的 __pycache__
|
2026-07-28 22:41:34 +08:00 |
|
qing
|
f91d4166d6
|
feat: 新增 BotOps 子模块——aibox 的 Textual TUI 前端(流式 Markdown 渲染+自动重连+任务侧栏)
|
2026-07-28 22:41:15 +08:00 |
|
qing
|
afb55494e5
|
interpreter project
|
2026-07-28 22:25:01 +08:00 |
|
qing
|
6692c9c4ee
|
refactor(db): 清理遗留死代码并对齐文档与测试
删除 dbv2 从未挂载的 log_module.py(Flask /log/* 遗留)与纯 TCP 服务
用不到的 security_middleware.py 副本;db/README.md 按 pymsg 实现重写,
requirements 去掉 flask/waitress;黑盒测试对 pymsg 服务改用 TCP 探测,
修复 check_service HTTP 探测导致的 db 测试整体假 skip。
|
2026-07-28 22:21:36 +08:00 |
|
qing
|
dabd892601
|
fix(aibox/client): 放弃 rich.Live 改为 complete 时一次性静态渲染,修复内容一闪而过
|
2026-07-28 22:01:21 +08:00 |
|
qing
|
2982bc30a4
|
feat(aibox/client): AI 回复流式渲染 Markdown(rich.Live,无 rich 时降级纯文本)
|
2026-07-28 21:51:53 +08:00 |
|
qing
|
aaeac343d3
|
fix(aibox/client): 修4处——stdin单线程防泄漏、LRU去重上限、自动重连、弃用get_event_loop
|
2026-07-28 21:44:23 +08:00 |
|
qing
|
d5a67ce77e
|
fix: smtp .env 兼容 export 前缀并在启动时报告缺失的配置项名称
|
2026-07-28 17:42:37 +08:00 |
|
qing
|
6330e04474
|
fix: smtp .env 手动解析替代 dotenv,同时支持 KEY=VALUE 和 KEY VALUE 格式
|
2026-07-28 17:34:55 +08:00 |
|
qing
|
df518d1adb
|
feat: 注册强制邮箱验证码(gateway v0.5.0 新增 /register/send_code,pymsg 调 smtp)
|
2026-07-28 17:29:52 +08:00 |
|
qing
|
9078c4d051
|
refactor: smtp 改造为 pymsg TCP 服务并修复 NameError/finally/KeyError 等已知 bug
|
2026-07-28 17:12:45 +08:00 |
|
qing
|
78ad3e6d57
|
移植bot4cj
|
2026-07-28 12:44:07 +08:00 |
|
qing
|
7803843155
|
^-^
|
2026-07-28 12:37:39 +08:00 |
|
qing
|
ec755a30f2
|
3d打印件
|
2026-07-28 12:34:02 +08:00 |
|
qing
|
483c5f227f
|
fix: 发布节点期间同步禁用重置/删除按钮,防止误触
|
2026-07-28 12:17:27 +08:00 |
|
qing
|
bfd2d334fe
|
fix: 前端按钮防重复点击,避免重复请求(dnfs提交/删除、view刷新、验证码刷新)
|
2026-07-28 12:10:48 +08:00 |
|
qing
|
50f209e84a
|
fix: X-Frame-Options/frame-ancestors 改为同源以修复条例弹窗空白
|
2026-07-28 11:53:35 +08:00 |
|
qing
|
680d28b616
|
ui: 用户使用条例改为弹窗显示并移除 LICENSE.html 返回按钮
|
2026-07-28 11:46:25 +08:00 |
|
qing
|
4d16bc32fc
|
security: CORS 白名单移除 localhost 并改为 config.ini 驱动
扫描发现生产 CORS 含 http://localhost:9200(硬编码于 fsys.py),且 config.ini 的 cors 段(通配符 *)从未被读取。白名单改为从 config.ini 读取,生产值仅 qsont.me/yhdet.top,localhost 仅限本地开发显式配置。
|
2026-07-28 11:40:19 +08:00 |
|
qing
|
7726857d6b
|
feat: 新增用户使用条例独立页面并在登录页引用
新增 LICENSE.html(六章条例,开源社区定位,复用主题样式);登录页勾选框文案改为链接新标签页打开,不影响勾选交互与表单状态。
|
2026-07-28 10:36:06 +08:00 |
|
qing
|
3ef7d1b780
|
fix: 修复验证码图片被输入框挤换行,改为右侧同一行
theme.css 全局设定文本输入框 display:block;width:100%,导致验证码图片无法与之同行;改用 flex 容器包裹(输入框 flex:1、图片 flex:none 居右),布局与主题风格一致。
|
2026-07-28 10:29:22 +08:00 |
|
qing
|
62804d242c
|
ui: 验证码改为 4 位,登录页图片移到输入框左侧
captcha 服务 CAPTCHA_LEN 调整为 4 并适配字符间距;登录页验证码图片与输入框换序,同一行展示更紧凑。
|
2026-07-28 10:24:48 +08:00 |
|
qing
|
a5e581ef24
|
fix: CSP img-src 放行 blob:,修复验证码图片被拦截
登录页验证码用 URL.createObjectURL 生成的 blob: URL 显示,被 img-src 'self' data: 拦截导致图片无法加载;五处 CSP 定义(waf 边缘 + 四个 Flask 中间件副本)同步放宽。
|
2026-07-28 10:19:47 +08:00 |
|
qing
|
6fcb70d235
|
feat: 登录页接入图形验证码,登录接口强制校验
登录页展示 captcha 图形码(点击刷新),登录请求携带 captcha_token/captcha_answer;gateway 的 /login 启用验证码校验,经 pymsg 调 captcha verify 路由(fail-closed),补齐防爆破短板。
|
2026-07-28 10:15:01 +08:00 |
|
qing
|
323dd3061b
|
rewrite captcha
|
2026-07-28 10:07:32 +08:00 |
|
qing
|
44c1e5ef72
|
feat: captcha 改造为 pymsg/TCP 服务,gateway 新增图形码代理路由
captcha 参照 dbv2 统一为 pymsg 协议(image/verify/health 路由),与主干 RPC 栈对齐;gateway 新增 GET /captcha/image 做 HTTP→pymsg 转换,解码 base64 PNG 并以原契约(image/png + X-Captcha-Token)返回浏览器。
|
2026-07-28 09:54:08 +08:00 |
|
qing
|
d06546f6bf
|
测试模块初步完成
|
2026-07-28 09:39:37 +08:00 |
|
qing
|
4ad3fbfca8
|
fix: 修复公开页面因旧 Cookie 验签失败误返回 401
浏览器会自动给每个请求携带 q4_token,gateway 重启轮换内存 RSA 密钥后旧凭证验签失败,导致无需登录的公开页面也 401。代理层改为仅对需鉴权目标校验凭证,公开目标跳过;前端遇 401 自动跳转登录页自愈。
|
2026-07-28 09:31:10 +08:00 |
|
qing
|
b2ddd9e7e3
|
security: waf 边缘统一注入安全响应头
外部扫描发现站点缺少安全响应头。在 waf 反代/403/502 三个出站路径统一注入 XFO/nosniff/Referrer-Policy/Permissions-Policy/HSTS/CSP,下游同名头一律覆盖避免重复;static 补上漏调用的 apply_security_headers 做纵深防御。
|
2026-07-28 09:19:43 +08:00 |
|
qing
|
e89578fa82
|
security: Token 改为 HttpOnly Cookie 下发,消除 XSS 窃取面
登录时网关签发 HttpOnly+Secure+SameSite=Lax 的 q4_token Cookie,前端不再经手 Token;网关代理时支持从 Cookie 验签并向下游注入 Authorization(dnfs 零改动),新增 /logout 清除 Cookie,static 代理路由兼容 Cookie 转 Bearer。
|
2026-07-28 09:07:12 +08:00 |
|
qing
|
65cfaf97a1
|
docs: 按代码实况修正根 README 与实现不符的描述
db 实为 pymsg/TCP(非 HTTP),ai_review 实为 fail-closed,captcha 路由与实现方式、static 的 dnfs 代理与账号旁路、gateway 用户存储与 core 守护机制等均按代码核实结果更正。
|
2026-07-28 08:33:30 +08:00 |
|
qing
|
6b77cdcf3a
|
feat: 新增俄罗斯方块小游戏(games/game7.html)
纯 HTML 单文件实现,Canvas 渲染,含 7-bag 发牌、暂存、落点虚影、硬降/软降、等级加速与触屏按键,最高分本地持久化。
|
2026-07-28 01:11:58 +08:00 |
|
qing
|
ed3108f55c
|
docs: 补全根 README 中遗漏的 captcha/smtp/aibox 服务
- 各服务说明表新增 captcha/smtp/aibox 三行
- 端口一览新增 smtp(:8008)/aibox(:8765)
- 运行清单新增 smtp/aibox 启动项
- 日志链路与 init.txt 提及补全 smtp/aibox
- 新增 captcha/smtp/aibox 三个子章节(对照 init.txt 与各服务源码)
|
2026-07-27 23:00:08 +08:00 |
|
qing
|
ee44e1bef1
|
docs & ui: 完善 captcha/aibox 文档,登录注册改为邮箱制
- captcha/README.md: 补充字段级接口文档与错误码表
- aibox/README.md: 对照 main.py 源码核对修正(入口/模型/工具/配置)
- static/public/login.html & register.html: 用户名改为邮箱
- static/public/js/register.js: 合并注册页双邮箱框为单一邮箱字段
|
2026-07-27 22:51:57 +08:00 |
|
qing
|
f601efdd3f
|
refix
|
2026-07-27 22:27:18 +08:00 |
|
qing
|
c58cafcdcf
|
fixbug: 机器人在定时任务中创建重复的定时任务
|
2026-07-27 22:11:02 +08:00 |
|
qing
|
3501168f45
|
inst aibo
|
2026-07-27 22:03:50 +08:00 |
|
qing
|
13f3eb8f88
|
DEV
|
2026-07-27 21:43:56 +08:00 |
|
qing
|
1b60ab0a2e
|
增加运维机器人单元
|
2026-07-27 21:39:53 +08:00 |
|
qing
|
8c74d93a76
|
security fixup
|
2026-07-27 17:28:15 +08:00 |
|
qing
|
40eb522e5b
|
安全策略
|
2026-07-27 15:53:09 +08:00 |
|
qing
|
a67f190634
|
“返回上一层”按钮样式
|
2026-07-27 15:41:14 +08:00 |
|
qing
|
9b4a0a6a16
|
折叠minimap
|
2026-07-27 14:51:41 +08:00 |
|
qing
|
097fb7ecbb
|
Merge branch 'dev_qing' of https://git.cancerai.top/qing/micro_servers into dev_qing
|
2026-07-27 14:47:31 +08:00 |
|
qing
|
167ef235e6
|
fixbug 100% cpu
|
2026-07-27 14:47:12 +08:00 |
|
qing
|
f056da1dfc
|
update minimap
|
2026-07-27 12:36:59 +08:00 |
|
qing
|
5edfad7842
|
refix
|
2026-07-27 12:33:27 +08:00 |
|
qing
|
39bf2684a4
|
update css for dnfs.minimap
|
2026-07-27 12:29:51 +08:00 |
|
qing
|
614368eb93
|
fontend update without css
|
2026-07-27 12:24:06 +08:00 |
|
qing
|
ce9337fe0d
|
Merge branch 'dev_qing' of https://git.cancerai.top/qing/micro_servers into dev_qing
|
2026-07-27 10:23:21 +08:00 |
|
qing
|
18ac572442
|
更新dbv2、删除旧的db1、为static添加log
|
2026-07-27 10:22:16 +08:00 |
|
qing
|
58e9391503
|
refix
|
2026-07-27 09:28:27 +08:00 |
|
qing
|
b790e18024
|
Merge branch 'dev_qing' of https://git.cancerai.top/qing/micro_servers into dev_qing
|
2026-07-27 09:21:20 +08:00 |
|
qing
|
08021015b1
|
更新msg客户端
|
2026-07-27 09:21:06 +08:00 |
|
qing
|
179afb2674
|
Merge branch 'dev_qing' of https://git.cancerai.top/qing/micro_servers into dev_qing
|
2026-07-26 21:53:46 +08:00 |
|
qing
|
6efb792133
|
C++版本的MsgClient
|
2026-07-26 21:48:14 +08:00 |
|
qing
|
3d2278f6b7
|
^-^ rename
|
2026-07-26 21:27:40 +08:00 |
|
qing
|
4fe0689cf6
|
修复db客户端无法推日志的问题
|
2026-07-26 21:26:17 +08:00 |
|
qing
|
fb85203c9b
|
Merge branch 'dev_qing' of https://git.cancerai.top/qing/micro_servers into dev_qing
|
2026-07-26 21:05:09 +08:00 |
|
qing
|
1a39e87c8c
|
更新pymsg
|
2026-07-26 21:04:42 +08:00 |
|
qing
|
8ec42df779
|
初步开发了新的pymsg,并且应用在了dnfs上面
|
2026-07-26 17:57:27 +08:00 |
|
qing
|
0e64b3ca26
|
refix
|
2026-07-26 14:41:38 +08:00 |
|
qing
|
303d151fce
|
fix without test
|
2026-07-26 14:33:30 +08:00 |
|
qing
|
896cfc32ca
|
网友修x改、我修复之后
|
2026-07-26 12:06:56 +08:00 |
|
qing
|
060b7fc7ad
|
修复CPU占用100%的问题
|
2026-07-26 01:22:23 +08:00 |
|
qing
|
96213d58bd
|
迁移数据库到db服务
|
2026-07-26 01:10:21 +08:00 |
|
qing
|
847f5fe8ab
|
Merge branch 'dev_qing' of https://git.cancerai.top/qing/micro_servers into dev_qing
|
2026-07-25 21:55:41 +08:00 |
|
qing
|
49c0dca8cf
|
waf log >> db.logs
|
2026-07-25 21:54:30 +08:00 |
|
qing
|
2da504cdc4
|
自启动脚本的顺序修改,db在最前面
|
2026-07-25 21:10:51 +08:00 |
|
qing
|
9349b8248f
|
fix
|
2026-07-25 21:08:17 +08:00 |
|
qing
|
013e130a08
|
logs in db develop
|
2026-07-25 21:01:46 +08:00 |
|
qing
|
a4479696eb
|
dos2unix
|
2026-07-25 20:54:57 +08:00 |
|
qing
|
653370a7c3
|
更新文档
|
2026-07-25 20:47:04 +08:00 |
|
qing
|
b5c1be1b90
|
修改文档
|
2026-07-25 20:42:30 +08:00 |
|
qing
|
12173b179d
|
jialiao
|
2026-07-25 17:36:14 +08:00 |
|
qing
|
b15745f35a
|
更新文档
|
2026-07-25 14:34:39 +08:00 |
|
qing
|
17c22a8cd3
|
管理员也不能更新别人的节点
|
2026-07-25 14:25:06 +08:00 |
|
qing
|
3e9ff99eaa
|
只能更新自己的节点
|
2026-07-25 14:24:36 +08:00 |
|