The CSS transition on the body's background-color (0.3s ease) was causing the browser's View Transitions to capture a stale snapshot during the Dark -> Light change. Even though the .dark class was removed synchronously and we tried to disable transitions via an !important override class, the interaction between Tailwind classes and the raw CSS transition on body still caused the root VT snapshot to render as Dark when it should have been Light. By removing the transition from body entirely (which is redundant anyway since we're using View Transitions for theme changes), the body jumps to its target color instantly, guaranteeing the NEW snapshot accurately reflects the final Light theme, eliminating the 'ghost circle' or 'circle outline' bug.
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
Description
Languages
Rust
79.7%
TypeScript
15.4%
CSS
3%
Dockerfile
0.8%
Makefile
0.5%
Other
0.5%