Skip to content

Add News Dashboard with multi-source research feed#31

Merged
Zhang-Henry merged 11 commits intomainfrom
feat/news-dashboard
Mar 14, 2026
Merged

Add News Dashboard with multi-source research feed#31
Zhang-Henry merged 11 commits intomainfrom
feat/news-dashboard

Conversation

@bbsngg
Copy link
Copy Markdown
Contributor

@bbsngg bbsngg commented Mar 13, 2026

Summary

  • Add a unified News Dashboard page aggregating research content from arXiv, HuggingFace Daily Papers, X (Twitter), and Xiaohongshu
  • Full i18n support (English, Chinese, Korean) with ~80 translation keys via react-i18next news namespace
  • Backend Python scripts for searching, scoring (relevance/recency/popularity/quality), and ranking papers from each source
  • Server API routes for source config management, search execution with streaming logs, and result caching
  • Brand logos (arXiv, HuggingFace, X light/dark, Xiaohongshu) replacing generic icons
  • Source sections default to collapsed for cleaner initial view
  • Sidebar reordered: 论文动态 (News) moved above 技能库 (Skills)
  • Python scripts moved from skills/ to server/scripts/ for better maintainability
  • New skills added: paper-analyzer, paper-finder, paper-image-extractor

Test plan

  • Switch language to zh-CN → verify all news dashboard strings display in Chinese
  • Switch to English → verify no broken keys (no raw news.xxx displayed)
  • Click each source's "Start Search" → verify search executes and results render
  • Verify source sections are collapsed by default and expand on click
  • Verify brand logos display correctly in light and dark mode
  • Verify sidebar shows News above Skills
  • Run npx tsc --noEmit → clean build

🤖 Generated with Claude Code

bbsngg and others added 11 commits March 8, 2026 23:58
- Add global News dashboard accessible from the sidebar (like Dashboard and Skills Library)
- Backend: /api/news routes for config management and arXiv paper search
- Frontend: NewsDashboard component with Start My Day button, research interests editor,
  paper cards with score breakdowns, and responsive stats display
- Integrate 4 skills from evil-read-arxiv (MIT): research-news, paper-analyzer,
  paper-image-extractor, paper-finder — with attribution and VibeLab branding
- Add skill tag mappings for all 4 new skills
- Add i18n support (en, zh-CN, ko) for the News tab

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
# Conflicts:
#	src/components/sidebar/view/Sidebar.tsx
Replace tabbed per-source panels with a unified layout showing all 4 sources
(arXiv, HuggingFace, X, Xiaohongshu) as collapsible cards on one page. Add
per-source color theming, intermediate result polling during search, JSON config
interchange (replacing YAML), and scoped server watch paths to prevent restarts
during data writes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…s with brand logos, and improve UX

- Create news i18n namespace with ~80 translation keys for en, zh-CN, and ko
- Register news namespace in i18n config and replace all hardcoded strings
  in 5 news dashboard components with t() calls
- Add brand logos for arXiv, HuggingFace, X (light/dark), and Xiaohongshu
  with a shared SourceIcon component replacing generic lucide icons
- Move news dashboard (论文动态) above skills (技能库) in sidebar navigation
- Default source sections to collapsed state in UnifiedFeed
- Update footer to show all 4 data sources (arXiv, HuggingFace, X, Xiaohongshu)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The search scripts are runtime dependencies of the server (spawned by
server/routes/news.js), not part of the skills catalog. Keeping them
under skills/ conflated skill definitions with server implementation.

- Move skills/research-news/scripts/*.py → server/scripts/research-news/
- Update server/routes/news.js to use SCRIPTS_DIR instead of SKILLS_DIR
- Update SKILL.md to document the new script location
- skills/research-news/SKILL.md retained as the skill definition

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… files

- Add scripts/install-python-tools.js for postinstall setup
- Update useNewsDashboardData hook and api utility
- Add *_results.json to .gitignore to exclude search result files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix SOURCE_REGISTRY script paths: remove extra scripts/ segment
  after moving to server/scripts/research-news/
- Rename "Search All"/"全部搜索" → "Fetch Latest"/"获取最新"
- Rename "Refresh"/"刷新" → "Update"/"更新"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… invalid data

- Switch from multi-select to single-tab source browsing (Set → single NewsSourceKey)
- Remove collapse/expand logic from UnifiedFeed, render only active source
- Improve tab selection visibility with ring, shadow, and scale effects
- Add video preview support for X/XHS media URLs in NewsItemCard
- Unify all platforms to 3-column grid layout
- Filter out invalid (Untitled) entries in both frontend and xiaohongshu scraper

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Zhang-Henry Zhang-Henry merged commit 404f422 into main Mar 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants