Ctrl K
ComunidadGuías…

CHANGELOG.md

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Changelog

EdgeChat 从 `2.1.2` 起正式采用语义化版本。更早的版本号依据已经完成的主要里程碑补记,用于说明项目演进,不对应历史 Git 标签。

## 2.20.3 - 2026-11-05

- 修复 #58:公开群消息附件在匿名或无效会话下可能被解密下载;文件授权改为先校验正整数用户 ID,缺失、过期、封禁、删除或已撤销会话在读取 R2 前拒绝。
- 保留头像和站点图标的公开读取、有效登录用户读取公开群附件、私有群/私信成员授权及上传者预览规则。新增真实数据库与加密下载回归测试;无新迁移、资源、Secret 或部署步骤,未修改 Android。

## 2.20.2 - 2026-11-02

- Actions 每次部署以当前管理员密码 Secret 为准,忘记密码后更新 `EDGECHAT_ADMIN_PASSWORD` 并重跑部署即可恢复;同密码不写库,改密使旧会话失效。
- 仅同步同名有效超管,不自动提权、解封或恢复已删除账号;手动初始化仍只创建新账号。新增 TypeScript 部署同步与共用 D1 API 模块,补充测试和三语部署说明,无新迁移、资源或 Secret,未修改 Android。

## 2.20.1 - 2026-10-31

- Telegram 私人提醒恢复最小正文预览:最多前 8 个 Unicode 字符,附件不暴露名称;每条附无凭据的 EdgeChat 会话链接,禁用 Telegram 链接预览。保留按钮私聊、站内加密、出队权限复核和预算;群组桥接不变。
- Liquid Glass 迁为 TypeScript,移除 DOM 变更后的全页扫描及重复绑定,改为幂等事件委托、动画帧合并和清理;触摸设备、后台页面与低特效模式停止指针跟踪。
- 个人设置新增本地低特效模式并跟随系统减少动态/透明度偏好,关闭背景光团、玻璃高光与背景滤镜。补充三语、回归测试与通知隐私说明;无需新增迁移、资源、Secret 或部署步骤,未修改 Android。

## 2.20.0 - 2026-10-31

- Telegram 私人通知改为明文正文:显示发送者、私信/提及内容和附件名称;站内加密不变,队列不另存明文。出队复核绑定、偏好、成员、拉黑及消息存活,长文本明确截断。
- Bot 新增 `/chats` 私聊联系人分页列表,原生按钮选择联系人后回复提示即可发文字;支持继续发送、切换联系人和取消,不包含群组,不要求手输用户 ID。复用本地消息提交、加密、广播、未读及幂等链路。
- 新增 TypeScript 交互与通知正文模块,以及每账号单条、10 分钟有效的回复目标迁移;解绑/重绑撤销旧提示,既有 Webhook 无需重配。Actions 自动迁移,无新依赖、云资源或 Secret,未修改 Android。

## 2.19.1 - 2026-10-31

- 消息默认保留期从 15 天延长为 30 天,同步 Worker 自动清理、API 能力声明、Wrangler 模板和 GitHub Actions 默认值;显式配置的自定义天数继续生效。
- 更新保留期回归测试及中英日文档,沿用每日分批清理和稳定版自动更新部署;无需数据库迁移、新资源或 Secret。

## 2.19.0 - 2026-10-28

- 后台「集成」新增超管专属的「登录验证」,Cloudflare Turnstile 默认关闭;开启后每次密码提交均先完成新挑战和 Siteverify 校验,普通网页、隐身入口与 API v1 共用服务端规则,不累计失败次数、不增加风控数据库写入。
- 默认启用 Workers Rate Limiting API:每 IP 每分钟 10 次密码登录、120 次普通 API 请求;集成回调不占普通 API 配额,WebSocket 帧不在此限流范围。计数由 Cloudflare 边缘维护,不使用 D1/KV。
- Secret Key 通过 Wrangler Secret 或可选同名 Actions Secret 注入,后台仅保存开关与公开 Site Key;复用 site_settings,无新迁移。同步三语言、demo、部署模板和回归测试,未修改 Android;不支持 Turnstile 的旧客户端在开启后无法新登录。

## 2.18.3 - 2026-10-24

- 整理并提交部署维护文档:区分 D1 新装基线登记与旧库升级,补充误执行历史迁移后的只读排查步骤,明确不要盲目重建数据库或移除触发器。
- 部署工作流显示名统一为 `00 Deploy Worker`,便于 Fork 后在列表中识别;中英日 README、管理员初始化和自动更新说明同步,新增工作流入口与基线保留系统群触发器的回归覆盖。
- 不更改聊天运行逻辑,无新依赖、数据库迁移、资源或 Secret,未修改 Android。

## 2.18.2 - 2026-10-24

- 消息发送及广播将用户状态、设备撤销和房间成员合并为一次 D1 查询,仍分别读取 KV 并即时复验;同一广播内相同 token/房间只校验一次,不缓存跨消息授权,封禁、退群及会话撤销继续生效。
- 广播按连接验证完成即投递,不再等待最慢收件人;单连接校验失败不泄露正文,也不阻断其他收件人及提交后投影。幂等补确认在返回原消息前再次核验授权。
- 带 `clientMessageId` 的消息写入与规范消息回读改为原子 D1 batch;私信拉黑与幂等查询并行,仍先执行拉黑门禁。普通单连接文本新消息的 D1 往返从 7 次降至 4 次(设备会话从 9 次降至 4 次),不是线上毫秒延迟测量。
- 无新依赖、迁移、云资源、Secret 或部署步骤;GitHub Actions 沿用现有流程,未修改 Android。

## 2.18.1 - 2026-10-23

- 会话恢复复用鉴权时的用户资料读取,资料未变更时不重复写 KV;仍逐请求核验封禁、会话版本和管理权限。初始化及群列表不再执行系统群幂等修复,历史回填由迁移负责,新成员由建号路径与数据库触发器保证。
- 历史首屏返回后通过 `waitUntil` 异步确认本页最高消息,已读写入失败不影响正文;旧页和空页不触发已读。进入会话不再额外发送重复回执,显式已读合并为单条原子 SQL,置顶消息读取减少一次数据库往返。
- 群聊与私信列表复用身份和成员关联,普通未读与提及/回复未读共用聚合扫描;新增存活消息时间索引,保留最后消息时间及权限语义。Actions 自动应用 `2026-10-23-conversation-query-index` 并验证结构,无新资源、Secret 或依赖,未修改 Android。

## 2.18.0 - 2026-10-23

- 网页消息在本地立即显示发送中状态,服务端消息按房间、发送者和 `clientMessageId` 合并确认;发送失败、断线或 15 秒未确认时可原位重试,迟到确认仍可合并。
- 文本、回复、批量附件和语音共用内存发件箱;切换房间和刷新历史保留待确认项,退出或刷新页面清空。重试沿用原始消息 ID 与内容,避免重复保存、广播、未读通知和 Telegram 转发。
- demo 与三语言同步,补充前端状态和 WebSocket 数据库回归;无新依赖、迁移、云资源或 Secret,GitHub Actions 沿用原有部署流程,未修改 Android。

## 2.17.3 - 2026-10-22

- 精简后台注册邀请页:创建用户改为按内容宽度自适应的紧凑表单,注册链接收敛到单面板分隔列表,减少重复外框、底色与留白。
- 补齐邀请创建字段的可见标签,保留完整链接、复制反馈、使用统计、撤销确认和权限边界;三语言及两种配色复用既有令牌,手机操作保留触控尺寸。
- 保留同期合入的登录、会话缓存与启动修复,并让启动测试兼容 Windows CRLF 检出。
- 无新依赖、数据库迁移、云资源或 Secret,GitHub Actions 沿用现有部署流程,不修改 Android。

