doyaGu 22102cd1ea fix(storage): initialize workspaces under the lock in one transaction
Follows PLAN 4.2: create .ykanban, take the lock, then build the database.
SqliteDatabase.Create writes every migration and the preset columns in a
single transaction and deletes the file again on failure, so no empty
version-0 database is left behind. WorkspaceSession.Initialize keeps the lock
into the session instead of releasing and re-acquiring it.

A lock conflict while initializing shows the lock-conflict page.
2026-10-03 08:12:35 -04:00
2026-09-29 20:16:52 +08:00
2026-09-29 20:16:52 +08:00

YKanBan

My personal used local/offline kanban.

  • Cross-platform desktop app (Windows / Linux / macOS) built with Avalonia.
  • Git-like storage: the board lives in a .ykanban folder inside the project folder it manages; start it with ykanban <path>.
  • One board per workspace with columns, cards and colored tags; strict search expressions (tag:bug OR title:login); Markdown export.
  • English and Simplified Chinese interface; light, dark or system theme.

See USAGE.md for installing, starting YKanBan, backups and Git, and the full search syntax.

Building

Requires the .NET 10 SDK.

dotnet build
dotnet test
dotnet run --project YKanBan -- <path>

Release archives for win-x64, linux-x64, osx-x64 and osx-arm64 are produced by the manually triggered workflow in .github/workflows/build.yml; packaging/package.sh packs one published RID.

License

MIT

S
Description
A personal, local/offline kanban board.
Readme MIT
1.1 MiB
0 Stars 1 Watchers 0 Forks
Languages
C# 98.2%
Inno Setup 1%
Shell 0.8%