SIGN IN SIGN UP

feat: [ENG-2885] adopt callback-based topic-viewer in webui

Consumer-side adoption of the new TopicViewer API from ENG-2843
(shared at @campfirein/byterover-packages).

- Wire breadcrumb / related / index callbacks via useTopicViewerNavigation
  (createTopicViewerNavigation pure helper + stale-path guard).
- Stale paths surface a sonner toast and skip navigation
  (findNodeByPath check in useTopicViewerNavigation).
- RootIndexDetail renders root-level index.html as a landing page
  when no path is selected (mirrors the byterover-web pattern).
- Conflict-marker fallback now covers HTML files too via the new
  ConflictContentView (extracted from MarkdownView).
- Task / curate TopicViewer surfaces hide the (otherwise no-op)
  breadcrumb with breadcrumb={{show: false}}.
- Per-type header padding in DetailBody (py-4 for HTML, pt-4 pb-0 for MD).
- Smooth hash-anchor scrolling for TopicViewer surfaces, with opt-out
  on the streaming task-detail container to preserve useStickToBottom.
- useContextTree exposes navigateToPath(path) as the path-only nav
  primitive; handleSelect(node) is a thin wrapper.
- Bump shared package + lockfile to 2dec813 (ENG-2843 callbacks +
  viewer-controls height:0 fix for rounded-corner clipping).
N
ncnthien committed
5f1b67612e537e42c6b317665e26c54b02f17800
Parent: 8edf54a