fix: board name validation, TUI save races and review findings #79
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jwarykowski/shepherd!79
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/review-findings"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes from a review of the whole codebase. Each commit is scoped to one package and builds and tests on its own.
Security and data loss:
board delete|archive|renamenever validated the board name, soboard delete ../todo --forcedeleted the default board and../../xreached any*.mdfile. They now validate, take the board lock, and refuse while$SHEPHERD_TODO_FILEis set (which used to make them act on the override file).todo.Merge; ours wins when both sides edited the same item).edit <ref> status:doneskipped the subtask cascade. The cascade now lives intodo.SetStatus/CycleStatus, andtodo.ReconcileParentreplaces five hand-rolled copies in cli/tui.Savereplaced a symlinked board with a plain 0600 file and didn't sync; a BOM lost the first item; CRLF broke dates and ids.TUI: the note editor kept typing into the next row once a filter hid the item; renaming or archiving the open board dropped unsaved edits; undoing a sweep left items in both the board and
archive.md(a sweep now saves and clears history); lane-viewspaceon the detail page jumped cards; undo/redo didn't re-sort.Smaller: reserved board names (
default,todo,archive,*-archive), JSON errors for--board, stray-argument errors, control characters stripped from text output,(H) textand comma tags survive a save, month arithmetic clamps (Jan 31 + 1m = Feb 28), the stats trend axis uses the local day, long cursor rows truncate instead of wrapping.Behaviour changes worth knowing:
Not addressed: narrow-width layout (key grid under 55 cols, many lanes, detail page scrolling) and the stats "open" vs first-configured-status split.