Releases
v0.2.1
Compare
Sorry, something went wrong.
No results found
0.2.1 - 2026-04-05
Bug Fixes
build: correct App.css import casing for case-sensitive filesystems
db: invoke before_save manually for Entity::insert() upsert paths
db: enforce UUID integrity with UNIQUE constraint and lifecycle fixes
editor: fix title isDirty not clearing and case-sensitive .md check
frontend: simplify code and fix placeholder issues
i18n: 补全前端各组件的国际化覆盖
i18n: remove compiled catalogs and fix setLocale race condition
identity: suppress dead_code warning for keypair field
network: activate event listeners and unify node status architecture
pairing: multiple pairing logic bugs
pairing: pass remote osInfo in code pairing to store correct device info
pairing: pass notificationId as prop to prevent dialog close failure
pairing: update CommandPalette to use openSettingsWindow
release: bump version to 0.2.1 and align plugin-updater versions
sync: ensure workspace topic subscription and asset sync for closed docs
sync: use tuple variant directly to satisfy clippy::redundant_closure
sync: use sort_by_key to fix clippy::unnecessary_sort_by
updater: add missing plugin deps and remove unused version prop
workspace: suppress unused variable warning for settings_window on non-macOS
workspace: 修复工作区打开流程及编辑器块类型
yrs-blocknote: preserve list spread state through markdown round-trip
CI/CD
add submodule checkout and libdbus for keyring
Documentation
design: complete settings page redesign with all 4 tabs
design: add v0.2.0 pairing and sync UI designs
milestone: add v0.2.1 remaining issues todo list
milestone: add design decisions for workspace-ignore-filter
milestone: update v0.2.0 with device pairing, UI design, and full network support
sync: add CRDT sync architecture and asset sync design documents
resolve blog post conflict after amend (keep updated version)
add yrs-blocknote deep-dive blog post
add yrs-blocknote deep-dive blog post
backfill v0.2.1 issue numbers and milestone link
add device connection type feature for v0.2.1
add v0.2.1 milestone - sync UX polish & auto-update
add P2P sync deep-dive and update CLAUDE.md
add sidebar layout and settings window UI optimization spec
add TauriYjsProvider blog post and external-file-sync feature spec
add v0.2.0 milestone planning and commit conventions
add device identity technical design
update v0.1.0 docs to reflect new UI design decisions
redesign v0.1.0 UI with indigo theme and desktop-only layout
add UI design draft
use Project Iteration for Sprint, not Milestone
use Tasklist format for issue dependency tracking
integrate GitHub Projects into project skills
backfill GitHub Issue numbers to v0.1.0 README
add next-step hint to project-explore skill
add v0.1.0 milestone docs and enhance project skills
add UI design requirements, remove comment system from design docs
add system design docs, simplify to 3-level permissions
replace CodeMirror with BlockNote, remove yrs dependency
add BlockNote research, update editor choice from CodeMirror to BlockNote
rewrite README in Chinese with project overview
simplify dev-notes, extract E2E encryption design
redesign product vision, add swarm-p2p submodule, reorganize dev-notes
Features
ci: add release workflow with auto-update signing config
db: implement SQLite storage layer with sea-orm 2.0-rc
device: add connection type identification (LAN/DCUtR/Relay)
editor: add media loading retry with skeleton UI for P2P asset sync
editor: integrate BlockNote rich-text editor with markdown persistence
filetree: implement filesystem-driven file tree with CRUD and live watching
i18n: complete i18n for settings nav, network status, and device components
i18n: add Lingui internationalization with zh/en support
i18n: add Lingui internationalization with zh/en support
identity: implement device identity with system keychain
p2p: system tray, P2P lifecycle control, and Rust code quality refactor
p2p: auto-start P2P node on app launch
p2p: integrate swarm-p2p-core into Tauri backend (#24 )
pairing: implement device discovery and pairing (#26 )
settings: reorganize settings tabs - add sync tab, remove network tab
skill: add project-issue skill for quick issue creation
storage: implement markdown persistence with media support
store: add Zustand stores with tauri-plugin-store persistence
sync: switch GossipSub from per-doc to workspace-level topics
sync: implement CRDT sync engine with full/incremental sync and asset transfer
sync: detect external .md changes and reload Y.Doc automatically
sync-ui: improve sync dialog with progress bar, re-sync support, and clickable results
ui: implement UI framework with shadcn/ui + Tailwind v4 + TanStack Router
ui: implement UI framework with shadcn/ui + Tailwind v4 + TanStack Router
updater: integrate tauri-plugin-updater for desktop auto-update
workspace: workspace list exchange API and UUID-first state (#46 )
workspace: implement workspace lifecycle management
yjs: integrate BlockNote collaboration mode with Rust YDocManager
yrs-blocknote: align Block data model with BlockNote format
yrs-blocknote: add independent crate for BlockNote ↔ Markdown ↔ Y.Doc conversion
v0.2.1 sync UI — sidebar status, workspace picker sync, onboarding P2P flow (#45 , #50 , #49 )
add mdast-util-to-markdown crate (Rust port of JS library)
integrate BlockNote editor and redesign settings UI (#39 )
add onboarding flow, workspace picker, and per-window state management
remove android
add GitHub project management skills and guide
init
Miscellaneous
i18n: merge auto-update and workspace-sync i18n entries
i18n: sync zh catalog after lingui extract
add /target/ to .gitignore for workspace crates
update swarm-p2p submodule to develop (gossipsub integration)
integrate dev toolchain (biome, lefthook, commitlint, git-cliff, CI)
Refactor
backend: restructure Rust modules by business domain
db: stabilize document and workspace UUIDs for sync readiness
entity: migrate time fields from i64 to chrono::DateTime
entity: use Uuid type instead of String for primary keys and foreign keys
rust: split event_loop and encapsulate GlobalConfigState
sync: reduce SV compensation frequency and add publish-failure trigger
ui: 将工作区切换和快捷操作移至标题栏
ui: extract shared components and hooks to reduce duplication
ui: 将设置页面从独立路由改为弹窗 (#20 )
yrs-blocknote: replace comrak with markdown + mdast-util-to-markdown
Testing
yrs-blocknote: add BlockNote compat tests and batch real doc tests
You can’t perform that action at this time.