xfy 0772951867 fix(editor): 修复升级后空项 Enter 不退出列表(根因:畸形文档)
bug 表现:- [ ] 123 升级成任务列表后,空项按 Enter 不退出,而是继续新建空项。

根因有两处,都在 appendTransaction 构造新节点时:

1. stripPrefix 作用域错误:原代码 cut 作用在 listItem.content(把段落节点
   当原子),cut(N) 会切进段落的标签边界,产生畸形文档——段落文本前缀残留
   (如' 未完成'多出空格)、nodeSize 与实际不符。修正为作用在段落内部的
   content 上(用 para.type.create 重建段落),并用 Fragment.replaceChild
   替换 listItem 的第一个子节点。

2. 光标位置少算一层:+1 进 taskList 内容,+offset 到命中 taskItem,+1 进
   taskItem 内容(段落节点位置),还需 +1 进段落内容(文本),原代码漏了
   这最后一个 +1,导致光标落在文本中间而非末尾,splitListItem 在错误位置
   分裂(把'123'拆成'12'+'3')。

畸形文档 + 光标错位 → splitListItem 在错误位置分裂,产生的'空'taskItem
实际不空,二次 Enter 走分裂路径而非退出路径。

新增回归测试:段落文本无残留 + 完整 Enter 链路(升级→Enter 空项→Enter 退出)。
2026-07-02 15:27:37 +08:00
2026-06-29 16:12:18 +08:00

Yggdrasil

基于 Dioxus 0.7 的全栈博客系统Rust 单一代码库同时编译为 WASM 前端和原生服务端。

技术栈

  • 框架: Dioxus 0.7 (fullstack)
  • 数据库: PostgreSQL + tokio-postgres
  • 样式: Tailwind CSS v4
  • 密码: Argon2
  • 会话: UUID token + cookie

功能

  • 邮箱注册 / 登录(单管理员模式,首次注册后关闭)
  • 会话管理与自动过期清理
  • 暗色 / 亮色主题切换
  • 后台文章撰写Tiptap Markdown 编辑器)
  • 文章归档与标签浏览

开发

依赖 Rust 1.95+、wasm32 目标、dx CLI、tailwindcss CLI v4 和 PostgreSQL。

# 配置数据库
DATABASE_URL=postgres://postgres:postgres@localhost:5432/yggdrasil

# 运行迁移(自动创建数据库并按顺序执行 migrations/ 下所有 SQL
./migrate.sh

# 启动开发服务器
make dev

构建

make build

生产部署

生产环境必须前置反向代理nginx/Caddy做 TLS 终结,并设置 APP_BASE_URLCOOKIE_SECURE=trueTRUSTED_PROXY_COUNT=1。详见 部署指南

Description
No description provided
Readme 9.4 MiB
Languages
Rust 77.4%
TypeScript 17.2%
CSS 3.3%
Dockerfile 0.9%
Makefile 0.6%
Other 0.6%