## 2.17.2 - 2026-10-18

- 将消息自动删除的默认保留期从 7 天延长为 15 天,同步 Worker 清理、API 能力声明、Wrangler 模板和 GitHub Actions 默认值;显式配置的自定义天数继续生效。
- 补充保留期回归测试与部署文档:升级不会恢复已删除消息,不修改其他清理策略;无需数据库迁移、新资源或 Secret,不修改 Android。

## 2.17.1 - 2026-10-18

- 根据视觉反馈,将「奶油樱花粉」调整为浅樱花粉与雾蓝交融的轻柔渐变;登录背景、聊天画布、后台与色卡同步变浅。
- 主按钮改为浅粉蓝底配深色文字,分别保留悬停/按下层级与可读性;默认配色和危险/成功语义色不变,无后端、迁移或 Android 改动。

## 2.17.0 - 2026-10-18

- 后台「站点外观」新增「奶油樱花粉」一键配色与经典配色恢复,点击即保存,覆盖登录/注册、聊天、个人设置与后台;保留原布局、个人背景和危险/成功状态语义。
- 配色通过既有站点设置表持久化,复用站点外观权限与审计;独立部分更新不覆盖名称或图标草稿,旧站点默认保持经典配色。三语言、demo、权限与失败重试测试同步。
- 无新依赖、数据库迁移、云资源或 Secret,GitHub Actions 沿用现有部署流程,不修改 Android。

## 2.16.8 - 2026-10-17

- 将用户列表中的用户组选择移到最右侧操作区,移除该控件在列表中的顶部间距,降低行高;窄屏仍允许操作换行。
- 保留分组确认、权限限制与错误提示;无数据库迁移、新资源或 Secret,沿用 GitHub Actions 部署,不修改 Android。

## 2.16.7 - 2026-10-15

- 将新登录的网页会话与 HttpOnly Cookie 有效期统一从 7 天调整为 30 天,保留 Secure、SameSite 与改密/封禁失效机制;已有会话不批量延期。
- 普通登录与隐身网关共用期限;API v1 的 1 小时 access token 与 90 天 refresh token 不变。无需迁移、新资源或 Secret,沿用 GitHub Actions 部署,不修改 Android。

## 2.16.6 - 2026-10-14

- 修复首次部署只执行建表 SQL 后没有可登录管理员却仍显示部署成功的问题:Actions 发布前验证有效超管,管理员凭据缺一项时明确报错;已有管理员可继续无凭据更新,不重置密码或权限。
- 新增 `npm run admin:bootstrap` 入口及中英首次管理员初始化指南,补齐手动部署与漏配后的处理步骤;明确无默认密码、无公开注册,普通账号由后台创建或邀请注册。
- 无数据库迁移、新云资源或 Worker Secret,不修改 Android。

## 2.16.5 - 2026-10-12

- 整理并行发布后的变更记录顺序,保留 `2.16.3` 后台导航与 `2.16.4` 自动更新/消息保留配置的独立记录;功能、迁移与资源要求不变。

## 2.16.4 - 2026-10-12

- 新增 `Sync Upstream` Actions,每天两次识别上游 `EdgeChat-Update: stable` / `security` 提交 trailer,合并到最新发布边界并保留 fork 自定义提交;冲突及分支保护不强推,工作流文件更新支持最小权限同步令牌。
- 自动合并提交跳过 push CI,再显式派发 `Deploy Worker` 避开 GitHub 递归保护;当前 SHA 已部署或运行中不重复派发,失败可在下次检查补派。
- Actions 支持 `MESSAGE_RETENTION_DAYS` Repository Variable,默认 7 天并拒绝非正整数;修复 GC 中小于一天的配置误取整为 0 天的问题,补充自动更新与清理配置文档和真实 Git/SQLite 回归测试。无需迁移、新 Cloudflare 资源,不修改 Android。

## 2.16.3 - 2026-10-12

