Commit Graph
18 Commits
Author SHA1 Message Date
doyaGu 4a88033695 fix(settings): apply a theme as soon as it is selected and restore it on cancel
PLAN 5.6 asks for the theme to take effect immediately, but it was applied
only on OK. Selecting a theme now previews it; OK saves it, and cancel, Escape
or closing the window restores the theme the dialog opened with.
2026-10-03 09:12:36 -04:00
doyaGu 1ecb48316d fix(export): drop invalid file-name characters from the suggested export name
A workspace at a drive root is named "D:\", which made the suggested file name
invalid. Characters that are invalid in a file name on any supported platform are
now removed, and a name left empty (a workspace at /) falls back to YKanBan.
2026-10-03 09:02:17 -04:00
doyaGu d3b071b0be fix(config): never let app.json I/O stop startup or skip releasing the workspace
An app.json that exists but cannot be read, or a .bak that cannot be written,
now yields defaults instead of an unhandled exception before the main window
exists. A failed write at exit is logged and ignored, and the session is
disposed in a finally block, so the lock and connection are always released.
2026-10-03 09:00:40 -04:00
doyaGu 23f7806e2d fix(search): cap an expression at 256 atoms
The compiled SQL chains every atom into one expression, and SQLite rejects
expressions deeper than 1000 levels. A query of about 1000 words parsed but
then failed in SQL, outside the syntax-error handling, and crashed the app.
The parser now rejects more than 256 atoms as a syntax error.
2026-10-03 08:49:57 -04:00
doyaGu 1d744ba504 fix(search): reject empty phrases and phrases glued to other text
The lexer now keeps token offsets and rejects what the grammar never allowed
but the token rules accepted:
- an empty phrase: "" (matched every card), tag:""
- a phrase touching a word or another phrase: a"b", "a"b, "a""b"
- whitespace between a qualifier and its phrase value: tag: "x"

key:"value" stays the only legal contact; parentheses still delimit phrases.
Listed in PLAN 6.1/6.2 and USAGE.
2026-10-03 08:20:30 -04:00
doyaGu 9277e2a331 fix(export): escape backslashes in tag table cells
A backslash right before a pipe, as in the tag name a\|b, turned the escaped
pipe into "\|": the table splitter reads "\\" as an escaped backslash and the
pipe as a column separator, shifting the row. Cells now escape '\' before '|'.
Recorded in PLAN 5.8.
2026-10-03 08:20:23 -04:00
doyaGu b6e8e07d78 docs(plan): route initialization lock conflicts and a missing database in 4.4
A lock conflict while initializing goes to the lock-conflict page instead of
the open-failed page; a missing ykanban.db goes to the open-failed page and is
never recreated silently.
2026-10-03 08:13:08 -04:00
doyaGu b56c79e5da docs(acceptance): use the real app.json key names 2026-10-03 08:13:08 -04:00
doyaGu c12408d2e3 fix(storage): refuse to open a workspace whose database file is missing
With .ykanban present but ykanban.db gone, opening used to create an empty
database and show an empty board without any hint. It now throws
WorkspaceDatabaseMissingException and shows the open-failed page, telling the
user to restore a backup or delete .ykanban and initialize again.
2026-10-03 08:12:53 -04:00
doyaGu d2a5d36bd2 fix(search): reject parentheses nested deeper than 64 levels
Deep nesting overflowed the stack of the recursive Pidgin parser (around
400-700 levels), an uncatchable crash. The depth is now checked on the token
stream before parsing and reported as a syntax error. Listed in PLAN 6.2 and
USAGE.
2026-10-03 08:12:34 -04:00
doyaGu 8ae9780c0e fix: harden packaging and correct macOS launch docs
- macOS: document open -n -a with an absolute path (plan updated accordingly)
- package.sh: zip with 7z for '/' entry separators; ad-hoc codesign failure is a warning
- USAGE: list blank and unrepresentable paths as invalid arguments
2026-10-03 07:57:46 -04:00
doyaGu 8347445f51 feat: add release workflow, packaging script, usage docs and acceptance checklist 2026-10-03 07:49:11 -04:00
doyaGu 6ea0df43e3 feat: implement tags tab, board search execution and markdown export wiring 2026-10-03 07:34:34 -04:00
doyaGu e3f58ce150 feat: implement board tab with dialogs, virtualized card lists and refresh-after-write
- board: columns in id order, per-column sort via config, column width presets (240/320/480) and custom 160-720
- column header new-card and edit/delete menu; card menu delete and move-to-column
- card editor as one unit of work with dirty check and discard confirmation; nested tag picker writes new tags immediately
- schema constraint violations mapped to typed exceptions and shown inside the modal
- dialog service with owner stack so nested modals center on their parent and get FlowDirection
- repository: filtered GetCards, CountCards; view-model tests
2026-10-03 03:33:25 -04:00
doyaGu 84d08c6768 chore: update avalonia to 11.3.22 and semi.avalonia to 11.3.22
Clears NU1903 (Tmds.DBus.Protocol 0.21.2 -> 0.21.3 transitively).
Plan §7 dependency table updated accordingly.
2026-10-03 03:09:36 -04:00
doyaGu 632339ea42 feat: make column title and tag name uniqueness case-insensitive 2026-10-03 02:44:46 -04:00
doyaGu 4230bd02d2 doc: revise plan to v1.9 2026-10-03 02:42:31 -04:00
yyc12345 93ea102d89 doc: submit plan 2026-10-02 21:11:44 +08:00