- Tooltips on all action buttons (pencil, ×, + New, Move, picker close/nodes)
- Tag rows show 'Name (own) (N Total)': own = direct assignments,
Total = unique entries on this tag or any descendant (COUNT DISTINCT)
- + New flow: header button → TagPickerModal → inline CreateInput at chosen
level; Enter saves, Escape cancels; identical UX to rename
- Move flow (2-step): Move button → source-select mode → click source →
TagPickerModal minus the moving subtree → pick destination or root;
onTagRenamed(oldPath, updated.full_path) keeps tag filter coherent
- Esc: document keydown in TagPickerModal + separate useEffect in TagsView
for source-select mode only; both preventDefault+stopPropagation so
App's window-level handler does not also clear selected entries
- TagsView.stories.jsx: 6 stories, fetch stub scoped to useEffect
- Rebuilt static assets