- 后台侧栏将仪表盘独立置顶,新增「用户与权限」「集成」分类,按业务顺序排列页面;分割线下集中站点外观、存储统计、安装与维护,并保留隐身设置。
- 用户组、群组、用户与邀请采用不同图标,顶栏与侧栏共用 TypeScript 导航定义;三语言同步,搜索和权限过滤隐藏空分类,长标签自动换行。
- 保留仪表盘默认入口、原有页面与子菜单,无需数据库迁移、新资源或 Secret,沿用 GitHub Actions 部署,不修改 Android。

## 2.16.2 - 2026-10-12

- 聊天与通讯录工作区的桌面侧栏增加齿轮图标和个人设置文字入口,复用现有设置路由、多语言与无障碍标签,保留底部头像和移动导航中的设置入口。
- 增加侧栏入口回归测试,英文标签可换行。无需数据库迁移、新资源或 Secret,沿用 GitHub Actions 部署,不修改 Android。

## 2.16.1 - 2026-10-11

- 优化聊天运行时:将消息列表与单条气泡提取为 TypeScript 组件,隔离输入草稿、菜单及通话等页面状态;新消息追加只渲染新增行,高亮切换只更新对应行,保留现有头像、提及、回复、附件与右键/长按交互。
- 常用日期与时间格式器按语言复用;输入框在 v-model 更新后统一测量高度,消除每次输入的重复布局读取。无需新依赖、虚拟列表或额外消息缓存。
- 增加真实 Vue SFC 运行时回归,约束长列表更新次数、日期缓存失效及输入框清空/恢复。无需数据库迁移、新资源或 Secret,沿用 GitHub Actions 部署,不修改 Android。

## 2.16.0 - 2026-10-11

- 轻量重构后台 UI:保留蓝色品牌、深色按钮与浅色工作区,统一导航选中态、标题层级、面板间距、表格和表单;仪表盘改为紧凑快捷列表与双栏概况。
- 用户列表支持本页姓名/用户名搜索、清晰状态标记与表尾分页;手机按账号分块呈现,操作无需横向查找。移动导航覆盖工作区,支持 Esc 收起与焦点恢复。
- 不新增运行时依赖、字体或图表库,保留页面/用户详情按需加载,并将后台外壳与仪表盘/用户列表纳入首屏体积预算。无需迁移、新资源或 Secret,沿用现有 Actions,不修改 Android。

## 2.15.1 - 2026-10-11

- 修复 Telegram 私人通知分发缺少滥用限制:每分钟发送者最多入队 20 条、收件人 5 条、全站 100 条,每消息最多通知 10 人,积压最多 500 条;预算原子校验,不限制聊天消息本身。
- 提醒延迟 10 秒合并,同一收件人最多每分钟一次,私人通知 Bot 发送(含重试)最多每秒一次;429 按 `retry_after` 对整条私人通知队列退避,保留四次尝试上限、alarm 与 cron 救援及脱敏队列统计。
- Actions 自动应用 `2026-10-11-telegram-notification-budgets` 并新增 `TelegramNotifications` DO(v5);手动部署须同步模板并先迁移、自检,无新 Secret,不修改 Android。

## 2.15.0 - 2026-10-10

- 网页普通输入与富文本输入支持粘贴文件,文件选择支持多选;附件按选择顺序排队,提供即时预览、单项移除和上传失败重试。
- 多附件沿用现有单附件消息协议逐条发送,正文与提及随首条发送;部分发送失败保留未发送附件。新增视频与 PDF 预览及队列回归测试。
- 无需数据库迁移、新资源或 Secret,沿用现有 GitHub Actions 部署,不修改 Android。

## 2.14.3 - 2026-10-10

- 修复邀请注册误发确认密码字段导致正常注册被拒的问题;确认密码仍在客户端校验,后端字段白名单与防提权规则保持不变。
- 密码不一致或请求失败时保留注册表单,支持修改后重试;新增真实页面提交与 Worker/D1 回归测试。无需数据库迁移、新资源或 Secret,不修改 Android。

