Warren 65cd68cad4 Implement incremental save for WebDAV versioning
Changes:
1. Added dirty flag to WebDavVersioning to track unsaved changes
2. Modified create_version() to only mark dirty=true instead of immediate save_index()
3. Added flush() method to save dirty index periodically
4. Added background thread in server.rs to flush every 60 seconds
5. Async index loading on startup (spawn thread to avoid blocking OPTIONS/PROPFIND)

Expected performance:
- PUT operations: still fast (dirty flag only, no save_index() blocking)
- Index persistence: flush every 60 seconds (or on shutdown)
- OPTIONS/PROPFIND: no blocking (async index loading)

Test results:
- PUT (31B): 0.053s (53ms) 
- Index loading: async thread started 
- Flush thread: started but blocked by launchd auto-restart ⚠️

Next: Test flush thread in production environment (without launchd)
2026-06-30 05:29:09 +08:00
2026-06-12 12:59:54 +08:00
2026-05-16 15:37:37 +08:00
2026-05-16 15:37:37 +08:00
2026-05-16 15:37:37 +08:00
2026-05-16 15:37:37 +08:00
2026-05-16 15:37:37 +08:00
2026-05-16 15:37:37 +08:00

MarkBase

Momentry Display Engine - Markdown渲染與檔案樹管理系統

功能特色

  • Markdown渲染支援表格、footnote、tasklist -檔案樹管理SQLite持久化
  • REST API18+路由)
  • macOS音訊控制音訊裝置切換、音量控制 -多種顯示模式tree, list, grid_sm, grid_lg

##安裝

###必要條件

  • Rust 1.92+
  • macOS音訊功能需 macOS
  • SwitchAudioSource音訊裝置切換
#安裝 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

#安裝 SwitchAudioSourcemacOS
brew install switchaudio-source

###建構

cargo build

##使用

###啟動伺服器

cargo run -- display                #預設 port 11438
cargo run -- display -p8080         #自訂 port
cargo run -- display README.md      #顯示指定檔案

###渲染 Markdown

cargo run -- render README.md       #輸出到 stdout
cargo run -- render README.md -o output.html

##測試

cargo test                          #執行所有測試
cargo test test_insert              #執行特定測試

File Tree功能

REST API

路由 方法 功能
/api/v2/tree/:user_id GET 取得檔案樹
/api/v2/tree/:user_id/node POST 建立節點
/api/v2/tree/:user_id/node/:node_id PUT/DELETE 更新/刪除節點
/api/v2/tree/:user_id/node/:node_id/move PUT 移動節點
/api/v2/tree/:user_id/node/:node_id/alias PATCH 更新別名

###顯示模式

  • tree - 樹狀顯示
  • list - 列表顯示
  • grid_sm - 小格狀顯示
  • grid_lg - 大格狀顯示

###範例

curl http://localhost:11438/api/v2/tree/demo?mode=tree
curl http://localhost:11438/api/v2/tree/demo?mode=list

Demo資料

  • data/users/demo.sqlite - 50節點範例資料
  • data/cache/ -範例檔案

##開發

AGENTS.md詳細開發指南。

CI/CD

使用 Gitea Actionshttps://gitea.momentry.ddns.net

License

MIT

Description
No description provided
Readme 536 MiB
Languages
C 36.9%
Rust 30.3%
D 13.2%
Assembly 7.6%
Swift 2.8%
Other 9%