## 2.14.2 - 2026-10-06

- 调整用户组管理布局,编辑与成员管理使用工作区面板;权限支持模块全选/清空与变更摘要,成员和审计支持分页。
- 用户组选择改为自定义下拉,避免表格裁切;优化创建用户与成员分配的响应式布局,三语言同步。不改后端授权规则,无新增迁移。

## 2.14.1 - 2026-10-06

- 存储扫描改为 POST,写统计快照沿用 Cookie 同源防护,旧 GET 入口拒绝;未登录后台响应同样禁止缓存。

## 2.14.0 - 2026-10-06

- 后台采用一人一用户组 RBAC:21 个集中权限,独立超级管理员身份;超管可管理组、成员、创建子管理员和查看基础审计,三语言与 demo 同步。
- 所有后台入口统一声明权限、字段和目标范围,D1 写事务复验当前授权;撤权对旧会话生效,子管理员不能操作管理账号、重置密码或修改安全配置。
- 仪表盘仅返回聚合统计,邀请只读隐藏凭据,存储统计为受限扫描快照;桥接子管理员必须为实际群主,超管保留既有全站桥接管理。
- 独立行为收紧:后台身份不再放行非成员私信/私有群、群管理及附件;聊天只使用真实成员和群主关系。
- 增量迁移 `2026-10-06-rbac` 一次性映射历史全权管理员,不解封或重置分组;初始化不再提升同名账号,新增显式运维恢复工具。详见 `docs/rbac.md`。

## 2.13.0 - 2026-10-05

- 通讯录新增「全部用户 / 已拉黑」切换,支持搜索自己的拉黑列表并直接解除拉黑;操作成功后立即同步私聊与侧栏状态。
- 拉黑列表仅返回当前账号主动拉黑的用户摘要,封禁和软删除账号仍可移除;失败保留原列表并可重试,三语言与 demo 同步。
- 复用现有拉黑表和解除接口,无新增迁移、Cloudflare 资源或 Secret,沿用 GitHub Actions 部署,不修改 Android。

## 2.12.2 - 2026-10-05

- 每个用户仅保留最近 3 次成功登录的 IP、时间、User-Agent 与对应 WebRTC 数据;数据库触发器在新增时同步淘汰最旧记录,无需轮询或清理任务。WebRTC 仅补充对应登录,不另占历史记录。
- 用户详情默认只显示最新数据,较早记录折叠,展开查看时间和对应信息;移除 WebRTC 探测状态条目,三语言与 demo 同步。
- 迁移 `2026-10-05-users-login-history` 保留原首末快照的可用数据,并移除永久首次记录;Actions 自动迁移、自检,无新资源或 Secret,不修改 Android。

## 2.12.1 - 2026-10-05

- 网页成功登录后按需加载 WebRTC STUN 探测,异步限时 2 秒,不申请媒体权限、不用 TURN、不采集局域网地址;后台详情显示客户端上报的 IP、状态和时间,不视为真实 IP 或代理判定依据。
- 上报绑定最近登录的一次性 ID,最多追加一次 D1 更新,旧会话和重复上报不覆盖;刷新不重复探测,demo 不采集访客信息,不修改 Android。
- 删除普通与隐身登录页的采集提示,以及用户详情底部说明;三语言同步。
- 新增 `2026-10-05-user-webrtc` 迁移,沿用 Actions 自动迁移和自检,无新资源或 Secret。

## 2.12.0 - 2026-10-05

- 后台用户列表新增详情入口,窗口、样式和浏览器解析器均按需加载;信息只通过管理员专用接口返回,不扩大用户列表或聊天响应。
- 网页、隐身网关及 API v1 成功登录时记录 Cloudflare 来源 IP、时间和 User-Agent;每个账号只保留首末快照,每次成功登录增加一次 D1 写入,无轮询或第三方探测。
- 显示浏览器、系统与可识别的设备型号,并明确代理出口、UA 可伪造和缩减限制,不静默执行 WebRTC IP 探测。登录页面告知采集范围。
- 新增 D1 迁移 `2026-10-05-user-login-info`,GitHub Actions 自动迁移和自检后部署,无新 Cloudflare 资源或 Secret,不修改 Android。

## 2.11.0 - 2026-10-03

- 网页新增仅私聊的一对一语音通话:默认 WebRTC P2P,直连失败自动切换 TURN,也可通过顶栏紧凑选择器手动切换。
- 提供来电、接听、拒绝、静音、挂断、连接方式与时长;独立 VoiceCall DO 与用户级占用协调处理超时、多窗口与跨私聊竞争,不保存音频。
- Worker 仅处理鉴权、信令与短期 TURN 凭据;新增 v4 DO 迁移、可选 TURN Secrets 与 Actions 注入步骤,无 D1 迁移,不修改 Android。

## 2.10.2 - 2026-10-03

- 调整隐身模式的界面与文档说明:这是作者为降低自身 Web 安全能力不足带来的风险而提供的未登录攻击面收敛措施,不是规避审查或匿名服务。

## 2.10.1 - 2026-10-01

- 页面、聊天/后台样式、通讯录及聊天弹窗按需加载,保留既有权限、草稿、关闭动画和焦点恢复;富文本与三语言功能不裁剪。
- 字体独立非阻塞加载,共享图标分包;加载失败提供主动重新加载入口,不自动刷新丢弃草稿。
- 增加首屏与编译产物体积回归预算,单独报告自托管富文本资源;同步最新主线的剪贴板安全修复与持久化隐身登录外观模板。

## 2.10.0 - 2026-09-28

- 后台新增幽灵图标的独立「隐身模式」页,顶部开关与简短说明,默认关闭;开启后未认证访问只获得无品牌、无脚本的通用登录网关,无法下载正式 SPA、资源、manifest 或 Service Worker,探测接口统一返回普通 404。
- 复用现有 Session,增加 HttpOnly Cookie 与同源写入校验;实例随机登录路径、API/WebSocket 前缀和少量网关布局差异保存在既有 D1 设置表中,重新部署保持稳定,不新增云资源或迁移。
- 登录后的网页与有效 Telegram/跨实例回调保持原业务链路。开启时隐藏公开注册与未认证客户端入口;静态资产必须通过 Worker,增加请求与 D1 用量,不承诺隐藏基础设施或历史缓存。
- 同步 GitHub Actions 部署模板、三语言界面、demo 与自动化测试;不修改 Android。

## 2.9.1 - 2026-09-26

- 重做个人设置中的 Telegram 通知区:统一项目按钮、状态徽标与开关样式,明确加载、未绑定、等待确认、已绑定和不可用状态,生成绑定链接后不再重复显示绑定按钮。
- Telegram 通知设置拆为独立 TypeScript 组件,补齐三语言状态文案、轮询过期反馈、键盘焦点与 320px 窄屏布局;不改动后端协议、数据库、云资源或 Android。

## 2.9.0 - 2026-09-26

- 网页新增 PWA 安装清单与最小 Service Worker;已安装 PWA 可通过 Service Worker 展示既有浏览器通知,点击通知会聚焦或打开应用并进入对应会话,不缓存 API、附件或静态资源。
- 新增 Telegram 私人通知绑定:用户可在设置中将账号绑定到既有站点 Bot,并分别控制私信和群聊提及提醒;通知只包含提醒类型与会话名,不发送消息正文。
- 新增 D1 迁移 `2026-09-26-telegram-notifications`,以 outbox、租约、有限重试和 7 天清理支持通知投递;复用既有 Telegram Bot、D1 与 15 分钟 cron,不新增 Cloudflare 资源或 Secret,不修改 Android。

## 2.8.1 - 2026-09-21

- 群聊消息发送者姓名旁新增 Telegram 风格头衔:站点管理员显示绿色“管理员”,永久或仍在有效期内的封禁账号显示红色“禁言中”,封禁头衔优先。
- 群成员面板复用同一头衔组件与状态规则;生产 API 和 demo 同步投影管理员、封禁状态,不新增数据库迁移或云资源,不修改 Android。

## 2.8.0 - 2026-09-19

- 新增后台独立「跨实例群组绑定」页面及三语言左侧栏入口;公开、私有与 general 群可一对一绑定,短期邀请、对端认领与发起方最终确认后双向同步新纯文字。
- 协议使用独立实例/绑定身份、每绑定长期凭据、HTTPS HMAC 请求与确认签名、目标群及 revision 世代校验;凭据分别由本站 keyring 加密,不交换主密钥、不创建远端登录账号。
- 消息事务原子登记持久化 outbox;接收 receipt 与消息同事务写入且独立于消息删除。按需 DO alarm 加低频补偿 cron,支持有界退避、超时、积压上限、过期清理及可见失败状态。
- 支持暂停、恢复和解绑;暂停清空积压,恢复不补发旧世代,解绑撤销新收发。群内显示绑定关系与来源实例;附件、历史、引用关系、编辑及撤回不跨实例同步。
- Telegram 与跨实例出站统一只接受本站原创,禁止外部桥接消息继续跨桥传播。Telegram 既有尽力转发/重试限制保持不变。
- 新增 D1 迁移 `2026-09-19-instance-bridge`、`INSTANCE_BRIDGE` DO v3 和 15 分钟全局救援 cron;部署模板、维护自检及说明文档同步更新,不修改 Android。

## 2.7.3 - 2026-09-19

- 网页首次访问继续只依据浏览器首选语言,不使用 IP 或地理定位:`Hant`/旧式 `CHT` 使用繁体,`Hans`/旧式 `CHS` 使用简体;未声明脚本时,台湾、香港、澳门使用繁体,其余中文地区与裸 `zh` 使用简体,非中文继续使用英文。
- 明确脚本优先于地区,例如香港用户选择 `zh-Hans-HK` 时使用简体、中国大陆用户选择 `zh-Hant-CN` 时使用繁体;用户在语言菜单中的手动选择仍持久化并优先于自动识别。
- 使用当前 demo 重新截取 README 的聊天界面与管理后台预览图,Telegram 桥接演示图保持不变。
- 本次调整网页语言检测、测试与 README 预览图,不改动 Android、GitHub Actions、数据库结构或云资源。

## 2.7.2 - 2026-09-16

- 修复 D1 UTC 时间缺少时区标记时被浏览器误当成本地时间的问题,网页消息时间及其他服务端日期现在会按客户端浏览器时区正确显示。
- 本次仅调整网页共享日期解析与测试,不改动 Android、GitHub Actions、数据库结构或云资源。

## 2.7.1 - 2026-09-15

- 修复 Capacitor Android CI 初始化阶段请求已下架 Android SDK `tools` 包的问题,显式仅安装仍可用的 `platform-tools` 后再安装既有 SDK 36;不改动 Android 源码或功能。

## 2.7.0 - 2026-09-15

- Telegram 桥接由仅支持公开群组扩展为支持公开与私有群组,管理员可在同一后台列表中查看群名、区分群类型并统一配置映射。
- 私有群的 Telegram 入站、出站、附件、回复、实时广播与未读投影复用现有群聊链路;一对一私信继续保持不可映射。
- 同步更新生产与 demo 契约、三语言界面和部署文档;不新增数据库迁移、云资源或 Android 原生改动。

## 2.6.2 - 2026-09-15

- 新增繁体中文界面,右上角语言入口改为简体中文、繁体中文与 English 三项菜单,并按当前语言异步加载独立语言包。
- 浏览器语言识别区分简繁中文,语言选择继续持久化;服务端错误、日期格式与富文本编辑器语言同步跟随当前界面。
- 收敛成员角色、管理员名称和通用请求失败等散落的可见硬编码,不新增数据库迁移、云资源或 Android 原生改动。

## 2.6.1 - 2026-09-13

- 重塑网页聊天工作区视觉层级:使用浅灰绿画布、白色栏面与深绿主操作,统一 44px 触控控件、80px 会话和通讯录行,并强化选中与未读状态。
- 优化桌面和窄屏聊天布局:输入框在 480px 以下独占首行,工具栏移至次行;成员面板改为覆盖层,空会话增加明确引导,消息气泡与时间戳留白同步调整。
- 本次仅调整 Vue Web 样式与视觉契约,不新增数据库迁移、云资源或 Android 原生改动。

## 2.6.0 - 2026-09-13

- 新增所有已登录用户可用的站内通讯录,默认仅展示头像和姓名,支持姓名/用户名搜索,并按需复用既有资料卡与私信打开流程。
- 聊天与通讯录共享持久工作区和唯一 inbox 连接;切换时暂停隐藏房间连接,保留搜索、滚动位置与未发送草稿,不新增好友关系、数据库迁移或云资源。

## 2.5.0 - 2026-09-12

- 网页群聊与私聊正文统一支持安全 Markdown,保留结构化提及、HTTP(S) 自动链接、纯文本摘要和 Markdown 原文复制。
- 消息输入栏可原位展开 Vditor WYSIWYG 编辑器;完整编辑器、专用样式与自托管运行时仅在首次点击后加载,并继续复用原草稿、附件、回复和发送链路。
- 原始 HTML、远程图片和动态媒体预览在编辑阶段即安全降级,不新增后端接口、数据库迁移或云资源;本次按需求仅完成本地实现与验证,未部署。

## 2.4.0 - 2026-09-12

- 新增站内可见的纯文本个人简介与可复用用户资料卡,支持 Web 设置编辑、消息/成员/私信头像入口和移动浏览器底部面板。
- 资料按需读取,外部身份独立展示;复用既有私信与拉黑链路,完善部分更新、请求竞态和弹层焦点管理。
- 升级须先执行 `2026-09-12-user-bio` D1 迁移;GitHub Actions 自动迁移和维护自检清单已接入,无新增云资源。

## 2.3.0 - 2026-09-12

- 新增网页端分层消息通知:前台其他会话使用 Telegram Web 风格右下角 Toast,前台当前会话仅在提及或回复时提示,后台或最小化继续使用系统通知。

## 2.2.1 - 2026-09-11

- 修复刷新后私信顶栏丢失拉黑状态、需要重复点击才能解除拉黑的问题。

## 2.2.0 - 2026-09-11

- 新增私信用户拉黑与解除拉黑,服务端统一阻断双方发送,并向被拉黑者返回明确拒绝提示。

## 2.1.2 - 2026-09-08

- 统一 Web、安装维护页、demo 与 Capacitor 客户端的项目版本来源。
- 完成安装维护自检、Cloudflare 资源隔离与二代客户端发布后的稳定性整理。

## 2.1.1 - 2026-09-06

- 隔离并精确复用 Cloudflare KV 会话命名空间,完善双账户部署校验。

## 2.1.0 - 2026-09-05

- 新增网页安装与维护自检、D1 迁移账本校验和诊断报告。

## 2.0.0 - 2026-09-05

- 以复用 Vue 界面的 Capacitor 客户端作为主要 Android 发行版,进入第二代产品线。

## 1.2.0 - 2026-09-04

- 完成群聊提及、语音消息与 Telegram 风格消息回复。

## 1.1.0 - 2026-08-31

- 增加 Telegram 双向同步、移动 API v1 与首版 Android 客户端。

## 1.0.0 - 2026-04-05

- 建立 EdgeChat 的 Cloudflare Worker、D1、KV、R2 与 Vue Web 基础版本。